標準消息: 除 WM_COMMAND 外, 以 WM 開頭所有消息。

成都創(chuàng)新互聯主要從事成都網站設計、成都網站建設、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務阿里地區(qū),十余年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792
非標準消息:以WM_COMMAND 呈現
命令消息 : 由菜單、工具欄按鈕、加速鍵 產生。
通告消息: 由控件產生。
標準消息:CWnd 的派生類都可以接受。
命令消息、通告消息:CCmdTarget派生的類都可以接受.
標準消息不能被 CWinApp 和CDocument 類接受.
Windows的消息系統(tǒng)是由3個部分組成的:
· 消息隊列。Windows能夠為所有的應用程序維護一個消息隊列。應用程序必須從消息隊列中獲取
消息,然后分派給某個窗口。
· 消息循環(huán)。通過這個循環(huán)機制應用程序從消息隊列中檢索消息,再把它分派給適當的窗口,然
后繼續(xù)從消息隊列中檢索下一條消息,再分派給適當的窗口,依次進行。
· 窗口過程。每個窗口都有一個窗口過程來接收傳遞給窗口的消息,它的任務就是獲取消息然后
響應它。窗口過程是一個回調函數;處理了一個消息后,它通常要返回一個值給Windows。
注意回調函數是程序中的一種函數,它是由Windows或外部模塊調用的。
一個消息從產生到被一個窗口響應,其中有5個步驟:
1) 系統(tǒng)中發(fā)生了某個事件。
2) Windows把這個事件翻譯為消息,然后把它放到消息隊列中。
3) 應用程序從消息隊列中接收到這個消息,把它存放在TMsg記錄中。
4) 應用程序把消息傳遞給一個適當的窗口的窗口過程。
5) 窗口過程響應這個消息并進行處理。
步驟3和4構成了應用程序的消息循環(huán)。消息循環(huán)往往是Windows應用程序的核心,因為消息循環(huán)
使一個應用程序能夠響應外部的事件。消息循環(huán)的任務就是從消息隊列中檢索消息,然后把消息傳遞給適當的窗口。如果消息隊列中沒有消息,Windows就允許其他應用程序處理它們的消息。
Windows操作系統(tǒng)最大的特點就是其圖形化的操作界面,其圖形化界面是建立在其消息處理機制這個基礎之上的。如果不理解Windows消息處理機制,肯定無法深入的理解Windows編程。可惜很多程序員對Windows消息只是略有所聞,對其使用知之甚少,更不了解其內部實現原理,本文試著一步一步向大家披露我理解的Windows消息機制。可以說,掌握了這一部分知識,就是掌握了Windows編程中的神兵利器,靈活運用它,將會極大的提高我們的編程能力。
1 Windows窗口消息大全,全不全自己看
2
3 //////////////////////////////////////////////////////////////////////////
4 #include "AFXPRIV.H"http://消息值的定義來源
5 #include "Dde.h"http://DDE消息值的定義來源
6 #include "CPL.H"http://控制面板消息值的定義來源
7 #include "WFEXT.H"http://文件管理器的消息值的定義來源
8 #include "vfw.h"http://視頻捕捉的消息值的定義來源
9 #include "ras.h"http://RAS(遠程訪問服務)的消息值的定義來源
10 #include "imm.h"http://輸入法編輯器的消息值的定義來源
11 #include "tspi.h"http://消息值的定義來源
12 #include "setupapi.h"http://消息值的定義來源
13 //////////////////////////////////////////////////////////////////////////
14 #ifndef WM_SYSTIMER
15 #define WM_SYSTIMER 0x0118 //(caret blink)
16 #endif
17
18 #define DRV_EXITAPPLICATION 0x000C //驅動程序消息相關
19 #define WM_HIBERNATE 0x03FF //WINCE獨有的消息(內存資源限制相關)
20
21 //窗口消息解碼
22 #define IDSTR(MsgID) MsgID,#MsgID
23
24 typedef struct
25 {
26 DWORD dwMsg;
27 LPCTSTR szMsgText;
28 LPCTSTR szNote;
29 } t_MSGNOTE;
30
31
32 static t_MSGNOTE messagesnote[] =
33 {
34 IDSTR(WM_NULL),"空消息,可檢測程序是否有響應等",
35 IDSTR(WM_CREATE),"新建一個窗口",
36 IDSTR(WM_DESTROY),"銷毀一個窗口",
37 //IDSTR(0x0004),"",
38 IDSTR(WM_MOVE),"移動一個窗口",
39 IDSTR(WM_SIZE),"改變一個窗口的大小",
40 IDSTR(WM_ACTIVATE),"一個窗口被激活或失去激活狀態(tài)",
41 IDSTR(WM_SETFOCUS),"將焦點轉向一個窗口",
42 IDSTR(WM_KILLFOCUS),"使一個窗口失去焦點",
43 //IDSTR(0x0009),"",
44 IDSTR(WM_ENABLE),"使一個窗口處于可用狀態(tài)",
45 IDSTR(WM_SETREDRAW),"設置窗口是否能重繪",
46 IDSTR(WM_SETTEXT),"設置一個窗口的文本",
47 IDSTR(WM_GETTEXT),"復制窗口的文本到緩沖區(qū)",
48 IDSTR(WM_GETTEXTLENGTH),"得到窗口的文本長度(不含結束符)",
49 IDSTR(WM_PAINT),"窗口重繪",
50 IDSTR(WM_CLOSE),"用戶關閉窗口時會發(fā)送本消息,緊接著會發(fā)送WM_DESTROY消息",
51 IDSTR(WM_QUERYENDSESSION),"關機或注銷時系統(tǒng)會按優(yōu)先級給各進程發(fā)送WM_QUERYENDSESSION,告訴應用程序要關機或注銷了",
52 IDSTR(WM_QUIT),"關閉消息循環(huán)結束程序的運行",
53 IDSTR(WM_QUERYOPEN),"最小化的窗口即將被恢復以前的大小位置",
54 IDSTR(WM_ERASEBKGND),"當一個窗口的背景必須被擦除時本消息會被觸發(fā)(如:窗口大小改變時)",
55 IDSTR(WM_SYSCOLORCHANGE),"當系統(tǒng)顏色改變時,發(fā)送本消息給所有頂級窗口",
56 IDSTR(WM_ENDSESSION),"關機或注銷時系統(tǒng)會發(fā)出WM_QUERYENDSESSION消息,然后將本消息發(fā)送給應用程序,通知程序會話結束",
57 //IDSTR(0x0017),"",
58 IDSTR(WM_SHOWWINDOW),"發(fā)送本消息給一個窗口,以便隱藏或顯示該窗口",
59 //IDSTR(0x0019),"",
60 IDSTR(WM_WININICHANGE),"讀寫\"win.ini\"時會發(fā)送本消息給所有頂層窗口,通知其它進程該文件已被更改",
61 IDSTR(WM_DEVMODECHANGE),"改變設備模式設置(\"win.ini\")時,處理本消息的應用程序可重新初始化它們的設備模式設置",
62 IDSTR(WM_ACTIVATEAPP),"窗口進程激活狀態(tài)改動,正被激活的窗口屬于不同的應用程序 ",//??
63 IDSTR(WM_FONTCHANGE),"當系統(tǒng)的字體資源庫變化時發(fā)送本消息給所有頂級窗口",
64 IDSTR(WM_TIMECHANGE),"當系統(tǒng)的時間變化時發(fā)送本消息給所有頂級窗口",
65 IDSTR(WM_CANCELMODE),"發(fā)送本消息來取消某種正在進行的模態(tài)(操作)(如鼠示捕獲),例如:啟動一個模態(tài)窗口時,父窗會收到本消息;該消息無參數",
66 IDSTR(WM_SETCURSOR),"若鼠標光標在某窗口內移動且鼠標沒被捕獲時,就會發(fā)送本消息給某個窗口",
67 IDSTR(WM_MOUSEACTIVATE),"當鼠標光標在某個未激活窗口內,而用戶正按著鼠標的某個鍵時,會發(fā)送本消息給當前窗口",
68 IDSTR(WM_CHILDACTIVATE),"點擊窗口標題欄或當窗口被激活、移動、大小改變時,會發(fā)送本消息給MDI子窗口",
69 IDSTR(WM_QUEUESYNC),"本消息由基于計算機的訓練程序發(fā)送,通過WH_JOURNALPALYBACK的HOOK程序分離出用戶輸入消息",
70 IDSTR(WM_GETMINMAXINFO),"當窗口將要改變大小或位置時,由系統(tǒng)發(fā)送本消息給窗口,用戶拖動一個可重置大小的窗口時便會發(fā)出本消息",
71 //IDSTR(0x0025),"",
72 IDSTR(WM_PAINTICON),"當一個最小化的窗口圖標將被重繪時發(fā)送本消息",
73 IDSTR(WM_ICONERASEBKGND),"本消息發(fā)送給某個最小化的窗口,僅當它在畫圖標前它的背景必須被重畫",
74 IDSTR(WM_NEXTDLGCTL),"發(fā)送本消息給一個對話框程序窗口過程,以便在各控件間設置鍵盤焦點位置",
75 //IDSTR(0x0029),"",
76 IDSTR(WM_SPOOLERSTATUS),"每當打印管理列隊增加或減少一條作業(yè)時就會發(fā)出本消息",
77 IDSTR(WM_DRAWITEM),"按鈕、組合框、列表框、菜單的外觀改變時會發(fā)送本消息給這些控件的所有者",
78 IDSTR(WM_MEASUREITEM),"按鈕、組合框、列表框、列表控件、菜單項被創(chuàng)建時會發(fā)送本消息給這些控件的所有者",
79 IDSTR(WM_DELETEITEM),"當列表框或組合框被銷毀或通過LB_DELETESTRING、LB_RESETCONTENT、CB_DELETESTRING或CB_RESETCONTENT消息刪除某些項時,會發(fā)送本消息給這些控件的所有者",
80 IDSTR(WM_VKEYTOITEM),"LBS_WANTKEYBOARDINPUT風格的列表框會發(fā)出本消息給其所有者,以便響應WM_KEYDOWN消息",
81 IDSTR(WM_CHARTOITEM),"LBS_WANTKEYBOARDINPUT風格的列表框會發(fā)送本消息給其所有者,以便響應WM_CHAR消息",
82 IDSTR(WM_SETFONT),"指定控件所用字體",
83 IDSTR(WM_GETFONT),"得到當前控件繪制其文本所用的字體",
84 IDSTR(WM_SETHOTKEY),"為某窗口關聯一個熱鍵",
85 IDSTR(WM_GETHOTKEY),"確定某熱鍵與某窗口是否相關聯",
86 //IDSTR(0x0034),"",
87 //IDSTR(0x0035),"",
88 //IDSTR(0x0036),"",
89 IDSTR(WM_QUERYDRAGICON),"本消息發(fā)送給最小化的窗口(iconic),當該窗口將被拖放而其窗口類中沒有定義圖標,應用程序能返回一個圖標或光標的句柄。當用戶拖放圖標時系統(tǒng)會顯示這個圖標或光標",
90 //IDSTR(0x0038),"",
91 IDSTR(WM_COMPAREITEM),"可發(fā)送本消息來確定組合框(CBS_SORT)或列表框(LBS_SORT)中新增項的相對位置",
92 //IDSTR(0x003A),"",
93 //IDSTR(0x003B),"",
94 //IDSTR(0x003C),"",
95 IDSTR(WM_GETOBJECT),"\"oleacc.dll\"(COM組件)(Microsoft Active Accessibility:方便殘疾人使用電腦的一種技術)發(fā)送本消息激活服務程序以便獲取它所包含的關聯對象的信息",
96 //IDSTR(0x003E),"",
97 //IDSTR(0x003F),"",
98 //IDSTR(0x0040),"",
99 IDSTR(WM_COMPACTING),"顯示內存已經很少了",
100 //IDSTR(0x0042),"",
101 //IDSTR(0x0043),"",
102 IDSTR(WM_COMMNOTIFY),"Win3.1中,當串口事件產生時,通訊設備驅動程序發(fā)送消息本消息給系統(tǒng),指示輸入輸出隊列的狀態(tài)",
103 //IDSTR(0x0045),"",
104 IDSTR(WM_WINDOWPOSCHANGING),"本消息會發(fā)送給那些大小和位置(Z_Order)將被改變的窗口,以調用SetWindowPos函數或其它窗口管理函數",
105 IDSTR(WM_WINDOWPOSCHANGED),"本消息會發(fā)送給那些大小和位置(Z_Order)已被改變的窗口,以調用SetWindowPos函數或其它窗口管理函數",
106 IDSTR(WM_POWER),"當系統(tǒng)將要進入暫停狀態(tài)時發(fā)送本消息(適用于16位的windows)",
107 //IDSTR(0x0049),"",
108 IDSTR(WM_COPYDATA),"當一個應用程序傳遞數據給另一個應用程序時發(fā)送本消息",
109 IDSTR(WM_CANCELJOURNAL),"當用戶取消程序日志激活狀態(tài)時,發(fā)送本消息給那個應用程序。該消息使用空窗口句柄發(fā)送",
110 //IDSTR(0x004C),"",
111 //IDSTR(0x004D),"",
112 IDSTR(WM_NOTIFY),"當某控件的某事件已發(fā)生或該控件需得到一些信息時,發(fā)送本消息給其父窗",
113 //IDSTR(0x004F),"",
114 IDSTR(WM_INPUTLANGCHANGEREQUEST),"當用戶通過過單擊任務欄上的語言指示符或某快捷鍵組合選擇改變輸入法時系統(tǒng)會向焦點窗口發(fā)送本消息",
115 IDSTR(WM_INPUTLANGCHANGE),"切換輸入法后,系統(tǒng)會發(fā)送本消息給受影響的頂層窗口",
116 IDSTR(WM_TCARD),"程序已初始化windows幫助例程時會發(fā)送本消息給應用程序",
117 IDSTR(WM_HELP),"按下F1后,若某菜單是激活的,就發(fā)送本消息給此窗口關聯的菜單;否則就發(fā)送給有焦點的窗口;若當前都沒有焦點,就把本消息發(fā)送給當前激活的窗口",
118 IDSTR(WM_USERCHANGED),"當用戶已登入或退出后發(fā)送本消息給所有窗口;當用戶登入或退出時系統(tǒng)更新用戶的具體設置信息,在用戶更新設置時系統(tǒng)馬上發(fā)送本消息",
119 IDSTR(WM_NOTIFYFORMAT),"公用控件、自定義控件和其父窗通過本消息判斷控件在WM_NOTIFY通知消息中是使用ANSI還是UNICODE,使用本消息能使某個控件與它的父控件間進行相互通信",
120 IDSTR(WM_CONTEXTMENU),"當用戶在某窗口中點擊右鍵就發(fā)送本消息給該窗口,設置右鍵菜單",
121 IDSTR(WM_STYLECHANGING),"當調用SetWindowLong函數將要改變一個或多個窗口的風格時,發(fā)送本消息給那個窗口",
122 IDSTR(WM_STYLECHANGED),"當調用SetWindowLong函數改變一個或多個窗口的風格后,發(fā)送本消息給那個窗口",
123 IDSTR(WM_DISPLAYCHANGE),"當顯示器的分辨率改變后,發(fā)送本消息給所有窗口",
124 IDSTR(WM_GETICON),"本消息發(fā)送給某個窗口,用于返回與某窗口有關聯的大圖標或小圖標的句柄",
125 IDSTR(WM_SETICON),"應用程序發(fā)送本消息讓一個新的大圖標或小圖標與某窗口相關聯",
126 IDSTR(WM_NCCREATE),"當某窗口首次被創(chuàng)建時,本消息在WM_CREATE消息發(fā)送前發(fā)送",
127 IDSTR(WM_NCDESTROY),"本消息通知某窗口,非客戶區(qū)正在銷毀",
128 IDSTR(WM_NCCALCSIZE),"當某窗口的客戶區(qū)的大小和位置須被計算時發(fā)送本消息",
129 IDSTR(WM_NCHITTEST),"當用戶在在非客戶區(qū)移動鼠標、按住或釋放鼠標時發(fā)送本消息(擊中測試);若鼠標沒有被捕獲,則本消息在窗口得到光標之后發(fā)出,否則消息發(fā)送到捕獲到鼠標的窗口",
130 IDSTR(WM_NCPAINT),"當窗口框架(非客戶區(qū))必須被被重繪時,應用程序發(fā)送本消息給該窗口",
131 IDSTR(WM_NCACTIVATE),"本消息發(fā)送給某窗口,在窗口的非客戶區(qū)被激活時重繪窗口",
132 IDSTR(WM_GETDLGCODE),"發(fā)送本消息給某個與對話框程序關聯的控件,系統(tǒng)控制方位鍵和TAB鍵使輸入進入該控件,通過響應本消息應用程序可把它當成一個特殊的輸入控件并能處理它",
133 IDSTR(WM_SYNCPAINT),"當避免聯系獨立的GUI線程時,本消息用于同步刷新,本消息由系統(tǒng)確定是否發(fā)送",
134 IDSTR(WM_NCMOUSEMOVE),"當光標在某窗口的非客戶區(qū)內移動時,發(fā)送本消息給該窗口",
135 IDSTR(WM_NCLBUTTONDOWN),"當光標在某窗口的非客戶區(qū)內的同時按下鼠標左鍵,會發(fā)送本消息",
136 IDSTR(WM_NCLBUTTONUP),"當用戶釋放鼠標左鍵的同時光標在某窗口的非客戶區(qū)內時,會發(fā)送本消息",
137 IDSTR(WM_NCLBUTTONDBLCLK),"當用戶雙擊鼠標左鍵的同時光標在某窗口的非客戶區(qū)內時,會發(fā)送本消息",
138 IDSTR(WM_NCRBUTTONDOWN),"當用戶按下鼠標右鍵的同時光標在某窗口的非客戶區(qū)內時,會發(fā)送本消息",
139 IDSTR(WM_NCRBUTTONUP),"當用戶釋放鼠標右鍵的同時光標在某窗口的非客戶區(qū)內時,會發(fā)送本消息",
140 IDSTR(WM_NCRBUTTONDBLCLK),"當用戶雙擊鼠標右鍵的同時光標在某窗口的非客戶區(qū)內時,會發(fā)送本消息",
141 IDSTR(WM_NCMBUTTONDOWN),"當用戶按下鼠標中鍵的同時光標在某窗口的非客戶區(qū)內時,會發(fā)送本消息",
142 IDSTR(WM_NCMBUTTONUP),"當用戶釋放鼠標中鍵的同時光標在某窗口的非客戶區(qū)內時,會發(fā)送本消息",
143 IDSTR(WM_NCMBUTTONDBLCLK),"當用戶雙擊鼠標中鍵的同時光標在某窗口的非客戶區(qū)內時,會發(fā)送本消息",
144
145 //滾動條消息
146 IDSTR(SBM_SETPOS),"設置滾動條上滑塊的位置",
147 IDSTR(SBM_GETPOS),"獲取滾動條上滑塊的位置",
148 IDSTR(SBM_SETRANGE),"設置滾動條的最大與最小位置值",
149 IDSTR(SBM_SETRANGEREDRAW),"設置滾動條的最大與最小位置值,并重繪滾動條",
150 IDSTR(SBM_GETRANGE),"獲取滾動條的最大與最小位置值",
151 IDSTR(SBM_ENABLE_ARROWS),"設置滾動條的最大與最小位置值,并重繪滾動條",
152 IDSTR(SBM_SETSCROLLINFO),"設置滾動條的參數,本消息通過SCROLLINFO結構指定多種參數,具體指定哪些參數由結構中的fMask成員確定",
153 IDSTR(SBM_GETSCROLLINFO),"獲取滾動條的參數,發(fā)送本消息后,將在SCROLLINFO結構中返回控件的多種參數,當然須事先設定結構的fMask成員以確定具體要取得哪些參數",
154
155 //按鈕控件消息
156 IDSTR(BM_GETCHECK),"獲取單選按鈕或復選框的狀態(tài)",
157 IDSTR(BM_SETCHECK),"設置單選按鈕或復選框的狀態(tài)",
158 IDSTR(BM_GETSTATE),"確定單選按鈕或復選框的狀態(tài)",
159 IDSTR(BM_SETSTATE),"改變按鈕的高亮狀態(tài)",
160 IDSTR(BM_SETSTYLE),"改變按鈕的風格",
161 IDSTR(BM_CLICK),"模擬用戶點擊按鈕",
162 IDSTR(BM_GETIMAGE),"獲取與按鈕相關聯的圖片句柄(圖標或位圖)",
163 IDSTR(BM_SETIMAGE),"把按鈕與某張圖片相關聯(圖標或位圖),注:按鈕須有BS_ICON風格",
164
165 //按鈕控件通知消息
166 IDSTR(BN_CLICKED),"用戶單擊了按鈕,父窗通過WM_COMMAND來接收本通知消息",
167 IDSTR(BN_DBLCLK),"用戶雙擊了按鈕(BS_OWNERDRAW或BS_RADIOBUTTON風格),父窗通過WM_COMMAND來接收本通知消息",
168 IDSTR(BN_DISABLE),"按鈕被禁止,父窗通過WM_COMMAND來接收本通知消息",
169 IDSTR(BN_DOUBLECLICKED),"用戶雙擊了按鈕(與BN_DBLCLK同)(BS_OWNERDRAW或BS_RADIOBUTTON風格),父窗通過WM_COMMAND來接收本通知消息",
170 IDSTR(BN_HILITE),"用戶選擇(即加亮)了按鈕(與BN_PUSHED相同),父窗通過WM_COMMAND來接收本通知消息",
171 IDSTR(BN_KILLFOCUS),"按鈕失去了鍵盤焦點(按鈕須有BS_NOTIFY風格才能發(fā)送本消息),父窗通過WM_COMMAND來接收本通知消息",
172 IDSTR(BN_PAINT),"按鈕應當重繪,父窗通過WM_COMMAND來接收本通知消息",
173 IDSTR(BN_PUSHED),"用戶加亮了按鈕(與BN_HILITE相同),父窗通過WM_COMMAND來接收本通知消息",
174 IDSTR(BN_SETFOCUS),"按鈕收到鍵盤焦點(按鈕須有BS_NOTIFY風格才能發(fā)送本消息),父窗通過WM_COMMAND息來接收本通知消息",
175 IDSTR(BN_UNHILITE),"按鈕的加亮應當去掉(與BN_UNPUSHED相同),父窗通過WM_COMMAND來接收本通知消息",
176 IDSTR(BN_UNPUSHED),"按鈕的加亮應當去掉(與BN_UNHILITE相同),父窗通過WM_COMMAND來接收本通知消息",
網頁題目:包含windows系統(tǒng)消息值的詞條
本文鏈接:http://chinadenli.net/article44/dsgoche.html
成都網站建設公司_創(chuàng)新互聯,為您提供虛擬主機、營銷型網站建設、網站內鏈、網站排名、定制開發(fā)、外貿建站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