CCmdTarget::OnCmdMsg
Aufgerufen durch das Framework, um Befehlsmeldungen weiterzuleiten und Weiterleiten und die Aktualisierung der Befehlsbenutzeroberfläche zu behandeln Objekte ein.
virtual BOOL OnCmdMsg(
UINT nID,
int nCode,
void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo
);
Parameter
nID
Enthält die ID BefehlnCode
Identifiziert den Befehlsbenachrichtigungscode.Siehe Remarks weitere Informationen über Werte für nCode.pExtra
Wird nach dem Wert von nCode.Siehe Remarks weitere Informationen zu pExtra.pHandlerInfo
Wenn nicht NULL, OnCmdMsg die pTarget und pmf-Member der Struktur pHandlerInfo ausfüllt, anstatt, den Befehl weiterzuleiten.In der Regel sollte dieser Parameter NULL sein.
Rückgabewert
Ungleich 0 (null), wenn die Meldung verarbeitet wird; andernfalls 0.
Hinweise
Dies ist die zentrale Implementierungsroutine der Frameworkbefehlsarchitektur.
Zur Laufzeit stellt OnCmdMsg einen Befehl an aus anderen Objekten oder behandelt den Befehl selbst, indem die Stammklasse CCmdTarget::OnCmdMsg aufruft, die die eigentliche Meldungszuordnungssuche ausführt.Eine vollständige Beschreibung des standardmäßigen Befehlsroutings, finden Sie unter Nachrichtenverarbeitungs- und Zuordnungs-Themen.
In seltenen Fällen sollten Sie diese Memberfunktion überschreiben, um das Standardbefehlsrouting des Frameworks zu erweitern.Siehe Technischer Hinweis 21 für erweiterte Details der BefehlRouting Architektur.
Wenn Sie OnCmdMsg überschreiben, müssen Sie den entsprechenden Wert für nCode, den Befehlsbenachrichtigungscode bereitstellen und pExtra, der vom Wert von nCode abhängt.In der folgenden Tabelle werden die entsprechenden Werte auf:
nCode-Wert |
pExtra-Wert |
---|---|
CN_COMMAND |
|
CN_EVENT |
AFX_EVENT* |
CN_UPDATE_COMMAND_UI |
CCmdUI* |
CN_OLECOMMAND |
|
CN_OLE_UNREGISTER |
NULL |
Beispiel
// 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()
Anforderungen
Header: afxwin.h