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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

消息响应机制

發布時間:2024/4/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 消息响应机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

①、映射機制的原理
Windows 下的程序包括 Windows 系統都是基于消息機制的。
MFC消息映射機制的具體實現方法是:在每個能接收和處理消息的類中,定義一個消息和消息響應函數的靜態對照表,即消息映射表;
在消息映射表中,消息與對應的消息處理函數指針是成對出現的。某個類能處理的所有消息及其對應的消息處理函數的地址都列在這個類所對應的靜態表中;
當有消息需要處理時,程序只要搜索該消息靜態表,查看表中是否含有該消息,就可以知道該類能否處理此消息;
如果能處理該消息,則同樣依照靜態表能很容易找到并調用對應的消息處理函數!

②、一般情況下,一個MFC的消息映射在程序中有三處相關信息:1》消息響應函數的聲明 2》消息響應函數實現 3》用來關聯消息和消息響應函數的宏
具體見示例代碼……更為詳細的講解參見《深入淺出MFC 第二版 簡體中文版》 - 侯杰:http://www.cctry.com/thread-192-1-1.html


③、針對不同的 Windows 消息,MFC提供了不同的消息映射宏,主要分為如下六類:

1、Windows 消息映射宏
Windows 消息映射宏用于處理普通的窗口消息。此類消息映射宏前綴為“ON_WM_”,并且沒有參數;

2、命令消息映射宏
命令消息 WM_COMMAND 是一種特殊的窗口消息,它從一個窗口發送到另一個窗口,以處理來自用戶的請求,是 ON_COMMAND 宏和 ON_COMMAND_RANGE 宏;

3、控件通知消息映射宏
控件通知消息是指控件窗口發送到其父窗口的消息,其消息映射宏為 ON_CONTROL 和 ON_CONTROL_RANGE,有時在程序中并不見 ON_CONTROL 宏,而見 ON_BN_CLICKED 宏,
其實 ON_CONTROL 宏派生出許多的映射宏,包括 ON_BN_CLICKED 宏等;

4、控件通知消息映射宏
控件通知消息映射宏處理的窗口消息有 WM_COMMAND,WM_NOTIFY,其消息映射宏有 ON_NOTIFY 和 ON_NOTIFY_RANGE;

5、反射消息映射宏
反射消息是指子窗口向父窗口發送的通知消息或控件通知消息,父窗口將該消息轉化為相應的反射消息發送給子窗口優先處理。
處理窗口消息 WM_NOTIFY+WM_REFLECT_BASE 的宏是 ON_NOTIFY_REFLECT,處理窗口消息 WM_COMMAND+WM_REFLECT_BASE 的宏是 ON_CONTROL_REFLECT,
還有其他的反射消息宏,具體請參考MDSN。

6、擴展消息映射宏
有 ON_COMMAND | ON_COMMAND_RANGE | ON_NOTIFY | ON_NOTIFY_RANGE ……

④、自定義消息的發送與響應:
1、自定義消息號:#define WM_CCTRY_MSG (WM_USER+100)
2、在頭文件中添加消息響應函數的聲明:afx_msg LRESULT OnCcTryMsg(WPARAM wParam, LPARAM lParam);
3、在CPP文件中添加消息響應函數的實現:
LRESULT CXXXDlg::OnCcTryMsg(WPARAM wParam, LPARAM lParam) {
//相關代碼;
}
4、在 BEGIN_MESSAGE_MAP 與 END_MESSAGE_MAP 之間加入消息的映射代碼:ON_MESSAGE(WM_CCTRY_MSG, &CDlgTestDlg::OnCcTryMsg)
5、消息的發送:

轉載于:https://www.cnblogs.com/persistentlyworking/p/3196951.html

總結

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

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