自定义消息ON_MESSAGE()
来源:互联网 发布:金蝶软件常见问题 编辑:程序博客网 时间:2024/06/06 03:57
MFC的自定义消息(用户消息)的定义与使用
自定义消息的响应和资源消息的响应有很多类似之处;资源消息的响应是以资源的ID号作为标识的;自定义的消息要自己声明消息ID;
一. 定义:
第一步要声明消息:
#define WM_MYMSG WM_USER+200
第二步要在类声明中声明消息映射:
DECLARE_MESSAGE_MAP()
第三步要在类声明中定义消息处理函数:
afx_msg LRESULT MyMsgHandler(WPARAM,LPARAM);
在.cpp中做的工作:
第四步要实现消息映射:
BEGIN_MESSAGE_MAP()
ON_MESSAGE(WM_MYMSG,OnMyMsgHandler)
END_MESSAGE_MAP()
第五步要实现消息处理函数(当然可以不实现):
LRESULT CMainFrame::OnMyMsgHandler(WPARAM w,LPARAM l)
{
AfxMessageBox("Hello,World!");
return 0;
}
二. 使用
1. 如果该自定义消息所在的类是有CWnd派生出来的,且在本类中调用,那么我们可以调用CWnd::SendMessage()函数,具体定义为:
LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
此时我们只需要在引发消息的地方添加如下代码:
SendMessge(WM_MYMSG,0,0);
如果我们想在不同的情况下发送用户消息,我们只需要将SendMessage的后两个参数wParam,lParam加以标识即可;在消息处理函数,写一个if条件语句(或switch语句)就可以了;将不同情况下的用户消息区分开;
2. 如果不在本类中响应自定义消息;那么我们只能用win32 的API函数;例如,当自定义消息在CMainFrame中,而触发消息的地方不在CMainFrame类中,那么我们可以用如下语句:
::SendMessge(::AfxGetMainWnd()->m_hWnd,WM_MYMSG,0,0);
- 自定义消息ON_MESSAGE()
- VC中自定义消息ON_MESSAGE的用法
- C++中添加自定义消息的响应 (BEGIN_MESSAGE_MAP ON_MESSAGE)
- C++中添加自定义消息的响应 (BEGIN_MESSAGE_MAP ON_MESSAGE)
- VC++中添加自定义消息的响应 (BEGIN_MESSAGE_MAP ON_MESSAGE)
- MFC 中添加自定义消息的响应 (BEGIN_MESSAGE_MAP ON_MESSAGE)
- VC自定义消息ON_MESSAGE的编译错误error C2440
- 发送自定义消息:ON_MESSAGE和ON_REGISTERED_MESSAGE的差别(转)
- VC自定义消息ON_MESSAGE的编译错误error C2440
- MFC 消息 ON_MESSAGE
- MFC 消息 ON_MESSAGE
- ON_MESSAGE消息处理程序注意事项
- ON_MESSAGE
- 消息函数响应的添加(ON_MESSAGE的用法)
- 从ON_MESSAGE和ON_NOTIFY理解windows的消息机制
- ON_MESSAGE宏
- ON_MESSAGE / NOTIFY
- ON_MESSAGE使用方法
- Android身份证号码验证
- 重学JavaScript(词法结构扫盲点)
- Python特殊语法这之:filter、map、reduce、lambda
- Weblogic 10.3.5在64位Windows系统下的安装和配置
- WhdeLocalized--针对国际化做的类,可以在应用程序中选择跟随系统,简体,繁体
- 自定义消息ON_MESSAGE()
- hdoj 2077汉诺塔IV
- ViewPagerNotInteceptEvent
- 【Quora】如何在2000个数中快速地找到最大的3个呢?
- PHPExcel导出数据到excel
- AndroidStudio 中使用Xutils3注解
- 二进制和十进制互转算法
- [文章摘要]Constructing knowledge from multivariate spatiotemporal data: integrating geographical visuali
- Python第三讲选择和循环