Какие условия должны быть выполнены для публикации сообщения в окне?
Я успешно зарегистрировал класс окна, используя RegisterClassEx
и создал окно, используя CreateWindowEx
:
m_hInstance = ::GetModuleHandle(NULL);
...
m_hWnd = ::CreateWindowEx(0, "CMyClassName", "Message Window", 0, 0, 0, 0, 0, HWND_MESSAGE, 0, m_hInstance, 0);
Соответствующая оконная процедура принимает сообщения 36, 129, 131 и 1, а возвращенные HWND
не является нулевым Тем не менее, когда я позвоню позже PostMessage
(из другой ветки):
bool bPosted = ::PostMessage(m_hWnd, WM_APP + 3, 0, 0);
хотя bPosted имеет значение true, оконная процедура не вызывается. Я пытаюсь понять, почему это должно быть. Оконная процедура из примера MSDN - я намеревался добавить еще один случай, как только подтвердил, что сообщения проходили.
Какие условия должны быть выполнены для публикации сообщения в окне?
1 ответ
Там нет условий.
При использовании сообщений [0, WM_USER) существуют некоторые ограничения, но они не связаны с WM_APP.
Вы проверяете код возврата PostMessage?
Вам, вероятно, следует опубликовать (хотя бы часть) кода, который вы используете, в PostMessage, а также зарегистрированный WndProc.
Вы также должны предоставить цикл сообщений, если вы этого не делаете. Большинство фреймворков скрывают эту деталь (по крайней мере, в некоторой степени), но если вы имеете дело с win32 напрямую, вы должны предоставить свой собственный.