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

Traitement du message WM_GETMINMAXINFO

2 réponses
Avatar
Michel
Bonjour. Je dois imposer une taille maximale =E0 ma fen=EAtre, donc je
traite le message WM_GETMINMAXINFO. Mais cette taille maximale doit
dans tous les cas =EAtre inf=E9rieure ou =E9gale =E0 la taille d'une fen=EA=
tre
maximis=E9e.
J'ai donc =E9crit le code suivant :
[code]case WM_GETMINMAXINFO:
if (((MINMAXINFO *)lParam)->ptMaxSize.x > TailleMax.x) {
((MINMAXINFO *)lParam)->ptMaxSize.x =3D TailleMax.x;}
if (((MINMAXINFO *)lParam)->ptMaxSize.y > TailleMax.y) {
((MINMAXINFO *)lParam)->ptMaxSize.y =3D TailleMax.y;}
[/code]

Pourtant =E7a ne marche pas correctement : la fen=EAtre d=E9passe par en
bas, comme si elle voulait afficher sur la barre des t=E2ches.
Comment trouver la vrai hauteur maximale, c'est-=E0-dire le nombre de
pixels entre le haut de l'=E9cran et le bas, sans la barre des t=E2ches?

2 réponses

Avatar
Christian ASTOR
Michel wrote:

Bonjour. Je dois imposer une taille maximale à ma fenêtre, donc je
traite le message WM_GETMINMAXINFO. Mais cette taille maximale doit
dans tous les cas être inférieure ou égale à la taille d'une fenêtre
maximisée.
J'ai donc écrit le code suivant :
[code]case WM_GETMINMAXINFO:
if (((MINMAXINFO *)lParam)->ptMaxSize.x > TailleMax.x) {
((MINMAXINFO *)lParam)->ptMaxSize.x = TailleMax.x;}
if (((MINMAXINFO *)lParam)->ptMaxSize.y > TailleMax.y) {
((MINMAXINFO *)lParam)->ptMaxSize.y = TailleMax.y;}
[/code]

Pourtant ça ne marche pas correctement : la fenêtre dépasse par en
bas, comme si elle voulait afficher sur la barre des tâches.
Comment trouver la vrai hauteur maximale, c'est-à-dire le nombre de
pixels entre le haut de l'écran et le bas, sans la barre des tâches?



GetSystemMetrics(SM_CYMAXIMIZED)
(et ptMaxTrackSize si on resize à la main..)
Avatar
Michel
On 16 fév, 21:56, Christian ASTOR wrote:
  GetSystemMetrics(SM_CYMAXIMIZED)
(et ptMaxTrackSize si on resize à la main..)



Merci, c'est exactement ce donc j'avais besoin.

Le code est maintenant :
((MINMAXINFO *)lParam)->ptMaxSize.x = min (TailleMax.x,
GetSystemMetrics (SM_CXMAXIMIZED));
((MINMAXINFO *)lParam)->ptMaxSize.y = min (TailleMax.y,
GetSystemMetrics (SM_CYMAXIMIZED));
((MINMAXINFO *)lParam)->ptMaxTrackSize.x = min (TailleMax.x,
GetSystemMetrics (SM_CXMAXTRACK));
((MINMAXINFO *)lParam)->ptMaxTrackSize.y = min (TailleMax.y,
GetSystemMetrics (SM_CYMAXTRACK));
((MINMAXINFO *)lParam)->ptMinTrackSize = TailleMin;