Создание немодальных диалогов без главного окна
От: Qazwsx  
Дата: 15.03.04 17:45
Оценка:
Хочу сделать следующее: программа при запуске прячется в трей далее в зависимости от выбора пункта меню загружаем соответствующий диалог, сделали что надо, нажали OK и программа опять уходит в трей и там ждёт.

Вопрос как создавать такие немодальные диалоговые окна?

Пробовал так:
BOOL CMyApp::InitInstance()
{
AfxEnableControlContainer();

#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

CMyDlg dlg;
m_pMainWnd = &dlg;

dlg.Create (IDD_MY_DIALOG,NULL);

MSG msg;
BOOL bRet;

while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

return FALSE;
}
Вроде работает но мне не очень это нравится. И куда в таком случае попадает сообщение после DispatchMessage? Сразу в Window Proc к диалогу?

Пробовал ещё сделать вот так:

class CMyApp : public CWinApp
{
public:
CMyDialog mydlg;
.........
mydlg.Create(IDD_MY_DIALOG,NULL);

В таком случае цикл обработки сообщений в InitInstance не нужен естественно но в Дебаг компиляции выдаёт ошибку: не может найти ресурс правда когда жму пропустить всё нормально. В релизе таких проблем нет.

Если сделать так
class CMyApp : public CWinApp
{
public:
CMyDialog* mydlg;
.........
а потом mydlg->Create(....) то после этого вызова вообще возникает ошибка доступа к памяти.

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