消息循環

消息循環

所謂“消息循環”,實際是程序循環。

即Windows 中有一個系統消息隊列,對於每一個正在執行的Windows應用程序,系統為其建立一個“消息隊列”,即應用程序隊列,用來存放該程序可能創建的各種窗口的消息。應用程序中含有一段稱作“消息循環”的代碼,用來從消息隊列中檢索這些消息並把它們分發到相應的窗口函數中。

基本介紹


Windows是以消息驅動的操作系統,Windows 消息提供了應用程序與Windows系統之間進行通訊的手段。
Windows應用程序是基於消息的程序設計模式,使用事件驅動編程模型,分為消息概述、消息結構、消息類型。
消息循環代碼是應用程序中主函數WinMain ( )中類似如下的程序段:
while(GetMessage(&msg,NULL,0,0))
{ //從消息隊列中取得消息
TranslateMessage(&msg);
//檢索並生成字元消息WM_CHAR
DispatchMessage(&msg);
//將消息發送給相應的窗口函數
}
由此可見,所謂“消息循環”,實際是程序循環。
Windows 應用程序創建的每個窗口都在系統核心註冊一個相應的窗口函數,窗口函數程序代碼形式上是一個巨大的switch 語句,用以處理由消息循環發送到該窗口的消息,窗口函數由Windows 採用消息驅動的形式直接調用,而不是由應用程序顯示調用的,窗口函數處理完消息后又將控制權返回給Windows。