2 votes

Passer une méthode dans une classe comme argument

J'ai une classe comme celle-ci

class Keyboard
{
public:
    Keyboard(void);
    ~Keyboard(void);
    void SetHook(HINSTANCE hInstance);
    LRESULT CALLBACK keyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam);
};

LRESULT CALLBACK Keyboard::keyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    bool bControlKeyDown=0;
    bool caps = GetKeyState(VK_CAPITAL) < 0;

...

void Keyboard::SetHook(HINSTANCE hInstance)
{
    KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, Keyboard::keyboardHookProc, hInstance, NULL);
}

Mais la déclaration

KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, Keyboard::keyboardHookProc, hInstance, NULL);

Résultat : erreur de compilation

Error   7   error C3867: 'Keyboard::keyboardHookProc': function call missing argument list; use '&Keyboard::keyboardHookProc' to create a pointer to member

Si je passe à '&Keyboard::keyboardHookProc', il y a également une erreur, de même que si je passe à '(HOOKPROC) &Keyboard::keyboardHookProc', il y a également une erreur.

Quelqu'un peut-il m'aider ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X