次の方法で共有


CCmdTarget::OnCmdMsg

更新 : 2007 年 11 月

このメンバ関数はフレームワークから呼び出され、コマンド メッセージの送り先を決め、ディスパッチします。さらに、コマンドのユーザー インターフェイス オブジェクトを更新します。

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

パラメータ

  • nID
    コマンド ID を指定します。

  • nCode
    コマンド通知コードを識別します。nCode の値の詳細については、「解説」を参照してください。

  • pExtra
    nCode の値によって使用します。pExtra. の詳細については、「解説」を参照してください。

  • pHandlerInfo
    パラメータが NULL ではない場合、OnCmdMsg はコマンドをディスパッチする代わりに pHandlerInfo 構造体の pTarget メンバと pmf メンバを設定します。通常、このパラメータは NULL にします。

戻り値

メッセージが処理されたときは 0 以外を返します。それ以外の場合は 0 を返します。

解説

これは、フレームワーク コマンド アーキテクチャのメイン実装ルーチンです。

実行時、OnCmdMsg は、ほかのオブジェクトにコマンドをディスパッチするか、ルート クラスの CCmdTarget::OnCmdMsg を呼び出してコマンド自体を処理します。ルート クラスの CCmdTarget::OnCmdMsg は、現在のメッセージ マップを検索します。既定のコマンド ルーティングの詳細については、「メッセージの処理とマップ」を参照してください。

まれに、フレームワークの標準コマンド ルーティングを拡張するために、このメンバ関数のオーバーライドが必要な場合があります。コマンド ルーティング アーキテクチャの詳細については、「テクニカル ノート 21: コマンドとメッセージのルーティング」を参照してください。

OnCmdMsg をオーバーライドする場合は、コマンド通知コードの nCode および nCode の値に依存する pExtra に対して適切な値を指定する必要があります。次の表は、対応する値の一覧です。

nCode の値

pEvent の値

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()

必要条件

ヘッダー : afxwin.h

参照

参照

CCmdTarget クラス

階層図

CCmdUI クラス

COleCmdUI クラス

その他の技術情報

CCmdTarget のメンバ