编程:VC++中自定义菜单的命令更新机制

| 2013年3月28日

假设我们的程序是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中消息响应机制的过程。

首先,获得消息,菜单项被作用,消息传递到消息映射表中,映射表查看有无该消息相应对应的函数名,有,则调用函数进行消息响应,若无,则不响应,继续下一条消息。此处只是多了一项宏定义,为了编程直观。

发表评论

电子邮件地址不会被公开。 必填项已用*标注