Delphi中stdcall类型的函数能否成为一个类的Published member?(100分)

  • 主题发起人 主题发起人 zw84611
  • 开始时间 开始时间
Z

zw84611

Unregistered / Unconfirmed
GUEST, unregistred user!
好久不用delphi了,今天师兄要我用Delphi给他写个小程序。我自找麻烦,为此写了一个
控件,遇到一个问题
Delphi中stdcall类型的函数能否成为一个类的Published member?
该函数实际上是一个dll的回调函数,必须用stdcall声明,我想把它作为控件的一个事件,
可以吗?
 
不可以
Published member 必须采用register即缺省得那种
建议你写一个函数将其重新封装一下
 
自己写一个新的 Published member,在里面调用那个 stdcall 的函数:)

 
你看看DELPHI的ACTIVEX控件,里面是如何处理那些STDCALL函数就知道如何处理了
 
我也认为不可以
 
好像可以的吧!
type
TEasyDcomServer = class(TRemoteDataModule, IEasyDcomServer)
DSP_A: TDataSetProvider;
private
CallBackTemp:OleVariant;
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean
const ClassID, ProgID: string)
override;
procedure Connect(vClient: OleVariant)
safecall;
published
procedure SendMessage(const sMsg: WideString)
safecall;
{ Public declarations }
end;
我这样编译通过的,测试了一下,运行也没问题。
 
错了,代码是这样的。
type
TEasyDcomServer = class(TRemoteDataModule, IEasyDcomServer)
DSP_A: TDataSetProvider;
private
CallBackTemp:OleVariant;
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean
const ClassID, ProgID: string)
override;
procedure Connect(vClient: OleVariant)
safecall;
published
procedure SendMessage(const sMsg: WideString)
stdcall;
{ Public declarations }
end;
 
不行的.Published成员方法必须为Register调用方式。

 
多人接受答案了。
 
后退
顶部