У меня есть эта статическая функция обратного вызова в 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' там. – Nate