AFX前綴
Afx前綴是微軟MFC一個小組的名稱簡寫,並沒有別的意義。 MFC的很多代碼,包括全局函式名、宏、頭檔案名稱都使用了"Afx"。 Afx*.h是一組MFC的核心頭檔案, 比如: afxwin.h 定義MFC的核心和標準組件 afxext.h 定義MFC的擴展 afxdisp.h 是MFC自動化支持的類定義頭檔案 afxdb.h 是MFC的ODBC類封裝
函式原型
在頭檔案(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
沒什麼意思.只是定義了這個符號而已. 這個對編譯器來說,相當於什麼都沒有,對於人來說,我們可以看到這樣的符號. 對於類嚮導來說.這個符號才是有意義的.它是一個訊息處理函式的前綴. 類嚮導生成的訊息函式,分發函式,事件回響函式都以這個為前綴. 如果去掉了,嚮導將不能識別