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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

在MFC中添加用户自定义消息

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在MFC中添加用户自定义消息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

消息機制是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);
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的在MFC中添加用户自定义消息的全部內容,希望文章能夠幫你解決所遇到的問題。

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