为什么用DELPHI开发的DLL输出的FORM,BCB无法调用?
szwxj 2005-10-25 12:38:38 用DELPHI创建一个DLL,输出一个窗体,然后在BCB中调用。
关键代码如下:
方法一:返回类类型
type
TMyFormClass = class of TForm ;
function HelloForm(var aForm : TMyFormClass) : boolean ; stdcall ; export ;
begin
aForm := TForm1;
Result := true ;
end ;
对应的C++的声明应该是:
bool HelloForm (TMetaClass* & aForm) ;
但不知道应该如何创建窗体? DELPHI中可以简单地直接利用返回值:aForm.Create(nil);
方法二:直接返回窗体对象
function HelloForm2(var aForm : TForm ) : boolean ; stdcall ; export ;
begin
aForm := TForm1.Create(nil);
Result := true ;
end ;
对应的C++的声明应该是:
bool HelloForm (TForm* & aForm) ; 或者 bool HelloForm (TForm* * aForm) ;
对应上述声明的调用则是:
TForm* aTestForm ;
HelloForm(aTestForm) ; 或者 HelloForm( &aTestForm) ;
但不知道应该如何显示窗体? DELPHI中可以简单地直接利用返回值:aForm.ShowModal;
C++中利用返回值:
aForm->Left = 0; //right
aForm->ShowModal(); //wrong
谁知道为什么会这样?如何改正?