Dans ma boucle de messages, j'utilise WM_WINDOWPOSCHANGED, à la place de WM_SIZE, pour détecter si une fenêtre est maximisée ou minimisée (plus précisément : la fenêtre s'affiche, je clique sur le bouton de minimisation de la barre de titre, je clique sur la fenêtre dans la barre des tâches pour la maximiser).

Je désire utiliser WM_WINDOWPOSCHANGED pour des questions d'efficacité (comme indiqué sur MSDN). En plus ça enlève la gestion de messages qui ne m'intéresse pas.

Donc, je regarde le paramètre lParam ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  case WM_WINDOWPOSCHANGED:
  {
    UINT flags;

    flags = ((PWINDOWPOS)lParam)->flags;
    printf (" poschanged flag: %x\n", flags);
    if ((flags & SWP_HIDEWINDOW) == SWP_HIDEWINDOW)
      printf  ("hiding\n");
    if ((flags & SWP_SHOWWINDOW) == SWP_SHOWWINDOW)
      printf  ("showing\n");
    printf (" poschanged flag ending\n", flags);
    return 0;
  }
J'effectue la minimisation / maximisation que j'ai décrits ci-dessus. Ni "hiding", ni "showing" n'est affiché. Uniquement quand je ferme la fenêtre (avec la croix de la barre de titre par exemple) le message "hiding" est affiché.

Est-ce normal ?