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:
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.
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); }
Comment feriez-vous pour minimiser/cacher votre application Console?
Merci par avance.
Partager