自制一个视频播放,希望控制窗和播放窗在任务栏下都有一个可以点击的条,用于区别控制窗和播放窗,
就象解霸或影霸一样,一弹出任务栏下就会有两个可以点击的条,最好能有两个不同的图标。
现在用一个主Form,一个播放的Form制作,但这时发现两个Form在任务栏下只有一个条可以点击,
因为只有一个工程,无法区别开来,请问有何方法可以解决?谢谢了。
就象解霸或影霸一样,一弹出任务栏下就会有两个可以点击的条,最好能有两个不同的图标。
现在用一个主Form,一个播放的Form制作,但这时发现两个Form在任务栏下只有一个条可以点击,
因为只有一个工程,无法区别开来,请问有何方法可以解决?谢谢了。
解决方案 »
- 怎样让Dll窗体有themes效果?
- 堆排序问题,众高手们进啊!急急急急!!!
- 小问题-------------------这个判断语句如何写?
- 创建窗体,为什么屏幕闪动很厉害?
- 想要像DBGRIDEH这样具有丰富的内嵌编辑器(如金额,日期等编辑器),和最底下有合计条的,但不和数据库感知的GRID组件,哪位知道有?
- 救急!!!请问在rave中进行统计与小计.请给出原码.tks!!!!
- 再發貼(100分)相同結構數據備份恢復問題
- winsock api 的 Listen,Accept,Send,Connect之类的函数如果在单线程中肯定是“阻塞方式”的?
- 好久没有来.大家圣诞节快乐
- 死活搞不定这个问题!!!
- 三层Midas的简单例子,客户端和服务器端在同一台电脑运正常,在网内不同的电脑上客户端查寻SQL提示'拒绝访问',是怎么回事?
- 关于DateTimePicker的郁闷问题
procedure CreateWindowHandle(const Params: TCreateParams); override; 实现:
procedure TForm2.CreateWindowHandle(const Params: TCreateParams);
var
NewParams: TCreateParams;
begin
NewParams:=Params;
NewParams.ExStyle := NewParams.ExStyle or WS_EX_APPWINDOW;
inherited CreateWindowHandle(NewParams);
end;
你的代码很好,基本实现功能,但是经我测试:我把这个过程放在Form2中实现,在弹出Form2后,如果在windows窗口中点击两个窗体,会实现自由切换,一切正常;如果是点击任务栏上的两个任务条时,却发现点击Form2的有效,点击Form1的却无效,点不动,只能将Form2点缩小下来后才能到Form1,这是个不完美的地方,希望能修改一下源代码,补发个完善的上来好吗?
begin
application.MainForm.SetFocus;
end;
这回可是反过来了,在任务栏上点Form1的时候有效,点Form2的时候却无效了,而且用这句写法还多出了两个问题:(1.)Form1被始终被聚焦,而且置于其它窗体最上端。(2.)可能多次点击Form1上的弹出Form2的Button,,这样会在任务栏下生多个任务条来,点几个有几条,要几条有几条。
我试图将以上语句改一下,将它放在其它地方写入,但无法捕获到鼠标点击任务条上的事件,如果能捕获到,则可以在那句中加上聚焦Form2的语句,或许可以解决。
但现在没有一个综合的可行的方案,请指教。各位社区内的大虾们,都来帮忙献献计呀。。另外,也可以发邮箱:[email protected],同样给分,谁先测试好解决的就一次性给了,谢谢了!
以下是两个Form的所有源代码:***********************
unit Unit1;
interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, AppEvnts;type
TForm1 = class(TForm)
BtnClose: TBitBtn;
BtnForm2: TBitBtn;
ApplicationEvents1: TApplicationEvents;
procedure BtnCloseClick(Sender: TObject);
procedure BtnForm2Click(Sender: TObject);
procedure ApplicationEvents1Activate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.BtnCloseClick(Sender: TObject);
begin
Close;
end;procedure TForm1.BtnForm2Click(Sender: TObject);
begin
Application.CreateForm (tForm2,Form2);
Form2.Show ;
end;procedure TForm1.ApplicationEvents1Activate(Sender: TObject);
begin
application.MainForm.SetFocus;
end;end.
***********************
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm2 = class(TForm)
private
{ Private declarations }
procedure CreateWindowHandle(const Params: TCreateParams); override;
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}procedure TForm2.CreateWindowHandle(const Params: TCreateParams);
var
NewParams: TCreateParams;
begin
NewParams:=Params;
NewParams.ExStyle := NewParams.ExStyle or WS_EX_APPWINDOW;
inherited CreateWindowHandle(NewParams);
end;end.
**************如果From1中不用:application.MainForm.SetFocus;一句,是点击任务栏上的Form1条无效,如果用了,是点击任务栏上的Form2条无效。以上代码在点击BtnForm2时,会在任务栏上多次生成Form2任务条,请看创建Form2的写法是否有误。我想,Win2000 server + Delphi6 应该是个常用的配置,不应该需要去更换掉配置才能实现这些功能,所以请帮助解决。
Application.CreateForm (tForm2,Form2);Form2.Show ;
interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, AppEvnts;type
TForm1 = class(TForm)
BtnClose: TBitBtn;
BtnForm2: TButton;
ApplicationEvents1: TApplicationEvents;
procedure BtnCloseClick(Sender: TObject);
procedure BtnForm2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CreateWindowHandle(const Params: TCreateParams); override;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.BtnCloseClick(Sender: TObject);
begin
Close;
end;procedure TForm1.BtnForm2Click(Sender: TObject);
begin
if not Assigned(Form2) then
application.CreateForm (tForm2,Form2);
Form2.Show ;
end;procedure TForm1.FormCreate(Sender: TObject);
var
MF:TForm;
begin
Application.CreateForm(TForm,MF);
MF.BorderStyle := bsnone;
MF.Height := 0;
Show;
ShowWindow(Application.Handle, SW_HIDE);
end;procedure TForm1.CreateWindowHandle(const Params: TCreateParams);
var
NewParams: TCreateParams;
begin
NewParams:=Params;
NewParams.ExStyle := NewParams.ExStyle or WS_EX_APPWINDOW;
inherited CreateWindowHandle(NewParams);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.MainForm.Close;
end;end.