訊息對映巨集的種類:
為了簡化程式設計師的工作,MFC定義了一系列的訊息對映巨集和像AfxSig_vv這樣的列舉變數,以及標準訊息處理函式,並且具體地實現這些函式。這裡主要討論訊息對映巨集,常用的分為以下幾類。
1. 用於Windows訊息的巨集,字首為“ON_WM_”。
這樣的巨集不帶引數,因為它對應的訊息和訊息處理函式的函式原型是確定的。
MFC提供了這類訊息處理函式的定義和預設實現。每個這樣的巨集處理不同的Windows訊息。例如:巨集ON_WM_CREATE()把訊息WM_CREATE對映到OnCreate函式,訊息對映條目的第一個成員nMessage指定為要處理的Windows訊息的ID,第二個成員nCode指定為0。
2. 用於命令訊息的巨集ON_COMMAND
這類巨集帶有引數,需要通過引數指定命令ID和訊息處理函式。這些訊息都對映到WM_COMMAND上,也就是將訊息對映條目的第一個成員nMessage指定為WM_COMMAND,第二個成員nCode指定為CN_COMMAND(即0)。訊息處理函式的原型是void (void),不帶引數,不返回值。
除了單條命令訊息的對映,還有把一定範圍的命令訊息對映到一個訊息處理函式的對映巨集ON_COMMAND_RANGE。這類巨集帶有引數,需要指定命令ID的範圍和訊息處理函式。這些訊息都對映到WM_COMMAND上,也就是將訊息對映條目的第一個成員nMessage指定為WM_COMMAND,第二個成員nCode指定為CN_COMMAND(即0),第三個成員nID和第四個成員nLastID指定了對映訊息的起止範圍。訊息處理函式的原型是void (UINT),有一個UINT型別的引數,表示要處理的命令訊息ID,不返回值。
3. 用於控制通知訊息的巨集
這類巨集可能帶有三個引數,如ON_CONTROL,就需要指定控制視窗ID,通知碼和訊息處理函式;也可能帶有兩個引數,如具體處理特定通知訊息的巨集ON_BN_CLICKED、ON_LBN_DBLCLK、ON_CBN_EDITCHANGE等,需要指定控制視窗ID和訊息處理函式。控制通知訊息也被對映到WM_COMMAND上,也就是將訊息對映條目的第一個成員的nMessage指定為WM_COMMAND,但是第二個成員nCode是特定的通知碼,第三個成員nID是控制子視窗的ID,第四個成員nLastID等於第三個成員的值。訊息處理函式的原型是void (void),沒有引數,不返回值。
還有一類巨集處理通知訊息ON_NOTIFY,它類似於ON_CONTROL,但是控制通知訊息被對映到WM_NOTIFY。訊息對映條目的第一個成員的nMessage被指定為WM_NOTIFY,第二個成員nCode是特定的通知碼,第三個成員nID是控制子視窗的ID,第四個成員nLastID等於第三個成員的值。訊息處理函式的原型是void (NMHDR*,LRESULT*),引數1是NMHDR指標,引數2是LRESULT指標,用於返回結果,但函式不返回值。
對應地,還有把一定範圍的控制子視窗的某個通知訊息對映到一個訊息處理函式的對映巨集,這類巨集包括ON__CONTROL_RANGE和ON_NOTIFY_RANGE。這類巨集帶有引數,需要指定控制子視窗ID的範圍和通知訊息,以及訊息處理函式。
對於ON__CONTROL_RANGE,是將訊息對映條目的第一個成員的nMessage指定為WM_COMMAND,但是第二個成員nCode是特定的通知碼,第三個成員nID和第四個成員nLastID等於指定了控制視窗ID的範圍。訊息處理函式的原型是void (UINT),參數列示要處理的通知訊息是哪個ID的控制子視窗傳送的,函式不返回值。
對於ON__NOTIFY_RANGE,訊息對映條目的第一個成員的nMessage被指定為WM_NOTIFY,第二個成員nCode是特定的通知碼,第三個成員nID和第四個成員nLastID指定了控制視窗ID的範圍。訊息處理函式的原型是void (UINT, NMHDR*,LRESULT*),引數1表示要處理的通知訊息是哪個ID的控制子視窗傳送的,引數2是NMHDR指標,引數3是LRESULT指標,用於返回結果,但函式不返回值。
4. 用於使用者介面介面狀態更新的ON_UPDATE_COMMAND_UI巨集
這類巨集被對映到訊息WM_COMMND上,帶有兩個引數,需要指定使用者介面物件ID和訊息處理函式。訊息對映條目的第一個成員nMessage被指定為WM_COMMAND,第二個成員nCode被指定為-1,第三個成員nID和第四個成員nLastID都指定為使用者介面物件ID。訊息處理函式的原型是void (CCmdUI*),引數指向一個CCmdUI物件,不返回值。
對應地,有更新一定ID範圍的使用者介面物件的巨集ON_UPDATE_COMMAND_UI_RANGE,此巨集帶有三個引數,用於指定使用者介面物件ID的範圍和訊息處理函式。訊息對映條目的第一個成員nMessage被指定為WM_COMMAND,第二個成員nCode被指定為-1,第三個成員nID和第四個成員nLastID用於指定使用者介面物件ID的範圍。訊息處理函式的原型是 void (CCmdUI*),引數指向一個CCmdUI物件,函式不返回值。之所以不用當前使用者介面物件ID作為引數,是因為CCmdUI物件包含了有關資訊。
5. 用於其他訊息的巨集
例如用於使用者定義訊息的ON_MESSAGE。這類巨集帶有引數,需要指定訊息ID和訊息處理函式。訊息對映條目的第一個成員nMessage被指定為訊息ID,第二個成員nCode被指定為0,第三個成員nID和第四個成員也是0。訊息處理的原型是LRESULT (WPARAM, LPARAM),引數1和引數2是訊息引數wParam和lParam,返回LRESULT型別的值。
6. 擴充套件訊息對映巨集
很多普通訊息對映巨集都有對應的擴充套件訊息對映巨集,例如:ON_COMMAND對應的
ON_COMMAND_EX,ON_ONTIFY對應的ON_ONTIFY_EX,等等。擴充套件巨集除了具有普通巨集的功能,還有特別的用途。關於擴充套件巨集的具體討論和分析,見4.4.3.2節。
作為一個總結,下表列出了這些常用的訊息對映巨集。
表4-1 常用的訊息對映巨集
訊息對映巨集 用途
ON_COMMAND 把command message對映到相應的函式
ON_CONTROL 把control notification message對映到相應的函式。MFC根據不同的控制訊息,在此基礎上定義了更具體的巨集,這樣使用者在使用時就不需要指定通知程式碼ID,如ON_BN_CLICKED。
ON_MESSAGE 把user-defined message.對映到相應的函式
ON_REGISTERED_MESSAGE 把registered user-defined message對映到相應的函式,實際上nMessage等於0x0C000,nSig等於巨集的訊息引數。nSig的真實值為Afxsig_lwl。
ON_UPDATE_COMMAND_UI 把user interface user updatecommandmessage對映到相應的函式上。
ON_COMMAND_RANGE 把一定範圍內的command IDs 對映到相應的函式上
ON_UPDATE_COMMAND_UI_RANGE 把一定範圍內的user interface user update command message對映到相應的函式上
ON_CONTROL_RANGE 把一定範圍內的control notification message對映到相應的函式
WINDOWS訊息說明
我在實際程式設計中越來越感到訊息的響應在我們的程式中是一個非常重要的部分,有一些普通的訊息我們可以在ClassWizard的新增其響應函式,但就算我們能找到一些訊息但有的時候也不知道是什麼意思,響應他有什麼用,還有一些特殊的訊息是在ClassWizard裡沒有的,只有有豐富經驗的才知道,這對我們操作程式帶來很大不便,所以我在此提議各位朋友把自己知道的訊息以及引數還有VC裡預設的響應函式列舉出來,儘自己的努力幫助大家瞭解windows的訊息,也幫助自己,在此我先拋磚引玉:
訊息,就是指Windows發出的一個通知,告訴應用程式某個事情發生了。例如,單擊滑鼠、改變視窗尺寸、按下鍵盤上的一個鍵都會使Windows傳送一個訊息給應用程式。訊息本身是作為一個記錄傳遞給應用程式的,這個記錄中包含了訊息的型別以及其他資訊。例如,對於單擊滑鼠所產生的訊息來說,這個記錄中包含了單擊滑鼠時的座標。這個記錄型別叫做TMsg,它在Windows單元中是這樣宣告的:
type
TMsg = packed record
hwnd: HWND; //視窗控制程式碼
message: UINT; //訊息常量識別符號
wParam: WPARAM ; // 32位訊息的特定附加資訊
lParam: LPA RAM ; // 32位訊息的特定附加資訊
time: DWORD; //訊息建立時的時間
pt: TPoint; //訊息建立時的滑鼠位置
end ;
訊息中有什麼?是否覺得一個訊息記錄中的資訊像希臘語一樣?如果是這樣,那麼看一看下面的解釋:
hwnd |
32位的視窗控制程式碼。視窗可以是任何型別的螢幕物件,因為Win32能夠維護大多數可視物件的控制程式碼(視窗、對話方塊、按鈕、編輯框等)。 |
message |
用於區別其他訊息的常量值,這些常量可以是Windows單元中預定義的常量,也可以是自定義的常量。 |
wParam |
通常是一個與訊息有關的常量值,也可能是視窗或控制元件的控制程式碼。 |
lParam |
通常是一個指向記憶體中資料的指標。由於WParam、lParam和Pointer都是32位的,因此,它們之間可以相互轉換。 |
在vc.net 中很多函式名字有了變化,和vc6 中有點不同了。如果你想看訊息windows.h檔案中宣告瞭所有的訊息
(#add 待整理,按字母排序) 我需要一個訊息 ,對應訊息巨集 及訊息處理函式的表
Windows訊息
WM_NULL =$0000;
WM_CREATE =$0001;應用程式建立一個視窗
WM_DESTROY =$0002;一個視窗被銷燬
WM_MOVE =$0003;移動一個視窗
WM_SIZE =$0005;改變一個視窗的大小
WM_SIZING =532;當使用者正在調整視窗大小時傳送此訊息給視窗;通過此訊息應用程式可以監視視窗大小和位置也可以修改他們
WM_ACTIVATE =$0006;一個視窗被啟用或失去啟用狀態;
WM_SETFOCUS =$0007;獲得焦點後
WM_KILLFOCUS =$0008;失去焦點
WM_ENABLE =$000A;改變enable狀態
WM_SETREDRAW = $000B;設定視窗是否能重畫
WM_SETTEXT =$000C;應用程式傳送此訊息來設定一個視窗的文字
WM_GETTEXT =$000D;應用程式傳送此訊息來複制對應視窗的文字到緩衝區
WM_GETTEXTLENGTH =$000E;得到與一個視窗有關的文字的長度(不包含空字元)
WM_PAINT =$000F;要求一個視窗重畫自己
WM_CLOSE =$0010;當一個視窗或應用程式要關閉時傳送一個訊號
WM_QUERYENDSESSION = $0011;當使用者選擇結束對話方塊或程式自己呼叫ExitWindows函式
WM_QUIT =$0012;用來結束程式執行或當程式呼叫postquitmessage函式
WM_QUERYOPEN = $0013;當使用者視窗恢復以前的大小位置時,把此訊息傳送給某個圖示
WM_ERASEBKGND = $0014;當視窗背景必須被擦除時(例在視窗改變大小時)
WM_SYSCOLORCHANGE =$0015;當系統顏色改變時,傳送此訊息給所有頂級視窗
WM_ENDSESSION =$0016;當系統程式發出WM_QUERYENDSESSION訊息後,此訊息傳送給應用程式,通知它對話是否結束
WM_SYSTEMERROR =$0017;
WM_SHOWWINDOW =$0018;當隱藏或顯示視窗是傳送此訊息給這個視窗
WM_ACTIVATEAPP = $001C;發此訊息給應用程式哪個視窗是啟用的,哪個是非啟用的;
WM_FONTCHANGE =$001D;當系統的字型資源庫變化時傳送此訊息給所有頂級視窗
WM_TIMECHANGE = $001E;當系統的時間變化時傳送此訊息給所有頂級視窗
WM_CANCELMODE =$001F;傳送此訊息來取消某種正在進行的摸態(操作)
WM_SETCURSOR =$0020;如果滑鼠引起游標在某個視窗中移動且滑鼠輸入沒有被捕獲時,就發訊息給某個視窗
WM_MOUSEACTIVATE =$0021;當游標在某個非啟用的視窗中而使用者正按著滑鼠的某個鍵傳送此訊息給當前視窗
WM_CHILDACTIVATE =$0022;傳送此訊息給MDI子視窗當使用者點選此視窗的標題欄,或當視窗被啟用,移動,改變大小
WM_QUEUESYNC =$0023;此訊息由基於計算機的訓練程式傳送,通過WH_JOURNALPALYBACK的hook程式分離出使用者輸入訊息
WM_GETMINMAXINFO = $0024;此訊息傳送給視窗當它將要改變大小或位置;
WM_PAINTICON =$0026;傳送給最小化視窗當它圖示將要被重畫
WM_ICONERASEBKGND =$0027; 此訊息傳送給某個最小化視窗,僅當它在畫圖示前它的背景必須被重畫
WM_NEXTDLGCTL =$0028;傳送此訊息給一個對話方塊程式去更改焦點位置
WM_SPOOLERSTATUS =$002A;每當列印管理列隊增加或減少一條作業時發出此訊息
WM_DRAWITEM =$002B; 當button,combobox,listbox,menu的可視外觀改變時傳送此訊息給這些空件的所有者
WM_MEASUREITEM = $002C;當button, combo box, list box, list view control, or menu item 被建立時傳送此訊息給控制元件的所有者
WM_DELETEITEM =$002D;當the list box 或 combo box 被銷燬 或 當 某些項被刪除通過LB_DELETESTRING, LB_R
ESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 訊息
WM_VKEYTOITEM =$002E;此訊息有一個LBS_WANTKEYBOARDINPUT風格的發出給它的所有者來響應WM_KEYDOWN訊息
WM_CHARTOITEM =$002F;此訊息由一個LBS_WANTKEYBOARDINPUT風格的列表框傳送給他的所有者來響應WM_CHAR訊息
WM_SETFONT =$0030;當繪製文字時程式傳送此訊息得到控制元件要用的顏色
WM_GETFONT =$0031;應用程式傳送此訊息得到當前控制元件繪製文字的字型
WM_SETHOTKEY =$0032;應用程式傳送此訊息讓一個視窗與一個熱鍵相關連
WM_GETHOTKEY =$0033;應用程式傳送此訊息來判斷熱鍵與某個視窗是否有關聯
WM_QUERYDRAGICON =$0037;此訊息傳送給最小化視窗,當此視窗將要被拖放而它的類中沒有定義圖示,應用程式能返回一個圖示或游標的控制程式碼,當使用者拖放圖示時系統顯示這個圖示或游標
WM_COMPAREITEM =$0039;傳送此訊息來判定combobox或listbox新增加的項的相對位置
WM_GETOBJECT =$003D;
WM_COMPACTING =$0041;顯示記憶體已經很少了
WM_WINDOWPOSCHANGING =$0046;傳送此訊息給那個視窗的大小和位置將要被改變時,來呼叫setwindowpos函式或其它視窗管理函式
WM_WINDOWPOSCHANGED = $0047;傳送此訊息給那個視窗的大小和位置已經被改變時,來呼叫setwindowpos函式或其它視窗管理函式
WM_POWER = $0048;(適用於16位的windows)當系統將要進入暫停狀態時傳送此訊息
WM_COPYDATA =$004A;當一個應用程式傳遞資料給另一個應用程式時傳送此訊息
WM_CANCELJOURNAL = $004B;當某個使用者取消程式日誌啟用狀態,提交此訊息給程式
WM_NOTIFY =$004E;當某個控制元件的某個事件已經發生或這個控制元件需要得到一些資訊時,傳送此訊息給它的父視窗
WM_INPUTLANGCHANGEREQUEST =$0050;當使用者選擇某種輸入語言,或輸入語言的熱鍵改變
WM_INPUTLANGCHANGE = $0051;當平臺現場已經被改變後傳送此訊息給受影響的最頂級視窗
WM_TCARD =$0052;當程式已經初始化windows幫助例程時傳送此訊息給應用程式
WM_HELP =$0053;此訊息顯示使用者按下了F1,如果某個選單是啟用的,就傳送此訊息個此視窗關聯的選單,否則就傳送給有焦點的視窗,如果當前都沒有焦點,就把此訊息傳送給當前啟用的視窗
WM_USERCHANGED =$0054;當使用者已經登入或退出後傳送此訊息給所有的視窗,當使用者登入或退出時系統更新使用者的具體設定資訊,在使用者更新設定時系統馬上傳送此訊息;
WM_NOTIFYFORMAT =$0055;公用控制元件,自定義控制元件和他們的父視窗通過此訊息來判斷控制元件是使用ANSI還是UNICODE結構在WM_NOTIFY訊息,使用此控制元件能使某個控制元件與它的父控制元件之間進行相互通訊
WM_CONTEXTMENU =$007B;當使用者某個視窗中點選了一下右鍵就傳送此訊息給這個視窗 WM_STYLECHANGING = $007C;當呼叫SETWINDOWLONG函式將要改變一個或多個 視窗的風格時傳送此訊息給那個視窗
WM_STYLECHANGED =$007D;當呼叫SETWINDOWLONG函式一個或多個 視窗的風格後傳送此訊息給那個視窗
WM_DISPLAYCHANGE =$007E;當顯示器的解析度改變後傳送此訊息給所有的視窗
WM_GETICON =$007F;此訊息傳送給某個視窗來返回與某個視窗有關連的大圖示或小圖示的控制程式碼;
WM_SETICON = $0080;程式傳送此訊息讓一個新的大圖示或小圖示與某個視窗關聯;
WM_NCCREATE =$0081;當某個視窗第一次被建立時,此訊息在WM_CREATE訊息傳送前傳送;
WM_NCDESTROY =$0082;此訊息通知某個視窗,非客戶區正在銷燬
WM_NCCALCSIZE =$0083;當某個視窗的客戶區域必須被核算時傳送此訊息
WM_NCHITTEST =$0084; 移動滑鼠,按住或釋放滑鼠時發生
WM_NCPAINT =$0085;程式傳送此訊息給某個視窗當它(視窗)的框架必須被繪製時;
WM_NCACTIVATE =$0086;此訊息傳送給某個視窗 僅當它的非客戶區需要被改變來顯示是啟用還是非啟用狀態;
WM_GETDLGCODE =$0087;傳送此訊息給某個與對話方塊程式關聯的控制元件,widdows控制方位鍵和TAB鍵使輸入進入此控制元件通過響應WM_GETDLGCODE訊息,應用程式可以把他當成一個特殊的輸入控制元件並能處理它
WM_NCMOUSEMOVE =$00A0;當游標在一個視窗的非客戶區內移動時傳送此訊息給這個視窗 //非客戶區為:窗體的標題欄及窗
WM_SYSKEYDOWN =$0104;當使用者按住ALT鍵同時按下其它鍵時提交此訊息給擁有焦點的視窗;
WM_SYSKEYUP =$0105;當使用者釋放一個鍵同時ALT 鍵還按著時提交此訊息給擁有焦點的視窗
WM_SYSCHAR =$0106;當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函式翻譯後提交此訊息給擁有焦點的視窗
WM_SYSDEADCHAR =$0107;當WM_SYSKEYDOWN訊息被TRANSLATEMESSAGE函式翻譯後傳送此訊息給擁有焦點的視窗
WM_KEYLAST =$0108;
WM_INITDIALOG =$0110;在一個對話方塊程式被顯示前傳送此訊息給它,通常用此訊息初始化控制元件和執行其它任務
WM_COMMAND =$0111;當使用者選擇一條選單命令項或當某個控制元件傳送一條訊息給它的父視窗,一個快捷鍵被翻譯
WM_SYSCOMMAND =$0112;當使用者選擇視窗選單的一條命令或當使用者選擇最大化或最小化時那個視窗會收到此訊息
WM_TIMER =$0113; 發生了定時器事件
WM_HSCROLL =$0114;當一個視窗標準水平滾動條產生一個滾動事件時傳送此訊息給那個視窗,也傳送給擁有它的控制元件
WM_VSCROLL =$0115;當一個視窗標準垂直滾動條產生一個滾動事件時傳送此訊息給那個視窗也,傳送給擁有它的控制元件
WM_INITMENU = $0116;當一個選單將要被啟用時傳送此訊息,它發生在使用者選單條中的某項或按下某個選單鍵,它允許程式在顯示前更改選單
WM_INITMENUPOPUP =$0117;當一個下拉選單或子選單將要被啟用時傳送此訊息,它允許程式在它顯示前更改選單,而不要改變全部
WM_MENUSELECT = $011F;當使用者選擇一條選單項時傳送此訊息給選單的所有者(一般是視窗)
WM_MENUCHAR =$0120;當選單已被啟用使用者按下了某個鍵(不同於加速鍵),傳送此訊息給選單的所有者;
WM_ENTERIDLE =$0121;當一個模態對話方塊或選單進入空載狀態時傳送此訊息給它的所有者,一個模態對話方塊或選單進入空載狀態就是在處理完一條或幾條先前的訊息後沒有訊息它的列隊中等待
WM_MENURBUTTONUP =$0122;
WM_MENUDRAG =$0123;
WM_MENUGETOBJECT =$0124;
WM_UNINITMENUPOPUP =$0125;
WM_MENUCOMMAND =$0126;
WM_CHANGEUISTATE =$0127;
WM_UPDATEUISTATE =$0128;
WM_QUERYUISTATE =$0129;
WM_CTLCOLORMSGBOX =$0132;在windows繪製訊息框前傳送此訊息給訊息框的所有者視窗,通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制程式碼來設定訊息框的文字和背景顏色
WM_CTLCOLOREDIT =$0133;當一個編輯型控制元件將要被繪製時傳送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制程式碼來設定編輯框的文字和背景顏色
WM_CTLCOLORLISTBOX = $0134;當一個列表框控制元件將要被繪製前傳送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制程式碼來設定列表框的文字和背景顏色
WM_CTLCOLORBTN = $0135;當一個按鈕控制元件將要被繪製時傳送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制程式碼來設定按紐的文字和背景顏色
WM_CTLCOLORDLG =$0136;當一個對話方塊控制元件將要被繪製前傳送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制程式碼來設定對話方塊的文字背景顏色
WM_CTLCOLORSCROLLBAR= $0137;當一個滾動條控制元件將要被繪製時傳送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制程式碼來設定滾動條的背景顏色
WM_CTLCOLORSTATIC = $0138;當一個靜態控制元件將要被繪製時傳送此訊息給它的父視窗;通過響應這條訊息,所有者視窗可以通過使用給定的相關顯示裝置的控制程式碼來設定靜態控制元件的文字和背景顏色
WM_MOUSEFIRST =$0200;
WM_MOUSEMOVE =$0200; 移動滑鼠
WM_LBUTTONDOWN =$0201; 按下滑鼠左鍵
WM_LBUTTONUP =$0202; 釋放滑鼠左鍵
WM_LBUTTONDBLCLK = $0203;雙擊滑鼠左鍵
WM_RBUTTONDOWN =$0204;按下滑鼠右鍵
WM_RBUTTONUP =$0205;釋放滑鼠右鍵
WM_RBUTTONDBLCLK =$0206;雙擊滑鼠右鍵
WM_MBUTTONDOWN =$0207;按下滑鼠中鍵
WM_MBUTTONUP =$0208;釋放滑鼠中鍵
WM_MBUTTONDBLCLK =$0209;雙擊滑鼠中鍵
WM_MOUSEWHEEL =$020A;當滑鼠輪子轉動時傳送此訊息個當前有焦點的控制元件
WM_MOUSELAST =$020A;
WM_PARENTNOTIFY =$0210;當MDI子視窗被建立或被銷燬,或使用者按了一下滑鼠鍵而游標在子視窗上時傳送此訊息給它的父視窗
WM_ENTERMENULOOP =$0211;傳送此訊息通知應用程式的主視窗that已經進入了選單迴圈模式
WM_EXITMENULOOP =$0212;傳送此訊息通知應用程式的主視窗that已退出了選單迴圈模式
WM_NEXTMENU = $0213;
WM_CAPTURECHANGED =533;傳送此訊息 給視窗當它失去捕獲的滑鼠時;
WM_MOVING =534;當使用者在移動視窗時傳送此訊息,通過此訊息應用程式可以監視視窗大小和位置也可以修改他們;
WM_POWERBROADCAST = 536;此訊息傳送給應用程式來通知它有關電源管理事件;
WM_DEVICECHANGE =537;當裝置的硬體配置改變時傳送此訊息給應用程式或裝置驅動程式
WM_IME_STARTCOMPOSITION =$010D;
WM_IME_ENDCOMPOSITION =$010E;
WM_IME_COMPOSITION =$010F;
WM_IME_KEYLAST = $010F;
WM_IME_SETCONTEXT =$0281;
WM_IME_NOTIFY = $0282;
WM_IME_CONTROL = $0283;
WM_IME_COMPOSITIONFULL =$0284;
WM_IME_SELECT = $0285;
WM_IME_CHAR = $0286;
WM_IME_REQUEST = $0288;
WM_IME_KEYDOWN = $0290;
WM_IME_KEYUP =$0291;
WM_MDICREATE =$0220;應用程式傳送此訊息給多文件的客戶視窗來建立一個MDI 子視窗
WM_MDIDESTROY =$0221;應用程式傳送此訊息給多文件的客戶視窗來關閉一個MDI 子視窗
WM_MDIACTIVATE = $0222;應用程式傳送此訊息給多文件的客戶視窗通知客戶視窗啟用另一個MDI子視窗,當客戶視窗收到此訊息後,它發出WM_MDIACTIVE訊息給MDI子視窗(未啟用)啟用它;
WM_MDIRESTORE = $0223;程式傳送此訊息給MDI客戶視窗讓子視窗從最大最小化恢復到原來大小
WM_MDINEXT = $0224;程式傳送此訊息給MDI客戶視窗啟用下一個或前一個視窗
WM_MDIMAXIMIZE =$0225;程式傳送此訊息給MDI客戶視窗來最大化一個MDI子視窗;
WM_MDITILE = $0226;程式傳送此訊息給MDI客戶視窗以平鋪方式重新排列所有MDI子視窗
WM_MDICASCADE = $0227;程式傳送此訊息給MDI客戶視窗以層疊方式重新排列所有MDI子視窗
WM_MDIICONARRANGE =$0228;程式 傳送此訊息給MDI客戶視窗重新排列所有最小化的MDI子視窗
WM_MDIGETACTIVE =$0229;程式 傳送此訊息給MDI客戶視窗來找到啟用的子視窗的控制程式碼
WM_MDISETMENU =$0230;程式 傳送此訊息給MDI客戶視窗用MDI選單代替子視窗的選單
WM_ENTERSIZEMOVE =$0231;
WM_EXITSIZEMOVE =$0232;
WM_DROPFILES =$0233;
WM_MDIREFRESHMENU =$0234;
WM_MOUSEHOVER =$02A1;
WM_MOUSELEAVE =$02A3;
WM_CUT =$0300;程式傳送此訊息給一個編輯框或combobox來刪除當前選擇的文字
WM_COPY =$0301;程式傳送此訊息給一個編輯框或combobox來複制當前選擇的文字到剪貼簿
WM_PASTE =$0302;程式傳送此訊息給editcontrol或combobox從剪貼簿中得到資料
WM_CLEAR =$0303;程式傳送此訊息給editcontrol或combobox清除當前選擇的內容;
WM_UNDO =$0304;程式傳送此訊息給editcontrol或combobox撤消最後一次操作
WM_RENDERFORMAT =$0305;
WM_RENDERALLFORMATS = $0306;
WM_DESTROYCLIPBOARD = $0307;當呼叫ENPTYCLIPBOARD函式時 傳送此訊息給剪貼簿的所有者
WM_DRAWCLIPBOARD =$0308;當剪貼簿的內容變化時傳送此訊息給剪貼簿觀察鏈的第一個視窗;它允許用剪貼簿觀察視窗來顯示剪貼簿的新內容;
WM_PAINTCLIPBOARD =$0309;當剪貼簿包含CF_OWNERDIPLAY格式的資料並且剪貼簿觀察視窗的客戶區需要重畫;
WM_VSCROLLCLIPBOARD = $030A;
WM_SIZECLIPBOARD =$030B;當剪貼簿包含CF_OWNERDIPLAY格式的資料並且剪貼簿觀察視窗的客戶區域的大小已經改變是此訊息通過剪貼簿觀察視窗傳送給剪貼簿的所有者;
WM_ASKCBFORMATNAME = $030C;通過剪貼簿觀察視窗傳送此訊息給剪貼簿的所有者來請求一個CF_OWNERDISPLAY格式的剪貼簿的名字
WM_CHANGECBCHAIN =$030D;當一個視窗從剪貼簿觀察鏈中移去時傳送此訊息給剪貼簿觀察鏈的第一個視窗;
WM_HSCROLLCLIPBOARD = $030E; 此訊息通過一個剪貼
WM_PRINTCLIENT =792;
WM_HANDHELDFIRST =856;
WM_HANDHELDLAST =863;
WM_PENWINFIRST =$0380;
WM_PENWINLAST =$038F;
WM_COALESCE_FIRST =$0390;
WM_COALESCE_LAST = $039F;
WM_DDE_FIRST =$03E0;
WM_DDE_INITIATE =WM_DDE_FIRST + 0;一個DDE客戶程式提交此訊息開始一個與伺服器程式的會話來響應那個指定的程式和主題名;
WM_DDE_TERMINATE =WM_DDE_FIRST + 1;一個DDE應用程式(無論是客戶還是伺服器)提交此訊息來終止一個會話;
WM_DDE_ADVISE =WM_DDE_FIRST + 2;一個DDE客戶程式提交此訊息給一個DDE服務程式來請求伺服器每當資料項改變時更新它
WM_DDE_UNADVISE =WM_DDE_FIRST + 3;一個DDE客戶程式通過此訊息通知一個DDE服務程式不更新指定的項或一個特殊的剪貼簿格式的項
WM_DDE_ACK =WM_DDE_FIRST + 4;此訊息通知一個DDE(動態資料交換)程式已收到並正在處理
WM_DDE_POKE,
WM_DDE_EXECUTE, WM_DDE_DATA, WM_DDE_ADVISE, WM_DDE_UNADVISE, orWM_DDE_INITIAT訊息
WM_DDE_DATA =WM_DDE_FIRST + 5;一個DDE服務程式提交此訊息給DDE客戶程式來傳遞個一資料項給客戶或通知客戶的一條可用資料項
WM_DDE_REQUEST =WM_DDE_FIRST + 6;一個DDE客戶程式提交此訊息給一個DDE服務程式來請求一個資料項的值;
WM_DDE_POKE =WM_DDE_FIRST + 7;一個DDE客戶程式提交此訊息給一個DDE服務程式,客戶使用此訊息來請求伺服器接收一個未經同意的資料項;伺服器通過答覆WM_DDE_ACK訊息提示是否它接收這個資料項;
WM_DDE_EXECUTE =WM_DDE_FIRST + 8;一個DDE客戶程式提交此訊息給一個DDE服務程式來傳送一個字串給伺服器讓它象序列命令一樣被處理,伺服器通過提交WM_DDE_ACK訊息來作回應;
WM_DDE_LAST =WM_DDE_FIRST + 8;
WM_APP = $8000;
WM_USER =$0400;此訊息能幫助應用程式自定義私有訊息;
通知訊息
通知訊息(Notification message)是指這樣一種訊息,一個視窗內的子控制元件發生了一些事情,需要通知父視窗。通知訊息只適用於標準的視窗控制元件如按鈕、列表框、組合框、編輯框,以及Windows 95公共控制元件如樹狀檢視、列表檢視等。例如,單擊或雙擊一個控制元件、在控制元件中選擇部分文字、操作控制元件的滾動條都會產生通知訊息。
按扭
BN_CLICKED 使用者單擊了按鈕
BN_DISABLE 按鈕被禁止
BN_DOUBLECLICKED 使用者雙擊了按鈕
BN_HILITE 使用者加亮了按鈕
BN_PAINT 按鈕應當重畫
BN_UNHILITE 加亮應當去掉
組合框
CBN_CLOSEUP 組合框的列表框被關閉
CBN_DBLCLK 使用者雙擊了一個字串
CBN_DROPDOWN 組合框的列表框被拉出
CBN_EDITCHANGE 使用者修改了編輯框中的文字
CBN_EDITUPDATE 編輯框內的文字即將更新
CBN_ERRSPACE 組合框記憶體不足
CBN_KILLFOCUS 組合框失去輸入焦點
CBN_SELCHANGE 在組合框中選擇了一項
CBN_SELENDCANCEL 使用者的選擇應當被取消
CBN_SELENDOK 使用者的選擇是合法的
CBN_SETFOCUS 組合框獲得輸入焦點
編輯框
EN_CHANGE 編輯框中的文字己更新
EN_ERRSPACE 編輯框記憶體不足
EN_HSCROLL 使用者點選了水平滾動條
EN_KILLFOCUS 編輯框正在失去輸入焦點
EN_MAXTEXT 插入的內容被截斷
EN_SETFOCUS 編輯框獲得輸入焦點
EN_UPDATE 編輯框中的文字將要更新
EN_VSCROLL 使用者點選了垂直滾動條訊息含義
列表框
LBN_DBLCLK 使用者雙擊了一項
LBN_ERRSPACE 列表框記憶體不夠
LBN_KILLFOCUS 列表框正在失去輸入焦點
LBN_SELCANCEL 選擇被取消
LBN_SELCHANGE 選擇了另一項
LBN_SETFOCUS 列表框獲得輸入焦點
訊息對映巨集
//Message Map Functions in the Microsoft Foundation Class Library
Handlers For WM_COMMAND Messages
Map Entry FunctionPrototype
ON_COMMAND(<id>,<memberFxn>) afx_msg void memberFxn();
ON_COMMAND_EX(<id>, <memberFxn>) afx_msg BOOL memberFxn(UINT);
ON_COMMAND_EX_RANGE(<id>, <idLast>, <memberFxn>) afx_msg BOOL memberFxn(UINT);
ON_COMMAND_RANGE(<id>, <idLast>, <memberFxn>) afx_msg void memberFxn(UINT);
ON_UPDATE_COMMAND_UI(<id>, <memberFxn>) afx_msg void memberFxn(CCmdUI*);
ON_UPDATE_COMMAND_UI_RANGE (<id>, <idLast>,<memberFxn>) afx_msg voidmemberFxn(CCmdUI*);
ON_UPDATE_COMMAND_UI_REFLECT (<memberFxn>) afx_msg void memberFxn(CCmdUI*);
Handlers For Child Window NotificationMessages
Generic Control Notification Codes
ON_CONTROL(<wNotifyCode>,<id>, <memberFxn>) afx_msgvoid memberFxn();
ON_CONTROL_RANGE(<wNotifyCode>, <id> <idLast>,<memberFxn>) afx_msg void memberFxn(UINT);
ON_CONTROL_REFLECT(<wNotifyCode>, <memberFxn>) afx_msgvoid memberFxn();
ON_CONTROL_REFLECT_EX(<wNotifyCode>, <memberFxn>) afx_msgBOOL memberFxn();
ON_NOTIFY(<wNotifyCode>,<id>, <memberFxn>) afx_msgvoid memberFxn(NMHDR*, LRESULT*); (#add ON_NOTIFY: 在MFC應用程式裡處理 WM_NOTIFY 訊息函式CWnd::OnNotify處理通告訊息。其預設實現是檢查通告訊息處理函式的訊息對映,然後呼叫(checks the messagemap for notification handlers to call)。一般說來,你不用過載OnNotify。你可以寫一個處理函式,然後在你自己的視窗類的訊息對映表裡新增一個該函式的訊息對映入口。)
ON_NOTIFY_EX(<wNotifyCode>, <id>, <memberFxn>) afx_msgBOOL memberFxn(UINT, NMHDR*, LRESULT*);
ON_NOTIFY_EX_RANGE(<wNotifyCode>, <id>, <idLast>,<memberFxn>) afx_msg BOOLmemberFxn(UINT, NMHDR*, LRESULT*);
ON_NOTIFY_RANGE(<wNotifyCode>, <id>, <idLast>,<memberFxn>) afx_msg void memberFxn(UINT, NMHDR*,LRESULT*);
ON_NOTIFY_REFLECT(<wNotifyCode>,<memberFxn>) afx_msg voidmemberFxn(NMHDR*, LRESULT*);
ON_NOTIFY_REFLECT_EX(<wNotifyCode>, <memberFxn>) afx_msgBOOL memberFxn(NMHDR*, LRESULT*);
Static Control Notification Codes
ON_STN_CLICKED(<id>,<memberFxn>) afx_msgvoid FUN();
ON_STN_DBLCLK(<id>, <memberFxn>) afx_msg void FUN();
ON_STN_DISABLE(<id>, <memberFxn>) afx_msg void FUN();
ON_STN_ENABLE(<id>, <memberFxn>) afx_msg void FUN();
Button Notification Codes
這些特定控制元件通知訊息都無引數,即形式為void FUN()
ON_BN_CLICKED(<ID>,<FUN>) afx_msg void FUN();
ON_BN_DOUBLECLICKED(<ID>,<FUN>) afx_msg voidFUN();
ON_BN_KILLFOCUS(<ID>,<FUN>) afx_msgvoid FUN();
ON_BN_SETFOCUS(<ID>,<FUN>) afx_msgvoid FUN();
Edit Control Notification Codes
ON_EN_CHANGE(<ID>,<FUN>) afx_msgvoid FUN();
ON_EN_ERRSPACE(<ID>,<FUN>) afx_msg void FUN();
ON_EN_HSCROLL(<ID>,<FUN>) afx_msg void FUN();
ON_EN_KILLFOCUS(<ID>,<FUN>) afx_msg void FUN();
ON_EN_MAXTEXT(<ID>,<FUN>) afx_msg void FUN();
ON_EN_SETFOCUS(<ID>,<FUN>) afx_msg void FUN();
ON_EN_UPDATE(<ID>,<FUN>) afx_msg void FUN();
ON_EN_VSCROLL(<ID>,<FUN>) afx_msg void FUN();
ComboBox Notification Codes
ON_CBN_CLOSEUP(<ID>,<FUN>) afx_msg void FUN();
ON_CBN_DBLCLK(<ID>,<FUN>) afx_msgvoid FUN();
ON_CBN_DROPDOWN(<ID>,<FUN>) afx_msgvoid FUN();
ON_CBN_EDITCHANGE(<ID>,<FUN>) afx_msgvoid FUN();
ON_CBN_EDITUPDATE(<ID>,<FUN>) afx_msgvoid FUN();
ON_CBN_ERRSPACE(<ID>,<FUN>) afx_msgvoid FUN();
ON_CBN_KILLFOCUS(<ID>,<FUN>) afx_msgvoid FUN();
ON_CBN_SELCHANGE(<ID>,<FUN>) afx_msgvoid FUN();
ON_CBN_SELENDCANCEL(<ID>,<FUN>) afx_msg void FUN();
ON_CBN_SELENDOK(<ID>,<FUN>) afx_msgvoid FUN();
ON_CBN_SETFOCUS(<ID>,<FUN>) afx_msgvoid FUN();
CheckListBox Notification Codes
ON_CLBN_CHKCHANGE(<ID>,<FUN>) afx_msg void FUN();
ListBox Notification Codes
ON_LBN_DBLCLK(<ID>,<FUN>) afx_msg void FUN();
ON_LBN_ERRSPACE(<ID>,<FUN>) afx_msgvoid FUN();
ON_LBN_KILLFOCUS(<ID>,<FUN>) afx_msgvoid FUN();
ON_LBN_SELCANCEL(<ID>,<FUN>) afx_msgvoid FUN();
ON_LBN_SELCHANGE(<ID>,<FUN>) afx_msgvoid FUN();
ON_LBN_SETFOCUS(<ID>,<FUN>) afx_msgvoid FUN();
列表檢視通知程式碼
ON_LVN_BEGINDRAG(<ID>,<FUN>) afx_msg voidFUN();
ON_LVN_BEGINLABLEEDIT(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_BEGINRDRAG(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_COLUMNCLICK(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_DELETEALLITEMS(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_DELETEITEM(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_ENDLABLEEDIT(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_GETDISPINFOR(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_INSERTITEM(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_ITEMCHANGED(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_KEYDOWN(<ID>,<FUN>) afx_msg void FUN();
ON_LVN_PEN(<ID>,<FUN>) afx_msgvoid FUN();
ON_LVN_SETDISPINFO(<ID>,<FUN>) afx_msg void FUN();
樹檢視通知程式碼
ON_TVN_BEGINDRAG(<ID>,<FUN>) afx_msg voidFUN();
ON_TVN_BEGINLABLEEDIT(<ID>,<FUN>) afx_msg void FUN();
ON_TVN_BEGINRDRAG(<ID>,<FUN>) afx_msg void FUN();
ON_TVN_DELETEITEM(<ID>,<FUN>) afx_msg void FUN();
ON_TVN_ENDLABLEEDIT(<ID>,<FUN>) afx_msg void FUN();
ON_TVN_GETDISPINFOR(<ID>,<FUN>) afx_msg void FUN();
ON_TVN_ITEMEXPENDED(<ID>,<FUN>) afx_msg void FUN();
ON_TVN_KEYDOWN(<ID>,<FUN>) afx_msg void FUN();
ON_TVN_SELCHANGED(<ID>,<FUN>) afx_msg void FUN();
ON_TVN_SELCHANGING(<ID>,<FUN>) afx_msg void FUN();
列表控制元件通知程式碼
ON_TCN_KEYDOWN(<ID>,<FUN>) afx_msg voidFUN();
ON_TCN_SELCHANGED(<ID>,<FUN>) afx_msg void FUN();
ON_TCN_SELCHANGING(<ID>,<FUN>) afx_msg void FUN();
Handlers For Windows Messages
ON_WM_ACTIVATE() afx_msg void OnActivate(UINT,CWnd*, BOOL);
ON_WM_ACTIVATEAPP() afx_msg void OnActivateApp(BOOL,HTASK);
ON_WM_ASKCBFORMATNAME() afx_msgvoid OnAskCbFormatName(UINT, LPTSTR);
ON_WM_CANCELMODE() afx_msg void OnCancelMode();
ON_WM_CAPTURECHANGED() afx_msgvoid OnCaptureChanged(CWnd*);
ON_WM_CHANGECBCHAIN() afx_msg void OnChangeCbChain(HWND, HWND);
ON_WM_CHAR() afx_msg voidOnChar(UINT, UINT, UINT);
ON_WM_CHARTOITEM() afx_msg int OnCharToItem(UINT,CListBox*, UINT);
ON_WM_CHARTOITEM_REFLECT() afx_msgint CharToItem(UINT, UINT);
ON_WM_CHILDACTIVATE() afx_msg void OnChildActivate();
ON_WM_CLOSE() afx_msg void OnClose();
ON_WM_COMPACTING() afx_msg void OnCompacting(UINT);
ON_WM_COMPAREITEM() afx_msg int OnCompareItem(int,LPCOMPAREITEMSTRUCT);
ON_WM_COMPAREITEM_REFLECT() afx_msgint CompareItem (LPCOMPAREITEMSTRUCT);
ON_WM_CONTEXTMENU() afx_msg void OnContextMenu(CWnd*, CPoint);
ON_WM_COPYDATA() afx_msg BOOL OnCopyData(CWnd*,COPYDATASTRUCT*);
ON_WM_CREATE() afx_msgint OnCreate(LPCREATESTRUCT);
ON_WM_CTLCOLOR() afx_msgHBRUSH OnCtlColor(CDC*, CWnd*, UINT);
ON_WM_CTLCOLOR_REFLECT() afx_msg HBRUSH CtlColor(CDC*, UINT);
ON_WM_DEADCHAR() afx_msg void OnDeadChar(UINT,UINT, UINT);
ON_WM_DELETEITEM() afx_msg void OnDeleteItem(int,LPDELETEITEMSTRUCT);
ON_WM_DELETEITEM_REFLECT()afx_msg void DeleteItem(LPDELETEITEMSTRUCT)
ON_WM_DESTROY() afx_msgvoid OnDestroy();
ON_WM_DESTROYCLIPBOARD() afx_msgvoid OnDestroyClipboard();
ON_WM_DEVICECHANGE() afx_msg BOOL OnDeviceChange(UINT, DWORD);
ON_WM_DEVMODECHANGE() afx_msg void OnDevModeChange(LPTSTR);
ON_WM_DRAWCLIPBOARD() afx_msg void OnDrawClipboard();
ON_WM_DRAWITEM() afx_msg void OnDrawItem(int,LPDRAWITEMSTRUCT);
ON_WM_DRAWITEM_REFLECT() afx_msgvoid DrawItem (LPDRAWITEMSTRUCT);
ON_WM_DROPFILES() afx_msg void OnDropFiles(HDROP);
ON_WM_ENABLE() afx_msg voidOnEnable(BOOL);
ON_WM_ENDSESSION() afx_msg void OnEndSession(BOOL);
ON_WM_ENTERIDLE() afx_msg void OnEnterIdle(UINT,CWnd*);
ON_WM_ENTERMENULOOP() afx_msg void OnEnterMenuLoop(BOOL);
ON_WM_ERASEBKGND() afx_msg BOOL OnEraseBkgnd(CDC*);
ON_WM_EXITMENULOOP() afx_msg void OnExitMenuLoop(BOOL);
ON_WM_FONTCHANGE() afx_msg void OnFontChange();
ON_WM_GETDLGCODE() afx_msg UINT OnGetDlgCode();
ON_WM_GETMINMAXINFO() afx_msg void OnGetMinMaxInfo (MINMAXINFO*);
ON_WM_HELPINFO() afx_msg BOOLOnHelpInfo(HELPINFO*);
ON_WM_HSCROLL() afx_msgvoid OnHScroll(UINT, UINT, CScrollBar*);
ON_WM_HSCROLL_REFLECT() afx_msg void HScroll(UINT, UINT);
ON_WM_HSCROLLCLIPBOARD() afx_msgvoid OnHScrollClipboard(CWnd*,UINT,UINT);
ON_WM_ICONERASEBKGND() afx_msg void OnIconEraseBkgnd(CDC*);
ON_WM_INITMENU() afx_msg voidOnInitMenu(CMenu*);
ON_WM_INITMENUPOPUP() afx_msg void OnInitMenuPopup(CMenu*,UINT,BOOL);
ON_WM_KEYDOWN() afx_msg void OnKeyDown(UINT,UINT, UINT);
ON_WM_KEYUP() afx_msg voidOnKeyUp(UINT, UINT, UINT);
ON_WM_KILLFOCUS() afx_msg void OnKillFocus(CWnd*);
ON_WM_LBUTTONDBLCLK() afx_msg void OnLButtonDblClk(UINT, CPoint);
ON_WM_LBUTTONDOWN() afx_msg void OnLButtonDown(UINT, CPoint);
ON_WM_LBUTTONUP() afx_msg void OnLButtonUp(UINT,CPoint);
ON_WM_MBUTTONDBLCLK() afx_msg void OnMButtonDblClk(UINT, CPoint);
ON_WM_MBUTTONDOWN() afx_msg void OnMButtonDown(UINT, CPoint);
ON_WM_MBUTTONUP() afx_msg void OnMButtonUp(UINT,CPoint);
ON_WM_MDIACTIVATE() afx_msg void OnMDIActivate(BOOL,CWnd*,CWnd*);
ON_WM_MEASUREITEM() afx_msg void OnMeasureItem(int,LPMEASUREITEMSTRUCT);
ON_WM_MEASUREITEM_REFLECT() afx_msg void MeasureItem(LPMEASUREITEMSTRUCT);
ON_WM_MENUCHAR() afx_msg LRESULTOnMenuChar(UINT,UINT,CMenu*);
ON_WM_MENUSELECT() afx_msgvoid OnMenuSelect(UINT, UINT, HMENU);
ON_WM_MOUSEACTIVATE() afx_msg int OnMouseActivate(CWnd*, UINT,UINT);
ON_WM_MOUSEMOVE() afx_msg void OnMouseMove(UINT,CPoint);
ON_WM_MOUSEWHEEL() afx_msg BOOL OnMouseWheel(UINT, short,CPoint);
ON_WM_MOVE() afx_msg void OnMove(int,int);
ON_WM_MOVING() afx_msg void OnMoving(UINT,LPRECT);
ON_WM_NCACTIVATE() afx_msg BOOL OnNcActivate(BOOL);
ON_WM_NCCALCSIZE() afx_msg void OnNcCalcSize(BOOL,NCCALCSIZE_PARAMS*);
ON_WM_NCCREATE() afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
ON_WM_NCDESTROY() afx_msg void OnNcDestroy();
ON_WM_NCHITTEST() afx_msg UINT OnNcHitTest(CPoint);
ON_WM_NCLBUTTONDBLCLK() afx_msgvoid OnNcLButtonDblClk(UINT, CPoint);
ON_WM_NCLBUTTONDOWN() afx_msg void OnNcLButtonDown(UINT, CPoint);
ON_WM_NCLBUTTONUP() afx_msg void OnNcLButtonUp(UINT,CPoint);
ON_WM_NCMBUTTONDBLCLK() afx_msgvoid OnNcMButtonDblClk(UINT, CPoint);
ON_WM_NCMBUTTONDOWN() afx_msgvoid OnNcMButtonDown(UINT, CPoint);
ON_WM_NCMBUTTONUP() afx_msg void OnNcMButtonUp(UINT, CPoint);
ON_WM_NCMOUSEMOVE() afx_msg void OnNcMouseMove(UINT, CPoint);
ON_WM_NCPAINT() afx_msg void OnNcPaint();
ON_WM_NCRBUTTONDBLCLK() afx_msgvoid OnNcRButtonDblClk(UINT, CPoint);
ON_WM_NCRBUTTONDOWN() afx_msg void OnNcRButtonDown(UINT, CPoint);
ON_WM_NCRBUTTONUP() afx_msg void OnNcRButtonUp(UINT,CPoint);
ON_WM_PAINT() afx_msg void OnPaint();
ON_WM_PAINTCLIPBOARD() afx_msg void OnPaintClipboard(CWnd*,HGLOBAL);
ON_WM_PALETTECHANGED() afx_msg void OnPaletteChanged(CWnd*);
ON_WM_PALETTEISCHANGING() afx_msgvoid OnPaletteIsChanging(CWnd*);
ON_WM_PARENTNOTIFY() afx_msg void OnParentNotify(UINT,LPARAM);
ON_WM_PARENTNOTIFY_REFLECT() afx_msg void ParentNotify(UINT, LPARAM);
ON_WM_QUERYDRAGICON() afx_msg HCURSOR OnQueryDragIcon();
ON_WM_QUERYENDSESSION() afx_msgBOOL OnQueryEndSession();
ON_WM_QUERYNEWPALETTE() afx_msgBOOL OnQueryNewPalette();
ON_WM_QUERYOPEN() afx_msg BOOL OnQueryOpen();
ON_WM_RBUTTONDBLCLK() afx_msg void OnRButtonDblClk(UINT, CPoint);
ON_WM_RBUTTONDOWN() afx_msg void OnRButtonDown(UINT, CPoint);
ON_WM_RBUTTONUP() afx_msg void OnRButtonUp(UINT,CPoint);
ON_WM_RENDERALLFORMATS() afx_msgvoid OnRenderAllFormats();
ON_WM_RENDERFORMAT() afx_msg void OnRenderFormat(UINT);
ON_WM_SETCURSOR() afx_msg BOOL OnSetCursor(CWnd*,UINT, UINT);
ON_WM_SETFOCUS() afx_msg void OnSetFocus(CWnd*);
ON_WM_SETTINGCHANGE() afx_msg void OnSettingChange(UINT,LPCTSTR);
ON_WM_SHOWWINDOW() afx_msg void OnShowWindow(BOOL, UINT);
ON_WM_SIZE() afx_msg void OnSize(UINT, int, int);
ON_WM_SIZECLIPBOARD() afx_msg void OnSizeClipboard(CWnd*,HGLOBAL);
ON_WM_SIZING() afx_msgvoid OnSizing(UINT, LPRECT);
ON_WM_SPOOLERSTATUS() afx_msg void OnSpoolerStatus(UINT, UINT);
ON_WM_STYLECHANGED() afx_msg void OnStyleChanged(int,LPSTYLESTRUCT);
ON_WM_STYLECHANGING() afx_msg voidOnStyleChanging(int,LPSTYLESTRUCT);
ON_WM_SYSCHAR() afx_msg void OnSysChar(UINT,UINT, UINT);
ON_WM_SYSCOLORCHANGE() afx_msgvoid OnSysColorChange();
ON_WM_SYSCOMMAND() afx_msg void OnSysCommand(UINT,LPARAM);
ON_WM_SYSDEADCHAR() afx_msg void OnSysDeadChar(UINT, UINT,UINT);
ON_WM_SYSKEYDOWN() afx_msg void OnSysKeyDown(UINT, UINT,UINT);
ON_WM_SYSKEYUP() afx_msg void OnSysKeyUp(UINT,UINT, UINT);
ON_WM_TCARD() afx_msg void OnTCard(UINT,DWORD);
ON_WM_TIMECHANGE() afx_msg void OnTimeChange();
ON_WM_TIMER() afx_msg voidOnTimer(UINT);
ON_WM_VKEYTOITEM() afx_msg int OnVKeyToItem(UINT,CListBox*, UINT);
ON_WM_VKEYTOITEM_REFLECT() afx_msgint VKeyToItem(UINT, UINT);
ON_WM_VSCROLL() afx_msg void OnVScroll(UINT, UINT, CScrollBar*);
ON_WM_VSCROLL_REFLECT() afx_msg void VScroll(UINT, UINT);
ON_WM_VSCROLLCLIPBOARD() afx_msg voidOnVScrollClipboard(CWnd*,UINT,UINT);
ON_WM_WINDOWPOSCHANGED() afx_msg void OnWindowPosChanged(WINDOWPOS*);
ON_WM_WINDOWPOSCHANGING() afx_msgvoid OnWindowPosChanging(WINDOWPOS*);
ON_WM_WININICHANGE() afx_msg voidOnWinIniChange(LPCTSTR);
User-Defined Message Codes
注意訊息帶WPARAM, LPARAM兩個引數,可在傳送的時候傳遞
ON_MESSAGE(<message>,<memberFxn>) afx_msg LRESULT memberFxn(WPARAM,LPARAM);
ON_REGISTERED_MESSAGE(<nMessageVariable>,<memberFxn>) afx_msgLRESULT memberFxn(WPARAM, LPARAM);
ON_REGISTERED_THREADMESSAGE(<nMessageVariable>,<memberFxn>) afx_msg void memberFxn(WPARAM, LPARAM);
ON_THREAD_MESSAGE(<message>, <memberFxn>) afx_msgvoid memberFxn(WPARAM, LPARAM);