Zaradené do frontu správ

Systém môže zobraziť ľubovoľný počet windows naraz. Chcete smerovať myš a klávesnicu vstup do okna vhodné, systém použije fronty správ.

systém tvrdí, front hlásení jednotný systém a ľubovoľný počet fronty správ vlákno, jeden pre každé vlákno GUI. Sa zabránilo režijné náklady vytvorenia frontu správ pre-GUI vlákna, všetky vlákna sú vytvorené spočiatku bez front hlásení. Systém vytvára front hlásení vlákno iba vtedy, keď vlákno robí svoj prvý hovor do jednej funkcie Win32 používateľa alebo GDI.

Vždy, keď užívateľ pohne myšou, kliknutia tlačidiel myši alebo typy na klávesnici, ovládač myši alebo klávesnice konvertuje vstup do správ a ich umiestni do front hlásení systému. Systém odstráni správy, jeden po druhom, front hlásení systému, skúma ich na určenie cieľového okna a potom príspevky na front hlásení vlákno, ktoré vytvorili do cieľového okna. Front hlásení vlákno dostane všetky myš a klávesnicu správy pre systém windows vytvoril vlákno. Vlákno správ odstráni jeho frontu a nasmeruje systém ich poslať vhodné okno postup na spracovávanie.

S výnimkou roku WM_PAINT správu systému vždy príspevky správy na koniec frontu správ. To zabezpečuje, že okno dostane jeho vstupné správy v správnom first-in; first-out (FIFO) poradí. WM_PAINT správe však ostáva vo fronte a predložila postupu okno iba vtedy, ak front obsahuje iné správy. Viaceré hlásenia WM_PAINT pre rovnaké okno sa kombinujú do jedného WM_PAINT správy, konsolidácia všetky neplatné časti oblasti klienta do jedinej oblasti. Kombinovanie hlásenia WM_PAINT znižuje počet opakovaní okno musí prekresliť obsah oblasti svojho klienta.

Systém miest sprßvou, ktorß front hlásení vlákno vyplnenie MSG štruktúru a potom ich skopírujete do frontu správ. Informácie v MSG zahŕňa: popisovač okna, pre ktorý správa je určené, identifikátor správy, dva parametre správy, správa bola zaúčtovaná doba a pozíciu kurzora myši. Vlákno môžete odoslať správu vlastných front hlásení alebo frontu iným vláknom pomocou funkcie volania typu PostMessage alebo PostThreadMessage.

Aplikáciu môžete odstrániť správy z jeho frontu pomocou funkcie GetMessage . Preskúmať správu bez jeho odstránenia z jeho frontu jedna aplikácia môže použiť funkciu PeekMessage . Táto funkcia MSG vyplní informácie o správe.

Po odstránení správy z jeho frontu, jedna aplikácia môže použiť funkciu DispatchMessage priame systému na odoslanie správy na okno postup na spracovávanie. DispatchMessage trvá ukazovateľ MSG , že bola naplnená predchádzajúcich volanie funkcie GetMessage alebo PeekMessage . DispatchMessage prechádza okno rukoväť, identifikátor správy a dva parametre správy postupu okno, ale nie prejsť času napísaných správ alebo myš pozíciu kurzora. Aplikáciu môžete načítať túto informáciu volaním funkcie GetMessageTime a GetMessagePos pri spracovaní správy.

Vlákno môžete použiť funkciu WaitMessage s výťažkom kontrolu k ostatným vláknam, keď to má žiadne správy vo fronte správy. Funkcia pozastaví vlákno a nevráti do novej správy sa umiestni do frontu správ je vlákno.

Môžete volať funkciu SetMessageExtraInfo chcete pridružiť front hlásení aktuálne vlákno 32-bitová hodnota. Potom volajte GetMessageExtraInfo funkcie získať hodnotu priradenú poslednú správu Zdroj: funkcia GetMessage alebo PeekMessage.

Index