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 

Minimizar mi aplicacion al tray system
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Minimizar mi aplicacion al tray system Responder citando

Señores:
tengo una aplicacion en c++ builder 5 y deseo que al momento de minimizarlo me aparezca un icono en el tray system, es decir, donde esta el reloj o el winamp.

Ojala me puedas ayudar...ya que es muy complejo para mi.

atte.
german
Volver arriba
Mensaje    Asunto: Responder citando

Existe dos formas de hacer esto y ambas estan siendo mostradas en los ejemplos que trae el builder en la carpeta Examples una de las formas es utilizando el componente TTrayIcon que esta en la paleta samples y su ejemplo en la carpeta componentes, el otro ejmplo utiliza la API de Windows su ejemplo esta en la carpeta App.
Américo
C++ Builder lo mejor de lo mejor
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Código:

// esto es la declaracion de la casel TForm1
private:   // User declarations
// INICIO DEL TRAY ICON
    TNotifyIconData nid;
    void __fastcall InitializeNID();
    void __fastcall IconTray (TMessage &Msg);
   BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(wm_IconMessage,      TInitializeNID,      IconTray)
   END_MESSAGE_MAP(TComponent)


dentro del form1.cpp

Código:
void __fastcall TForm1::InitializeNID()
{
  ShowWindow(Application->Handle, SW_HIDE);
  Icon->Handle =  LoadIcon (HInstance, "MAINICON");
  nid.cbSize = sizeof (nid);
  nid.hWnd = Handle;
  nid.uID = 1; // icon ID
  nid.uCallbackMessage = wm_IconMessage;
  nid.hIcon = Icon->Handle;
  nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
  strcpy (nid.szTip, "Utiliza este Icono para Terminar\nTu Sesión de Trabajo");
  Shell_NotifyIcon (NIM_ADD, &nid);
}



Código:
void __fastcall TForm1::IconTray (TMessage &Msg)
{
  TPoint Pt;
  if (Msg.LParam == WM_RBUTTONDOWN){
    GetCursorPos (&Pt);
    PopupMenu1->Popup (Pt.x, Pt.y);
  }
  if (Msg.LParam ==  WM_LBUTTONDBLCLK){
        Terminar1Click(this);
    }
}


y una forma de usarlo seria en un boton.

Código:
void __fastcall TFESTACION::Button1Click(TObject *Sender)
{
  InitializeNID();
}


para restablecer la apliacion
Código:

void __fastcall TFESTACION::Button2Click(TObject *Sender)
{
  nid.uFlags = 0;
        Shell_NotifyIcon (NIM_DELETE, &nid);
        ShowWindow (Handle, SW_SHOWNORMAL);
        SetForegroundWindow (Handle);
}


Y al destruir la apliacion..

Código:
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    nid.uFlags = 0;
    Shell_NotifyIcon (NIM_DELETE, &nid);
}


pon un TPopMenu, para que termines, con una opcion Close();

saludos
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Enviame tu correo, de nuevo.., ya que no tengo la direccion.. por favor, tu programa ya esta!!
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Tray Icon Responder citando

Hola Cesar no se si me podrias enviar a mi tambien la aplicacion...

mi email es:sejasraul@yahoo.es

te lo agradeceria mucho...

Gracias de antemano...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

