能答出这个问题的朋友,可以称的上是系统级的高手了,出200分悬赏哟!!!(200分)

  • 主题发起人 主题发起人 occult
  • 开始时间 开始时间
O

occult

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何能作出类似TheBat,FoxMail3中那种虽只有一个程序运行,却可以
在任务栏上显示多个标题的方法(当这些程序在收信时,就可以发现,主程
序一个标题呈现在任务栏上,收件的对话框的标题也呈现在任务栏上,而且
可以有许多个)。

我一开始自己考虑了一下,觉的可能是主程序的进程创建了一个子进程,利用
父子进程继承的方法来写的,但不知是否正确,而且也不知具体代码的实现究
竟该如何写,所以有请高手指点迷津。

Pipi,HBzhang你们应该知道的,请说一下吧
 
这个问题以前就讨论过了, 用MDI关键字找找吧
 
用MDI查过了,没有啊,谁知道说一下吧
 
是Pipi.吧
 
就这么简单的问题?
不需要高手呀, 我就能解决
很简单一个例子:
用Delphi建2个form, Form1和Form2;
form1上放一个Button(Button1), Form2上啥都没有.
修改工程文件, 去掉 Application.CreateForm(TForm2, Form2)那句.
form1.Button1写OnClick事件代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
H: HWND;
begin
if Assigned(Form2) then
begin
H := GetDesktopWindow;
Form2 := TForm2.CreateWindow(H);
end;
Form2.Show;
end;

运行它, 然后你的注意力可以集中到任务条上了.
Amazing~~~~!!?
 
//CreateParams是基类的虚函数,使用的时候重载它.
procedure TForm3.CreateParams(var Params:TCreateParams);
begin
inherited;
with Params do
begin
WndParent:=0;//此行
end;
end;
 
Another_eYes提供的解决方法无法通过,首先是不能理清有关您这种方法的思路,
procedure TForm1.Button1Click(Sender: TObject);
var
H: HWND;
begin
if Assigned(Form2) then
begin
H := GetDesktopWindow;
//----》获取桌面的句柄有何用呢?
Form2 := TForm2.CreateWindow(H);
//----》这个CreateWindow的函数也不明所以,VCL中好像没有吧,到是WinApi中有一个,
// 但原型也不是这样的吧???
end;
Form2.Show;
end;

---------------------------------------
到是liguang的方法切实可行,思路清晰,200大元付给您了,呵呵
 
多人接受答案了。
 
呵呵, 回答有误.
应该是
Form2 := TForm2.CreateParented(H);
Form2.Show;

如果你还不能理清思路的话我看就不是我的问题了.
 
至Another_eYes:
Form2 := TForm2.CreateParented(H);
Form2.Show;

这个方法,我也试过了,无法调通的呀,Delphi好像好像提示访问一个非法的地址,
我用的环境是D5+Win2K
 
后退
顶部