C ++回调函数

时间:2011-11-18 14:45:29

标签: c++ windows mfc callback

我正在使用afxwin SetTimer函数设置计时器。该函数接收三个参数,其中一个是回调函数。

我在一个类中设置了一个回调函数(让我们称之为NS)并尝试将其作为参数传递。但是编译器抱怨这个:

void (__stdcall NS::*) (HWND, UINT, UINT_PTR, DWORD);

与:

不同
void (__stdcall *) (HWND, UINT, UINT_PTR, DWORD);

我该怎么办?

1 个答案:

答案 0 :(得分:4)

制作函数static *。否则它甚至不是一个函数,而是一个成员函数,这是一个非常不同的动物。此外,正如你所说的那样“将类中的函数作为回调函数传递”是没有意义的:非静态成员函数与对象实例的状态相关联。那个班。

(另外,搜索这个网站,这个问题已经被问了一百多次,并且在整个SO中有很多好的选择。)

*)正如@James指出的那样,如果回调函数有一个C接口,这还不够,在这种情况下你还需要一个免费的extern "C"包装函数。