如何最小化任务栏窗口? (即未图标化)

问题描述 投票:7回答:2

我有一个要最小化的窗口(到任务栏),所以我叫ShowWindow

ShowWindow(Handle, SW_MINIMIZE);

除了不是将自己最小化(到任务栏),该窗口是iconized

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS81T1pxRS5wbmcifQ==” alt =“在此处输入图像描述”>

该窗口是非父窗口:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9DdFJKRS5wbmcifQ==” alt =“在此处输入图像描述”>

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


更新:

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

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9SRVpJWi5wbmcifQ==” alt =“在此处输入图像描述”>

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

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9pZExkei5wbmcifQ==” alt =“在此处输入图像描述”>

当然是Delphi(5)的人工制品;并且因为我是trying to solve another issue

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

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

windows delphi windows-7 delphi-5 windows-95
2个回答
10
投票

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

用途:

Application.Minimize;

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

这适用于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有一个任务栏图标):将此Form的Visible属性设置为True并将该Application隐藏在项目文件中:

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

对于此表格,ShowWindow(Handle, SW_MINIMIZE);应该有效。当最小化或还原时,它还提供Windows的默认缩放功能。

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


0
投票

超级简单的解决方案是禁用FORM上的最小化图标[对象检查器]-[表单属性]-[边框图标]-[biMinimize]通过单击任务栏上的“应用程序”图标,仍可以最小化和还原该应用程序。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.