我需要从任务栏隐藏Windows窗体但我无法使用,WS_EX_TOOLWINDOW
因为我需要系统菜单和窗体标题栏上的最小/最大按钮.
如果我在运行时将表单切换到工具窗口,表单外观会被填满.从Web上搜索,我看到VB有一个ShowInTaskbar属性,我想知道这是否能做我想要的,以及它是否可以在Delphi 2006中实现.此项目也是一个COM服务器,没有MainForm等.
感谢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;
有这个确切的问题的一个有趣的讨论在这里(从VB6 persepective).
从你的问题的角度来看,最相关的一点是:
"当您创建窗口时,任务栏会检查窗口的扩展样式,以查看是否打开了WS_EX_APPWIND(&H40000)或WS_EX_TOOLWINDOW(&H80)样式.如果打开WS_EX_APPWINDOW,任务栏会显示窗口的按钮,如果WS_EX_ TOOLWINDOW打开,任务栏没有显示窗口的按钮.窗口不应该同时具有这两种扩展样式.如果窗口没有这些样式中的任何一种,任务栏决定在窗口中创建一个按钮是无主的,如果窗口是拥有的,则不会创建按钮."
顺便提一下,您使用带有GW_OWNER标志的GetWindow API函数来确定是否拥有窗口.