Make mouse hook functions right

This commit is contained in:
Don HO 2017-10-29 12:17:59 +01:00
parent 28c9bb6d31
commit 8a01e5e29b
5 changed files with 25 additions and 23 deletions

View File

@ -41,26 +41,25 @@ using namespace std;
static HWND hWndServer = NULL;
static HHOOK hookMouse = NULL;
static LRESULT CALLBACK hookProcMouse(UINT nCode, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK hookProcMouse(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode < 0)
{
::CallNextHookEx(hookMouse, nCode, wParam, lParam);
return 0;
}
switch (wParam)
{
if (nCode >= 0)
{
switch (wParam)
{
case WM_MOUSEMOVE:
case WM_NCMOUSEMOVE:
::PostMessage(hWndServer, UINT(wParam), 0, 0);
break;
case WM_LBUTTONUP:
case WM_NCLBUTTONUP:
::PostMessage(hWndServer, UINT(wParam), 0, 0);
break;
default:
default:
break;
}
}
return ::CallNextHookEx(hookMouse, nCode, wParam, lParam);
@ -218,7 +217,6 @@ void DockingCont::setActiveTb(tTbData* pTbData)
void DockingCont::setActiveTb(int iItem)
{
//if ((iItem != -1) && (iItem < ::SendMessage(_hContTab, TCM_GETITEMCOUNT, 0, 0)))
if (iItem < ::SendMessage(_hContTab, TCM_GETITEMCOUNT, 0, 0))
{
selectTab(iItem);
@ -302,7 +300,7 @@ LRESULT DockingCont::runProcCaption(HWND hwnd, UINT Message, WPARAM wParam, LPAR
// start hooking
hWndServer = _hCaption;
hookMouse = ::SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)hookProcMouse, _hInst, 0);
hookMouse = ::SetWindowsHookEx(WH_MOUSE_LL, hookProcMouse, _hInst, 0);
if (!hookMouse)
{

View File

@ -42,10 +42,10 @@ BOOL DockingManager::_isRegistered = FALSE;
static HWND hWndServer = NULL;
//Next hook in line
static HHOOK gWinCallHook = NULL;
LRESULT CALLBACK FocusWndProc(int nCode, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK focusWndProc(int nCode, WPARAM wParam, LPARAM lParam);
// Callback function that handles messages (to test focus)
LRESULT CALLBACK FocusWndProc(int nCode, WPARAM wParam, LPARAM lParam)
LRESULT CALLBACK focusWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION && hWndServer)
{
@ -164,7 +164,7 @@ void DockingManager::init(HINSTANCE hInst, HWND hWnd, Window ** ppWin)
hWndServer = _hSelf;
CoInitialize(NULL);
if (!gWinCallHook) //only set if not already done
gWinCallHook = ::SetWindowsHookEx(WH_CALLWNDPROC, FocusWndProc, hInst, GetCurrentThreadId());
gWinCallHook = ::SetWindowsHookEx(WH_CALLWNDPROC, focusWndProc, hInst, GetCurrentThreadId());
if (!gWinCallHook)
{

View File

@ -42,7 +42,7 @@ static HHOOK hookMouse = NULL;
#define WH_MOUSE_LL 14
#endif
static LRESULT CALLBACK hookProcMouse(UINT nCode, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK hookProcMouse(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode >= 0)
{
@ -52,10 +52,12 @@ static LRESULT CALLBACK hookProcMouse(UINT nCode, WPARAM wParam, LPARAM lParam)
case WM_NCMOUSEMOVE:
::PostMessage(hWndMouse, static_cast<UINT>(wParam), 0, 0);
break;
case WM_LBUTTONUP:
case WM_NCLBUTTONUP:
::PostMessage(hWndMouse, static_cast<UINT>(wParam), 0, 0);
return TRUE;
default:
break;
}
@ -151,7 +153,7 @@ LRESULT DockingSplitter::runProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM
case WM_LBUTTONDOWN:
{
hWndMouse = hwnd;
hookMouse = ::SetWindowsHookEx(WH_MOUSE_LL, reinterpret_cast<HOOKPROC>(hookProcMouse), _hInst, 0);
hookMouse = ::SetWindowsHookEx(WH_MOUSE_LL, hookProcMouse, _hInst, 0);
if (!hookMouse)
{
DWORD dwError = ::GetLastError();

View File

@ -51,7 +51,7 @@ static HWND hWndServer = NULL;
static HHOOK hookMouse = NULL;
static HHOOK hookKeyboard = NULL;
static LRESULT CALLBACK hookProcMouse(INT nCode, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK hookProcMouse(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
@ -61,10 +61,12 @@ static LRESULT CALLBACK hookProcMouse(INT nCode, WPARAM wParam, LPARAM lParam)
case WM_NCMOUSEMOVE:
::SendMessage(hWndServer, static_cast<UINT>(wParam), 0, 0);
break;
case WM_LBUTTONUP:
case WM_NCLBUTTONUP:
::SendMessage(hWndServer, static_cast<UINT>(wParam), 0, 0);
return TRUE;
default:
break;
}
@ -72,7 +74,7 @@ static LRESULT CALLBACK hookProcMouse(INT nCode, WPARAM wParam, LPARAM lParam)
return ::CallNextHookEx(hookMouse, nCode, wParam, lParam);
}
static LRESULT CALLBACK hookProcKeyboard(INT nCode, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK hookProcKeyboard(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
@ -258,7 +260,7 @@ void Gripper::create()
::SetWindowPos(_pCont->getHSelf(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
::SetCapture(_hSelf);
winVer ver = (NppParameters::getInstance())->getWinVersion();
hookMouse = ::SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)hookProcMouse, _hInst, 0);
hookMouse = ::SetWindowsHookEx(WH_MOUSE_LL, hookProcMouse, _hInst, 0);
if (!hookMouse)
{
@ -270,7 +272,7 @@ void Gripper::create()
if (ver != WV_UNKNOWN && ver < WV_VISTA)
{
hookKeyboard = ::SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)hookProcKeyboard, _hInst, 0);
hookKeyboard = ::SetWindowsHookEx(WH_KEYBOARD_LL, hookProcKeyboard, _hInst, 0);
if (!hookKeyboard)
{
DWORD dwError = ::GetLastError();

View File

@ -33,7 +33,7 @@
int TaskListDlg::_instanceCount = 0;
LRESULT CALLBACK hookProc(UINT nCode, WPARAM wParam, LPARAM lParam)
LRESULT CALLBACK hookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if ((nCode >= 0) && (wParam == WM_RBUTTONUP))
{
@ -98,7 +98,7 @@ INT_PTR CALLBACK TaskListDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lP
#ifndef WH_MOUSE_LL
#define WH_MOUSE_LL 14
#endif
_hHooker = ::SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)hookProc, _hInst, 0);
_hHooker = ::SetWindowsHookEx(WH_MOUSE_LL, hookProc, _hInst, 0);
hook = _hHooker;
return FALSE;
}