VC++6.0消息含義

VC++6.0消息含義

ID:40755598

大?。?07.00 KB

頁數(shù):18頁

時(shí)間:2019-08-07

VC++6.0消息含義_第1頁
VC++6.0消息含義_第2頁
VC++6.0消息含義_第3頁
VC++6.0消息含義_第4頁
VC++6.0消息含義_第5頁
資源描述:

《VC++6.0消息含義》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、消息的意思1.窗口過程每個(gè)窗口會有一個(gè)稱為窗口過程的回調(diào)函數(shù)(WndProc),它帶有四個(gè)參數(shù),分別為:窗口句柄(WindowHandle),消息ID(MessageID),和兩個(gè)消息參數(shù)(wParam,lParam),當(dāng)窗口收到消息時(shí)系統(tǒng)就會調(diào)用此窗口過程來處理消息。(所以叫回調(diào)函數(shù))2消息類型1)系統(tǒng)定義消息(System-DefinedMessages)在SDK中事先定義好的消息,非用戶定義的,其范圍在[0x0000,0x03ff]之間,可以分為以下三類:1>窗口消息(WindowsMessage)與窗口的內(nèi)部

2、運(yùn)作有關(guān),如創(chuàng)建窗口,繪制窗口,銷毀窗口等??梢允且话愕拇翱?,也可以是Dialog,控件等。如:WM_CREATE,WM_PAINT,WM_MOUSEMOVE,WM_CTLCOLOR,WM_HSCROLL...2>命令消息(CommandMessage)與處理用戶請求有關(guān),如單擊菜單項(xiàng)或工具欄或控件時(shí),就會產(chǎn)生命令消息。WM_COMMAND,LOWORD(wParam)表示菜單項(xiàng),工具欄按鈕或控件的ID。如果是控件,HIWORD(wParam)表示控件消息類型3>控件通知(NotifyMessage)控件通知消息,這

3、是最靈活的消息格式,其Message,wParam,lParam分別為:WM_NOTIFY,控件ID,指向NMHDR的指針。NMHDR包含控件通知的內(nèi)容,可以任意擴(kuò)展。2)程序定義消息(Application-DefinedMessages)用戶自定義的消息,對于其范圍有如下規(guī)定:WM_USER:0x0400-0x7FFF(ex.WM_USER+10)WM_APP(winver>4.0):0x8000-0xBFFF(ex.WM_APP+4)RegisterWindowMessage:0xC000-0xFFFF3消息隊(duì)

4、列(MessageQueues)Windows中有兩種類型的消息隊(duì)列1)系統(tǒng)消息隊(duì)列(SystemMessageQueue)這是一個(gè)系統(tǒng)唯一的Queue,設(shè)備驅(qū)動(mouse,keyboard)會把操作輸入轉(zhuǎn)化成消息存在系統(tǒng)隊(duì)列中,然后系統(tǒng)會把此消息放到目標(biāo)窗口所在的線程的消息隊(duì)列(thread-specificmessagequeue)中等待處理2)線程消息隊(duì)列(Thread-specificMessageQueue)每一個(gè)GUI線程都會維護(hù)這樣一個(gè)線程消息隊(duì)列。(這個(gè)隊(duì)列只有在線程調(diào)用GDI函數(shù)時(shí)才會創(chuàng)建,默認(rèn)不

5、創(chuàng)建)。然后線程消息隊(duì)列中的消息會被送到相應(yīng)的窗口過程(WndProc)處理.注意:線程消息隊(duì)列中WM_PAINT,WM_TIMER只有在Queue中沒有其他消息的時(shí)候才會被處理,WM_PAINT消息還會被合并以提高效率。其他所有消息以先進(jìn)先出(FIFO)的方式被處理。一、隊(duì)列消息(QueuedMessages)和非隊(duì)列消息(Non-QueuedMessages)1)隊(duì)列消息(QueuedMessages)消息會先保存在消息隊(duì)列中,消息循環(huán)會從此隊(duì)列中取消息并分發(fā)到各窗口處理如鼠標(biāo),鍵盤消息。2)非隊(duì)列消息(NonQ

6、ueuedMessages)消息會繞過系統(tǒng)消息隊(duì)列和線程消息隊(duì)列直接發(fā)送到窗口過程被處理如:WM_ACTIVATE(刺激,激活),WM_SETFOCUS(焦點(diǎn)、焦距),WM_SETCURSOR(游標(biāo)、指針),WM_WINDOWPOSCHANGED(),注意:postMessage發(fā)送的消息是隊(duì)列消息,它會把消息Post到消息隊(duì)列中;SendMessage發(fā)送的消息是非隊(duì)列消息,被直接送到窗口過程處理二、5PostMessage(PostThreadMessage),SendMessagePostMessage:把消息

7、放到指定窗口所在的線程消息隊(duì)列中后立即返回。PostThreadMessage:把消息放到指定線程的消息隊(duì)列中后立即返回。SendMessage:直接把消息送到窗口過程處理,處理完了才返回。三、GetMessage,PeekMessagePeekMessage會立即返回可以保留消息GetMessage在有消息時(shí)返回會刪除消息四、TranslateMessage,TranslateAcceleratorTranslateMessage:把一個(gè)virtual-key消息轉(zhuǎn)化成字符消息(charactermessage),

8、并放到當(dāng)前線程的消息隊(duì)列中,消息循環(huán)下一次取出處理。TranslateAccelerator:將快捷鍵對應(yīng)到相應(yīng)的菜單命令。它會把WM_KEYDOWN或WM_SYSKEYDOWN轉(zhuǎn)化成快捷鍵表中相應(yīng)的WM_COMMAND或WM_SYSCOMMAND消息,然后把轉(zhuǎn)化后的WM_COMMAND或WM_SYSCOMMAND直接發(fā)送到窗口過程處理,處理完

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。