社区
Windows SDK/API
帖子详情
能不能让一个对象方法作回调函数?
zqc-tutorial
2003-12-02 04:13:42
通常好象都是这样做的:
function EnumWindowsProc(hWnd: HWnd; lParam: Integer): Boolean; stdcall;
begin
...
end;
...
EnumWindows(@EnumWindowsProc, 0);
现在如果上面那个回调函数是一个对象方法,程序运行就会有问题。
但是对象方法能不能做回调函数呢?
如果能,又该怎么做呢?
...全文
155
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;
C++类成员函数
作
回调函数
C++类成员函数
作
回调函数
,示例:C++消息注册派发模式
[转发]将Delphi的
对象
方法
设为
回调函数
心血来潮,为了实现更好的通用性和封装性,需要把类
方法
作
为
回调函数
,搜得一篇好文,节选转发。命名似乎应该是MethodToCallback才合适,可惜调试时总是报错,debugging。 原文地址:http://blog.csdn.net/linzhengqun/article/details/1451088 Win32的API有一些需要
回调函数
,说白了就是函数指针...
【普通函数/函数指针】和【函数
对象
】
作
参数的区别及使用
就几个例子简单介绍一下【函数指针】和【函数
对象
】的区别,后面还会继续更新C++函数
对象
不是函数指针,它是
一个
类重载(),它的调用方式与函数指针一样,后面加个括号就可以了。既然C++函数
对象
与函数指针在使用方式上没什么区别,那为什么要用函数
对象
呢?很简单,函数
对象
可以携带附加数据,而指针就不行了。 这里可以看出C++函数
对象
可以更改less( num)的num值附加数据,而函数指针只能指向
一个
地址,不具备这种功能。但是函数
对象
并
不能
完全替代函数指针,比如函数
对象
不能
做
回调函数
,因为类的成员函数的地址只有在实例
函数
对象
替代函数指针
作
回调函数
函数指针实在是个讨厌的东西,说实话,我很讨厌他的语法,非常丑陋,而且有很多局限性,起码
不能
保有数据,函数
对象
是
一个
替换函数指针的好东东,通过重载operator()操
作
符,可以实现与函数指针几乎完全一致的功能。最近在看《C++必知必会》,里面讲到用函数
对象
替代函数指针,还有例子,觉得很好,贴出来,供兄弟们一起参考研究。下面的代码并不复杂,先定义了
一个
基类函数
对象
Action,Button类带有
【C++】
回调函数
和回调
对象
【代码】【C++】
回调函数
和回调
对象
。
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章