// 这是在BPL里面的单元内容,为什么不能从窗体类TfPk1Mainfrm.queryinterface(IpkInfo, obj)(100分)

  • 主题发起人 主题发起人 hsgrass
  • 开始时间 开始时间
H

hsgrass

Unregistered / Unconfirmed
GUEST, unregistred user!
// 这是在BPL里面的单元内容,为什么不能从窗体类TfPk1Mainfrm.queryinterface(IpkInfo, obj)
// 如果一个简单的工程, 即可以正确的查询出interface.
// Ipkinfo = interface
//['{73C1F90C-F6B9-404F-BD95-DEF008D06DCE}']
// function GetPluginID: string;
// end;
type
TfPk1Mainfrm = class(TForm, iPkinfo)
btn1: TButton;
lbl1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
function GetPluginID: string;
end;

Ttest = class(TinterfacedObject, Ipkinfo)
function GetPluginID: string;
end;

var
fPk1Mainfrm: TfPk1Mainfrm;

function gcn(out obj): boolean; stdcall;
procedure addctrl(out obj);

exports
gcn, addctrl;

implementation
{$R *.dfm}
procedure addctrl(out obj);
var
i: HRESULT;
t: Ttest;
begin
Application.CreateForm(TForm, fPk1Mainfrm);
i := fPk1Mainfrm.QueryInterface(ipkinfo, obj);
showmessage('TForm: ' + inttostr(i) + #13 + SysErrorMessage(i)); // 显示为不支持接口
fPk1Mainfrm.Free;

t := Ttest.Create;
i := t.QueryInterface(ipkinfo, obj);
showmessage('Tobject: ' + inttostr(i) + #13 + SysErrorMessage(i));
// t.free; // outside free
end;
 
帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯
 
补充: 单元下面有registerclass(..)的
直接Tobject(TfPk1Mainfrm).Getinterface...也是不行
 
Ding.......
 
帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

个人网站站长开发推广同盟,让所有人知道你的世界!

http://www.source520.com/search/search.asp

╰=========================================╯
 
后退
顶部