确定后ClassWizard 就会自动添加该消息处理函数。对于由该选定的类产生的消息,
MFC 已经定义好了消息处理函数名称,单击“Add Function”按钮将直接添加该消息
处理函数,不会提示用户输入自定义的函数名。注意,只有单击“MFC ClassWizard”
的“OK”按钮或者“Edit Code”按钮退出“MFC ClassWizard”对话框后,ClassWizard
才会真正修改源文件。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·46·
图3-2 添加消息处理函数的对话框
? Delete Function(删除函数)按钮:单击该按钮删除选定消息的消息处理函数,包括函
数的声明和定义该消息映shè的宏语句。如果选定的消息没有消息处理函数,则该按钮
无效。注意,当该函数已经存在于源文件中时,单击该按钮会提示如图3-3 所示的对
话框,告诉用户ClassWizard 只能删除该函数的声明和定义该消息映shè的宏语句,而
无法删除该函数的实现代码,用户需要手动删除。
图3-3 提示用户手动删除消息处理函数的对话框
? Edit Code(编辑代码)按钮:单击该按钮退出“MFC ClassWizard”对话框,同时IDE
的代码编辑窗口直接转到选定消息的处理函数进行编辑。该按钮也使得在“MFC
ClassWizard”中所做的更改生效。如果选定的消息没有消息处理函数,则该按钮无效。
? OK(确定)按钮:单击该按钮使得在“MFC ClassWizard”中的编辑生效,并退出“MFC
ClassWizard”对话框。
? Cancel(取消)按钮:单击该按钮取消所有“MFC ClassWizard”对话框中的设置,并
退出“MFC ClassWizard”对话框。
3.1.3 消息处理过程
在Windows 程序设计中,消息的处理是通过消息循环进行接收与分发的。MFC 运用消
息映shè机制封装了这一处理过程。下面介绍MFC 中消息的处理过程。
1.标准Windows 消息和控件通知消息
标准Windows 消息和控件通知消息的处理过程比较简单。这类消息必须由CWnd 或其派
生类的对象处理,消息传递到封装对应的窗口或子窗口的类的对象中。也就是说,当关闭程
序的时候,会产生一个WM_CLOSE 消息并通知主框架类,主框架类调用相应的处理函数进
行程序关闭前的清理cāo作,如保存文件和数据等。
2.命令消息
命令消息与其他两个类型的消息不同,它可以由应用程序其他类的对象(例如应用类对
象、文档对象和文档模板对象)处理。这就涉及一个消息传递路径的问题,具体来说就是允
枫叶文学网www.fywxw.com
第3 章 菜单与加速键
·47·
许一个还是多个对象处理该消息、允许哪些对象处理等。MFC 中采取了简单的方法,只允许
其中一个对象处理该消息,当沿着消息传递路径找到第一个