CMFCMenuButton (clase)

Un botón que muestra un menú emergente e informes en las selecciones de menú del usuario.

Sintaxis

class CMFCMenuButton : public CMFCButton

Miembros

Constructores públicos

Nombre Descripción
CMFCMenuButton::CMFCMenuButton Construye un objeto CMFCMenuButton.

Métodos públicos

Nombre Descripción
CMFCMenuButton::P reTranslateMessage Lo llama el marco para traducir mensajes de ventana antes de que se envíen. (Invalida CMFCButton::PreTranslateMessage).
CMFCMenuButton::SizeToContent Cambia el tamaño del botón según el texto y el tamaño de imagen.

Miembros de datos

Nombre Descripción
CMFCMenuButton::m_bOSMenu Especifica si se debe mostrar el menú emergente del sistema predeterminado o usar CContextMenuManager::TrackPopupMenu.
CMFCMenuButton::m_bRightArrow Especifica si el menú emergente aparecerá debajo o a la derecha del botón.
CMFCMenuButton::m_bStayPressed Especifica si el botón de menú cambia su estado después de que el usuario suelte el botón.
CMFCMenuButton::m_hMenu Identificador del menú de Windows adjunto.
CMFCMenuButton::m_nMenuResult Un identificador que indica qué elemento seleccionó el usuario en el menú emergente.
CMFCMenuButton::m_bDefaultClick Permitir el procesamiento predeterminado (en texto o imagen del botón).

Comentarios

La clase CMFCMenuButton se deriva de la clase CMFCButton, que es, a su vez, derivada de la clase CButton. Por lo tanto, puedes usar CMFCMenuButton en el código de la misma manera que usarías CButton.

Al crear un CMFCMenuButton, debes pasar un identificador al menú emergente asociado. Por último, llama a la función CMFCMenuButton::SizeToContent. CMFCMenuButton::SizeToContent comprueba que el tamaño del botón es suficiente para incluir una flecha que apunte a la ubicación donde aparecerá la ventana emergente, es decir, debajo o a la derecha del botón.

Ejemplo

En el ejemplo siguiente se muestra cómo establecer el identificador del menú adjunto al botón, cambiar el tamaño del botón según su tamaño de texto e imagen y establecer el menú emergente que muestra el marco. Este fragmento de código forma parte del nuevo ejemplo de Controles.

CMFCMenuButton m_btnMenu;
// CMenu m_menu
m_btnMenu.m_hMenu = m_menu.GetSubMenu(0)->GetSafeHmenu();
m_btnMenu.SizeToContent();
// set to FALSE so that the framework calls CContextMenuManager::TrackPopupMenu
// to display its menu
m_btnMenu.m_bOSMenu = FALSE;

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CButton

CMFCButton

CMFCMenuButton

Requisitos

Encabezado: afxmenubutton.h

CMFCMenuButton::CMFCMenuButton

Construye un nuevo objeto CMFCMenuButton.

CMFCMenuButton();

CMFCMenuButton::m_bOSMenu

Una variable de miembro booleana que indica qué menú emergente muestra el marco.

BOOL m_bOSMenu;

Comentarios

Si m_bOSMenu es TRUE, el marco llama al método heredado TrackPopupMenu para este objeto. De lo contrario, el marco llama a CContextMenuManager::TrackPopupMenu.

CMFCMenuButton::m_bRightArrow

Variable de miembro booleana que indica la ubicación del menú emergente.

BOOL m_bRightArrow;

Comentarios

Cuando el usuario presiona el botón de menú, la aplicación muestra un menú emergente. El marco mostrará el menú emergente debajo del botón o a la derecha del botón. El botón también tiene una flecha pequeña que indica dónde aparecerá el menú emergente. Si m_bRightArrow es TRUE, el marco muestra el menú emergente a la derecha del botón. De lo contrario, muestra el menú emergente debajo del botón.

CMFCMenuButton::m_bStayPressed

Variable miembro booleana que indica si el botón de menú aparece presionado mientras el usuario realiza una selección en el menú emergente.

BOOL m_bStayPressed;

Comentarios

Si el miembro m_bStayPressed es FALSE, el botón de menú no se presiona cuando el usuario hace clic en el botón. En este caso, el marco solo muestra el menú emergente.

Si el miembro m_bStayPressed es TRUE, el botón de menú se presiona cuando el usuario hace clic en el botón. Permanece presionado hasta después de que el usuario cierre el menú emergente, ya sea realizando una selección o cancelando.

CMFCMenuButton::m_hMenu

El manipulador del menú adjunto.

HMENU m_hMenu;

Comentarios

El marco muestra el menú indicado por esta variable miembro cuando el usuario hace clic en el botón de menú.

CMFCMenuButton::m_nMenuResult

Un entero que indica qué elemento selecciona el usuario en el menú emergente.

int m_nMenuResult;

Comentarios

El valor de esta variable miembro es cero si el usuario cancela el menú sin realizar una selección o si se produce un error.

CMFCMenuButton::m_bDefaultClick

Permite el procesamiento predeterminado de texto o imágenes en el botón.

BOOL  m_bDefaultClick;

Comentarios

Si se establece m_bDefaultClick en false, el botón mostrará el menú al hacer clic en cualquier lugar del botón.

CMFCMenuButton::P reTranslateMessage

Lo llama el marco para traducir mensajes de ventana antes de que se envíen.

virtual BOOL PreTranslateMessage(MSG* pMsg);

Parámetros

Pmsg
[in] Apunta a una estructura MSG que contiene el mensaje que se va a procesar.

Valor devuelto

Distinto de cero si el mensaje se ha traducido y no se debe enviar; 0 si el mensaje no se ha traducido y se debe enviar.

Comentarios

CMFCMenuButton::SizeToContent

Cambia el tamaño del botón según el texto y el tamaño de imagen.

virtual CSize SizeToContent(BOOL bCalcOnly = FALSE);

Parámetros

bCalcOnly
[in] Un parámetro booleano que indica si este método redimensiona el botón.

Valor devuelto

Un objeto CSize que especifica el nuevo tamaño del botón.

Comentarios

Si llamas a esta función y bCalcOnly es TRUE, SizeToContent calculará solo el nuevo tamaño del botón.

El nuevo tamaño del botón se calcula para ajustarse al texto, la imagen y la flecha del botón. El marco también agrega márgenes predefinidos de 10 píxeles para el borde horizontal y 5 píxeles para el borde vertical.

Consulte también

Gráfico de jerarquías
Clases
CMFCButton (clase)