Partager via


CCmdTarget::OnCmdMsg

Appelé par l'infrastructure pour router et distribuer des messages de commande et pour gérer la mise à jour des objets interface utilisateur de commande.

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

Paramètres

  • nID
    Contient l'ID de commande

  • nCode
    Identifie le code de notification de commande.Consultez Notes pour plus d'informations sur les valeurs de nCode.

  • pExtra
    Utilisé en fonction de la valeur d' nCode.Consultez Notes pour plus d'informations sur pExtra.

  • pHandlerInfo
    Sinon NULL, OnCmdMsg complète des membres de pTarget et de pmf de la structure d' pHandlerInfo au lieu de distribuer la commande.En général, ce paramètre doit être NULL.

Valeur de retour

Une valeur différente de zéro si le message est managé ; sinon 0.

Notes

C'est la routine principal d'implémentation de l'architecture de commande de l'infrastructure.

Au moment de l'exécution, OnCmdMsg distribue une commande à d'autres objets ou gère la commande elle-même en appelant la classe racine CCmdTarget::OnCmdMsg, qui effectue la recherche réelle de la table des messages.Pour une description complète du routage de commandes par défaut, consultez Les rubriques de gestion des messages et de mappage.

Dans de rares occasions, vous pouvez substituer la fonction membre pour étendre le routage des commandes standard de l'infrastructure.Reportez -vous à note technique 21 pour obtenir des informations avancées de l'architecture de routage de commandes.

Si vous substituez OnCmdMsg, vous devez fournir la valeur appropriée pour nCode, le code de notification de commande, et pExtra, qui dépend de la valeur d' nCode.Le tableau suivant répertorie leurs valeurs correspondantes :

Valeur de nCode

Valeur de pExtra

CN_COMMAND

CCmdUI*

CN_EVENT

AFX_EVENT*

CN_UPDATE_COMMAND_UI

CCmdUI*

CN_OLECOMMAND

COleCmdUI*

CN_OLE_UNREGISTER

NULL

Exemple

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

Configuration requise

Header: afxwin.h

Voir aussi

Référence

Classe de CCmdTarget

Graphique de la hiérarchie

Classe de CCmdUI

Classe de COleCmdUI