Как свернуть окно на панель задач? (т. е. не iconify)

у меня есть окно, которое я хочу свернуть (на панель задач), поэтому я вызываю ShowWindow:

ShowWindow(Handle, SW_MINIMIZE);

за исключением того, что вместо того, чтобы минимизировать себя (на панели задач), окно iconified:

enter image description here

окно лишенные родительских прав:

enter image description here

как свернуть окно на панель задач?


обновление:

следуя некоторым советам от 2002, я пытаюсь установить WS_EX_APPWINDOW стиль окна и / или обеспечение того, что окно не имеет владельца:

enter image description here

к сожалению, это изменяет поведение моего (Delphi) приложения, потому что теперь есть два панель задач иконки для моего приложения, а не один:

enter image description here

это, конечно, артефакт Дельфи (5); и потому что я был пытается решить другую проблему.

но это не должно влиять на этот вопрос. я звоню the ShowWindow(..., SW_MINIMIZE) API, и вместо того, чтобы минимизировать окна окна iconifying приложение.

как свернуть окно на панель задач?

1 ответов


этот значок на панели задач является значком приложения (дескриптора), а не основной формы.

использование:

Application.Minimize;

Edit: но из обеих ваших ссылок я понимаю,что вы это уже знали...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;

и скрыть приложения.Дескриптор с панели задач (чтобы иметь только значок панели задач для основной формы): установите Visible свойство этой формы to True и скрыть приложения в файле проекта:

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

для этой формы ShowWindow(Handle, SW_MINIMIZE); shóuld работа. Он также обеспечивает функцию масштабирования по умолчанию Windows при минимизации или восстановлении.

(протестировано с D5 & D7 на XP и W7)