標籤: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)