数名,
一般以On 开头,以消息名为函数名的后半部分,例如WM_PAINT 消息的处理函数为
OnPaint(),WM_CREATE 消息处理函数是OnCreate()。这些预定义的消息处理函数根据消息
的不同有不同的参数和返回值。
对于控件通知消息和命令消息,一般没有默认的消息处理函数,可以由用户自定义。MFC
建议这类函数命名应遵循一些约定,一般以On 开头,函数名中应包含该消息的简要说明,
方便阅读代码。ClassWizard 在创建这类消息处理函数时会提供一个建议的函数名,一般无需
修改。例如OnFileOpen()函数表明处理命令标识符ID_FILE_OPEN 的命令消息。
本章和以后的章节都将主要利用ClassWizard 为程序添加消息处理函数。因此下面简要
介绍一下ClassWizard 对话框,如图3-1 所示。在IDE 主菜单栏中选择“View|ClassWizard”
菜单命令,或者在开发环境的界面中直接按快捷键Ctrl+W,即可打开“MFC ClassWizard”
对话框。选择“Message Maps”的选项卡,即可进行编辑消息映shè的设置。
枫叶文学网www.fywxw.com
第3 章 菜单与加速键
·45·
图3-1 消息映shè选项卡
ClassWizard 对话框的“Message Maps”(消息映shè)选项卡中的各项功能介绍如下:
? Project(工程)下拉列表框:用于选择需要编辑的工程名称。
? Class ncom(类名)下拉列表框:用于选择需要编辑消息映shè的类的名称。选择好类
后,在该下拉列表框 和“Project”下拉列表框的下一行将显示所选类的头文件和源文
件路径。
? Object IDs(对象ID)列表框:以列表形式显示可以产生消息的对象的ID,包括菜单
项、按钮等的ID。该列表框的第一项总是显示所选择的类。
? Messages(消息)列表框:列举在“Object IDs”列表框中选定的对象所能产生的各种
消息。
? Member functions(成员函数)列表框:以列表形式显示选定的类中的成员函数。该列
表框中只列出与消息处理函数以及MFC 中与消息处理有关的虚函数。前者标记为
“W”,并在函数名后显示对应的消息映shè宏;后者标记为“V”。
? Add Class(添加类)按钮:单击该按钮,添加新的类到工程中。该按钮在“MFC
ClassWizard”对话框中的所有选项卡中都存在。
? Add Function(添加函数)按钮:单击该按钮添加选定消息的新的消息处理函数,包
括在消息映shè定义中添加对应的宏指令,在选定的类中添加该消息处理函数的声明和
完成基本功能的代码实现。如果选定的消息已经有消息处理函数,则该按钮无效。对
于对象产生的消息,单击该按钮将弹出如图3-2 所示的对话框,要求用户输入消息处
理函数的名称,在“Member function ncom”(成员函数名称)输入框中输入函数名,