Hi
My problem was : Make a CALLBACK function a friend function from a class in a namespace.
Platform : Windows XP sp2
Language : C++
Using Microsoft Visual Studio 2008
The solution i found is :
namespace device {
namespace input {
class Keyboard
{
friend LRESULT LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
//friend LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam); //Same Error as above
public:
Keyboard();
~Keyboard();
private:
int KeyboardProc( int nCode, WPARAM wParam, LPARAM lParam );
};
}
}
#include "stdafx.h"
#include "KeyboardDevice.hpp" // Class Keyboard
#include <iostream>
static device::input::Keyboard* pKBDev;
HHOOK hkb;
HINSTANCE hins;
//... some code ....
LRESULT CALLBACK device::input::LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode < 0)
return CallNextHookEx(hkb, nCode, wParam, lParam);
pKBDev->KeyboardProc( nCode, wParam, lParam );
return CallNextHookEx(hkb, nCode, wParam, lParam);
}
extern "C" __declspec(dllexport) BOOL installhook()
{
hkb=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)device::input::LowLevelKeyboardProc,hins,0);
return TRUE;
}
[Edited by - michaudj on May 7, 2008 1:03:53 PM]