Traitement du message WM_GETMINMAXINFO

Le
Michel
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?
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 #18685541
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..)
Michel
Le #18688221
On 16 fév, 21:56, Christian ASTOR
  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;
Publicité
Poster une réponse
Anonyme