社区
Windows SDK/API
帖子详情
能不能让一个对象方法作回调函数?
zqc-tutorial
2003-12-02 04:13:42
通常好象都是这样做的:
function EnumWindowsProc(hWnd: HWnd; lParam: Integer): Boolean; stdcall;
begin
...
end;
...
EnumWindows(@EnumWindowsProc, 0);
现在如果上面那个回调函数是一个对象方法,程序运行就会有问题。
但是对象方法能不能做回调函数呢?
如果能,又该怎么做呢?
...全文
87
4
打赏
收藏
能不能让一个对象方法作回调函数?
通常好象都是这样做的: function EnumWindowsProc(hWnd: HWnd; lParam: Integer): Boolean; stdcall; begin ... end; ... EnumWindows(@EnumWindowsProc, 0); 现在如果上面那个回调函数是一个对象方法,程序运行就会有问题。 但是对象方法能不能做回调函数呢? 如果能,又该怎么做呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zqc-tutorial
2003-12-03
打赏
举报
回复
这样失去了对象方法的意义,用了也没什么意义了。
fengyvn
2003-12-02
打赏
举报
回复
补充一下,如果用方法作为回调函数,方法必须是public或published,否则methodAddress会返回nil.
午秋
2003-12-02
打赏
举报
回复
不过要注意的是,在
function TForm1.EnumWindowsProc(hWnd: HWnd; lParam: Integer): Boolean;
里使用TForm1上的控件时,一定要加上全名:
如ListBox1一定要写成Form1.ListBox1
午秋
2003-12-02
打赏
举报
回复
可以,用MethodAddress方法,
例如:
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
function EnumWindowsProc(hWnd: HWnd; lParam: Integer): Boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.EnumWindowsProc(hWnd: HWnd; lParam: Integer): Boolean;
begin
ShowMessage('hello');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(Self.MethodAddress('EnumWindowsProc'), 0);
end;
Windows SDK/API
1,183
社区成员
22,335
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章