MFC的类向导

1 与Windows通信

windows与程序通信的方式是向程序发送消息。消息处理的大部分工作是由MFC应用程序来完成的,所以根本不必担心提供WinProc()函数。

程序中处理Windows消息的每个类都有一个消息映射。类的映射是一个成员函数表,用于处理由一对宏界定的Windows消息。消息映射的开始由BEGIN_MESSAGE_MAP()宏表示,消息映射的结束由END_MESSAGE_MAP()宏表示。消息映射中的每一项都将一个函数和一个特定的消息关联起来。

类的映射是在创建一个项目时,由MFC Application Wizard 自动创建的,或者是在添加处理消息的类的时候由ClassWizard创建的。

1.1 消息处理程序的定义

BEGIN_MESSAGE_MAP(CCH372_CPlusDlg, CDialog)

ON_COMMAND(ID_APP_ABOUT,&CSketcherApp::OnAppAbout)
// standard file based document commands
ON_COMMAND(ID_FILE_NEW,&CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN,&CWinApp::OnFileOpen)
// Standard print setup command
ON COMMAND ( ID_FILE_PRINT_SETUP,&CWinApp::OnFilePrintSetup)

END_MESSAGE_MAP()

BEGIN_MESSAGE_MAPO和END_MESSAGE_MAPO定定义这个消息映的的边界。这些消息处理程序都处理一种类别
的消息,即称为命令消息的WM_COMMAND消息,这是在用户选择菜单选项或者输入加速器键时生成的消息(还有另外一种称为控制通知消息的WM_COMMAND消息,它提供控件活动的有关信息)。

消息映射通过消息处理宏中包括的标识符(ID)了解按下哪个菜单项或键。

BEGIN_MESSAGE_MAP0宏有两个参数。第一个参数标识为其定义消息映射的类名,第二个参数标识一个基类。

1.2 处理程序中的消息

不能把消息的处理程序辅意放在任何地方,允许放置处理程序的位置取决于消息的类别。对于标准Windows消息和控制通知消息(消息类别可以分为三类:标准Windows消息、控制通知消息和命令消息),它们总是由最终派生于CWnd的类的对象处理。

对于标准Windows消息来说,CWnd类提供了默认的消息处理方法。因此,如果派生类没有包括标准Windows消息的处理程序,那么CWnd类中的默认处理程序将处理它。

处理命令消息比处理标准Windows消息灵活得多,可以把这些消息的处理程序放在应用程序类和文档模板类中,当然也以放在窗口类和视图类中。

2 MFC添加消息处理程序

以菜单为实例讲解MFC如何添加消息处理程序。

在菜单项中某个字母前面擦汗如符号&,就是添加快捷键。

(1)对某一项添加类向导,如图

MFC的类向导_第1张图片

 (2)我们选择应用于文档的

 MFC的类向导_第2张图片

 (3)在Doc类中出现新定义的消息处理函数

MFC的类向导_第3张图片

 (4)向导还更新了Doc类的定义,OnColorBlack()方法作为这个类的公共成员添加进来,afx_msg前缀表实这是一个消息处理函数

MFC的类向导_第4张图片

 (5)向导自动更新了Doc类的消息映射,为每一个处理程序添加一个ON_COMMAND()宏。这把处理程序的指针和消息ID关联起来。

MFC的类向导_第5张图片

(6)可以在Doc类中添加其他变量和函数,实现不同的功能

MFC的类向导_第6张图片

 (7)可以设置自定义按钮,使其和相应的ID关联起来MFC的类向导_第7张图片

你可能感兴趣的:(信息安全,MFC)