[C con Clase] Buscar un item dentro de una tool bar.
Steven R. Davidson
vze266ft en verizon.net
Sab Feb 16 07:10:34 CET 2008
Hola José Alberto,
Jose Alberto Marza wrote:
> Hola compañeros:
>
> Tengo un problemilla que no termino de ver como solucionar.
>
> Tengo una toolbar m_wndTBar que esta formada por varios botones con un
> menu asociado. Estoy interesado en localizar un item en concreto por
> toda la toolbar y no lo consigo. Estoy probando con:
> GetMenuItemInfo(menu,ID_...,&mii);.
>
No entiendo por qué estás consultando el menú. El control de la barra de
herramientas (toolbar, en inglés) es un conjunto de botones, o mejor
dicho un array de estructuras 'TBBUTTON'.
Para conseguir el índice de un botón que te interesa conocer según el
número de identificación del comando de un botón, puedes enviar el
mensaje 'TB_COMMANDTOINDEX' al control. Por ejemplo,
int nIndice = SendMessage( m_wndTBar, TB_COMMANDTOINDEX,
(WPARAM)nID, 0 );
Dando el índice del botón, puedes enviar el mensaje 'TB_GETBUTTON' para
conseguir información acerca de tal botón. Por ejemplo,
TBBUTTON tbInfo;
SendMessage( m_wndTBar, TB_GETBUTTON,
(WPARAM)nIndice, (LPARAM) &tbInfo);
Si quieres más información, puedes enviar el mensaje 'TB_GETBUTTONINFO',
pero debes pasar un puntero a una estructura 'TBBUTTONINFO' además de la
identificación de comando del botón. Esto sería,
TBBUTTONINFO tbbiInfo;
int nIndice = SendMessage( m_wndTBar, TB_GETBUTTONINFO,
(WPARAM)nID, (LPARAM) &tbbiInfo);
Ahora bien, si estás creando una barra de herramientas con algún botón
que usa el estilo 'BTNS_DROPDOWN', entonces sí tendrás que crear un menú
automático o emergente ("pop-up", en inglés). El menú saldrá al
procesar el mensaje 'TBN_DROPDOWN' que forma parte del mensaje principal
'WM_NOTIFY'. Luego, necesitas invocar 'TrackPopupMenuEx()' para
determinar la selección del usuario.
Espero que esto te sirva.
Steven
Más información sobre la lista de distribución Cconclase