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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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..)
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..)
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
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;
On 16 fév, 21:56, Christian ASTOR <casto...@club-internet.fr> 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;