回覆列表
  • 1 # 使用者6472515948272

    WM_MOUSE­MOVE、WM_PAINT和WM_TIMER這些訊息不是在事件發生的時候進入佇列,而是直接設定一個位,在訊息迴圈GetMessage/PeekMessage的時候,如果當前沒有符合條件的訊息,才會去查那個位有沒有設,有就產生一個。

    當然滑鼠移動的時候系統還要做別的事情,比如跨越視窗邊界的時候要去發WM_SETCURSOR看看應用程式是不是改了游標,根據游標位置來決定是設WM_MOUSEMOVE還是WM_NCMOUSEMOVE標誌等等。還要呼叫你自己在GetMessage之後寫的繪圖等訊息處理程式碼。不管怎麼說,如果你一直在移動滑鼠,那麼兩個WM_MOUSE­MOVE之間的時間間隔,是取決於你GetMessage/PeekMessage的頻率,這個並不隨滑鼠移動速度而增加。

    參考About Messages and Message Queues

  • 中秋節和大豐收的關聯?
  • 手裡有100萬閒錢,投資股市作為一門副業靠譜嗎?