Message Handler des Threads festlegen
-
Hallo, ich habe eine Anwendung im Hintergrund, die sich ein paar Hotkeys registriert, aber kein Fenster hat:
::RegisterHotKey(0, i, MOD_SHIFT, VK_F1 + i)In der MSDN steht die Nachrichten kommen die die Message Queue des Threads, aber wie lege ich diese fest?
Normalerweise habe ich immer sowas, und gib das bei der Class an:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)Gruß
-
Indem Du einfach eine Message-Pump in Deinem Thread betreibst...
-
Also, das hab ich vergessen, ich mach die Nachrichtenbehandlung so:
MSG Msg; while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); }Also ich möchte festlegen wohin DispatchMessage Nachrichten für den Thread hinleitet.
Oder muss ich an der Stelle prüfen ob hwnd von Msg 0 ist?
-
Also wirklich so??
[cpp] while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
if(Msg.hwnd == 0)
ThreadProc(Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam);
else
DispatchMessage(&Msg);
}
-
Ja, oder wie immer Du auch willst:
- PeekMessage mit NULL
- GetMessage
- GetQueueStatus
- WaitMessage
- MsgWaitForMultipleObjects(Ex)
-
...