Hey,
I get this error when I compile the following code:
Here's the keyboardhook.h source:Code:1>c:\users\******\desktop\macrokeys 4\macrokeys 4\keyboardhook.cpp(12) : error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'HOOKPROC'
Here is the code for keyboardhook.cppCode:#ifndef GUARD_KEYBOARDHOOK_H
#define GUARD_KEYBOARDHOOK_H
#include <windows.h>
#include <vector>
using std::vector;
class CKeyboardHook
{
public:
(LRESULT CALLBACK) HookProc ( int nCode, WPARAM wParam, LPARAM lParam );
vector<int> keysDown;
vector<int> keysToStop;
HINSTANCE hExe;
HHOOK hHook;
bool keyIsDown ( int vkey );
void stopKey ( int vkey );
void resumeKey ( int vkey );
void initHook();
void killHook();
} kbHook;
#endif
Any help towards this problem would be greatly appreciated.Code:#include "stdafx.h"
#include "keyboardhook.h"
LRESULT CALLBACK CKeyboardHook::HookProc ( int nCode, WPARAM wParam, LPARAM lParam )
{
return CallNextHookEx(kbHook.hHook, nCode, wParam, lParam);
}
void CKeyboardHook::initHook()
{
hExe = GetModuleHandle ( NULL );
hHook = SetWindowsHookEx ( WH_KEYBOARD_LL, (HOOKPROC)HookProc, hExe, NULL ); //This line gives the error
}
void CKeyboardHook::killHook()
{
UnhookWindowsHookEx(hHook);
}
bool CKeyboardHook::keyIsDown(int vkey)
{
for ( vector<int>::iterator i = keysDown.begin(); i != keysDown.end(); ++i )
{
if ( vkey == *i )
return true;
}
return false;
}
void CKeyboardHook::stopKey ( int vkey )
{
for ( vector<int>::iterator i = keysToStop.begin(); i != keysToStop.end(); ++i )
{
if ( vkey == *i )
return;
}
keysToStop.push_back ( vkey );
}
void CKeyboardHook::resumeKey ( int vkey )
{
for ( vector<int>::iterator i = keysToStop.begin(); i != keysToStop.end(); ++i )
{
if ( vkey == *i )
{
keysToStop.erase ( i );
return;
}
}
}
Thanks in advance,
Matt