Accueil > > > CRÉEZ VOTRE PREMIÈRE TRAY ICON . CODE TRÈS SIMPLE ET ACCESSIBLE...
CRÉEZ VOTRE PREMIÈRE TRAY ICON . CODE TRÈS SIMPLE ET ACCESSIBLE...
Information sur la source
Description
Bonjour, Je sais qu'il existe déjà des sources traîtant ce sujet sur le site, mais comme j'ai malgré tout eu beaucoup de mal à m'en sortir, je me suis dit qu'une source très allégée portant UNIQUEMENT sur l'utilisation des tray icons ne ferait de mal à personne... Donc je vous livre le .cpp et le .h en esperant que ma première contribution (hé oui) sera utile à quelqu'un... Nous verrons donc la création et la suppression de l'icône ainsi que la détection d'une action de la souris sur l'icône (clik, double-clik...). L'idée du programme est en fait de "minimiser" l'IHM dans le systray. j'ai mis des guillemets parce qu'en réalité je n'utilise pas LE bouton minimiser mais un bouton disposé sur l'IHM à cet effet... toujours est-il qu'ensuite il faut double-cliquer sur l'icône pour retrouver l'IHM.
Source
Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#include <iostream.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Hide(); //Rigolez-pas, je sais que ça sert à rien mais c'était pour
Sleep(1000); //pour voir si la fenêtre partait de la barre des tâches
Form1->Show(); //quand on la cachait...
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Hide();
NI_Data.cbSize = sizeof( NOTIFYICONDATA );
// Cela permet à Windows de savoir avec quelle version de la structure
// on souhaite travailler
NI_Data.hWnd = this->Handle;
// C'est à ce handle que windows va envoyer les messages provenant de
// l'icône : permet de gérer les cliks, etc.
NI_Data.uID = 0;
// C'est l'identifiant de l'icône dans l'application. Cela permet à
// Windows de faire la distinction entre différents icônes de notification
// que l'application a crée.
NI_Data.hIcon = Application->Icon->Handle;
// Par défaut notre icone de notification aura le même icone que
// l'application.
NI_Data.uCallbackMessage = AM_CALLBACK_MESSAGE;
//Permet d'intercepter les messages venant du systray (cliks...)
NI_Data.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
strcpy(NI_Data.szTip, "Appli de test de trayicon");
//Permet de définir le texte de l'infobulle...
Shell_NotifyIcon(NIM_ADD,&NI_Data);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NotifyCallback(TMessage &message)
{
if ( message.WParam == 0 )
// WParam contient l'indice de l'icone de l'appication.
// En effet une application peut avoir plusieurs icones de notification
// c'est l'indice que nous avison mis dans uID de la structure de type
// NOTIFYICONDATA
{
if ( message.LParam == WM_LBUTTONDBLCLK ) //WM_RBUTTONUP, WM_LBUTTONDOWN...
{
Form1->Show();
Sleep(100); //pas indispensable mais si vous avez comme moi l'icône de MSN
//juste à côté de "la votre" vous comprendrez l'utilité :)
NI_Data.uFlags = 0;
Shell_NotifyIcon(NIM_DELETE,&NI_Data);
}
}
}
//---------------------------------------------------------------------------
Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#define AM_CALLBACK_MESSAGE WM_APP + 408
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // Composants gérés par l'EDI
TButton *Button1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
protected:
void __fastcall NotifyCallback ( TMessage &message );
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER( AM_CALLBACK_MESSAGE, TMessage, NotifyCallback);
END_MESSAGE_MAP(TForm);
private:
NOTIFYICONDATA NI_Data;
public:
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
Conclusion
Bon, comme je l'avais dit c'est vraiment léger, mais quand on a bien compris ça, on peut très vite et facilement améliorer... Par exemple on peut ajouter : //----------------------------------------------- ---------------------------- if ( message.LParam == WM_RBUTTONUP ) //réagit quand on relâche le clik droit { PopupMenu1->Popup( Mouse->CursorPos.x, Mouse->CursorPos.y ); //ouvre un menu popup là où se trouve la souris ;) } //------------------------------------------- -------------------------------- On peut également utiliser "Shell_NotifyIcon(NIM_MODIFY,&NI_Data);" après modifié des éléments de la structure afin de modifier l'icône ou le texte de l'infobulle etc...
Voilà, je vous souhaite bonne prog et @+
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Icone dans le system tray [ par Cpphewie ]
Bonjour, je cherche désespérement comment faire une icone dans le systray ( en c sous gtk+2 de preference ). J'ai lu dans la reference gtk
Tray Icon, comment ca fonctionne ?? [ par zadounet ]
Quelqu'un sait par hasard comment programmer en Vc++ 6.0 pour faire une icone dans la bar (Tray Mode) et pour faire changer cette icone. Un peu comme
ressources, aide pour menu pour icone dans la systray [ par leprov ]
salut a tous.voila j'aimerais savoir si avec l'editeur de ressources de visual c++, il est possible de faire changer un titre dans le menu qu'on crée
WM_TRAY_ICONE [ par deck_bsd ]
Bonjour à tous,Voila j'ai réussi à afficher et retirer un icone dans la systray. Maintenant je voudrai que lorsque je clique sur l'icone la fenêtre di
Simuler un doubleclik depuis Windev sur un icone du systray ? [ par nascimo ]
Bonjour, je n'arrive pas à simuler un doubleclik sur un iconne du systray depuis Windev ...Je récupére bien le handle de la fenêtre mais la commande s
Progression en Qt4 dans le systray - Faire une icone dynamique [ par alphaone ]
Bonjour, je voudrai pouvoir afficher une progression dans le systray à coté de l'heure en Qt, avec une icône qui ce dégrise au fur et à mesure et indi
Pb avec menu d'un systray [ par myckie ]
bonjour j'ai coder un bouton sur mon programme afin qu'il mette une icone dans la barre de tray ( a coté de l'heure) a cette icone j'y ai ajouter un m
retirer l'icone systray d'une app externe [ par devloop2 ]
Bonjour à tous !(c'est mon premier post ici ;) )d'abord j'espère ne pas me tromper de section...Voilà j'utilise un logiciel qui met son icone dans la
Comment mettre l'icone de son choix sur un EXE? [ par supergrey ]
Bonjour, je voudrais savoir comment mettre une icone choisie dans un dossier, sur un .EXE (qui n'est pas le programme)Merci.
interraction windows systray [ par leprov ]
salut a tous.bon voici mon probleme. je voudrais faire un programme qui effectue un traitement au demarrage de session, puis un autre en fermeture de
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
SALUT!SALUT! par khaoulagenie
Cliquez pour lire la suite par khaoulagenie
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|