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 commandenCode
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 |
|
CN_EVENT |
AFX_EVENT* |
CN_UPDATE_COMMAND_UI |
CCmdUI* |
CN_OLECOMMAND |
|
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