Faire fonctionner un programme MFC/C++ dans la zone de notification

Faire fonctionner un programme MFC/C++ dans la zone de notification - C++ - Programmation

Marsh Posté le 04-04-2003 à 10:21:48    

Je cherche à faire tourner un prog en tache de fond. C'est un programme qui surveille un périphérique électronique (mais ca on s'en fout pour l'instant).
Comment faire pour faire tourner ce programme dans la zone de notification (zone ou se trouve l'horloge de windows pour ceux qui n'auraient pas compris), et, par la même occasion le faire démarrer en même temps que windows.
(sous windows 2000 pro).
 
Je sais que la commande à utiliser est ::Shell_NotifyIcon()
mais je n'arrive pas à l'implanter dans mon code.
 
Merci

Reply

Marsh Posté le 04-04-2003 à 10:21:48   

Reply

Marsh Posté le 04-04-2003 à 10:23:11    

J'ai deja fait ce genre de sport mais je me souviens plus trop bien, pr contre :
 
 

Citation :

Je sais que la commande à utiliser est ::Shell_NotifyIcon()
mais je n'arrive pas à l'implanter dans mon code.


 
 
peut etre nous donner ton code pourrait etre utile ?

Reply

Marsh Posté le 04-04-2003 à 10:29:37    

voici la déclaration de la struct nécessaire pour appeler ::Shell_NotifyIcon();
 

Code :
  1. typedef struct _NOTIFYICONDATA{
  2.  DWORD cbSize;
  3.  HWND hWnd;
  4.  UINT uID;
  5.  UINT uFlags;
  6.  UINT uCallbackMessage;
  7.  HICON hicon;
  8.  char szTip[64];
  9. }NOTIFYICONDATA, *PNOTIFYICONDATA;


C'est extrait de MFC whith Visual C++ 5.0 (moi je suis sur 6.0 mais ca change pas énormément).
 
Et voici, dans le OnInitDialog de ma fenetre (ce qui parait logique...)
 

Code :
  1. NOTIFYICONDATA  * NIcon;
  2. (*NIcon).cbSize = /*ici je sais pas ce qu'il faut mettre */
  3. (*NIcon).hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  4. (*NIcon).hWnd = /* ici j'arrive pas à trouver */
  5. (*NIcon).szTip = "Surveillance en cours";
  6. (*NIcon).uCallbackMessage = /*ici je ne sais pas ce qu'il faut mettre non plus */;
  7. (*NIcon).uFlags = NIM_NOTIFY | NIF_TIP | NIF_ICON /* je pense que c ca */;
  8. (*NIcon).uID = 1 /* j'ai mis ca au hasard... */;
  9. ::Shell_NotifyIcon("aaaaaaa",NIcon); //et la.... ben je sais pas non plus...


 
Voila, la j'ai des erreurs... je comprends pas trop.
Je voudrais aussi qu'en faisant click droit sur l'icone qui devra apparaitre dans la zone de notification, on ait un menu avec quelques options.

Reply

Marsh Posté le 04-04-2003 à 10:30:49    

Perso j'ulise un petite classe CTrayIcon (derive de CCmdTarget avec jsute constructeur/seticon et ontraynotification pour la partie recup message souris etc c tt petit) que j avais trouve sur CodeGuru y a bien longtemps.
 
Une fois l'icone mis ds la barre, tu fais un joli ShowWindow(SW_HIDE) sur ta fenetre.

Reply

Marsh Posté le 04-04-2003 à 10:34:46    

Peux tu développer un petit peu plus ta réponse stp. Merci
 
 :bounce:


Message édité par banguy le 04-04-2003 à 10:35:25
Reply

Marsh Posté le 04-04-2003 à 10:36:23    

ben a part te coller le code c est dur la ;)
J essaye de te trouver le lien.

Reply

Marsh Posté le 04-04-2003 à 10:39:52    

je voudrais juste savoir comment tu link ta class CTrayIcon au reste du prog. J'ai créé cette classe, mais je vois pas ou la linker pour qu'elle apparaisse dès le démarrage du prog. Dans le OnInitDialog de la fenetre principale ??

Reply

