类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_CMDHANDLERINFO* pHandlerInfo);
框架的命令消息传递机制主要是通过该函数来实现的

CCmdTarget是MFC消息映射体系的基础,用于处理消息和事件。类中的DispatchCmdMsg和OnCmdMsg函数是命令消息传递的关键。DispatchCmdMsg用于分发Windows消息,而OnCmdMsg则用于在类的消息映射中寻找和处理消息。覆盖OnCmdMsg可以自定义命令处理路径。此外,CCmdTarget还提供了BeginWaitCursor、EnableAutomation和RestoreWaitCursor等实用函数。
最低0.47元/天 解锁文章
3874

被折叠的 条评论
为什么被折叠?



