問題

私は(タスクバーに)最小化したいウィンドウを持っているので、私はShowWindowを呼び出します:

 ShowWindow(Handle, SW_MINIMIZE);
 

(タスクバーに)最小化するのではなく、ウィンドウがアイコン化されます。

enter image description here

ウィンドウは不明です:

enter image description here

タスクバーへのウィンドウを最小限に抑えるにはどうすればよいですか?


更新:

2002 からのアドバイスに続いて、私はWS_EX_APPWINDOWウィンドウスタイルを設定しようとします。

enter image description here

残念ながら、これは私の(Delphi)アプリケーションの動作を変更します。なぜなら、アプリケーションのタスクバーアイコンが1つではなく2つあるからです。

enter image description here

これはもちろん、Delphi(5)のアーティファクトです。私はだったので、別の問題を解決しようとしていました。

しかし、それはこの質問には影響しません。私はShowWindow(..., SW_MINIMIZE) APIを呼び出していますが、ウィンドウを最小限に抑えるのではなく、アプリケーションをiconifyingしています。

タスクバーへのウィンドウを最小限に抑えるにはどうすればよいですか?

  ベストアンサー

タスクバーのそのアイコンは、MainFormではなくApplication(Handle)のアイコンです。

使用:

 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のタスクバーアイコンのみを持つ):このフォームのVisibleプロパティをTrueに設定し、プロジェクトファイル内のアプリケーションを非表示にします。

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

このフォームでは、ShowWindow(Handle, SW_MINIMIZE); shouldが動作します。また、Windowsのデフォルトのzooming-featureを最小化または復元するときに提供します。

(XPとW7でD5&D7でテスト済み)

  同じタグがついた質問を見る

windowsdelphiwindows-7delphi-5windows-95