Skúma správy vo fronte

Príležitostne preskúmať obsah vlákno front hlásení od mimo vlákno správ slučky potrebuje niektorá aplikácia. Napríklad ak okno postup podávania žiadostí vykoná zdĺhavé Kreslenie operáciu, môžete používateľom umožniť prerušenie prevádzky. Ak aplikácia pravidelne skúma front hlásení počas prevádzky pre myš a klávesnicu správy, to nebude reagovať na užívateľského vstupu až po dokončení operácie. Dôvodom pre to je DispatchMessage funkcia je vlákno správ slučku nevráti do okna postup dokončí spracovanie správy.

Skúmať front hlásení počas zdĺhavej operácie, môžete použiť funkciu PeekMessage . PeekMessage je podobný s funkciou GetMessage ; tak skontrolovať, front hlásení správy, ktorá sa zhoduje s kritériá filtra a potom skopírujte správu MSG štruktúry. Hlavný rozdiel medzi dve funkcie je, že GetMessage sa nevráti do správy vyhovujúci kritériám filtra je umiestnený vo fronte, keďže PeekMessage vracia okamžite bez ohľadu na to toho, či správa je vo fronte.

Nasledovný príklad ukazuje spôsob použitia PeekMessage preskúmať front hlásení kliknutí myšou a klávesové vstupy počas zdĺhavej operácie.

HWND hwnd; 
BOOL fDone; 
MSG msg; 
 
/ / Začať operácie a pokračovať dovtedy, kým je kompletná / / alebo kým používateľ klikne myšou alebo stlačí kláves. 
 
fDone = F&ALSE; 
zatiaľ čo (! fDone) {fDone = DoLengthyOperation(); / / definovanom aplikáciou funkcia / / odstrániť všetky správy, ktoré môžu byť vo fronte. Ak / / front obsahuje myši alebo klávesnice / / správy, koniec operácie. 
 
    zatiaľ čo (PeekMessage (amp; msg, hwnd, 0, 0, PM_REMOVE)) {switch(msg.message) {prípad WM_LBUTTONDOWN: prípad WM_RBUTTONDOWN: prípad WM_KEYDOWN: / / / / vykonať akékoľvek potrebné čistenie. 
                / / fDone = TRUE; 
        } 
    } 
} 
 

Iné funkcie, vrátane GetQueueStatus a GetInputStateumožňuje preskúmať obsah front hlásení vlákno. GetQueueStatus Vracia pole príznakov, ktoré udáva typy správ vo fronte; jeho použitie je najrýchlejší spôsob, ako zistiť, či front obsahuje všetky správy. GetInputState vracia hodnotu Pravda ak front obsahuje myši alebo klávesnice správy. Obe tieto funkcie použiť na určenie, či front obsahuje správy, ktoré musia byť spracované.

Index