gpt4 book ai didi

delphi - 隐藏Delphi的 "Application"窗口可以吗?

转载 作者:行者123 更新时间:2023-12-03 15:09:36 24 4
gpt4 key购买 nike

我们刚刚将应用程序从 MDI 容器转移到单个文档界面。我们的用户习惯于使用 MDI 父级中的“Windows”菜单来并排显示窗口。我们希望训练他们右键单击 Windows 任务栏并使用那里的窗口管理功能。

对于 Delphi 应用程序,我们注意到 Windows shell 为隐藏的“应用程序”窗口留出了空间。因此,如果我只打开两扇 window ,它就会为三扇 window 安排空间。应用程序窗口并未真正显示,但有为其留出的空间。

我们有两个不同的应用程序,这一事实使情况变得更糟。如果他们在每个应用程序中只打开一个窗口并且想要并排显示它们,那么实际上会尝试占用 4 个窗口。

因此,我看到的不是两个窗口各占屏幕的 1/2,而是两个窗口占桌面的 1/4,而屏幕的其余部分是打开的。

我发现在应用程序启动时添加一行来隐藏应用程序窗口可以解决此问题。

ShowWindow(Application.Handle, SW_HIDE);

Edit in case someone does not read down to the answer. Based on Craig's answer below I am setting the windows style to WS_EX_TOOLWINDOW instead of hiding the window. SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);

我的(最初)问题是:这安全吗(隐藏应用程序窗口)?我想知道隐藏应用程序窗口是否会破坏其他内容。我需要注意什么副作用吗?有没有更好的方法来解决这个问题?

我使用的是 Delphi 2007。这些问题在 Windows XP、Vista 和 7 中似乎都是一致的。

更新:一些答案​​似乎认为问题在于申请表图标可见。事实并非如此。我已经将 MainFormOnTaskbar 设置为 true。

此外,如果您正在对此进行测试,请注意 Delphi IDE(仅在 2007 中进行过测试)会使情况变得更糟。尝试这个。打开 Delphi IDE 和记事本的两个实例。最小化 IDE,但两个记事本都未最小化。右键单击选择并排显示窗口。您将看到每个记事本占据了屏幕的 1/3。关闭 IDE 并再次选择“并排显示 Windows”,每个窗口将占据屏幕的 1/2 一半。

最佳答案

在 Delphi 2007(及更高版本)中,如果满足以下条件,应用程序窗口根本不会显示在任务栏上

Application.MainFormOnTaskbar := True;

行位于项目文件 (*.dpr) 中。例如

begin
Application.Initialize;
Application.MainFormOnTaskbar := True; // <--
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TForm8, Form8);
Application.Run;
end.

这是新应用程序的默认设置,但如果您从以前的 Delphi 版本移植应用程序,则此行不存在 - 您应该手动添加此行。

关于delphi - 隐藏Delphi的 "Application"窗口可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6360560/

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