2)在类的实现文件中加入消息映shè表:
BEGIN_MESSAGE_MAP(类名, 父类名)
??
消息映shè表项
??
END_MESSAGE_MAP()
在CTestApp 类的实现文件TestApp.cpp 的开头、常量定义的后面,就有如下消息映shè表
的代码:
/////////////////////////////////////////////////////////////////////////////
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·44·
// CTestApp
BEGIN_MESSAGE_MAP(CTestApp, CWinApp)
//{{AFX_MSG_MAP(CTestApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard file based doccomnt commands
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
MFC AppWizard 生成的应用程都已经自动包含消息映shè的代码,但用户也可以在源程序
中手动添加。同时Visual C++另一个强大的工具ClassWizard 也提供了处理消息映shè表的自动
化机制。当然,ClassWizard 只能够生成类和消息处理的框架,包括创建消息处理函数的声明,
而具体的实现代码还需要用户去补充。
在类中,消息处理函数都是类的成员函数。当程序要对一个消息进行响应时,消息映shè
机制就会自动调用该函数。用ClassWizard 添加消息处理函数时,会自动添加以下3 部分内
容:
? 在类的定义中添加该消息处理成员函数的函数声明;
? 在类的消息映shè表中加入相应的消息映shè表项;
? 在类的实现中加入该消息处理成员函数的函数实现。
注意ClassWizard 添加的函数实现中,只是一个不能完成任何cāo作的空函数框架,还需
要加入具体的实现代码。但当用户手动添加消息处理函数时,也必须添加上述3 部分内容。
对于标准Windows 消息,在CWnd 类中已经预定义了默认的处理函数,有确定的函