加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

隐藏Delphi的“应用程序”窗口是否可以?

发布时间:2020-12-15 09:31:11 所属栏目:大数据 来源:网络整理
导读:我们刚刚将我们的应用程序从MDI容器移动到单个文档界面.我们的用户习惯使用MDI父级中的“ Windows”菜单并排显示窗口.我们希望训练他们右键单击Windows任务栏并使用那里的窗口管理功能. 使用Delphi应用程序,我们注意到windows shell为隐藏的“Application”
我们刚刚将我们的应用程序从MDI容器移动到单个文档界面.我们的用户习惯使用MDI父级中的“ Windows”菜单并排显示窗口.我们希望训练他们右键单击Windows任务栏并使用那里的窗口管理功能.

使用Delphi应用程序,我们注意到windows shell为隐藏的“Application”窗口留出了空间.因此,如果我只打开两个窗户,它将安排三个房间.应用程序窗口并未真正显示,但仍有空间.

由于我们有两个不同的应用程序,因此情况更糟.如果他们在每个应用程序中只打开一个窗口并想要并排显示它们,那么实际上会尝试占用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,但两个记事本都未最小化.右键单击选择“并排显示Windows”.您将看到每个记事本占据屏幕的1/3.关闭IDE并再次选择“并排显示Windows”,每个屏幕占据屏幕的一半.

解决方法

只要MainFormOnTaskBar为true,您可以通过将此问题添加到DPR来解决问题:

SetWindowLong(Application.Handle,GetWindowLong(Application.Handle,GWL_EXSTYLE) or WS_EX_TOOLWINDOW);

更高版本的Delphi在创建TApplication句柄时会自动包含WS_EX_TOOLWINDOW标志.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读