幾個WM消息其lParam和wParam參數定義


幾個WM消息其lParam和wParam參數定義

鼠標消息 測試

lParam:低字組爲x 座標,高字組爲y 座標,這兩個座標是相對於窗口顯示區域左上角的位置。 spa

Wparam:指示滑鼠按鍵以及Shift和Ctrl 鍵的狀態。可使用頭文件WINUSER.H 中定義的位元遮罩來測試wParam。MK 字首表明「滑鼠按鍵」。 指針

MK_LBUTTON 按下左鍵
MK_MBUTTON 按下中鍵
MK_RBUTTON 按下右鍵
MK_SHIFT 按下Shift 鍵
MK_CONTROL 按下Ctrl 鍵

鍵盤消息 code

lParam:含有對了解按鍵很是有用的一些資訊,大概看下圖吧。 索引


wParam:放的是按鍵時產生的虛擬鍵碼。當按下的鍵能夠產生字元信息時則此參數放的是字符的ASCII碼。 事件

WM_CTLCOLORBTN it

此消息是當口即將爲其顯示區域着色時,由按鈕控件發送給父窗口消息處理程序的一個消息。 table

lParam:按鈕的窗口句柄。 程序

wParam:按鈕的設備內容句柄。 項目

WM_DRAWITEM

此消息這出如今如下幾種狀況中:當按鈕被創建時,當按鈕被按下或被放開時,當按鈕獲得或者失去輸入焦點時,以及當按鈕須要從新着色的任什麼時候候。

lParam:指向形態DRAWITEMSTRUCT結構的指針。

對按鈕而言很是重要的結構字段有hDC (按鈕的設備內容)、rcItem(提供按鈕尺寸的RECT結構)、CtlID(控件窗口ID)和itemState(它說明按鈕是否被按下,或者按鈕是否擁有輸入焦點)。

WM_COMMAND

通常子窗口向父窗口發送此消息。

lParam:子窗口句柄。

wParam:低字組爲子窗口的ID號,高字組爲通知碼。

WM_KILLFOCUS

wParam:正在接收輸入焦點的窗口的句柄。

WM_SETFOCUS

wParam:正在失去輸入焦點的窗口的句柄。

通常子窗口向父窗口發送的消息爲WM_COMMAND,可是滾動條控件不向父窗口發送此消息,而是像窗口滾動條那樣發送WM_VSCROLL 和WM_HSCROLL 消息。

在處理捲動消息時,能夠經過lParam 參數來區分窗口滾動條與滾動件控件。對於窗口滾動條其值爲0,對於滾動條控件其值爲滾動條窗口句柄。對於二者來講,wParam 參數的高字組和低字組的含義相同。

當使用者已經從菜單中選中了一個被啓用的菜單項,Windows也會向程序發送此消息。若是您碰巧爲菜單和子窗口控件使用同一ID碼,那麼您能夠經過lParam的值來區別它們,菜單項的lParam其值爲0,請參見下表:

  菜單 控件
LOWORD (wParam): 菜單ID 控件ID
HIWORD (wParam): 0 通知碼
lParam: 0 子窗口句柄

WM_SYSCOMMAND消息似於WM_COMMAND消息,只是WM_SYSCOMMAND表示使用者從系統菜單中選擇一個啓用的菜單項:

wParam: 菜單ID

lParam: 0

然而,若是WM_SYSCOMMAND消息是由按鼠標按鍵產生的,LOWORD(lParam)和HIWORD(lParam)將包含鼠標光標位置的x和y屏幕座標。

菜單ID指示系統菜單中的哪一項被選中。對於預先定義的系統菜單項,應該經過和0xFFF0與操做屏蔽低4位,結果值應該爲下列之一:SC_SIZE,SC_MOVE,SC_MINIMIZE,SC_MAXIMIZE,SC_NEXTWINDOW,SC_PREVWINDOW,SC_CLOSE,SC_VSCROLL,SC_HSCROLL,SC_ARRANGE,

SC_RESTORE和SC_TASKLIST。此爲,wParam能夠是SC_MOUSEMENU或SC_KEYMENU.

