DLL 中给 Form的ListView写值 输出函数不写 stdcall 就报错~为什么?该怎么处理
DLL 中给 Form的ListView写值 输出函数不写 stdcall 就报错~为什么??
------DLL---------
library TestDLL;
uses
ShareMem,
SysUtils,ComCtrls,
Classes;
procedure Filllistview(lv:TListView);stdcall;//这里不写stdcall程序就报错!!!
var lt : TListItem;
begin
if not Assigned(lv) then exit;
lt := lv.Items.Add;
lt.Caption := 'tests';
lt.SubItems.Add('ABCDEFG');
end;
{$R *.res}
exports
Filllistview;
begin
end.
----------------------
而Form里直接写就没错!
procedure TForm1.Button11Click(Sender: TObject);
var lt : TListItem;
begin
lt := ListView1.Items.Add;
lt.Caption := 'tests';
lt.SubItems.Add('ABCDEFG');
end;
这是咋回事情???
------解决方案--------------------
stdcall是Windows API的标准调用方式。如果不是作成dll被其他程序(特别是用其它工具,如VC开发的)调用,一般不用加。
------解决方案--------------------
我想问 在DLL中操作了 listview 的句柄 是不是 就有问题的呢?
不会有问题的!
------DLL---------
library TestDLL;
uses
ShareMem,
SysUtils,ComCtrls,
Classes;
procedure Filllistview(lv:TListView);stdcall;//这里不写stdcall程序就报错!!!
var lt : TListItem;
begin
if not Assigned(lv) then exit;
lt := lv.Items.Add;
lt.Caption := 'tests';
lt.SubItems.Add('ABCDEFG');
end;
{$R *.res}
exports
Filllistview;
begin
end.
----------------------
而Form里直接写就没错!
procedure TForm1.Button11Click(Sender: TObject);
var lt : TListItem;
begin
lt := ListView1.Items.Add;
lt.Caption := 'tests';
lt.SubItems.Add('ABCDEFG');
end;
这是咋回事情???
------解决方案--------------------
stdcall是Windows API的标准调用方式。如果不是作成dll被其他程序(特别是用其它工具,如VC开发的)调用,一般不用加。
------解决方案--------------------
我想问 在DLL中操作了 listview 的句柄 是不是 就有问题的呢?
不会有问题的!