将winAPI消息回调函数设置为类的方法是否可行.如果是这样,这将如何最好地实施?我想知道它是否有可能.
很抱歉这个简短的问题,希望您能够提供有用的回复.
提前致谢 :).
您不能将非static成员函数用于C回调.
但是,通常C回调都有一个用户数据指针,该指针被路由到回调.可以通过static成员函数帮助您进行操作:
// Beware, brain-compiled code ahead!
typedef void (*callback)(int blah, void* user_data);
void some_func(callback cb, void* user_data);
class my_class {
public:
// ...
void call_some_func()
{
some_func(&callback_,this);
}
private:
void callback(int blah)
{
std::cout << blah << '\n';
}
static void callback_(int blah, void* user_data)
{
my_class* that = static_cast<my_class*>(user_data);
that->callback(blah);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5119 次 |
| 最近记录: |