Compartilhar via


CCmdTarget::OnCmdMsg

Chamado pela estrutura para rotear e distribuir mensagens de comando e para manipular a atualização dos objetos de interface do usuário do comando.

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

Parâmetros

  • nID
    Contém a ID de comando.

  • nCode
    Identifica o código de notificação de comando.See Comentários para obter mais informações sobre valores de nCode.

  • pExtra
    Usada de acordo com o valor de nCode. See Comentários para obter mais informações sobre o pExtra.

  • pHandlerInfo
    Se não NULO, OnCmdMsg Preencha o pTarget and PMF o membrospHandlerInfo estrutura em vez de distribuir o comando. Normalmente, esse parâmetro deve ser NULO.

Valor de retorno

Diferente de zero se a mensagem é manipulada; caso contrário, 0.

Comentários

Esta é a rotina principal implementação da arquitetura de comando do estrutura.

Em time de execução, OnCmdMsg envia um comando para outros objetos ou trata o próprio comando chamando a classe raiz CCmdTarget::OnCmdMsg, que faz o MAP de mensagens real de pesquisa. Para obter uma descrição completa de roteamento de comando do padrão, consulte Manipulação de mensagem ' e ' mapeamento de tópicos.

Em raras ocasiões, talvez você queira substituir essa função de membro para estender a estrutura roteamento de comando padrão.Consulte Observação técnica 21 detalhes avançados da arquitetura do roteamento de comando.

Se você substituir OnCmdMsg, você deve fornecer o valor apropriado para nCode, o código de notificação de comando, e pExtra, que depende do valor de nCode. A tabela a seguir lista os valores correspondentes:

nCode valor

pEvent valor

CN_COMMAND

CCmdUI*

CN_EVENT

AFX_EVENT *

CN_UPDATE_COMMAND_UI

CCmdUI *

CN_OLECOMMAND

COleCmdUI*

CN_OLE_UNREGISTER

NULL

Exemplo

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

Requisitos

Cabeçalho: afxwin.h

Consulte também

Referência

Classe CCmdTarget

Gráfico de hierarquia

Classe CCmdUI

Classe COleCmdUI

Outros recursos

CCmdTarget membros