Marsh Posté le 04-04-2003 à 10:45:43    

Ah euh non moi j utilise
 

Code :
  1. #define WM_MY_TRAY_NOTIFICATION WM_USER+0
  2. constructeur > new CTrayIcon(IDR_MENUattachealicone)
  3. BEGIN_MESSAGE_MAP(CMaClasseDlg, CDialog)
  4. //{{AFX_MSG_MAP(CMaClasseDlg)
  5. ON_MESSAGE(WM_MY_TRAY_NOTIFICATION, OnTrayNotification)
  6. //}}AFX_MSG_MAP
  7. END_MESSAGE_MAP()
  8. OnInitDialog >
  9. m_ptrayIcon->SetNotificationWnd(this, WM_MY_TRAY_NOTIFICATION);
  10. m_ptrayIcon->SetIcon(AfxGetApp()->LoadIcon(IDI_ICONattache), NULL);
  11. OnTrayNotification(WPARAM uID, LPARAM lEvent)
  12. {
  13. INT iRes = m_ptrayIcon->OnTrayNotification(uID, lEvent);
  14. ..... si tu fais autre chose
  15. }


 

Reply

Marsh Posté le 04-04-2003 à 10:48:23    

c encore plus simple, effectivement, toi tu crées pas de nouveau fichier en fait... g été con...
Ben écoute merci, je v tester ca de suite. :hello:

Reply

Marsh Posté le 04-04-2003 à 10:49:26    

Creer un fichier :??: euh tu as pas tout dit la :D

Reply

Marsh Posté le 04-04-2003 à 10:49:26   

Reply

Marsh Posté le 04-04-2003 à 10:54:52    

j'avais expliqué la manip ici pour les Tray Messages
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-04-2003 à 11:00:04    

VisualC++ a écrit :

Creer un fichier :??: euh tu as pas tout dit la :D


 
ben oui, quand tu veux créer une classe, tu créée un fichier.. non  :??:  A moins que tout ce que j'ai appris jusqu'à présent soit totalement dénué de sens et que je doive retourner à l'école dès aujourdui et que je n'arriverais jamais à réaliser ce putain de projet pour lequel je suis payé si mal.....    :sweat:

Reply

Marsh Posté le 04-04-2003 à 11:02:37    

:lol:
 
Edit : c t pas moqueur du tout, mais je pensais pas a la creation d'une classe quand tu as dit que j ai pas cree de fichier pour ca :)


Message édité par VisualC++ le 04-04-2003 à 11:13:47
Reply

Marsh Posté le 04-04-2003 à 11:10:09    

faut m'excuser.....
Je sors à peine d'iut d'informatique. Ce qu'on nous appris était bien plus que moyen. je débute dans le MFC.
Je fais un stage au cnrs pour faire un programme de pilotage d'une caméra haute sensibilité... C pas facile, surtout que le mfc c'est pas mon truc. Moi j'adore visual basic, php/ mysql, C ,
java...
Fin voila koi... tu vois le genre...

Reply

Marsh Posté le 04-04-2003 à 11:14:11    

apparement g vraiment du mal....
J'ai essayé d'implanter ton truc...
J'ai 102 erreurs, et encore, le compilo s'arrete au dela de 100
Et les erreurs sont toutes les memes... (missing ';' before '}';)
Ca ne veut rien dire évidemment....
Je pense que ca vient du fait qu'il reconnait pas :
 

Code :
  1. new CTrayIcon(....);


 
Comment qu'on fait....


Message édité par banguy le 04-04-2003 à 11:16:53
Reply

Marsh Posté le 04-04-2003 à 11:21:58    

Ben tu as marque plus haut que tu as fait une classe CTrayIcon (ou que tu l as recup)
 
donc un #include quand mm
 
 
 
Sinon, regarde le lien de Harkonen il explique tres bien.


Message édité par VisualC++ le 04-04-2003 à 11:22:28
Reply

Marsh Posté le 04-04-2003 à 11:23:24    

banguy a écrit :

