Ich habe erfolgreich registriert eine Fensterklasse RegisterClassEx
und erstellt ein Fenster using CreateWindowEx
:Welche Bedingungen müssen erfüllt sein, damit eine Fenstermeldung gepostet werden kann?
m_hInstance = ::GetModuleHandle(NULL);
...
m_hWnd = ::CreateWindowEx(0, "CMyClassName", "Message Window", 0, 0, 0, 0, 0, HWND_MESSAGE, 0, m_hInstance, 0);
Die zugeordnete Fensterprozedur empfängt Nachrichten 36, 129, 131 und 1, und die zurückgegebene HWND
ist nicht null. Allerdings, wenn ich rufe später PostMessage
(von einem anderen Thread):
bool bPosted = ::PostMessage(m_hWnd, WM_APP + 3, 0, 0);
obwohl bPosted wahr ist, wird die Fensterprozedur nicht aufgerufen. Ich versuche herauszufinden, warum das so sein sollte. Die Fensterprozedur ist die aus der MSDN example - Ich wollte einen weiteren Fall hinzufügen, sobald ich bestätigt habe, dass die Nachrichten durchkommen.
Welche Bedingungen müssen erfüllt sein, damit eine Fenstermeldung gepostet werden kann?
Ich habe die Frage als Antwort auf einige Ihrer Bedenken aktualisiert – Simon
Die WndProc ist wahrscheinlich hier wichtig. Ich schätze auch die Nachrichtenschleife, wenn auch nur der Vollständigkeit halber. –
Ich habe einen Link zu dem wndproc-Code hinzugefügt, den ich verwendet habe. Muss ich eine Nachrichtenschleife schreiben? Ich habe bereits die vier Nachrichten erhalten, die ich beschrieben habe, also nahm ich an, dass eine Nachrichtenschleife lief. – Simon