假设我们的程序是MFC32位程序,名字为Menu。
现在我们有了一项子菜单,名字叫“Test”,它下面有菜单项“Hello”,该菜单项的ID是“111”。
目的,使得该Hello菜单项有消息相应。实例:点击Hello后消息框弹出,并显示消息“Hello World.”
需要在以下三个文件内添加代码:
1.打开FileView下的Heaner Files中的Resource.h文件,添加代码定义宏
[cc lang=”c++”]
#define IDM_HELLO 111
[/cc]
2.打开FileView下的Heaner Files中的MainFrm.h文件,在DECLARE_MESSAGE_MAP()之上添加代码
[cc lang=”c++”]
afx_msg void OnHello(); //afx程序是调用系统级别的信息,添加保护性成员函数
[/cc]
3.打开FileView下的Heaner Files中的MainFrm.cpp文件,在消息映射表(BEGIN_MESSAGE_MAP和END_MESSAGE_MAP中间)中添加
[cc lang=”c++”]
ON_COMMAND(IDM_HELLO,OnHello)
[/cc]
后面没有分号。
4.仍在该文件内的末尾,添加消息响应函数。
[cc lang=”c++”]
void CMainFrame::OnHello()
{
MessageBox(“Hello”);
}
[/cc]
至此,菜单消息响应就完成了。
从以上可以看出,后三步就是MFC中消息响应机制的过程。
首先,获得消息,菜单项被作用,消息传递到消息映射表中,映射表查看有无该消息相应对应的函数名,有,则调用函数进行消息响应,若无,则不响应,继续下一条消息。此处只是多了一项宏定义,为了编程直观。