afx_msg消息映射函数说明

 Afx前缀是微软MFC一个小组的名称简写,并没有别的意义。 MFC的很多代码,包括全局函数名、宏、头文件名都使用了”Afx”。 Afx*.h是一组MFC的核心头文件, 比如: afxwin.h 定义MFC的核心和标准组件 afxext.h 定义MFC的扩展 afxdisp.h 是MFC自动化支持的类定义头文件 afxdb.h 是MFC的ODBC类封装

AFX_msg

  在头文件(DrawView.h)中声明消息响应函数原型。

  //{{AFX_MSG(CDrawView) //注释宏

  afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

  //}}AFX_MSG //注释宏

  说明:

  在注释宏之间的声明在VC中灰色显示。afx_msg宏表示声明的是一个消息响应函数

  afx_msg消息函数 

  应用程序框架产生的消息映射函数

  例如:afx_msg void OnBnClickedButton1(); 其中 afx_msg为消息标志,它向系统声明:有消息映射到函数实现体;而在map宏定义中,就有具体消息和此函数的映射定义(可以是自定义,也可以是系统自动完成的)

  afx是 application framework

  如定义一个Edit的Change处理函数:

  一、在类的头文件(*.h)中增加 :

  //{{AFX_MSG(CDialogDemo)

  afx_msg void OnChangeEdit1();

  //}}AFX_MSG

  二、在类的实现文件(*.cpp)中增加:

  1.消息定义( ON_EN_CHANGE):

  BEGIN_MESSAGE_MAP(CDialogDemo, CDialog)

  //{{AFX_MSG_MAP()

  ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)

  //}}AFX_MSG_MAP

  END_MESSAGE_MAP()

  2.执行函数:

  void CDialogDemo::OnChangeEdit1()

  {

  // TODO: Add your control notification handler code here

  ……

  }

  在afxwin.h中afx_msg的解释:

  #ifndef afx_msg

  #define afx_msg // intentional placeholder

  #endif

  没什么意思.只是定义了这个符号而已. 这个对编译器来说,相当于什么都没有,对于人来说,我们可以看到这样的符号. 对于类向导来说.这个符号才是有意义的.它是一个消息处理函数的前缀. 类向导生成的消息函数,分发函数,事件响应函数都以这个为前缀. 如果去掉了,向导将不能识别


 Afx前缀是微软MFC一个小组的名称简写,并没有别的意义。 MFC的很多代码,包括全局函数名、宏、头文件名都使用了”Afx”。 Afx*.h是一组MFC的核心头文件, 比如: afxwin.h 定义MFC的核心和标准组件 afxext.h 定义MFC的扩展 afxdisp.h 是MFC自动化支持的类定义头文件 afxdb.h 是MFC的ODBC类封装

AFX_msg

  在头文件(DrawView.h)中声明消息响应函数原型。

  //{{AFX_MSG(CDrawView) //注释宏

  afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

  //}}AFX_MSG //注释宏

  说明:

  在注释宏之间的声明在VC中灰色显示。afx_msg宏表示声明的是一个消息响应函数

  afx_msg消息函数 

  应用程序框架产生的消息映射函数

  例如:afx_msg void OnBnClickedButton1(); 其中 afx_msg为消息标志,它向系统声明:有消息映射到函数实现体;而在map宏定义中,就有具体消息和此函数的映射定义(可以是自定义,也可以是系统自动完成的)

  afx是 application framework

  如定义一个Edit的Change处理函数:

  一、在类的头文件(*.h)中增加 :

  //{{AFX_MSG(CDialogDemo)

  afx_msg void OnChangeEdit1();

  //}}AFX_MSG

  二、在类的实现文件(*.cpp)中增加:

  1.消息定义( ON_EN_CHANGE):

  BEGIN_MESSAGE_MAP(CDialogDemo, CDialog)

  //{{AFX_MSG_MAP()

  ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)

  //}}AFX_MSG_MAP

  END_MESSAGE_MAP()

  2.执行函数:

  void CDialogDemo::OnChangeEdit1()

  {

  // TODO: Add your control notification handler code here

  ……

  }

  在afxwin.h中afx_msg的解释:

  #ifndef afx_msg

  #define afx_msg // intentional placeholder

  #endif

  没什么意思.只是定义了这个符号而已. 这个对编译器来说,相当于什么都没有,对于人来说,我们可以看到这样的符号. 对于类向导来说.这个符号才是有意义的.它是一个消息处理函数的前缀. 类向导生成的消息函数,分发函数,事件响应函数都以这个为前缀. 如果去掉了,向导将不能识别


猜你喜欢

转载自blog.csdn.net/dashumak/article/details/79392528
今日推荐