Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

8 réponses
Avatar
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\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é. 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

8 réponses

Avatar
Christian ASTOR
On 19 sep, 17:43, Vincent Torri wrote:

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.
Avatar
Vincent Torri
Christian ASTOR wrote in
news::

On 19 sep, 17:43, Vincent Torri wrote:

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 ?
Avatar
Christian ASTOR
On 19 sep, 18:27, Vincent Torri wrote:

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...
Avatar
Vincent Torri
Christian ASTOR wrote in news:83d7e2d8-1bfd-
:

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.
Avatar
Christian ASTOR
On 19 sep, 18:37, Vincent Torri wrote:
Christian ASTOR wrote in news:83d7e2d8-1bfd-
:

> 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.
Avatar
Vincent Torri
Christian ASTOR wrote in
news::

On 19 sep, 18:37, Vincent Torri wrote:
Christian ASTOR wrote in
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 ?
Avatar
Christian ASTOR
On 19 sep, 18:50, Vincent Torri wrote:

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...
Avatar
Vincent Torri
Christian ASTOR wrote in news:bbe52fe4-6d38-
:

On 19 sep, 18:50, Vincent Torri wrote:

Si l'on appelle DefWindowProc() dans WM_WINDOWPOSCHANGED ,
WM_SIZE doit normalement continuer à être reçu...




ok, merci pour tout !