ShowWindow

Signaler
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
-
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
-
Salut à tous !

Mon problème est simple, j'utilise le code suivant dans ma WndProc :

  switch (uMsg) {
  case WM_ACTIVATE:
    if (HIWORD(wParam) != 0) ShowWindow(hWnd, SW_HIDE);
    return 0;
  }


Ce qui a pour effet de cacher la fenêtre lorsqu'on la minimise. Ensuite, je souhaiterais la restaurer, mais aucun de mes essais n'est satisfaisant (avec SW_SHOW elle reste minimisée, SW_SHOWNORMAL elle est derrière les autres fenêtres, SW_RESTORE elle est restaurée mais n'est pas activée)

Comment donc la restaurer et l'activer à tous les coups ?

Voici ce que j'utilise, toujours dans la WndProc :

      ShowWindow(hWnd, SW_RESTORE);
      ShowWindow(hWnd, SW_SHOW);
      UpdateWindow(hWnd);


Le but étant : lorsque la fenetre est minimisée, elle est remplacée par une TrayIcon, lorsqu'on clique sur la TrayIcon, la fenetre reapparait...

Merci d'avance :)

3 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
essaie en mettant un SetForegroundWindow(hwnd);
BruNews, ciao...
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Impec, çà marche, merci !
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008

Chez moi, il est impossible de faire apparaitre le fenetre.

ShowWindow(hWnd, SW_HIDE);
SetForegroundWindow(hWnd);
ShowWindow(hWnd, SW_RESTORE);
SetForegroundWindow(hWnd);
ShowWindow(hWnd, SW_SHOW);
SetForegroundWindow(hWnd);
UpdateWindow(hWnd);
SetForegroundWindow(hWnd);

La fenetre (WS_SYSMENU | WS_OVERLAPPED) se cache mais ne reapparait pas.