2012年3月20日 星期二

Message Queue & Loop

在 Windows 中, 一個 thread 在建立後並不會馬上擁有自己的 message queue, 而是在需要時才會被建立, 譬如在這個 thread 中呼叫了 CreateWindow() 等函式.

Windows 將訊息放至 message queue 後, thread 並不會自動將訊息分派出去, 而是必須呼叫 GetMessage() 將訊息取出, 接著呼叫 DispatchMessage() 將訊息分派出去, 重複這些動作以形成一個 message loop. 因此如果你建立一個 thread 及一個 window, 但並沒有實作 message loop, 那麼該 window 是無法收到訊息的.

以上雖然是很基本的 message queue 概念, 但還是有很多人不清楚, 因為開發工具都把這些動作做掉了啊!


更多資訊:
- Using Messages and Message Queues

沒有留言:

張貼留言