[C con Clase] Buscar un item dentro de una tool bar.
Jose Alberto Marza
jamarza en pixelart.es
Mar Feb 19 16:13:38 CET 2008
Hola amigo:
Gracias por tu ayuda, entiendo lo que me explicas.
De todas maneras buceando po internet y viendo algún caso similar
consegui solucionarlo ayer.
Saludos y muchas gracias.
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: martes, 19 de febrero de 2008 5:05
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 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.
>
Bien. Creo que enviando el mensaje 'TB_COMMANDTOINDEX' a la barra de
herramientas es lo que necesitas. Por ejemplo,
int nIndice = (int) SendMessage( hTB, TB_COMMANDTOINDEX, nID, 0 );
Ahora bien, esto sólo funcionará si el ID del elemento del menú coincide
con el ID del comando del botón de la barra de herramientas. Por
ejemplo,
TBBUTON tbb[10];
...
tbb[0].idCommand = IDS_COPIAR;
tbb[1].idCommand = IDS_PEGAR;
tbb[2].idCommand = IDS_EDITAR;
tbb[3].idCommand = IDS_BUSCAR;
...
SendMessage( hTB, TB_ADDBUTTONS, 10, (LPARAM) tbb );
Y luego para el menú, tienes algo como lo siguiente,
HMENU hSubMenu = CreatePopupMenu();
TCHAR szText[][10] = { TEXT("&Copiar"), TEXT("&Pegar"), TEXT("&Editar"),
TEXT("&Buscar") };
MENUITEMINFO mii = { sizeof(MENUITEMINFO), MIIM_STRING | MIIM_ID };
mii.wID = IDS_COPIAR;
mii.dwTypeData = szText[0];
mii.cch = lstrlen( szText[0] );
InsertMenuItem( hSubMenu, 0, FALSE, &mii );
mii.wID = IDS_PEGAR;
mii.dwTypeData = szText[1];
mii.cch = lstrlen( szText[1] );
InsertMenuItem( hSubMenu, 1, FALSE, &mii );
...
Como puedes ver usamos los mismos valores para 'idCommand' de 'TBBUTTON'
que para 'wID' de 'MENUITEMINFO'. Si estableces esto, entonces puedes
usar el mensaje 'TB_COMMANDTOINDEX' para tu propósito. Para poder
mostrar el menú desplegable, al pulsar el botón en la barra de
herramientas, necesitarás hacerlo al procesar el mensaje 'WM_NOTIFY'. El
parámetro 'lParam' te ayudará en este aspecto al recibir el manipulador
del control de la barra de tareas. Esto es,
case WM_NOTIFY:
if( TBN_DROPDOWN == ((LPNMHDR)lParam)->code )
{
LPNMTOOLBAR lpnmtb = (LPNMTOOLBAR) lParam;
int nIndice = (int) SendMessage( lpnmtb->hdr.hwndFrom,
TB_COMMANDTOINDEX, lpnmtb->iItem, 0 );
...
return TBDDRET_DEFAULT;
}
return 0;
Espero que esto te ayude.
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 2886 (20080219) __________
Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com
Más información sobre la lista de distribución Cconclase