Permettre à une application C++ de s'icônifier (en bas à droite)... - C++ - Programmation
Marsh Posté le 23-06-2003 à 17:04:43
Shell_Notifyicon()
edit: j'avais expliqué la manip ici (attention, c'est valable pour les MFC)
http://forum.hardware.fr/forum2.ph [...] 303&cat=10
Marsh Posté le 23-06-2003 à 17:09:46
oki merci, j'avais cherché mais pas trouvé...
et y'a pas moyen d'utiliser ça sans les MFC (koike ça semble logique d'en avoir besoin, vu qu'on touche aux fenetres win, mais bon...) ?
Merci
Marsh Posté le 23-06-2003 à 17:11:07
pilou51 a écrit : oki merci, j'avais cherché mais pas trouvé... |
Si, bien sur ! Shell_Notifyicon est une fonction Win32. D'ailleurs, vu qu'elle n'est pas encapsulée par les MFC, une grande partie de ce que j'explique dans le topic est réutilisable.
Marsh Posté le 23-06-2003 à 17:15:29
Oui mais mon prog n'a mm pas de fenetre propre, c un serveur qui écoute en permanence (socket en TCP), il a juste une fenetre de commandes MS DOS koi, donc je pense pas que ça soit possible, je vois pas comment gérer les HWND dans ce contexte
Marsh Posté le 23-06-2003 à 17:18:45
pilou51 a écrit : Oui mais mon prog n'a mm pas de fenetre propre, c un serveur qui écoute en permanence (socket en TCP), il a juste une fenetre de commandes MS DOS koi, donc je pense pas que ça soit possible, je vois pas comment gérer les HWND dans ce contexte |
Ben dans ce cas tu iconifies la fenêtre MS-DOS dans la barre des taches, t'as besoin absolument de la mettre à coté de l'horloge
Sinon, le HWND tu peux le trouver via un EnumerateWindow() et un FindWindow (ou en utilisant des inspecteurs de fenêtre du style de Spy++)
Marsh Posté le 23-06-2003 à 17:19:23
pilou51 a écrit : Oui mais mon prog n'a mm pas de fenetre propre, c un serveur qui écoute en permanence (socket en TCP), il a juste une fenetre de commandes MS DOS koi, donc je pense pas que ça soit possible, je vois pas comment gérer les HWND dans ce contexte |
tu créés une "message-only" window.
http://msdn.microsoft.com/library/ [...] ssage_only
sinon pour gérer les messages du tray sans mfc, tu modifies ta wndproc de cette facon:
Code :
|
Marsh Posté le 23-06-2003 à 17:21:17
oki merci v essayer ça
Ben si je veux l'icônifier, c que le pc sur lequel doit tourner ce prog d'écoute sert pour d'autres choses, et qu'il faut pas fermer ça par erreur... hors qd ça traîne ds la barre des tâches... on a tendance à faire des gaffes
Marsh Posté le 23-06-2003 à 17:25:51
pilou51 a écrit : oki merci v essayer ça |
bah dans ce cas tu fais "new project", tu fais "win32 project", + "empty project", tu colles tout ton source dedans en remplacant le main par le winmain, comme ca qd tu lances l'éxé, il tourne en fond, sans console ni fenetre, la seule maniere de le quitter c'est de le tuer ds le gestionnaire des taches.
Marsh Posté le 23-06-2003 à 17:38:09
par défaut le winmain crée pas de fenetre du tt ?? je savais pas.....
merci
Marsh Posté le 23-06-2003 à 17:38:45
euh...
Code :
|
ça vous dit qqchose ?
Marsh Posté le 23-06-2003 à 17:46:03
pilou51 a écrit : euh...
|
va y avoir des pb d'include a mon avis...
qqpart il faut que tu include windows.h ou similaires, mais ca va faire des conflits avec d'autres include...
bref, gros bordel en vue. si t'as le courage t'y arriveras, mais tu risques d'y passer entre 1 et plein d'heures.
Le 1er truc a faire c'est de remplacer ton "int main()" par "int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)"
Marsh Posté le 24-06-2003 à 10:51:02
Sinon, le mieux pour ton problème est de créer ton application sous la forme d'un service si elle tourne sous NT/2000/XP. Je crois qu'il est possible de simuler un service sous 95/98/ME également.
Ainsi, tu es tranquille, ton application tournera même si personne n'est loggué et elle ne risque pas d'être arrétée par erreur (surtout si tu gères bien les autorisations sur la machine).
Pour ton erreur, vérifie que tu ais bien créé une fonction WinMain (comme Konar l'indique) et que le fichier la contenant est bien compilé (sous Visual, il faut qu'il fasse partie du projet).
Marsh Posté le 24-06-2003 à 13:38:06
ça marche maintenant avec le WinMain, donc le seul moyen de le tuer est en passant par le gestionnaire des tâches. (faut y penser qd on recompile le prog )
Peux-tu m'en dire plus sur la manière de gérer l'application en tant que service stp ?
Merci encore
Marsh Posté le 24-06-2003 à 13:46:31
Pour faire un service, le mieux est encore que tu ailles directement voir la MSDN.
Sinon, tu dois pouvoir trouver des trucs chez CodeProject ou CodeGuru.
Une autre solution est d'utiliser un soft pour le faire... Je sais que ça existe, mais je ne peut pas te citer de nom.
Marsh Posté le 24-06-2003 à 13:48:09
oki merci v chercher un peu, parceque c vrai que ça serait mieux
Marsh Posté le 23-06-2003 à 17:01:30
Voilà, tout est ds le titre, j'aimerais qu'une appli que j'ai faite en C/C++ puisse se mettre dans les icônes de la barre des tâches en bas à droite...(enfin ça peut etre en haut à gauche suivant l'organisation de votre bureau, c pas pour contrarier hein )...
Comment puis-je m'y prendre svp ?
Merci