vc 訊息對映之訊息種類

2021-09-01 15:45:43 字數 1915 閱讀 2971

在windows中應用程式有三種訊息:視窗訊息,命令訊息,控制項訊息。

1、視窗訊息

一般和視窗內部運作有關,如建立視窗,繪製視窗,銷毀視窗,通常,訊息是從系統發到視窗,或從視窗發到系統。傳送函式sendmessage()或postmessage()。包涵的三個變數解釋如下:

message————-wm_***

wparam—————定義的命令

lparam—————-定義的命令

wm_***能夠是許多視窗訊息之一,如下列訊息:

wm_creat:告訴視窗初始化自己。

wm_paint: 告訴視窗繪製自己。

wm_mousemove:告訴視窗滑鼠移經他。

當然更有好多,看msdn吧~~~~

2 、命令訊息

命令訊息通常和處理使用者請求有關,當使用者單擊乙個選單或工具欄時,命令訊息就產生了。併發送到能處理該訊息的類或函式(如裝載文字,儲存選項等)。

當用sendmessage(),postmessage()傳送命令訊息時,變數message,wparam,lparam的格式如下:

message————–wm_command

wparam—————-0或commandid

iparam—————–0

commandid要麼時選中的選單項的id,要麼是被單擊的工具欄按鈕id,主意commandid不能大於乙個字長,系統就只用零來填寫高位。某些控制項也傳送wm_command訊息,區別兩種訊息的唯一的方法是看lparam是否為null。

3、控制項通知訊息

通常控制項通知訊息是有重要的事情發生,有控制項視窗傳送到父視窗的意種訊息。如開啟乙個組合框。控制項通知父視窗為進一步控制子視窗提供了機會。例如,開啟乙個組合框,父視窗能夠用組合框開始建立時得不到的訊息填充他。

控制項通知經歷了乙個演變過程。因而sendmessage()的變數message,lparam,wparam有三種格式如下:

(1) 第一種控制項通知訊息格式

第一種控制項通知訊息格式只能時視窗訊息的子集。

message————–wm_***

wparam—————-定義的命令

iparam—————–定義的命令

wm_***能夠是以下訊息中的任意一種:

wm_parentnotify :表明乙個控制項視窗要麼被建立或銷毀,要麼滑鼠已單擊了該視窗。

wm_ctlcolor, wm_drawitem, wm_measureitem, wm_deleteitem,wm_chartoitem, wm_compareitem都是發往父視窗的訊息,用來繪製自身控制項的視窗。

wm_hscroll, wm_vscroll由滾動條傳送,通知滾動視窗的父視窗。

(2) 第二中控制項通知訊息的格式

message————–wm_command

wparam—————-xn_***或控制項id

iparam—————–視窗控制代碼

iparam用來區分命令傳送訊息還是控制項(前邊我們說過了吧,呵)。

xn_*** 的值因傳送通知的控制項的不同而不同,例如當xn_***值為en_change時,告訴父視窗顯示在文字編輯框中的文字已發生了變化。

(3) 第三重控制項通知訊息格式

message————–wm_notify

wparam—————-控制項id

iparam—————–指向nmhdr的指標

iparam指向一種結構,該結構包括有關該通知控制項的任何內容,而不受空間和型別的限制,該架構就是nmhdr。

typedef struct tagnmhdr nmhdr;

nmhdr代表通知訊息頭,為什麼要這個頭?因為某些控制項用nmhdr作為頭髮送乙個更大的結構訊息,即使那些不知道更大結構內容的函式還是能處理通知頭。

VC訊息處理之訊息對映

訊息的傳遞與傳送是windows應用程式的核心所在,任何事件的觸發與響應均要通過訊息的作用才能得以完成。在sdk程式設計中,對訊息的獲取與分發主要是 通過訊息迴圈來完成的,而在mfc程式設計中則是通過採取訊息對映的方式對其進行處理的。相比而言,這樣的處理方式要簡單許多,這也是符合物件導向程式設計中盡...

VC訊息對映

vc訊息對映 2010年08月14日 視類增加乙個訊息相應函式後,在原始檔中都會增加三處 1 訊息相應函式原型。在cdrawview中會有這樣的 generated message map functions protected afx msg declare message map 在declar...

VC訊息對映

vc訊息對映 2010年08月14日 視類增加乙個訊息相應函式後,在原始檔中都會增加三處 1 訊息相應函式原型。在cdrawview中會有這樣的 generated message map functions protected afx msg declare message map 在declar...