Correct façon de maximiser la forme en delphi (sans légende)
J'ai un formulaire sans légende, à l'aide de la double cliquez pour maximiser : Code ressemble à ceci:
procedure xxxxxx;
begin
if Form1.WindowState=wsNormal then
begin
Form1.WindowState:=wsMaximized;
Form1.SetBounds(0,0,screen.Width,screen.Height-getHeightOfTaskBar);
end
else
begin
Form1.WindowState:=wsNormal;
end;
ShowTrayWindow;
end;
function getHeightOfTaskBar : integer;
var hTaskBar:HWND;
rect : TRect;
begin
hTaskbar := FindWindow('Shell_TrayWnd', Nil );
if hTaskBar<>0 then
GetWindowRect(hTaskBar, rect);
Result:=rect.bottom - rect.top;
end;
Cela fonctionne bien, sauf que j'ai eu à comprendre où est la barre des tâches pour réinitialiser SetBounds ...
Quelle est la bonne façon de le faire?
Grâce.
OriginalL'auteur Irfan Mulic | 2008-12-19
Vous devez vous connecter pour publier un commentaire.
Sonne bien, mais comme Drejc souligné, la barre des tâches peuvent apparaître n'importe où, supplémentaires à quai encadrés comme Google Desktop, Winamp, etc.
Au lieu peut-être d'utiliser quelque chose comme de l'Écran.WorkAreaRect pour obtenir la zone client de l'écran. E. g.
OriginalL'auteur CodeAndCats
Un indice supplémentaire. La barre des tâches peut également être situé sur la droite ou la gauche de l'écran (pas seulement en haut et en bas). Donc, vous devez en outre savoir où se trouve la barre des tâches est.
Je vous suggère de regarder dans le Delphi mise en œuvre de SetWidnowState. Dans Delphi7 c'est cette partie du code:
ShowWindow est un Win32 appel de la bibliothèque:
où user32 = 'user32.dll'; si je ne suis pas croyant.
Donc creuser dans cette bibliothèque, peut-être qu'il est un peu d'info de la barre des tâches de quelque part.
OriginalL'auteur Drejc