常见的消息映射格式总结
来源:互联网 发布:msde和sql 编辑:程序博客网 时间:2024/05/21 12:40
在MFC中想要完成消息映射,需要在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP两个宏之间进行消息映射声明才行, 例如:
//开始消息映射的定义(必须用在类实现中) BEGIN_MESSAGE_MAP(CMyClass, CBase)...ON_CONTROL_REFLECT(CBN_DROPDOWN, &CMyClass::OnCbnDropdown)ON_WM_MOUSEMOVE()...//结束消息映射的定义(必须用在类实现中) END_MESSAGE_MAP()
常见消息映射格式
现在对常见的消息映射格式和声明进行总结如下:
标准消息
标准消息开头是以WM_开始的, 形如WM_CLOSE,对这种消息其格式如下,是否有形参和具体消息有关系。
映射格式: ON_WM_CLOSE()
函数声明: afx_msg void OnClose()
命令消息
命令消息是通过WM_COMMAND 形式进行传递的,它可以响应菜单命令,工具栏命令,按钮命令等。
消息映射: ON_COMMAND(id, memberFxn)
函数声明: afx_msg void memberFxn()
通告消息
通告消息一般是用户点击控件,控件向父窗口(对话框)发出对应的事件消息,比如CBN_DROPDOWN、BN_CLICKED等;通告消息都具有相同的函数声明,仅消息映射有所区别,下面列举出不同控件的消息映射。
各控件的函数声明:
afx_msg void memberFxn( )
各控件的消息映射:
- 普通控件
ON_CONTROL( <wNotifyCode>,<id>,<memberFxn> )
- 按钮控件
ON_BN_PAINT(<id>, <memberFxn> ) ON_BN_CLICKED(<id>, <memberFxn> ) ON_BN_DISABLE(<id>, <memberFxn> ) ON_BN_HILITE(<id>, <memberFxn> ) ON_BN_UNHILITE(<id>, <memberFxn>) ON_BN_DOUBLECLICKED(<id>,<memberFxn>)
- 编辑控件
ON_EN_CHANGE(<id>, <memberFxn> ) ON_EN_ERRSPACE(<id>, <memberFxn>) ON_EN_HSCROLL(<id>, <memberFxn> )ON_EN_KILLFOCUS(<id>,<memberFxn>) ON_EN_MAXTEXT(<id>, <memberFxn> )ON_EN_SETFOCUS(<id>, <memberFxn>)ON_EN_UPDATE(<id>, <memberFxn> ) ON_EN_VSCROLL(<id>, <memberFxn> )
- 组合框控件
ON_CBN_CLOSEUP(<id>, <memberFxn> )ON_CBN_DBLCLK(<id>, <memberFxn> ) ON_CBN_DROPDOWN(<id>, <memberFxn> )ON_CBN_EDITCHANGE(<id>,<memberFxn> )ON_CBN_EDITUPDATE(<id>,<memberFxn> )ON_CBN_ERRSPACE(<id>, <memberFxn> )ON_CBN_KILLFOCUS(<id>, <memberFxn> )ON_CBN_SELCHANGE(<id>, <memberFxn> )ON_CBN_SELENDCANCEL(<id>,<memberFx>)ON_CBN_SELENDOK(<id>, <memberFxn> )ON_CBN_SETFOCUS(<id>, <memberFxn> )
- 列表框控件
ON_LBN_DBLCLK(<id>, <memberFxn> ) ON_LBN_ERRSPACE(<id>, <memberFxn> ) ON_LBN_KILLFOCUS(<id>, <memberFxn>)ON_LBN_SELCHANGE(<id>, <memberFxn>)ON_LBN_SETFOCUS(<id>, <memberFxn> )
状态更新消息
状态更新消息主要应用更新菜单项和工具栏按钮,其消息映射和函数声明如下:
消息映射: ON_UPDATE_COMMAND_UI(id, memberFxn)
函数声明: afx_msg void memberFxn(CCmdUI *pCmdUI);
自定义消息
MFC提供了自定义消息的函数映射接口,便于用户定义自己的消息,其函数映射入口和函数声明如下:
消息映射: ON_MESSAGE(message, memberFxn)
函数声明: afx_msg LRESULT memberFxn(WPARAM, LPARAM);
消息反射
消息反射是指父窗口在收到控件消息(通告消息,标准消息)后,再传递给子控件本身来处理,父窗口不处理,其格式如下:
对于WM_COMMAND 形式的:
//消息映射:ON_CONTROL_REFLECT( wNotifyCode, memberFxn ) //函数声明:afx_msg void memberFxn ( );
对于WM_NOTIFY形式的:
//消息映射:ON_NOTIFY_REFLECT(wNotifyCode, memberFxn) //函数声明:afx_msg void memberFxn (NMHDR * pNotifyStruct, LRESULT* result);
更多信息见Windows控件消息反射
VS2008添加消息映射的方法
步骤1 选中类视图
步骤2 选中继承的控件类->鼠标右键->选择属性
步骤3 属性中点击消息按钮->选择带”=”的消息,如下所示:
- 常见的消息映射格式总结
- 消息映射-学习总结
- 总结二、MFC消息映射
- Hibernate常见映射关系总结
- 消息映射的实现
- 消息映射的实现
- 消息映射的实现
- 消息映射的实现
- 消息映射的实现
- 简单的消息映射
- MFC的消息映射
- 消息映射的实现
- 消息映射的实现
- 消息映射的实现
- 消息映射的实现
- vs2005的消息映射
- MFC的消息映射
- 消息映射的实现
- 5-7 肿瘤诊断
- 0324 JS
- Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)
- form表单数据转成json数据的方法
- Angular4.0.0正式发布,附新特性及升级指南
- 常见的消息映射格式总结
- 网络模型可视化的方法
- L1-009. N个数求和
- PAT L1-020. 帅到没朋友 集合set瞎搞
- 快速排序的简单实现
- 完全背包(经典dp)
- zxing方式生成二维码
- JSP入门:介绍什么是JSP和Servlet
- javacef