a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

MFC自定義消息的實現方法

2020-01-26 15:28:46
字體:
來源:轉載
供稿:網友

一、概述:

消息機制是windows程序的典型運行機制,在MFC中有很多已經封裝好了的消息,如WM_BTN**等。但是在有些特殊情況下我們需要自定義一些消息去完成一些我們所需要的功能,這時候MFC的向導不能幫助我們做到這一點。對此,我們可以通過添加相應的代碼去完成這個功能。

二、實現方法:

添加自定義消息操作如下:
1. 建立MFC工程,如基于對話框的應用程序,Test。
2. 在資源中添加要處理的消息的值,即在CTestDlg.h中添加 如下代碼。 (因為很多MFC的消息是在WM_USER內的,所以這里用比WM_USER大的消息)

 #define WM_MyMessage (WM_USER+100)

3. 聲明消息處理函數,在CTestDlg.h中添加如下代碼:

class CTestDlg : public CDialog{ protected: ……  // 生成的消息映射函數  ……  afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); // add lyw  DECLARE_MESSAGE_MAP()  ……

4. 添加消息映射處理,在CTestDlg.cpp中人找到如下部分添加代碼:
 

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)   ……  ON_MESSAGE(WM_MyMessage, OnMyMessage)END_MESSAGE_MAP()

 5. 實現自己的自定義消息處理:
 

LRESULT CTestDlg::OnMyMessage(WPARAM wParam, LPARAM lParam){  //MessageBox("recv msg success");  //添加自己的消息處理  ……  return 0;  }

6. 如果要發送一個自定義的消息,需要使用代碼
 

SendMessage( WM_MyMessage, 0, 0);

或者

 PostMessage(WM_MyMessage, 0, 0); 

如果要定義系統唯一的消息讓多個應用程序去處理,不同之處如下:

1. 把上面2步驟中的宏 #define WM_MyMessage (WM_USER+100) 使用如下代碼代替:

 static UINT WM_MyMessage = RegisterWindowMessage("myMessage");

2. 上面4步驟中的代碼用如下代替:

 BEGIN_MESSAGE_MAP(CTestDlg, CDialog)   ……  ON_REGISTERED_MESSAGE(WM_MyMessage, OnMyMessage)END_MESSAGE_MAP()

3.測試消息時,如果要讓多個應用程序都接收到這個消息,需要使用:

 ::SendMessage(HWND_BROADCAST, WM_MyMessage, 0, 0);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 综合二区 | 一区二区激情 | 免费在线观看av的网站 | 日韩中文字幕视频 | 欧美一区二区三区四区视频 | a级三四级黄大片 | 一区二区亚洲 | 国产成人99久久亚洲综合精品 | 欧美日韩在线免费观看 | 久久久国产一区 | 色玖玖 | 日韩欧美国产电影 | 久久99久久久久 | 久久久久久国产视频 | 国产伦精品一区二区三区四区视频 | 久久久久91 | 日本不卡一区二区三区在线观看 | 日韩欧美在线一区 | 国产精品视频免费播放 | 日本中文字幕在线播放 | 综合色综合 | 日本不卡视频 | 久草热8精品视频在线观看 高清av一区 | 久久久久久久久久久蜜桃 | 色婷婷小说 | 日韩在线一 | 日本免费中文字幕 | 国产精品一区二区免费视频 | 国产浪潮av色综合久久超碰 | 亚洲毛片 | 亚洲一区在线电影 | 欧美乱妇高清无乱码 | 国产黄色大片免费观看 | 久久久国产精品入口麻豆 | 国产精品人成在线播放新网站 | 国产精品久久久久久久久免费高清 | 国精产品一区二区三区 | 国产第6页 | 亚洲欧洲一区二区 | 欧美日本高清 | 日本成人一区 |