 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Pedro Invitado
|
Publicado: Sab 12 Jul, 2003 7:05 am Asunto: Agregar items al menu del sistema el que aparece cuando... |
|
|
Buenas amigos:
Quisiera saber si alguien me puede ayudar con esto:
Quiero agregar items al menu que aparece al dar click derecho mientras la aplicacion esta minimizada, es decir en la barra de tareas, siempre aparece un menu con las opciones:
Restaurar, Minimizar y cerrar, quisiera agregar items, y manejar el evento click de dichos items pero no se como hacerlo, si alguien me puede dar una mano, por donde empezar se lo agradeceria siempre.
De antemano gracias.
Saludos a todos. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 12 Jul, 2003 8:39 am Asunto: |
|
|
Hola Pedro:
Siguiendo el mismo esquema de este mensaje anterior donde se explica como añadir opciones al menú de sistema de un form:
https://cppbuilder.es/viewtopic.php?t=3977
Los cambios para hacer que se añadan al menú contextual del botón en la barra de tareas de nuestra aplicación no son muchos. Seria como sigue:
1.- Creamos un proyecto nuevo vacío para el ejemplo (TForm1) y añadimos el componente TApplicationEvents (pestaña Additional).
2.- Añadimos el código siguiente en el constructor del Form. Lo que hace es añadir nuestra opción y un separador al menú...
| Código: | __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
const String strOpcion = "Titulo de mi opción";
MENUITEMINFO opcion = {
sizeof(MENUITEMINFO),
MIIM_TYPE | MIIM_STATE | MIIM_ID ,
MFT_STRING, // el tipo de menú es una cadena
MFS_ENABLED, // mostrar opción habilitada
1111, // identificador de nuestra opción
NULL, // no tiene submenu
NULL, // sin imagen de estado seleccionada
NULL, // sin imagen de estado deseleccionada
0, // sin valor de usuario asociado
strOpcion.c_str(), // titulo de la opción
0}; // no se usa cuando el tipo de menu es MFT_STRING
// Creamos un separador (no es necesario, solo lo pongo como ejemplo)
MENUITEMINFO separador = {
sizeof(MENUITEMINFO), MIIM_TYPE, MFT_SEPARATOR, 0,0,0,0,0,0,0,0};
// Insertamos nuestra opción al principio del todo
HMENU hMenu = GetSystemMenu(Application->Handle, false);
InsertMenuItem(hMenu, 0, true, &separador );
InsertMenuItem(hMenu, 0, true, &opcion );
} |
3.- Ahora tenemos que interceptar el mensaje WM_SYSCOMMAND y comprobar en el si la opción seleccionada coincide con el identificador que le hemos dado anteriormente (1111). Para ello añadimos la siguiente código en el evento OnMessage del TApplicationEvents:
| Código: | void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
// Es importante usar identificadores inferiores a 0xF000 para
// evitar conflictos con los propios de Windows
if (Msg.message == WM_SYSCOMMAND
&& Msg.wParam == 1111)
{
// Añadimos aquí el código que ejecutará nuestra opción
ShowMessage("Se ha seleccionado mi nueva opción");
Handled = true;
}
} |
Un ejemplo del resultado:
Saludos:
_Leo |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|