[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