我在dll中封装了很多窗口在第二个窗口中按一按钮打开第三个窗口时发送一个消息很调用主程序通讯
PostMessage(Application.MainForm.Handle,WM_User+9,Integer(PChar('TForm3')),0);
目的是将第三个窗口类发送到主程序中,主程序处理函数为
procedure Tfmmain.openchild(var MSG: TMessage);
var
  myClass : TMyFormClass;
  strClassName : string;               //  
begin
  strClassName := PChar(MSG.WParam);
  myClass := TMyFormClass(FindClass(strClassName));  //创建类实例
  OpenMdiWin_Spec(myClass);//参数为窗口类
end;
FindClass()函数无法取得dll中的封装窗口
请问有什么办法实现我的功能????

解决方案 »

  1.   

    FindClass只对TPersist及其派生类有效,且只能获取用RegisterClass或RegisterClasses注册过的类。在你的Forms的单元的initialization节里加上Classes.RegisterClass(TForm3)吧。有必要也注册其它窗体类。
      

  2.   

    你说的注册这个在同一个exe中有效,我的窗口是从dll中去出,无法注册
      

  3.   

    无论是EXE还是DLL,只有当控件被创建的时候(TWinControl.CreateWnd),控件才会注册各自的类。注册过之后,才能被FindClass找到