IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Minimiser une "Console application" vers une Icone Tray


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 50
    Par défaut Minimiser une "Console application" vers une Icone Tray
    Bonjour et merci de prendre quelques instants pour répondre à mon problème.

    Je développe une application de type console sous Visual C++ et je souhaiterais à présent faire disparaitre ma fenêtre (ou la minimiser), puis la faire apparaitre à n'importe quel moment.
    J'ai tout d'abord pensé à FreeConsole(), mais n'ayant plus aucun lien vers mon application, je ne peux pas faire réapparaître ma console.

    Je me demande à présent s'il est possible de créer une Icône dans la barre d'icônes Tray (en bas à droite) et d'utiliser le menu de cet Icône pour cacher ou afficher la console.

    J'ai utilisé l'exemple http://chgi.developpez.com/windows/trayicon/.

    J'ai donc essayé d'initialiser l'objet et la structure de l'Icône:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #define MY_WM_NOTIFYICON WM_USER+1
    static NOTIFYICONDATA TrayIcon;
    static HINSTANCE hinst;
     
    void fonction_Initialisation () {
        HWND hwndFound;
        char pszOldWindowTitle[1024];
        GetConsoleTitle((LPWSTR)pszOldWindowTitle, 1024);
        hwndFound = FindWindow(NULL, (LPWSTR)pszOldWindowTitle);
        hinst = (HINSTANCE)GetWindowLongPtr(hwndFound, GWLP_HINSTANCE);
     
        ZeroMemory(&TrayIcon, sizeof(NOTIFYICONDATA));
        TrayIcon.cbSize = sizeof(NOTIFYICONDATA);
        TrayIcon.hWnd = hwndFound;  // cible
        TrayIcon.uID = 0;            // Identifiant du TrayIcon
        TrayIcon.hIcon = LoadIcon(NULL, IDI_WINLOGO);
        TrayIcon.uCallbackMessage = MY_WM_NOTIFYICON;
        TrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
        wcscpy_s(TrayIcon.szTip, TEXT("Mon Texte Icone"));
        Shell_NotifyIcon(NIM_ADD, &TrayIcon);
    }
    J'utilise ensuite une fonction CALLBACK pour récupérer les messages générés par l'utilisation de la souris sur l'Icône, mais cela ne fonctionne pas. Une Icône apparait bien dans la barre système Tray, mais aucune action n'est possible dessus. Le code contenu dans la fonction de Callback ne s'exécute jamais. A mon avis, une application de type Console ne peut pas prendre en charge ce genre de choses.

    Comment feriez-vous pour minimiser/cacher votre application Console?

    Merci par avance.

  2. #2
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Je pense pas que ce soit possible. Je suis même étonné que tu aies pu créer l'icône dans le system tray, je ne pensais pas que ça pouvait marcher.

    Transforme ton application pour en faire une application Forms, afin qu'elle ait un gestionnaire de message (ce que n'ont pas les applis console).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 50
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    Je pense pas que ce soit possible. Je suis même étonné que tu aies pu créer l'icône dans le system tray, je ne pensais pas que ça pouvait marcher.

    Transforme ton application pour en faire une application Forms, afin qu'elle ait un gestionnaire de message (ce que n'ont pas les applis console).
    Merci!

    Je vais donc aller vers ce chemin la.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 50
    Par défaut
    Pour fermer ce topic, je suis finalement passé par les Winform. Cela m'a pris seulement que quelques secondes et je n'ai presque pas écris de code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/08/2010, 14h02
  2. Réponses: 4
    Dernier message: 15/05/2009, 13h29
  3. Réponses: 5
    Dernier message: 22/05/2008, 14h42
  4. Réponses: 7
    Dernier message: 30/09/2005, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo