Win32 Windows編程 六

來源:互聯網
上載者:User

標籤:windows   編程   c++   應用程式   

WM_PAINT訊息

1 WM_PAINT 由於視窗的互相覆蓋等,產生需要繪製的地區, 那麼會產生WM_PAINT訊息。一般情況下,不直接發送WM_PAINT訊息,通過API聲明需要繪製地區來產生

WM_PAINT訊息

例如可以使用 InvalidateRect 聲明一個需要重新繪製的地區

BOOL InvalidateRect(  HWND hWnd,           // handle to window  CONST RECT* lpRect,  // rectangle coordinates  BOOL bErase          // erase state);
2 WM_PAINT 的注意點2.1 如果一個訊息佇列中 有多個WM_PAINT訊息,只有最後一個訊息有作用2.2 WM_PAINT訊息處理中,要清空需要被繪製的地區。BeginPaint3 WM_PAINT 的使用3.1 WM_PAINT開始時 必須調用BeginPaint3.2 WM_PAINT結束時 必須調用EndPaint
鍵盤訊息

1 鍵盤訊息

按鍵訊息

WM_KEYDOWN 當鍵被按下時產生

WM_KEYUP 當鍵被釋放時產生

WM_SYSKEYDOWN     (ALT/F10) 當系統鍵被按下時產生

WM_SYSKEYUP當系統鍵釋放時產生

字元訊息

WM_CHAR  當有字元鍵被按下時產生 

TranslateMessage會將WM_KEYDOWN訊息中 可以顯示的按鍵 轉換成WM_CHAR的訊息

2 訊息參數

WPARAM - 虛擬鍵碼

LPARAM  - 相關的按鍵資訊

3 訊息的使用

3.1 當有按鍵訊息時,首先進入系統訊息佇列 然後被程式的訊息迴圈擷取 

3.2 訊息的處理

4 鍵盤訊息的順序

對於可顯示字元:WM_KEYDOWN WM_CHAR WM_KEYUP

對於不可顯示字元: WM_KEYDOWN WM_KEYUP

對於系統鍵: WM_SYSKEYDOWN WM_KEYUP

如果按鍵一直不釋放,會重複產生

WM_KEYDOWN(WM_KEYCHAR)






相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.