CCmdTarget::OnCmdMsg
Chamado pela estrutura para rotear mensagens e distribuir de comando e para manipular a atualização de objetos de interface de usuário de comando.
virtual BOOL OnCmdMsg(
UINT nID,
int nCode,
void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo
);
Parâmetros
nID
Contém a identificação de comandonCode
Identifica o código de notificação de comando. Consulte Comentários para obter mais informações sobre valores para nCode.pExtra
Usado de acordo com o valor de nCode. Consulte Comentários para obter mais informações sobre pExtra.pHandlerInfo
Se não NULO, OnCmdMsg preenche os membros de pTarget e de pmf estrutura de pHandlerInfo em vez de distribuir o comando. Normalmente, este parâmetro deve ser NULO.
Valor de retorno
Diferente de zero se a mensagem é tratada; se não 0.
Comentários
Esta é a rotina principal da implementação da arquitetura de comando da estrutura.
Em tempo de execução, OnCmdMsg distribui um comando para outros objetos ou manipula o comando próprio chamando a classe CCmdTarget::OnCmdMsgraiz, que faz a pesquisa real do mapa mensagem-. Para obter uma descrição completa de roteamento padrão de comando, consulte Tópicos de tratamento e de mapeamento de mensagem.
Em raras ocasiões, você pode querer substituir essa função de membro para estender o roteamento de comando padrão da estrutura. Consulte para obter detalhes Observe técnica 21 avançados da arquitetura 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:
Valor denCode |
Valor depExtra |
---|---|
CN_COMMAND |
|
CN_EVENT |
AFX_EVENT* |
CN_UPDATE_COMMAND_UI |
CCmdUI* |
CN_OLECOMMAND |
|
CN_OLE_UNREGISTER |
NULO |
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