CCmdTarget::OnCmdMsg
Chiamato dal framework di destinazione e inviare messaggi di comando e per gestire l'aggiornamento degli oggetti dell'interfaccia utente del comando.
virtual BOOL OnCmdMsg(
UINT nID,
int nCode,
void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo
);
Parametri
nID
Contenente l'id di comandonCode
Identifica il codice della notifica di comando. Vedere Note per ulteriori informazioni sui valori per nCode.pExtra
Utilizzato in base al valore nCode. Vedere Note per ulteriori informazioni su pExtra.pHandlerInfo
Se non NULL, OnCmdMsg inserisce i membri pmf e pTarget della struttura pHandlerInfo anziché inviare il comando. In genere, questo parametro deve essere NULL.
Valore restituito
Diverso da zero se il messaggio è gestito; in caso contrario 0.
Note
Si tratta della routine principale di implementazione dell'architettura del framework.
In fase di esecuzione, OnCmdMsg invia un comando agli altri oggetti o gestisce il comando stesso chiamando la classe radice CCmdTarget::OnCmdMsg, che esegua la ricerca effettiva della mappa messaggi. Per una descrizione completa del routing dei comandi predefinito, vedere Argomenti di mapping e di gestione dei messaggi.
In rare occasioni, è possibile eseguire l'override della funzione membro per estendere il routing di comandi standard del framework. Fare riferimento a nota tecnica 21 per i dettagli avanzati dell'architettura di routing dei comandi.
Se si esegue l'override OnCmdMsg, il valore appropriato per nCode, il codice della notifica di comando e pExtra, che dipende dal valore nCode. Nella tabella seguente sono elencati i valori corrispondenti:
Valore nCode |
Valore pExtra |
---|---|
CN_COMMAND |
|
CN_EVENT |
AFX_EVENT* |
CN_UPDATE_COMMAND_UI |
CCmdUI* |
CN_OLECOMMAND |
|
CN_OLE_UNREGISTER |
NULL |
Esempio
// 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()
Requisiti
Header: afxwin.h