Вызов диалога из DLL (MFC) из приложения использующий WINAPI
От: Ionov  
Дата: 22.11.06 11:57
Оценка:
У меня проблема в следующем:
Есть приложение написанное на чистом WinAPI.
В нем нужно вызвать диалог из DLL.
DLL написана с использованием MFC и сам обработчик диалога тоже в ней.
Из DLL экспортируется функция:

__declspec( dllexport ) int ShowConfigDialog(const HWND pWndParent)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

HINSTANCE hOld = AfxGetResourceHandle();
AfxSetResourceHandle(theApp.m_hInstance);

CConfigDlg dlg();
int iRes = dlg.DoModal();

AfxSetResourceHandle(hOld);

return iRes;
}

Проблема в том, что при вызове функции теряется фокус и исчезает окно из списка приложений, при этом диалоговое окно показыватся, но к нему невозможно получить доступ! Если код функции заменить на:

__declspec( dllexport ) int ShowConfigDialog(const HWND pWndParent)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

AfxMessageBox("Hello word");

return 0;
}

То здесь все нормально — и фокус есть и кнопка "ОК" нажимается!

Например, для вызова диалога, реализованного в самом приложении WinAPI происходит вызовом:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);

Что то я совсем запутался
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.