我有一个没有标题的表单,使用双击最大化:代码如下所示:
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;
Run Code Online (Sandbox Code Playgroud)
这很好,除了我必须找出任务栏重置SetBounds的位置...
这样做的正确方法是什么?
谢谢.
Cod*_*ats 10
听起来不错,但就像Drejc指出的那样,任务栏可以出现在任何地方,因此Google桌面,Winamp等其他对接侧边栏也可以出现.
而是使用像Screen.WorkAreaRect这样的东西来获取屏幕的客户区域.例如
with Screen.WorkAreaRect do
Form1.SetBounds(Left, Top, Right - Left, Bottom - Top);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23044 次 |
| 最近记录: |