Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏.
2013-07-04 17:33
204 查看
Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏. Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏.
没有MS开发环境中的ShowInTaskBar属性.
解决办法:
1.重载窗口 CreateParams 方法以实现,ShowInTaskBar效果
procedure CreateParams(var Params: TCreateParams);override;
procedure Tform1.CreateParams(var Params:TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := GetDesktopWindow;
end;
能实现显示在任务栏,但是,会有个令人不快的麻烦,如果你在这个窗口上
启用 ShowHint 功能(类似ShowToolTip),并设置 相关控件的 Hint,则会在
显示此提示内容时, 窗口会自动失去焦点,置于主窗口之后,(像是被 SentToBack 了)
莫名其妙,花了我半个小时,将两个窗口对比,才发现是,重载窗口 CreateParams
造成的.这才想到用API来作,(不熟悉Delphi,也不知道还有什么方法)
2.使用API函数 SetWindowLong 实现;
SetWindowLong在delphi Windows 单元已经作了申明,可直接使用;
procedure Tform1.FormCreate(Sender: TObject);
begin
SetWindowLong(self.Handle, GWL_EXSTYLE, WS_EX_APPWINDOW);
end;
终于不再有 重载窗口 CreateParams 方法实现后的 ShowHint 问题.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2009731
另选:
在你的FORM中重载一个函数就行
protected
procedure CreateParams(var Params: TCreateParams); override;
public
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
没有MS开发环境中的ShowInTaskBar属性.
解决办法:
1.重载窗口 CreateParams 方法以实现,ShowInTaskBar效果
procedure CreateParams(var Params: TCreateParams);override;
procedure Tform1.CreateParams(var Params:TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := GetDesktopWindow;
end;
能实现显示在任务栏,但是,会有个令人不快的麻烦,如果你在这个窗口上
启用 ShowHint 功能(类似ShowToolTip),并设置 相关控件的 Hint,则会在
显示此提示内容时, 窗口会自动失去焦点,置于主窗口之后,(像是被 SentToBack 了)
莫名其妙,花了我半个小时,将两个窗口对比,才发现是,重载窗口 CreateParams
造成的.这才想到用API来作,(不熟悉Delphi,也不知道还有什么方法)
2.使用API函数 SetWindowLong 实现;
SetWindowLong在delphi Windows 单元已经作了申明,可直接使用;
procedure Tform1.FormCreate(Sender: TObject);
begin
SetWindowLong(self.Handle, GWL_EXSTYLE, WS_EX_APPWINDOW);
end;
终于不再有 重载窗口 CreateParams 方法实现后的 ShowHint 问题.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2009731
另选:
在你的FORM中重载一个函数就行
protected
procedure CreateParams(var Params: TCreateParams); override;
public
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
相关文章推荐
- Delphi 类似实现多窗口显示任务栏上
- Delphi 实现任务栏多窗口图标显示
- Delphi使窗口最小化后显示在任务栏上
- Delphi 实现任务栏多窗口图标显示
- Delphi 实现任务栏多窗口图标显示
- Delphi 类似实现QQ多窗口显示任务栏上
- Delphi XE2 - 实现主窗口在任务栏上不显示
- 在Delphi中如何控制其它应用程序窗口
- Delphi 类似实现QQ多窗口显示任务栏上
- Delphi 类似实现QQ多窗口显示任务栏上
- 在Delphi中如何控制其它应用程序窗口
- 非应用程序主窗口显示在任务栏的问题
- ActiveForm 中显示模式窗口,当切换为其它应用程序,再切回来后应用程序不能获得焦点,模式窗口到应用程序的后面了,怎么办
- Delphi 实现任务栏多窗口图标显示(使用WS_EX_APPWINDOW风格)
- C#关于如何在任务栏中隐藏和显示其它应用程序的图标
- Delphi 类似实现QQ多窗口显示任务栏上
- 在Delphi中如何控制其它应用程序窗口
- 在Delphi中如何控制其它应用程序窗口
- Delphi下让窗口不显示在任务栏的另类方法
- Delphi 位操作及多显示器窗口显示