Ich bin kürzlich in eine Situation geraten, in der ich einen nicht modalen Dialog in Win32 verwenden wollte.Win32: Was macht meine Nachrichtenschleife in diesem Beispiel falsch?
Win32: Toolbar dialog seems to never get focus and causes the main window to process slow!?
Und ich herausgefunden, dass diese Schleife meine Botschaft war:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
// Doing required stuff here...
while (GetMessage(&Msg, hWnd, 0, 0) > 0) {
// Processing messages here...
}
}
In der Tat, diese Meldungsschleife in Ordnung, so lange funktioniert, wie ich keinen modalen Dialog habe , da es mit modalen Dialogen vollkommen funktioniert, da sie ihre eigene Nachrichtenschleife verarbeiten. Mein nicht modales Dialogfeld funktionierte einwandfrei, als ich die hWnd
Instanz für NULL
ersetzte. Ich verstehe nur nicht den Unterschied, außer dass es scheint, dass ich die Nachrichten nicht für ein bestimmtes Fenster bekomme.
Kann jemand erklären, was diese Nachrichtenschleife inkorrekt macht?
Wie diese:
while (GetMessage(&Msg, NULL, 0, 0) > 0) {
// Processing messages here...
}
funktioniert einwandfrei!
Ja, ein bisschen zu offensichtlich. Ein modusunabhängiger Dialog erfordert auch IsDialogMessage() in der Nachrichtenschleife. –
@Hans: Ja, tatsächlich. Ich hätte es in diese Probe geschrieben, ich habe es wie in meiner Frage in Link gezeigt, obwohl ich es hier nicht illustriert habe. Mein Fehler. –