WM_INITMENU

當使用者選擇一個菜單項時,Windows向窗口消息處理程序發送的其中一個消息,此消息一般只需把它傳遞給DefWindowProc便可。

lParam:0

wParam:主菜單句柄

WM_MENUSELECT

WM_MENUSELECT是一個菜單追蹤消息,wParam的值告訴您目前選擇的是菜單中的哪一項(加高亮度顯示的那個),wParam的高字組中的「選擇旗標」能夠是下列這些旗標的組合:MF_GRAYED、MF_DISABLED、MF_CHECKED、MF_BITMAP、MF_POPUP、MF_HELP、MF_SYSMENU和MF_MOUSESELECT。若是您須要根據對菜單項的選擇來改變窗口顯示區域的內容,那麼您可使用WM_MENUSELECT消息。許多程序把該消息發送給DefWindowProc。

LOWORD (wParam):被選中項目:菜單ID或者彈出式菜單句柄

HIWORD (wParam):選擇標誌

選擇標誌能夠是下列這些標誌的組合:MF_GRAYED,MF_DISABLED,MF_CHECKED,MF_BITMAP,MF_POPUP,MF_HELP,MF_SYSMENU,MF_MOUSESELECT。

lParam: 包含被選中項目的菜單句柄

WM_INITMENUPOPUP

當Windows準備顯示一個彈出式菜單時,它給窗口消息處理程序發送一個WM_INITMENUPOPUP消息,參數以下:

wParam: 彈出式菜單句柄

LOWORD (lParam):彈出式菜單索引

HIWORD (lParam): 系統菜單爲1,其它爲0

WM_MENUCHAR

實際上它根本不是菜單消息。在下列兩種狀況之一發生時,Windows會把這條消息發送到窗口過程:若是用戶按Alt和一個與菜單項不匹配的字符時,或者當顯示彈出式菜單而用戶按下一個與彈出式菜單裏的項不匹配的字符鍵時。

LOWORD(wParam):字符代碼(ASCII或Unicode)

HIWORD(wParam):選擇碼

lParma:菜單句柄

選擇碼是:

0 不顯示彈出式菜單

MF_POPPUP 顯示彈出式菜單

MF_SYSMENU 顯示系統彈出式菜單。

Windows程序一般應該把該消息傳遞給DefWindowProc,它通常給Windows返回0,這會使Windows發出蜂鳴。

1) 在消息WM_SIZE中,    cxClient = LOWORD(lParam);
                                              cyClient = HIWORD(lParam);
           lParam在WM_SIZE中,低位表示客戶區的寬,高位表示客戶區的長

(2) 在消息WM_CREATE中,wParam 來自子窗口
   wmId    = LOWORD(wParam); 表示子窗口的ID
    wmEvent = HIWORD(wParam); 表示子窗口的事件的通知嗎
lParam 是指向CREATESTRUCT結構的指針(LPCREATESTRUCT)lParam

(3) WM_COMMAND
LOWORD(wParam)—— 子窗口ID
HIWORED(wParam) —— 通知嗎
lParam——子窗口句柄

(4)WM_VSCROLL和 WM_HSCROLL
lParam——若是是窗口滾動條爲0,若是是滾動條控制其值爲滾動條的句柄
wParam——對於窗口滾動條和滾動條控制而言,意義同樣, LOWORD(wParam)表示滾動事件

(5) 在消息WM_KILLFOCUS中,wParam 接受輸入焦點的窗口句柄

(6)在消息WM_SETFOCUS中,wParam 失去輸入焦點的窗口句柄

(7) WM_DRAWITEM——BS_OWNERDRAW風格的子窗口,從新着色的時候發給主窗口的消息
其中lParam消息指向類型DRAWITEMSTRUCT結構的指針,該結構域中包括hDC,reItem(提供尺寸的RECT結構),CtlID(控制窗口ID),itemState(是否擁有焦點)。

(8) WM_CTLCOLORSCROLLBAR 滾動條控制改變自身顏色的事件。lParam 爲觸發這個事件的滾動條控制的句柄(HWND)lParam

相關文章
相關標籤/搜索