如何正确统计子窗口的数目(50分)

  • 主题发起人 主题发起人 diecode
  • 开始时间 开始时间
D

diecode

Unregistered / Unconfirmed
GUEST, unregistred user!
子窗口全部从动态库里创建
在主程序中,MDIChildCount属性始终为0,不管我创建多少个子窗口
而子窗口中的操作一切正常
不知道为什么?
 
Screen.FormCount呢
 
Screen.FormCount
统计的不仅仅是窗口的个数
 
在DLL中傳主窗體的Handle並在DLL中把子窗體的ParentWindow設為主窗體的Handle
 
djrj,
还是0啊
 
你是怎么创建的?创建语句?
 
application := app ;
//Form.MDIChildCount
if assigned(Form1) then exit;
// application.CreateForm(TForm1,Form1);
// Form1.ParentWindow := Form.Handle ;
Form1 := TForm1.Create(Form);
Form1.FormStyle := fsMDIChild ;
Form1.ParentWindow := Form.Handle ;
Form1.Show ;
两中方法都试过,不行
 
把SCREEN对象也传到DLL中去,并赋值给DLL中的SCREEN对象
 
同意肥羊的,你应该还传入一个screen,否则是无法访问MDIChildCount的:
不过你别忘了,在传入application和screen以前先把dll本身的application和screen保存起来,否则在dll线程结束释放资源的时候可能会出错

主进程:
type
TShowFrm = procedure(App: TApplication; Scr:TScreen); stdcall;
...
implementation
...
procedure TForm1.Button2Click(Sender: TObject);
var
AFunc: Pointer;
begin
Pointer(AFunc) := GetProcAddress(hInstance, PChar (‘ShowFrm‘));
TShowFrm(AFunc)(Application, Screen);
end;


//---------------------------------------------------

DLL工程文件:

procedure ShowFrm(App:TApplication; Scr: TScreen); stdcall;
begin
Application := App;
Screen := Scr;
App.CreateForm(TForm2, Form2);
Form2.Show;
end;
 

Similar threads

回复
0
查看
572
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部