Vysielanie a posielanie správ

Akákoľvek žiadosť môžete zaúčtovať a posielať správy. Rovnako ako systému, žiadosť miest správu skopírovaním do frontu správ a pošle správu premytím údaje správy ako argumenty okno postupu. Posielať správy, aplikácia používa funkciu PostMessage . Žiadosť môžete poslať správu volanie SendMessage, BroadcastSystemMessage, SendMessageCallback, SendMessageTimeout, SendNotifyMessagealebo SendDlgItemMessage funkcia.

Žiadosť zvyčajne miest sprßvou, ktorß oznámi špecifické okno na vykonanie úlohy. PostMessage vytvára MSG štruktúru správy a kópie správy do frontu správ. Aplikácie Správa slučky nakoniec načíta správy a odosiela postupu vhodné okno.

Žiadosť zvyčajne odošle hlásenie oznámiť okno postup na vykonanie úlohy okamžite. Funkcia SendMessage odošle správa postupu okno zodpovedajúce danom okno. Funkcia počká, kým okno postup dokončí spracovanie a potom vráti výsledok správy. Nadradenými a podradenými windows často komunikovať zaslaním správy na seba navzájom. Napríklad, rodičovské okno, ktorá má ovládací prvok upraviť svoje dieťa okno môžete nastaviť textu ovládacieho prvku zaslaním správy k nemu. Ovládací prvok môžete informovať rodičovské okno zmien v texte, ktoré vykonávajú používateľa zaslaním správy späť na materský podnik.

Funkcia SendMessageCallback odošle správu postupu okno zodpovedajúce danom okno. Avšak, táto funkcia vracia okamžite. Po okno postup procesy správy systému vyžaduje špecifikované callback funkcie. Ďalšie informácie o funkcii spätného volania nájdete SendAsyncProc funkcie.

Niekedy budete chcieť poslať alebo odoslať správu všetkým najvyššej úrovne systému Windows v systéme. Napríklad, ak uplatnenie zmeny systémový čas musí oznámiť všetky najvyššej úrovne systému windows o zmene zaslaním WM_TIMECHANGE správy. Aplikáciu môžete posielať alebo odoslať správu všetkým najvyššej úrovne systému Windows volanie SendMessage alebo PostMessage funkcie a zadanie HWND_TOPMOST v parametri hwnd . Môže tiež vysielať správy na všetky žiadosti volaní funkcie BroadcastSystemMessage a určením BSM_APPLICATIONS lpdwRecipients parameter.

Žiadosť môžete odoslať správu bez špecifikovania oknom. Ak uplatňovanie dodáva rukoväť NULL okno pri telefonovaní PostMessage, správa je vyslaný do frontu spojené s aktuálne vlákno. Pretože je zadaná žiadna okna rukoväť, žiadosť musí spracovať na správu v správe vedenia. To je jeden spôsob, ako vytvoriť správu, ktorá sa uplatňuje na celej aplikácie namiesto špecifických okno.

Pomocou funkcie InSendMessage alebo InSendMessageEx postup okna môžete určiť, či je spracovanie správa poslaná iným vláknom. Táto možnosť je užitočná pri spracovanie správy závisí od pôvodu správy.

Chybu spoločného programovania sa predpokladať, že funkciu PostMessage vždy príspevky správu. To nie je pravda, pri zaplnení frontu správ. Žiadosti by mali kontrolovať vrátenú hodnotu funkcie volania typu PostMessage určiť, či bola zaúčtovaná správy a ak nebola, repost to.

Index