Compartir a través de


COMMAND_HANDLER

Define una entrada en un mapa de mensajes.

COMMAND_HANDLER( id, code, func )

Parámetros

  • id
    [in] El identificador del elemento de menú, del control, o de aceleradores.

  • code
    [in] El código de notificación.

  • func
    [in] El nombre de la función de controlador de mensajes.

Comentarios

COMMAND_HANDLER asigna un mensaje de WM_COMMAND a la función especificada de controlador, basándose en el código de notificación y el identificador de control.Por ejemplo:

class ATL_NO_VTABLE CPolyProp :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CPolyProp, &CLSID_PolyProp>,
   public IPropertyPageImpl<CPolyProp>,
   public CDialogImpl<CPolyProp>
{
public:
BEGIN_COM_MAP(CPolyProp)
   COM_INTERFACE_ENTRY(IPropertyPage)
END_COM_MAP()

BEGIN_MSG_MAP(CPolyProp)
   COMMAND_HANDLER(IDC_SIDES, EN_CHANGE, OnEnChangeSides)
   CHAIN_MSG_MAP(IPropertyPageImpl<CPolyProp>)
END_MSG_MAP()

   // When a CPolyProp object receives a WM_COMMAND message identified 
   // by IDC_SIDES and EN_CHANGE, the message is directed to 
   // CPolyProp::OnEnChangeSides for the actual processing.
   LRESULT OnEnChangeSides(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, 
      BOOL& /*bHandled*/);

Cualquier función especificada en una macro de COMMAND_HANDLER se debe definir como sigue:

LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);

Se llama a los conjuntos bHandled del mapa de mensajes a TRUE antes de CommandHandler .Si CommandHandler no controla totalmente el mensaje, debe establecer bHandled a FALSO para indicar que el mensaje necesita un procesamiento adicional.

[!NOTA]

Siempre se inicia un mapa de mensajes con BEGIN_MSG_MAP.Puede declarar entonces asigna alternativos subsiguientes del mensaje con ALT_MSG_MAP.La macro de END_MSG_MAP marca el final del mapa de mensajes.Cada mapa de mensajes debe tener exactamente una instancia de BEGIN_MSG_MAP y de END_MSG_MAP.

Además de COMMAND_HANDLER, puede utilizar MESSAGE_HANDLER para asignar un mensaje de WM_COMMAND sin tener en cuenta un identificador o código.En este caso, MESSAGE_HANDLER(WM_COMMAND, OnHandlerFunction) ejecutará todos los mensajes de WM_COMMAND a OnHandlerFunction.

Para obtener más información sobre cómo utilizar mapas de mensajes en ATL, vea Mapas de mensajes.

Requisitos

encabezado: atlwin.h

Vea también

Referencia

COMMAND_ID_HANDLER

COMMAND_CODE_HANDLER

COMMAND_RANGE_HANDLER

NOTIFY_HANDLER

Otros recursos

Macros de mapa de mensajes (ATL)

Macros de ATL