[C con Clase] Buscar un item dentro de una tool bar.
Jose Alberto Marza
jamarza en pixelart.es
Lun Feb 18 16:56:48 CET 2008
Hola amigo:
Lo que quiero saber es el índice del botón de la toolbar que contiene el
ID que busco. Este ID es un item que esta dentro del menú desplegable
del botón.
Espero haberme explicado con claridad.
Gracias de antemano.
JoSé.
-----Mensaje original-----
De: cconclase-bounces en listas.conclase.net
[mailto:cconclase-bounces en listas.conclase.net] En nombre de Steven R.
Davidson
Enviado el: sábado, 16 de febrero de 2008 7:11
Para: Lista de correo sobre C y C++
Asunto: Re: [C con Clase] Buscar un item dentro de una tool bar.
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
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.ne
t
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
__________ Información de NOD32, revisión 2882 (20080218) __________
Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com
Más información sobre la lista de distribución Cconclase