vc中怎么使用SendMessage自定义消息函数
答案:4 悬赏:0 手机版
解决时间 2021-02-09 17:27
- 提问者网友:玫瑰园
- 2021-02-09 10:18
vc中怎么使用SendMessage自定义消息函数
最佳答案
- 五星知识达人网友:罪歌
- 2021-02-09 11:31
SendMessage的基本结构如下: SendMessage(HWNDhWnd, //消息传递的目标窗口或线程的句柄。UINTMsg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,)WPARAMwParam, //参数1 (WPARAM 其实是与UINT是同种类型的, //在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。LPARAMlParam); //参数2 其中一些参数的由来如下: //typedef unsigned int UINT; //typedef UINT WPARAM; //typedef LONG LPARAM; //typedef LONG LRESULT; 例如可以用以下语句: ::SendMessage(this-m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM)0); 这里我发送的消息是本窗体接收的,所以句柄用:this-m_hWnd 这里的消息类别WM_MY_DOSOME就是我自定义的, 在接收消息的窗体或线程所在的头文件里: #define WM_MY_DOSOMEWM_USER+1//do something
全部回答
- 1楼网友:酒安江南
- 2021-02-09 15:04
1. 先定义一个消息宏 如:MESSAGE_***
2. 定义一个消息函数:LRESULT Fun**(**,**)
3. 声明消息ON_MESSAGE(MESSAGE_***,Fun**)
4. 实现消息函数Fun**
5. 要使用的地方:SendMessage(句柄,MESSAGE_***,null,null)
- 2楼网友:青灯有味
- 2021-02-09 14:12
首先 需要一个自定义消息
#define WM_MYMESSAGE WM_USER + 1
然后 需要一个消息响应函数
LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
最后将自定义消息与消息响应函数关联
BEGIN_MESSAGE_MAP(CMyDlg, CDialogEx)//在这个下面 任意位置
...
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)//添加这句话
...
END_MESSAGE_MAP()//这句上面
之后就可以SendMessage了
例如
SendMessage(WM_MYMESSAGE, NULL, NULL);//同一个窗口里
HWND hMyWnd;//这个是要发送窗口的句柄
::SendMessage(hMyWnd, WM_MYMESSAGE, NULL, NULL);//针对 需要接收WM_MYMESSAGE消息的窗口发送
- 3楼网友:你可爱的野爹
- 2021-02-09 12:54
1.宏定义一个message
#define YOUR_MESSAGE 1120
2. 在你要发送这个消息的地方使用SendMessage来发送这个消息。
3. 在你要接受消息界面的MessageMap里面定义ON_MESSAGE(YOUR_MESSAGE, OnReceiveMessage)
OnRecevieMessage 是你自定义的当接受要这个消息时执行的响应函数。
望采纳。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