C++ MFC中的afx_msg and on_command

来源:互联网 发布:c语言代码基础 编辑:程序博客网 时间:2024/05/20 07:19
1.afx_msg
 afx_msg 是一个宏 标识是消息映射函数,增加可读性。


       在 MSDN里是这样定义的:


             AFX_MSG


              remarks


              ClassWizard   and   AppWizard   insert   specially   formatted   comment   delimiters   in   your  


              source   code   files   to   mark   the    places   in   your   files   that   ClassWizard   can   write   to.  


              AFX_MSG   is   used   to   mark   the   beginning   and   end   of   ClassWizard   entries   in   your


             header   file   (.H)   related   to   message   maps: 


            //{{AFX_MSG(classname) 
             ... 
            //}}AFX_MSG




afx_msg是给MFC   classwiard作的标记,表示这个.cpp文件中classwiard应该插入代码的地方。     如果把{{//afx_msg   ......等类似的符号删了,classwizard   就会报错。 
也就是说,如果你把那些东西删了,你就用不了classwizard,而只能手工输入代码了 




afx_msg   什么都没定义,是为以后扩充保留的。 
它的定义如下:(具体在哪个文件里,我忘记了) 
#define   afx_msg 
可以看出来它实际上是一个空定义!


这些消息处理函数的说明一般都有“afx_msg”的前缀,用于把处理函数与其他的窗口成员函数区分开来,这些函数都是通过消息映射实现的。比如,消息 WM_CHAR 的处理函数在 CWnd 中声明成:


afx_msg void OnChar();


2.ON_COMMAND

ON_COMMAND是MFC提供的宏,实现命令消息(如菜单、工具栏的选项消息)的消息响应函数的注册。 
使用方法为ON_COMMAND(消息ID, 响应函数名) 
注册了响应函数之后,一旦主窗口接收到该命令消息,程序就会调用我们提供的消息响应函数进行处理


3.报错:没有与参数列表匹配的构造函数 "CFileDialog::CFileDialog" 实例
如果是在解决方案管理器窗口内,右击你的项目“项目”,然后选“属性”(最后一项),再点“配置属性”,是个“+”号,把它展开,然后选“常规”选项卡,倒数第三项“字符集”,选择“使用多字节字符集”。再编译应该就可以了。

0 0