Enseguida!!
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: no me funciona :( Responder citando

Hola cesar.. lo pruebo pero no me funciona.. me manda errores...tienes el ejemplo por ahi?
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

nuevo codigo mejorado.. es decir el correcto..

dentro del H


Código:

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ExtCtrls.hpp>
#include <MPlayer.hpp>
#include <Menus.hpp>
#include <Dialogs.hpp>
//---------------------------------------------------------------------------
////////////////////////////////////////////
//  ESTAS DOS VARIABLES DEBEN IR PARA     //
//  QUE FUNCIONE LA PARTE DEL TRAY ICON   //
//                                        //
static const  wm_IconMessage = WM_USER;
typedef TMessage  TInitializeNID;
////////////////////////////////////////////
class TForm1 : public TForm
{
__published:   // IDE-managed Components
    TButton *Button11;
    TPopupMenu *PopupMenu1;
    TMenuItem *Restaurar1;
    TMenuItem *N1;
    TMenuItem *Acercade1;
    TMenuItem *Salir1;
    void __fastcall Button11Click(TObject *Sender);
    void __fastcall Restaurar1Click(TObject *Sender);
    void __fastcall FormDestroy(TObject *Sender);
    void __fastcall Salir1Click(TObject *Sender);
    void __fastcall Acercade1Click(TObject *Sender);
private:   // User declarations
//aqui es donde debes poner los que te indico
//*********************************************
// INICIO DEL TRAY ICON
    TNotifyIconData nid;
    void __fastcall InitializeNID();
    void __fastcall IconTray (TMessage &Msg);
   BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(wm_IconMessage,      TInitializeNID,      IconTray)
   END_MESSAGE_MAP(TComponent)
//*********************************************
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif



dentrol de cpp


Código:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "TrayIcon.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}

//---------------------------------------------------------------------------
//************ESTA PARTE ES DONDE VAN LAS FUNCIONES..************************

void __fastcall TForm1::InitializeNID()
{
  ShowWindow(Application->Handle, SW_HIDE);
  Icon->Handle =  LoadIcon (HInstance, "MAINICON");
  nid.cbSize = sizeof (nid);
  nid.hWnd = Handle;
  nid.uID = 1; // icon ID
  nid.uCallbackMessage = wm_IconMessage;
  nid.hIcon = Icon->Handle;
  nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
  strcpy (nid.szTip, "Programa Ejemplo\nClick derecho para elegir opcion");
  Shell_NotifyIcon (NIM_ADD, &nid);
}
//*******SEGUNDA FUNCION, ESTA UTILIZA UN PopMenu1
void __fastcall TForm1::IconTray (TMessage &Msg)
{
  TPoint Pt;
  if (Msg.LParam == WM_RBUTTONDOWN){ //activar el pop, con boton derecho
    GetCursorPos (&Pt);
    PopupMenu1->Popup (Pt.x, Pt.y); //AQUI VA EL POP, MENU
  }
  if (Msg.LParam ==  WM_LBUTTONDBLCLK){
//        Terminar1Click(this);//ESTA ES LA FUNCION QUE TERMINA
        Salir1Click(this); //es para cerrar el form
    }
}
//***************************************************************************

//****ESTE SERIA EL BOTON MINIMIZAR
void __fastcall TForm1::Button11Click(TObject *Sender)
{
    // TAMBIEN PUEDES PONERLO EN EL EVENTO, ONMINIMIZE, O
    // ALGUNO que mas te guste
    InitializeNID();
    ShowWindow (Handle, SW_HIDE);
}
//---------------------------------------------------------------------------
//****EN ESTA PARTE VOY A PONER LO DE RESTAURAR LA APLICACION
// CON EL POPMENU

void __fastcall TForm1::Restaurar1Click(TObject *Sender)
{
    nid.uFlags = 0;
    Shell_NotifyIcon (NIM_DELETE, &nid);
    ShowWindow (Handle, SW_SHOWNORMAL);
    SetForegroundWindow (Handle);
}
//---------------------------------------------------------------------------
// ESTE ES CUANDO DESTRUYES, EL FORM, PARA QUE NO TE CAUSE PROBLEMAS

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    nid.uFlags = 0;
    Shell_NotifyIcon (NIM_DELETE, &nid);

}
//---------------------------------------------------------------------------
// ****** opcion de salir del PopMenu
void __fastcall TForm1::Salir1Click(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Acercade1Click(TObject *Sender)
{
//poner un form, que aparezca con los derechos,     
}
//---------------------------------------------------------------------------


Listo este si funciona,
en popmenu, viene
--------------
Restaurar
------------
Acerca de..
Salir
-----------
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola si les sirve de algo
La misma aplicación se encuentra en los ejemplos de Builder 6, en la carpeta /examples/Apps/TrayIcon
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: gracias.... muuchas gracias Responder citando

funciona muy bien el asunto.. thanks
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola,

¿ Alguien me puede decir, que diferencia hay entre utilizar el codigo que amablemente a colocado Cesar y utilizar el componente TrayIcon que viene con el Builder ?

Gracias y saludo a todos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

si mal no recuerdo, funciona, en todas las verisiones de builder

saludos
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Alguien sabe como mostrar automaticamente un mensaje que creo esta condicionado de igual manera que un Hint normal debido a NIF_TIP, osea, al momento de que yo minimizo la aplicacion, que automaticamente (sin posicionar el cursor en el icono creado) me muestre un mensaje sobre el icono?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

holas alguien a probado las lmdtools en su pagina www.lmdtools.com alli se encuentra un pack llamado
"lmdtools se" que es gratis de instalacion para la mayoria de los builder en tre sus componentes se encuentra un muy bueno se llama trayicon y es facil de usar y tiene todas las opciones que ustedes buscan y mas
_________________
Salu2
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: una pregunta Responder citando

alguien averiguo si es posible mostrar un mensaje automaticamente sin que el raton tenga que pasar por el icono? mi proyecto debe avisar cuando scierto evento suceda pero desde el system tray...gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
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.