【发布时间】:2012-04-05 16:08:09
【问题描述】:
我在 MyClass 中有这个静态回调函数,我尝试从中调用另一个静态函数。但是有一个问题,Register() 采用的参数之一是非静态类变量。
我曾想过使用“this”关键字来解决这个问题,但似乎我做不到(“this”:只能在非静态成员函数中引用)。这是我的代码:
class MyClass
{
...
static LRESULT CALLBACK klHkProc(int nCode, WPARAM wParam, LPARAM lParam);
static BOOL Register(DWORD vKey,KEYBLOCK* ptrKEYBLOCK);
KEYBLOCK *kb;
...
}
LRESULT CALLBACK MyClass::klHkProc(int nCode, WPARAM wParam, LPARAM lParam)
{
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) (lParam);
if (wParam == WM_KEYDOWN)
{
MyClass::Register(p->vkCode,this->kb);
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
有什么建议吗?
【问题讨论】:
-
静态函数不能访问实例成员。您想从哪里获取实例?
-
您是否有地方可以将额外数据传递到您注册回调的地方?如果是这样,您可以在那里传递
this。
标签: c++ class variables static non-static