| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
gerices Invitado
|
Publicado: Jue 21 Oct, 2004 8:55 pm Asunto: Minimizar mi aplicacion al tray system |
|
|
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 |
|
 |
americo_bcb Lt

Registrado: 05 May 2004Mensajes: 84
|
Publicado: Jue 21 Oct, 2004 10:00 pm Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 21 Oct, 2004 11:29 pm Asunto: |
|
|
| 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 _________________
 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 22 Oct, 2004 5:50 pm Asunto: |
|
|
Enviame tu correo, de nuevo.., ya que no tengo la direccion.. por favor, tu programa ya esta!! _________________
 |
|
| Volver arriba |
|
 |
Raúl Capt


Registrado: 16 Ago 2002Mensajes: 174Ubicación: Oruro (Bolivia)
|
Publicado: Mar 26 Oct, 2004 5:24 pm Asunto: Tray Icon |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 26 Oct, 2004 5:35 pm Asunto: |
|
|
Enseguida!! _________________
 |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Vie 12 Nov, 2004 12:40 am Asunto: no me funciona :( |
|
|
| Hola cesar.. lo pruebo pero no me funciona.. me manda errores...tienes el ejemplo por ahi? |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 12 Nov, 2004 12:49 am Asunto: |
|
|
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
----------- _________________
 |
|
| Volver arriba |
|
 |
hunter Cdt

Registrado: 23 Oct 2004Mensajes: 16
|
Publicado: Vie 12 Nov, 2004 1:16 am Asunto: |
|
|
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 |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Vie 12 Nov, 2004 2:51 am Asunto: gracias.... muuchas gracias |
|
|
| funciona muy bien el asunto.. thanks |
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Vie 12 Nov, 2004 8:32 pm Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 12 Nov, 2004 8:41 pm Asunto: |
|
|
si mal no recuerdo, funciona, en todas las verisiones de builder
saludos _________________
 |
|
| Volver arriba |
|
 |
ITM Cdt

Registrado: 23 Nov 2005Mensajes: 11
|
Publicado: Sab 03 Dic, 2005 8:30 pm Asunto: |
|
|
| 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 |
|
 |
max Lt

Registrado: 12 Mar 2005Mensajes: 89Ubicación: Argentina Prov B.A Mar del Plata
|
Publicado: Sab 03 Dic, 2005 10:56 pm Asunto: |
|
|
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 |
|
 |
aleph Cdt

Registrado: 31 Oct 2006Mensajes: 2
|
Publicado: Vie 03 Nov, 2006 4:32 am Asunto: una pregunta |
|
|
| 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 |
|
 |
|