我有一个我想最小化的窗口(到任务栏),所以我打电话给ShowWindow
:
ShowWindow(Handle, SW_MINIMIZE);
除了最小化自身(到任务栏),窗口图标化:
窗口没有图片:
如何最小化任务栏的窗口?
更新
Following some advice from 2002,我尝试设置WS_EX_APPWINDOW
窗口样式和/或确保窗口没有所有者:
不幸的是,这改变了我的(Delphi)应用程序的行为,因为我的应用程序现在有两个任务栏图标,而不是一个:
这当然是Delphi(5)的神器;因为我是trying to solve another issue。
但这不应该影响这个问题。我正在调用ShowWindow(..., SW_MINIMIZE)
API,而不是最小化Windows窗口图标化应用程序。
如何最小化任务栏的窗口?
答案 0 :(得分:10)
任务栏上的图标是应用程序(句柄)的图标,而不是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的任务栏图标):将此Form的Visible
属性设置为True
并隐藏项目文件中的Application:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
ShowWindow(Application.Handle, SW_HIDE);
Application.Run;
对于此表单,ShowWindow(Handle, SW_MINIMIZE);
shóuld工作。它还在最小化或恢复时提供Windows的默认缩放功能。
(在XP和W7上用D5和D7测试)
答案 1 :(得分:0)