détecter qu'une fenêtre se maximise ou se minimise, en utilisant WM_WINDOWPOSCHANGED

Le
Vincent Torri
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é
(d'après ce qui est indiqué sur MSDN).

Donc, je regarde le paramètre lParam ainsi:

Code :

case WM_WINDOWPOSCHANGED:
{
UINT flags;

flags = ((PWINDOWPOS)lParam)->flags;
printf (" poschanged flag: %x", flags);
if ((flags & SWP_HIDEWINDOW) == SWP_HIDEWINDOW)
printf ("hiding");
if ((flags & SWP_SHOWWINDOW) == SWP_SHOWWINDOW)
printf ("showing");
printf (" poschanged flag ending", flags);
return 0;
}

J'effectue la minimisation / maximisation que j'ai décrits ci-dessus. Ni
"hiding", ni "showing" n'est affiché. C'est uniquement quand je ferme la
fenêtre (avec la croix de la barre de titre par exemple) que le message
"hiding" est affiché.

Est-ce normal ?

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #22587031
On 19 sep, 17:43, Vincent Torri
J'effectue la minimisation / maximisation que j'ai décrits ci-dessus. N i
"hiding", ni "showing" n'est affiché. C'est uniquement quand je ferme l a
fenêtre (avec la croix de la barre de titre par exemple) que le message
"hiding" est affiché.
Est-ce normal ?



Oui, SWP_HIDEWINDOW et SWP_SHOWWINDOW ne sont appelés que sur
ShowWindow() ou DestroyWindow() notamment.
Vincent Torri
Le #22587021
Christian ASTOR news::

On 19 sep, 17:43, Vincent Torri
J'effectue la minimisation / maximisation que j'ai décrits ci-dessus.
N i "hiding", ni "showing" n'est affiché. C'est uniquement quand je
ferme l a fenêtre (avec la croix de la barre de titre par exemple)
que le message "hiding" est affiché.
Est-ce normal ?



Oui, SWP_HIDEWINDOW et SWP_SHOWWINDOW ne sont appelés que sur
ShowWindow() ou DestroyWindow() notamment.



Cela veut-il dire que on ne peut pas gérer la minimisation/maximisation
avec ce message ?
Christian ASTOR
Le #22587121
On 19 sep, 18:27, Vincent Torri
Cela veut-il dire que on ne peut pas gérer la minimisation/maximisation
avec ce message ?



Ca se fait habituellement avec WM_SIZE ou WM_SYSCOMMAND...
Vincent Torri
Le #22587111
Christian ASTOR :

Ca se fait habituellement avec WM_SIZE ou WM_SYSCOMMAND...





Certes, mais MSDN stipule dans la doc de ce message:

"It is more efficient to perform any move or size change processing during
the WM_WINDOWPOSCHANGED message without calling DefWindowProc"

Il y a peut-être quelque chose que je ne saisi pas, alors.
Christian ASTOR
Le #22587101
On 19 sep, 18:37, Vincent Torri
Christian ASTOR :

> Ca se fait habituellement avec WM_SIZE ou WM_SYSCOMMAND...

Certes, mais MSDN stipule dans la doc de ce message:

"It is more efficient to perform any move or size change processing durin g
the WM_WINDOWPOSCHANGED message without calling DefWindowProc"
Il y a peut-être quelque chose que je ne saisi pas, alors.



C'est hérité de la doc 16-bits, plus vraiment important maintenant.
Vincent Torri
Le #22587191
Christian ASTOR news::

On 19 sep, 18:37, Vincent Torri
Christian ASTOR news:83d7e2d8-1bfd-
:

"It is more efficient to perform any move or size change processing
durin g the WM_WINDOWPOSCHANGED message without calling
DefWindowProc" Il y a peut-être quelque chose que je ne saisi pas,
alors.



C'est hérité de la doc 16-bits, plus vraiment important maintenant.



Evidemment, si MSDN m'induit en erreur...

Dans ce cas, comment on fait exactement pour gérer à la fois
WM_WINDOWPOSCHANGED et WM_SIZE ?
Christian ASTOR
Le #22587301
On 19 sep, 18:50, Vincent Torri
Dans ce cas, comment on fait exactement pour gérer à la fois
WM_WINDOWPOSCHANGED et WM_SIZE ?



Si l'on appelle DefWindowProc() dans WM_WINDOWPOSCHANGED ,
WM_SIZE doit normalement continuer à être reçu...
Vincent Torri
Le #22587361
Christian ASTOR :

On 19 sep, 18:50, Vincent Torri
Si l'on appelle DefWindowProc() dans WM_WINDOWPOSCHANGED ,
WM_SIZE doit normalement continuer à être reçu...




ok, merci pour tout !
Publicité
Poster une réponse
Anonyme