CCmdTarget::OnCmdMsg

virtual BOOL OnCmdMsg(
   UINT nID,
   int nCode,
   void* pExtra,
   AFX_CMDHANDLERINFO* pHandlerInfo 
);

参数

  • nID
    包含命令ID.

  • nCode
    标识命令通知代码。 请参见 Remarks 有关值的更多信息。nCode。

  • pExtra
    使用基于 nCode的值。 请参见 Remarks 有关 pExtra的更多信息。

  • pHandlerInfo
    如果不是 NULLOnCmdMsg 填充 pHandlerInfo 结构的 pTargetpmf 成员(而不是计划命令。 通常,此参数应为 NULL

返回值

非零,如果消息已处理;否则为0。

备注

这是framework命令体系结构的控件的实例。

在运行时,OnCmdMsg 计划一个命令到其他对象或处理命令通过调用根选件类 CCmdTarget::OnCmdMsg,执行实际消息映射外观。 有关默认命令传送的完整说明,请参见 消息处理和映射主题

极少数情况下,您可能需要重写该成员函数的扩展framework中的标准命令传送。 引用 技术说明21 有关命令传送结构的高级的详细信息。

如果重写 OnCmdMsg,必须提供 nCode,命令通知代码和 pExtra的适当值,取决于 nCode的值。 下表列出了其对应的值:

nCode 值

pExtra 值

CN_COMMAND

CCmdUI*

CN_EVENT

AFX_EVENT*

CN_UPDATE_COMMAND_UI

CCmdUI*

CN_OLECOMMAND

COleCmdUI*

CN_OLE_UNREGISTER

NULL

示例

// This example illustrates extending the framework's standard command 
// route from the view to objects managed by the view.  This example
// is from an object-oriented drawing application, similar to the
// DRAWCLI sample application, which draws and edits "shapes".
BOOL CMyView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
   // Extend the framework's command route from the view to
   // the application-specific CMyShape that is currently selected
   // in the view. m_pActiveShape is NULL if no shape object
   // is currently selected in the view.
   if ((m_pActiveShape != NULL)
      && m_pActiveShape->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
      return TRUE;

   // If the object(s) in the extended command route don't handle
   // the command, then let the base class OnCmdMsg handle it.
   return CView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
// The command handler for ID_SHAPE_COLOR (menu command to change
// the color of the currently selected shape) was added to the message
// map of CMyShape (note, not CMyView) using the Properties window.  
// The menu item will be automatically enabled or disabled, depending 
// on whether a CMyShape is currently selected in the view, that is, 
// depending on whether CMyView::m_pActiveView is NULL.  It is not 
// necessary to implement an ON_UPDATE_COMMAND_UI handler to enable 
// or disable the menu item.  
BEGIN_MESSAGE_MAP(CMyShape, CCmdTarget)
   ON_COMMAND(ID_SHAPE_COLOR, &CMyShape::OnShapeColor)
END_MESSAGE_MAP()

要求

Header: afxwin.h

请参见

参考

CCmdTarget选件类

层次结构图

CCmdUI选件类

COleCmdUI选件类