apparement g vraiment du mal....
J'ai essayé d'implanter ton truc...
J'ai 102 erreurs, et encore, le compilo s'arrete au dela de 100
Et les erreurs sont toutes les memes... (missing ';' before '}';)
Ca ne veut rien dire évidemment....
Je pense que ca vient du fait qu'il reconnait pas :
 

Code :
  1. new CTrayIcon(....);


 
Comment qu'on fait....


A ma connaissance, CTrayIcon n'est pas inclus dans les MFC, ce doit être une classe récupérée sur le net.
 
Essaie ma manip, elle utilise les MFC standard.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-04-2003 à 11:24:54    

Non non tu as raison, CTrayIcon comme marque au debut c une classe faite a la main ou recup sur le net.
 
 
Edit : par contre c du MFC standard, juste un wrapper de Shell_Notify


Message édité par VisualC++ le 04-04-2003 à 11:26:06
Reply

Marsh Posté le 04-04-2003 à 11:32:38    

oui mais la je comprends tout de meme pas pourquoi
 
new CTrayIcon(...) ne marche pas...

Reply

Marsh Posté le 04-04-2003 à 11:34:47    

banguy a écrit :

oui mais la je comprends tout de meme pas pourquoi
 
new CTrayIcon(...) ne marche pas...


parce que c'est une classe faite à la main !! qui n'existe pas tant que tu n'as pas rajouté sa déclaration et son implémentation dans ton projet !
 
au fait, j'espère que ceci est un troll :
 
http://forum.hardware.fr/forum2.php3?post=122678&cat=4


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-04-2003 à 11:36:49    

tu vas pas t'y mettre toi aussi...

Reply

Marsh Posté le 04-04-2003 à 11:37:25    

bon, hfr m'a gavé... merci les gars pour cette aide en C++
Mais c pas très bon esprit ici...
bye

Reply

Marsh Posté le 04-04-2003 à 11:49:55    

:sarcastic:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 04-04-2003 à 11:53:19    

banguy a écrit :

Mais c pas très bon esprit ici...


tant qu'on se vante pas de ses actes litigeux, ya pas de prob :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 04-04-2003 à 11:55:39    

:hello:
 
Tanguy, j'ai exactement la réponse à ton problème. J'espère que ce forum ne t'a pas dégouté et que tu nous lis encore !
 
Ce que je te propose : je vais manger, et ensuite je te donne une explication ? OK ?
 
A tte ;)


---------------
Je code en série et en parallèle
Reply

Marsh Posté le 04-04-2003 à 11:56:24    

banguy a écrit :

Mais c pas très bon esprit ici...


Ben écoute les règles sont affichées dans chaque catégorie, et sur S&R c'est : "pas d'incitation au piratage". Donc soit tu les acceptes et tu restes soit elles ne te plaisent pas et tu t'en vas [:spamafote]
 
Car je rappelle qu'en parlant de softs piratés (ou en se ventant d'en posséder) c'est le forum que tu mets en danger...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 04-04-2003 à 11:58:42    

banguy a écrit :


Code :
  1. NOTIFYICONDATA  * NIcon;
  2. (*NIcon).cbSize = /*ici je sais pas ce qu'il faut mettre */
  3. (*NIcon).hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  4. (*NIcon).hWnd = /* ici j'arrive pas à trouver */
  5. (*NIcon).szTip = "Surveillance en cours";
  6. (*NIcon).uCallbackMessage = /*ici je ne sais pas ce qu'il faut mettre non plus */;
  7. (*NIcon).uFlags = NIM_NOTIFY | NIF_TIP | NIF_ICON /* je pense que c ca */;
  8. (*NIcon).uID = 1 /* j'ai mis ca au hasard... */;
  9. ::Shell_NotifyIcon("aaaaaaa",NIcon); //et la.... ben je sais pas non plus...


 
Voila, la j'ai des erreurs... je comprends pas trop.
Je voudrais aussi qu'en faisant click droit sur l'icone qui devra apparaitre dans la zone de notification, on ait un menu avec quelques options.


 
Bah ca, des erreurs, c clair qu'y en a plein... tiens ca me donne meme pas envie de te donner le code tout fait.
 
alors voila :
http://msdn.microsoft.com/library/ [...] fyicon.asp
 
