Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Agregar items al menu del sistema el que aparece cuando...

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Agregar items al menu del sistema el que aparece cuando... Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.