gpt4 book ai didi

delphi - 全屏启动时应用程序停留在任务栏后面

转载 作者:行者123 更新时间:2023-12-03 14:54:10 27 4
gpt4 key购买 nike

这是我正在使用的代码:

BorderStyle := bsNone;
WindowState := wsMaximized;

我的问题是应用程序不会覆盖任务栏,而是位于任务栏后面。

在运行时切换到全屏时它可以正常工作,但在系统启动时启动应用程序时它不起作用。

更新

事实证明,这两行代码运行得非常好。它们位于 FormShow 事件处理程序中。如果我断点直到 FormShow 结束,应用程序似乎处于全屏状态;我可以通过任务栏看到该应用程序。但在 FormShow 之后,应用程序的 Top 属性会以某种方式发生变化。我不会在代码中更改它 - 值为 -20,因此应用程序不再最大化。

有没有办法跟踪更改的位置或时间?

提前致谢!

更新

此帖子已被标记。请不要发布任何答案!谢谢。

最佳答案

根据此 MSDN 博客更改参数样式: http://blogs.msdn.com/b/oldnewthing/archive/2005/05/05/414910.aspx

procedure TForm1.CreateParams(var Params: TCreateParams); 
begin
inherited;
Params.Style := WS_POPUP or WS_VISIBLE; //will overlay taskbar
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Self.WindowState := wsMaximized; //fullscreen
end;

======================================

从窗口模式切换到全屏模式并返回的完整代码(在 Win7 64 位、Aero 上测试)
(编辑:也适用于 Windows XP (vmware))

var
_OrgWindowedStyle: DWORD;

procedure TForm6.btnWindowedClick(Sender: TObject);
begin
Self.WindowState := wsNormal;
//set original style
SetWindowLong( Application.Handle, GWL_STYLE,
_OrgWindowedStyle);
//re-create window, to use changed style
RecreateWnd;
end;

procedure TForm6.btnFullScreenClick(Sender: TObject);
begin
_OrgWindowedStyle := 0; //clear: re-applies fullscreen mode in CreateParams
Self.WindowState := wsMaximized;
//re-create window, to use changed style
RecreateWnd;
end;

procedure TForm6.CreateParams(var Params: TCreateParams);
begin
inherited;

//first time? default fullscreen
if _OrgWindowedStyle = 0 then
begin
_OrgWindowedStyle := Params.Style;
Params.Style := //WS_POPUP or //not needed?
WS_VISIBLE
or WS_BORDER or WS_CAPTION //comment this line to remove border + titlebar
end;
end;

procedure TForm6.FormCreate(Sender: TObject);
begin
Self.WindowState := wsMaximized; //default fullscreen
end;

关于delphi - 全屏启动时应用程序停留在任务栏后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com