//{{AFX_MSG、//{{AFX_VIRTUAL、//{{AFX_MSG_MAP、//{{AFX_DATA_INIT用途

说明:这篇日志我不知道怎么命名好,虽然内容很少,但是讲的关键字很多,如果你有幸打开这篇日志,不妨往下看看

背景:我们使用 VC++6.0 开发MFC应用程序,初学者一定会为那么多行的注释代码感到头痛,下面就说说这些有益无意义的注释


//{ {AFX_MSG、//{ {AFX_VIRTUAL、//{ {AFX_MSG_MAP、//{ {AFX_DATA_INIT 我们看到很多这样打头的代码,其中典型的一个,在你应用程序的 CApp 头文件中

 

// Implementation
 //{ {AFX_MSG(CHelloMFCApp)
 afx_msg void OnAppAbout();
  // NOTE - the ClassWizard will add and remove member functions here.
  //    DO NOT EDIT what you see in these blocks of generated code !
 //}}AFX_MSG

刚开始始终不知道注释干嘛的,后来看见中间的语句 afx_msg void OnAppAbout(); 其中的 afx_msg ,我查阅一些说明:
在afxwin.h中找到一些afx_msg的解释:  
 

 #ifndef   afx_msg  
  #define   afx_msg    // intentional placeholder  
  #endif 

intentional placeholder 故意的占位符,你可以翻译成有计划策略的占位符,总之就是一个没有实际意义的占位符,看定义就知道,没有起到什么作用,因为 #define 没有给他赋什么值。
    这个对编译器来说,相当于什么都没有;
    对于人来说,我们可以看到这样的符号;
    对于类向导来说.这个符号才是有意义的.它是一个消息处理函数的前缀.类向导生成的消息函数,分发函数,事件响应函数都以这个为前缀.如果去掉了,向导将不能识别。
afx_msg目前只是一个占位符,今后微软可能会赋予它确实的意义,来自MFC AFXWIN.H文件。
于是对比//{
    {AFX_MSG、//{
    {AFX_VIRTUAL、//{
    {AFX_MSG_MAP、//{
    {AFX_DATA_INIT,得知这些有规律的注释是类向导自动生成的格式,用于识别具体的函数,以及他们的分类、位置,不能人为的随意更改,不然会导致类向导无法正确识别。
当然,如果你是纯手打代码,不适用IDE工作,那你删除这些代码倒也是不介意。前提是,你的层次已经到了那个程度。

转载于:https://www.cnblogs.com/herbertchina/p/4306817.html

 

微软的信息:

AFX_DATA_INIT

  • 07/12/2006
  • 2 minutes to read

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_DATA_INIT is used to mark the beginning and end of dialog data exchange (DDX) member variable initializations in a dialog class’s constructor:

Copy

//{
    {AFX_DATA_INIT(classname)
...
//}}AFX_DATA_INIT

For more information, see AFX_DATA_MAP and AFX_DATA.

翻译一下:

ClassWizard和AppWizard在源代码文件中插入特殊格式的注释定界符,以标记文件中ClassWizard可以写入的位置。AFX_DATA_INIT用于在对话框类的构造函数中标记对话框数据交换(DDX)成员变量初始化的开始和结束:

你可能感兴趣的:(VC)