日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

非窗口消息

發(fā)布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 非窗口消息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

通常將與窗口相關的消息統(tǒng)稱為窗口消息(區(qū)別于線程消息),但窗口消息還可以細分為窗口消息、命令消息、通知消息、反射消息。其中通知消息時從命令消息中衍生出來的。窗口消息直接針對某個窗口,它或者是由系統(tǒng)發(fā)送給窗口的系統(tǒng)事件,或者是在用戶操作該窗口時產(chǎn)生的窗口事件。對大部分窗口消息,MFC都為其定義了默認的處理函數(shù),并為這些處理函數(shù)規(guī)定了原型和名稱。但非窗口消息(命令,通知,反射消息)就顯得有些繁雜,而且一個費窗口消息可以在不同的對象之間轉發(fā)。大部分非窗口消息處理函數(shù)的名稱是隨意的,但函數(shù)原型只有幾種。

-

命令消息

命令消息就是菜單、按鈕向窗口發(fā)送的,要求執(zhí)行某個功能操作的消息。每個命令都是有一個16位的ID號來標識的,命令的ID號就是命令發(fā)送者的ID號。所以,具有相同ID號的兩個發(fā)送者,產(chǎn)生相同的命令。不同的ID號值域標識不同的命令類型,如【0x8000,0xf000】范圍標識可傳遞的全局命令,即命令可由不同的對象處理。菜單默認是全局命令,每個菜單項的ID值都在這個范圍內;按鈕默認為局部命令,其ID值小于0x8000。所以,如果對話框附加了一個菜單,所有菜單項命令可傳遞到其父窗口和應用類,在父窗口是主框架的情況下,還可以傳遞視圖和文檔對象。而按鈕命令只能在對話框中處理。當然這只是默認的情況,通常該寫resurce.h頭文件,將菜單項變?yōu)榫植棵?#xff0c;或將按鈕變?yōu)槿置疃际强梢缘摹H绻M粋€按鈕命令被命令路由中其他的對象處理,除該寫其命令ID值外,還必須在這個對象中手工添加映射消息。

通知消息

在WIN3.x中,通知消息是子控件通過發(fā)送WM_COMMAND命令消息實現(xiàn)的,這種命令消息包含一個非零的通知代碼,而普通的命令消息通知代碼為0。在WIN32中,仍然保留著這些通知消息的形式。對于在WIN3.X中已經(jīng)使用的標準控件如listbox,combox,button,static,edit等都延續(xù)這種通知消息的形式。同時,對于在WIN32中新增加的控件如樹形控件,列表控件,進度指示器,跟蹤欄等,采用了WM_NOTIFY通知消息,該消息類型是真正為了通知消息而設定的。WM_NOTIFY通知消息允許子窗口傳遞更多的信息給父窗口,如子窗口將鼠標單擊事件通知給父窗口時,可以傳達貫標的位置信息。傳遞附加信息對于復制的控件和復制的消息時非常必要的。

反射消息

反射消息使子窗口控件的行為更加獨立化,而不是過多的依賴于父窗口的控制,這樣有利于模塊化和代碼重用。雖然MFC沒有為反射消息定義一個宏名,但它擁有自己的消息值,已不再隸屬于命令消息。由于發(fā)送者ID號已沒有意義,置為0。而通知代碼和處理函數(shù)原型與通知消息相同。特殊通知消息的反射消息,其宏定義遵循一定的命名規(guī)則,即在通知消息名前ON_,后加_REFLECT。

總結

以上是生活随笔為你收集整理的非窗口消息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。