Správa slučky

Jednoduché správy slučky pozostáva z jedného funkciou volania do každej z týchto troch funkcií: GetMessage, TranslateMessagea DispatchMessage.

MSG msg;

zatiaľ čo (GetMessage (amp; msg, NULL, 0, 0))
{
    TranslateMessage (& msg);
    DispatchMessage (& msg);
} 

Funkcia GetMessage načíta správy z front a skopíruje do konštrukcie typu MSG. Vráti hodnotu inú ako nula, pokiaľ to narazí WM_QUIT správy, v tomto prípade vracia FALSE a končí slučky. V žiadosti o jedno-závitové je končí správy slučky často prvým krokom pri zatvorení aplikácie. Aplikáciu môžete ukončiť svoju nabíjaciu stanicu pomocou funkcie PostQuitMessage , obvykle v reakcii na WM_DESTROY správy v okne postup hlavné okno aplikácie.

Ak zadáte popisovač okna ako druhý parameter GetMessageiba správy pre zadané okno načítajú z frontu. GetMessage môžete tiež filtrovať správy vo fronte, načítanie len správy, ktoré spadá do špecifikovaného rozsahu. Ďalšie informácie o filtrovanie správ nájdete v téme Filtrovanie správ.

Vlákno správ slučky musí zahŕňať TranslateMessage Ak vlákno prijímať znak vstup z klávesnice. Systém vytvára virtuálne kľúčové správy (WM_KEYDOWN a WM_KEYUP) vždy, keď používateľ stlačí kláves. Virtuálne kľúčové správa obsahuje kód virtuálneho klávesu, označujúce, ktorý kláves stlačené, ale nie hodnota znaku. Získavať túto hodnotu slučky správa musí obsahovať TranslateMessage, ktorá prekladá virtuálne kľúčové správy do znakov správy (WM_CHAR) a umiestni ho späť do frontu správ aplikácie. Charakter správy môžete potom odstránené po následných iteráciu správy slučky a odosielajú do okna postup.

Funkcia DispatchMessage odošle správu postupu okno priradené okno rukoväť špecifikované v štruktúre MSG . Ak okno rukoväť je HWND_TOPMOST, DispatchMessage odošle správu na okno postupy všetkých najvyššej úrovne systému windows v systéme. Ak okno rukoväť NULL, DispatchMessage nerobí nič s hlásením.

Hlavné vlákno žiadosť začína svoju správu slučky po inicializácii aplikácie a vytváranie aspoň jedno okno. Akonáhle začal, slučky správy naďalej načítať správy z front hlásení je vlákno a ich vyslaniu potreby systému Windows. Správa slučky končí, keď funkciu GetMessage WM_QUIT hlásenie sa odstráni z frontu správ.

Iba jednu správu vedenia je potrebná na frontu správ, dokonca aj vtedy, ak žiadosť obsahuje mnoho windows. DispatchMessage vždy odosiela správu do okna správne; je to spôsobené každej správy vo fronte je MSG štruktúra, ktorá obsahuje rukoväť okno, do ktorého správu patrí.

Môžete upraviť správu vedenia v mnohými spôsobmi. Napríklad, môžete načítať správy z frontu, bez toho, aby ich vysielania na okno. Je to užitočné pre aplikácie, ktoré posielať správy nie špecifikujúce oknom. Môžete tiež priamo GetMessage chcete vyhľadať konkrétne správy, opúšťa iné správy vo fronte. Je to užitočné, ak musí dočasne obísť zvyčajného poradia FIFO front hlásení.

Aplikácia, ktorá používa skratky musí byť schopný preložiť klávesnice správy do príkazu správ. V takom prípade aplikácie Správa slučky musí obsahovať volanie funkcie TranslateAccelerator . Ďalšie informácie o skratky v téme Klávesové skratky.

Ak vlákno používa sú nemodálne dialógovým oknom, slučky správa musí obsahovať funkciu IsDialogMessage tak, aby dialógového okna môžete získať vstup z klávesnice.

Index