windows - Behandling af krog meddelelser i en tråd C ++

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en statisk global variabel.


 static std::string buffer = "";


I hoved bruger jeg SetWindosHookEx til at skabe en system bred krog, der vil virke på bestemte museklik.


HHOOK keyHook = SetWindowsHookEx(WH\_KEYBOARD\_LL, keyHookProc, hInstance, 0);


Men jeg vil ikke have mit hovedprogram venter på at blive behandlet på hovedtråden. Så skaber jeg en ny tråd og løsner den med funktionen til at behandle meddelelser.


void help::runThread(){
 std::thread messages(&help::sendMessage, this);
 messages.detach():
}

void helper::sendMessage(){
MSG message;
while (GetMessage(&message, NULL, 0, 0)) {
    TranslateMessage(&message);
    DispatchMessage(&message);
}
}


Jeg vil registrere hvilke museklik, der trykkes (venstre/højre), og tilføj strenge venstre/højre til den statiske/globale streng fra min frilufts tråd.


Så er min keyHookProc hvor den tilføjer strengene til den statiske globale variabel.
Dette virker, hvis jeg gør det uden at bruge tråden til at håndtere beskederne.


Er det muligt at gøre med en tråd, eller skal krogbeskedbehandlingen være fra hovedtråd?

Bedste reference