类CCmdTarget是MFC类库中消息映射体系的一个基类。所有响应消息或事件的类都从它派生。例如,CWinApp,CWnd,CDocument,CView,CDocTemplate,CFrameWnd,等等。
CCmdTarget类是MFC处理命令消息的基础、核心。MFC为该类设计了许多成员函数和一些成员数据,基本上是为了解决消息映射问题的,而且,很大一部分是针对OLE设计的。在OLE应用中,CCmdTarget是MFC处理模块状态的重要环节,它起到了传递模块状态的作用:其构造函数获取当前模块状态,并保存在成员变量m_pModuleState里头。
CmdTarget有两个与消息映射有密切关系的成员函数:DispatchCmdMsg和OnCmdMsg。
1.静态成员函数DispatchCmdMsg
CCmdTarget的静态成员函数DispatchCmdMsg,用来分发Windows消息。此函数是MFC内部使用的,其原型如下:
static BOOL DispatchCmdMsg(
CCmdTarget* pTarget,UINT nID,int nCode,AFX_PMSG pfn,
void* pExtra,UINT nSig,AFX_CMDHANDLERINFO* pHandlerInfo)。
2. 虚拟函数OnCmdMsg
CCmdTarget的虚拟函数OnCmdMsg,用来传递和发送消息、更新用户界面对象的状态,其原型如下:
OnCmdMsg(UINT nID,int nCode,void* pExtra,AFX_CMDHA