CClientDC dc(this);
dc.TextOut(0,100,"This is default message 1.");
}
在OnMessageMessage1()函数中,首先创建了一个设备环境对象dc,然后利用该设备环境对象的文本输出函数TextOut()函数在窗口的左上角显示字符串“This is default message”,表明选择了Message菜单的Message1菜单项。
提示:
@ 有关设备环境的概念和文本输出的内容将在第五章中详细介绍。
类似地,完成其他两个消息响应函数。完成的代码列于程序清单3-4中:
程序清单3-4 OnMessageMessage2()和OnMessageMessage3()
void CTestMsgView::OnMessageMessage2()
{
// TODO: Add your command handler code here
CClientDC dc(this);
dc.TextOut(0,100,"This is default message 2.");
}
void CTestMsgView::OnMessageMessage3()
{
// TODO: Add your command handler code here
CClientDC dc(this);
dc.TextOut(0,100,"This is default message 3.");
}
至此TestMsg程序的菜单已经能够正常工作,用户可以编译和运行该程序,检验菜单命令的作用。
TestMsg程序本身是很简单的,但向TestMsg程序中添加菜单资源、进行消息映射和在消息处理函数中添加代码这几个步骤与所有具有菜单的MFC应用程序是一样的,TestMsg程序已经足够说明在应用程序中使用菜单的全过程。
实际上,应用程序的菜单一般都随着程序的状态而有不同的变化,如某个菜单项的激活与无效、核对标记的添加与去除等,这正是下一节所要讨论的内容。
通常,菜单项都有不止一个状态。比如说,根据程序运行的情况,如果某个菜单项的功能不能被提供,那么,通常让该菜单项呈现灰色使之不能被选择;同样的理由,菜单项可能被添加核对记号,或者清除核对记号。
在TestMsg程序中,也可以具有这些功能。下面就来介绍如何在TestMsg程序中实现更新菜单状态的功能。