3 barra de herramientas miniatura (botones en el preview).
http://www.megapix.com/?p=XKG2LLGN.jpg
A mi parecer esta es una característica muy útil, con esto puedes colocar hasta 6 botones (según la MSDN, no probé yo), que te servirán como un mini control remoto que te permite ejecutar X función de tu aplicación todo desde el preview, con lo que le ahorras al usuario un par de clicks y cambiar completamente a tu aplicación. En este caso se complica un poco más ya que tendremos que gestionar los mensajes de tipo “WM_COMMAND” y según el índice será tu acción. Al igual que con las características anteriores usaremos la clase “ITaskbarList3” y la estructura “THUMBBUTTON” para crear la mini-barra, y el puntero “Application->OnMessage” para la gestión de los mensajes.
Creación de la barra
Código:
TIcon* ico = new TIcon;
ima1->GetIcon( 0, ico );
//Creamos 2 botones
THUMBBUTTON bb[2];
bb[0].dwMask = THB_ICON | THB_TOOLTIP | THB_FLAGS; //Incluimos las banderas que determinan como se verá nuestro botón
bb[0].iId = 0; //Id que identificara nuestro botón al recibir los mensajes
bb[0].hIcon = ico->Handle; //Icono de nuestro botón
wcscpy(bb[0].szTip, L"Boton 1"); //Hint de nuestro botón
bb[0].dwFlags = THBF_ENABLED; //Incluimos las banderas del estado de nuestro botón
TIcon* ico2 = new TIcon;
ima1->GetIcon( 1, ico2 );
bb[1].dwMask = THB_ICON | THB_TOOLTIP | THB_FLAGS;
bb[1].iId = 1;
bb[1].hIcon = ico2->Handle;
wcscpy(bb[1].szTip, L"Boton 2");
bb[1].dwFlags = THBF_DISABLED; //Nótese que deshabilitamos el botón
//Creamos nuestra barra con el Handle de nuestra ventana, el número de botones, y la estructura THUMBBUTTON
itl->ThumbBarAddButtons( this->Handle, 2, bb );
Gestión de los mensajes
Código:
switch ( Msg.message ) {
case WM_COMMAND: {
if ( HIWORD( Msg.wParam ) == THBN_CLICKED) {
if ( LOWORD( Msg.wParam ) == 0) {
MessageBoxA(Handle, "click boton 0", "", MB_ICONINFORMATION);
//Editamos el botón 1
bb[1].dwFlags = THBF_ENABLED;
bb[1].dwMask = THB_ICON | THB_TOOLTIP | THB_FLAGS;
itl->ThumbBarUpdateButtons( this->Handle, 2, bb );
}
else if ( LOWORD( Msg.wParam ) == 1 ) {
MessageBoxA(Handle, "click boton 1", "", MB_ICONINFORMATION);
bb[1].dwFlags = THBF_DISABLED;
itl->ThumbBarUpdateButtons( this->Handle, 2, bb );
}
}
break
;
}
}
Ejemplo:
http://www.megaupload.com/?d=8XMQ0WQL