Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Просто если главное окно _уже_ было задано, то обработка его... 23.10.07 00:12 Число просмотров: 2821
Автор: dl <Dmitry Leonov>
|
> Я только начал MFC изучать, так что пока плохо соображаю, > что к чему, но не понятно какое отношение в данном случае > вообще переменная m_pMainWnd имеет к AfxMessageBox > (допустим мы поменяем сообщение на простое "Hello World" > без обращения к члену диалога). Если вообще не создавать > никакого окна и сразу в InitInstance прописать > AfxMessageBox то оно нормально сработает с нулевым > m_pMainWnd.
Просто если главное окноужебыло задано, то обработка его закрытия имеет особый смысл для приложения. И после этого функция GetMessage, которая вызывается при создании всех последующих окон искренне считает, что приложение находится на стадии завершения и возвращает ноль, что приводит к практически мгновенному закрытию всех в дальнейшем создаваемых окон. Кстати, если не инициализировать m_pMainWnd, то есть шанс что все заработает как ожидалось.
> > И похоже, что в очередь сообщений уже попало WM_QUIT, > > которое при дальнейшей обработке приводит к > немедленному > > закрытию всех свежесозданных окон. По крайней мере, > если > > воткнуть пониже > Насколько я это понимаю, для CHelloApp такое понятие как > очередь сообщений появляется только после того, как > InitInstance вернет значение TRUE - до этого момента никто > извне никак на его работу повлиять не может. Ну а то что > WM_QUIT посылается в диалог опять же непонятно каким > образом прерывает выполнение InitInstance.
Не совсем так. В случае приложения с главным окном-диалогом после завершения InitInstance завершается и все приложение, а качестве его очереди сообщений используется диалоговая.
> > и сходить дебаггером внутрь, то во внутренностях > Пытался с этим разобраться, но пока совершенно ситуация для > меня никак не проясняется.
|
|
|