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