Microsoft Windows的訊息迴圈 微軟視窗操作系统是以事件驅動做為程式設計的基礎程式的執行緒会从作業系統获取訊息應用程式會不斷循环呼叫GetMessage函式或是PeekMessage函式來接收這些訊息這個循环稱之為事件迴圈基本上事件迴圈的程式碼如下所示C語言  C程式語言 MSG msg 用于存储一条消息 BOOL bRet 从UI线程消息队列中取出一条消息 while bRet  GetMessage msg NULL       if bRet    错误处理代码通常是直接退出程序  else  TranslateMessagemsg 按键消息转换为字符消息 DispatchMessagemsg 分发消息给相应的窗体   雖然在程序上並沒有很嚴格的規定與要求但是一般來說它的事件迴圈通常會呼叫TranslateMessage函式與DispatchMessage函式這兩個函式會傳遞訊息給回呼函式以及调用相应視窗的消息处理函数 現在的繪圖介面架構程式設計例如Visual Basic與Qt基本上是不會要求應用程式直接拥有視窗程式的訊息迴圈但是會以鍵盤與滑鼠的按鍵動作來作為事件的處理機制在這些架構底下訊息迴圈的痕迹還是可以被找到的 注意在上述的原始碼裡尤其在while迴圈大於零的條件即使GetMessage函式的傳回值型態是英文字大寫的BOOL但是在Win視窗程式裡它是被定義成int整數型態它有兩個值TRUE是整數的FALSE是整數的整數 代表error例如第二个参数为输出的窗口句柄但取不到值的时候整數值当GetMessage获取到WMQUIT訊息假如有其他訊息那麼非零值會當成傳回值有訊息的傳回值通常是正值但是有些程式設計的說明文件不一定會說明的很詳細