CCmdTarget::OnCmdMsg 是 MFC 中 CCmdTarget 类的一个关键方法,用于处理和分发 Windows 消息或命令消息。这个方法通常被用于实现命令处理和消息分发的逻辑。

以下是关于 CCmdTarget::OnCmdMsg 方法的简要说明:
BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);

  •  参数:

  - nID:命令标识符或消息 ID。
  - nCode:命令代码,用于指示是一个命令还是一个消息。
  - pExtra:额外的参数,根据需要传递。
  - pHandlerInfo:一个 AFX_CMDHANDLERINFO 结构的指针,用于返回有关命令处理器的信息。

  •  返回值: 返回一个布尔值,指示是否成功处理了消息。如果返回 TRUE,表示消息已被成功处理;如果返回 FALSE,表示消息未被处理。


  •  功能: 该方法用于实现消息处理和命令分发。当 CCmdTarget 对象接收到消息或命令时,OnCmdMsg 方法会被调用,该方法内部会根据消息或命令的标识符和代码进行相应的处理。它是 MFC 中消息映射机制的一部分,允许在派生类中通过覆盖此方法来处理特定的消息或命令。


在使用时,你需要在你的派生类中重写 OnCmdMsg 方法,并实现自定义的消息处理逻辑。例如:
BOOL CMyCmdTarget::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
    if (nID == IDM_MY_COMMAND && nCode == CN_COMMAND)
    {
        // 处理自定义命令 IDM_MY_COMMAND
        // ...

        return TRUE; // 表示消息已被处理
    }

    // 如果无法处理,调用基类的处理方法
    return CCmdTarget::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}

在这个例子中,当收到自定义命令 IDM_MY_COMMAND 时,会在派生类中处理相应的逻辑,否则将调用基类的 OnCmdMsg 方法。


转载请注明出处:http://www.zyzy.cn/article/detail/15893/MFC/CCmdTarget