gpt4 book ai didi

windows - 如何最小化任务栏的窗口? (即不图标化)

转载 作者:可可西里 更新时间:2023-11-01 13:06:34 38 4
gpt4 key购买 nike

我有一个我想最小化的窗口(到任务栏),所以我调用 ShowWindow:

ShowWindow(Handle, SW_MINIMIZE);

除了不是最小化自身(到任务栏),窗口是图标化:

enter image description here

窗口没有父级:

enter image description here

如何最小化任务栏的窗口?


更新:

Following some advice from 2002 ,我尝试设置 WS_EX_APPWINDOW 窗口样式和/或确保窗口没有所有者:

enter image description here

不幸的是,这改变了我的 (Delphi) 应用程序的行为,因为现在我的应用程序有两个任务栏图标,而不是一个:

enter image description here

这当然是Delphi的神器(5);因为我是 trying to solve another issue .

但这不应该影响这个问题。我正在调用 ShowWindow(..., SW_MINIMIZE) API,而不是最小化窗口,Windows 正在图标化应用程序。

如何最小化任务栏的窗口?

最佳答案

任务栏上的那个图标是应用程序(句柄)的图标,而不是 MainForm 的图标。

使用:

Application.Minimize;

编辑:但是从你的两个链接中,我知道你已经知道了......呃;)

这适用于 MainForm:

TForm1 = class(TForm)
private
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
protected
procedure CreateParams(var Params: TCreateParams); override;

...

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle := ExStyle or WS_EX_APPWINDOW;
WndParent := GetDesktopWindow;
end;
end;

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType = SC_MINIMIZE then
ShowWindow(Handle, SW_MINIMIZE)
else
inherited;
end;

并从任务栏中隐藏 Application.Handle(只有 MainForm 的任务栏图标):将此窗体的 Visible 属性设置为 True 并隐藏项目文件中的应用:

Application.Initialize;
Application.CreateForm(TForm1, Form1);
ShowWindow(Application.Handle, SW_HIDE);
Application.Run;

对于这种形式,ShowWindow(Handle, SW_MINIMIZE); 应该可以工作。它还在最小化或恢复时提供 Windows 的默认缩放功能。

(在 XP 和 W7 上使用 D5 和 D7 测试)

关于windows - 如何最小化任务栏的窗口? (即不图标化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228966/

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