当前位置:  开发笔记 > 后端 > 正文

不使用WS_EX_TOOLWIN隐藏表单的任务栏按钮

如何解决《不使用WS_EX_TOOLWIN隐藏表单的任务栏按钮》经验,为你挑选了2个好方法。

我需要从任务栏隐藏Windows窗体但我无法使用,WS_EX_TOOLWINDOW因为我需要系统菜单和窗体标题栏上的最小/最大按钮.

如果我在运行时将表单切换到工具窗口,表单外观会被填满.从Web上搜索,我看到VB有一个ShowInTaskbar属性,我想知道这是否能做我想要的,以及它是否可以在Delphi 2006中实现.此项目也是一个COM服务器,没有MainForm等.



1> 小智..:

感谢Stu让我快速回答问题.在我的情况下,我不得不手动将拥有表单的句柄添加到CreateParams中,但在其他/正常情况下可能不需要.

procedure TfrmWord2Site.CreateParams(var Params:TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent := .Handle;
  Params.ExStyle := Params.ExStyle and not WS_EX_APPWINDOW;
end;



2> Stu Mackella..:

有这个确切的问题的一个有趣的讨论在这里(从VB6 persepective).

从你的问题的角度来看,最相关的一点是:

"当您创建窗口时,任务栏会检查窗口的扩展样式,以查看是否打开了WS_EX_APPWIND(&H40000)或WS_EX_TOOLWINDOW(&H80)样式.如果打开WS_EX_APPWINDOW,任务栏会显示窗口的按钮,如果WS_EX_ TOOLWINDOW打开,任务栏没有显示窗口的按钮.窗口不应该同时具有这两种扩展样式.如果窗口没有这些样式中的任何一种,任务栏决定在窗口中创建一个按钮是无主的,如果窗口是拥有的,则不会创建按钮."

顺便提一下,您使用带有GW_OWNER标志的GetWindow API函数来确定是否拥有窗口.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有