怎样让创建的MDI子窗口能够显示在任务栏上 ( 积分: 30 )

  • 主题发起人 主题发起人 siaosa
  • 开始时间 开始时间
楼上的好奇怪,鄙视人家干嘛,他说的一点也没错啊。另外Office2000也都是这样。
 
學習學習。。。。
 
对啊,现在的Office就可以在任务栏上有多个出现。有多少个打开的文档,在任务栏上就有多少个栏位。微软可以做到,我相信大家也是可以做到的。
不过我还不会,呵呵。
 
子窗口出现在任务栏中不太难, 这与子窗口的部分属性的设置有关.
 
微软的是COM服务器,性质不同吧。。。
 
学习顶一下,看到了不少。
 
MID子窗体的实现代码如下:
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Button1: TButton;
private
FHandleTaskBar : TCustomForm;
FT : HWND;
protected

public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;

end;

var
Form2: TForm2;

implementation

{$R *.dfm}

Type
TTaskbarForm = class(TCustomForm)
private
FMDIChild : TCustomForm;
protected

procedure CreateParams(var Params: TCreateParams); override;
procedure WndProc(var Message: TMessage); override;
public
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); override;
end;

{ TForm2 }

constructor TForm2.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHandleTaskBar := TTaskbarForm.CreateNew(Self);
FHandleTaskBar.Show;
end;

destructor TForm2.Destroy;
begin
FHandleTaskBar.Free;
inherited Destroy;
end;

{ TTaskbarForm }


constructor TTaskbarForm.CreateNew(AOwner: TComponent; Dummy: Integer);
begin
inherited CreateNew(AOwner);
FMDIChild := TCustomForm(AOwner);
Caption := FMDIChild.Caption;
BorderStyle := bsNone;
Height := 0;
Width := 0;

end;

procedure TTaskbarForm.CreateParams(var Params: TCreateParams);
begin
Inherited CreateParams(Params);
With Params Do exStyle := exStyle Or WS_EX_APPWINDOW;

end;

procedure TTaskbarForm.WndProc(var Message: TMessage);
begin
case Message.Msg of
WM_ACTIVATE,
WM_SETFOCUS,
WM_KILLFOCUS,
WM_APP,
WM_APPCOMMAND,
WM_SYSCOMMAND:
begin
FMDIChild.Perform(Message.Msg, Message.WParam, Message.LParam);
end;
else
inherited WndProc( Message);
end;
end;

end.
 
到此一游!顶有想法才有进步
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
556
import
I
I
回复
0
查看
555
import
I
后退
顶部