私はこの静的コールバック関数をMyClassに持っていますが、私はそこから別の静的関数を呼び出そうとしています。しかし、問題はありますが、Register()がとる引数の1つは非静的なクラス変数です。静的関数内の非静的パラメータ
私はこの問題を克服するために "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