sinon, evite le pointeur inutile NIcon (surtout sans malloc)

Reply

Marsh Posté le 04-04-2003 à 12:24:38    

Konar a écrit :


 
Bah ca, des erreurs, c clair qu'y en a plein... tiens ca me donne meme pas envie de te donner le code tout fait.
 
alors voila :
http://msdn.microsoft.com/library/ [...] fyicon.asp
 
sinon, evite le pointeur inutile NIcon (surtout sans malloc)


merci, mais l'aide de microsoft ne dit rien sur les valeurs à mettre dans la structure passée en paramètre... Et moi c ca qui m'interesse...

Reply

Marsh Posté le 04-04-2003 à 12:29:02    

Serial Coder a écrit :

:hello:
 
Tanguy, j'ai exactement la réponse à ton problème. J'espère que ce forum ne t'a pas dégouté et que tu nous lis encore !
 
Ce que je te propose : je vais manger, et ensuite je te donne une explication ? OK ?
 
A tte ;)


 
je v manger aussi, mais en tout cas c cool de ta part...

Reply

Marsh Posté le 04-04-2003 à 12:34:35    

banguy a écrit :


merci, mais l'aide de microsoft ne dit rien sur les valeurs à mettre dans la structure passée en paramètre... Et moi c ca qui m'interesse...


 
http://msdn.microsoft.com/library/ [...] ondata.asp
 

Reply

Marsh Posté le 04-04-2003 à 14:33:25    

banguy a écrit :


 
je v manger aussi, mais en tout cas c cool de ta part...


Désolé, mais je peux pas te répondre pour l'instant, j'ai bouffé mexicain ce midi (très épicé donc), et j'ai un mal au ventre à en pleurer :cry: :cry:
 
C'est con, parce que ton problème est vraiment très simple à résoudre, franchement ça me fait chier (sans jeu de mots) de pas avoir le courage de te répondre, ça se résout en 10 secondes :'(
 
Mais je vais quand même te donner l'URL d'un site qui explique les MFC de façon exhaustive, et en français ! Encore une fois désolé :sweat:
 
http://mfcforever.com/french/notifyicon.htm


---------------
Je code en série et en parallèle
Reply

Marsh Posté le 08-04-2003 à 17:39:24    

Alors banguy la trime ??

Reply

Marsh Posté le 09-04-2003 à 11:27:33    

[:synth]  
Salut msieu...
Non non jtrime pas, je ultra méga trime...
Mais c bizare hfr, je pose plein de questions, mais il arrive qu'on ne les comprenne pas, et qu'on y réponde pas directement...
 :heink:  
 
C con  [:zharak]  
 
En tout cas ya plein de gens tres sympas qui font l'effort de répondre tout de meme, et ca ca le fait [:aras qui rit]

Reply

Marsh Posté le 10-04-2003 à 14:59:56    

backdafuckup ca fait tres soulfly comme pseudo...
c le mystere hfr tout ca...

Reply

Marsh Posté le 10-04-2003 à 15:03:59    

ProfesseurThibault a écrit :

backdafuckup ca fait tres soulfly comme pseudo...
c le mystere hfr tout ca...


 
va vient d'un groupe de hip hop, mais tu peux pas comprendre, métalleux

Reply

Marsh Posté le 10-04-2003 à 16:58:40    

Serial Coder a écrit :


Désolé, mais je peux pas te répondre pour l'instant, j'ai bouffé mexicain ce midi (très épicé donc), et j'ai un mal au ventre à en pleurer :cry: :cry:
 
C'est con, parce que ton problème est vraiment très simple à résoudre, franchement ça me fait chier (sans jeu de mots) de pas avoir le courage de te répondre, ça se résout en 10 secondes :'(
 
Mais je vais quand même te donner l'URL d'un site qui explique les MFC de façon exhaustive, et en français ! Encore une fois désolé :sweat:
 
http://mfcforever.com/french/notifyicon.htm
 


 
 :lol:  :lol:  :lol:  
 
 
...
 
 [:zharak]  
 
you bastard.

Reply

Marsh Posté le 16-04-2003 à 14:57:04    

test

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed