Suche Hilfe zu MouseHook
-
Ich habe einen Dialog, den ich über DirectX um 90° drehe, und dassdie Mauskoordinaten wieder stimmen, muss ich diese natürlich auch drehen, was ja auch ganz gut funktioniert.
Wenn ich nun auf ein Control klicke, funktioniert das auch, aber wenn ich während dem Klick die Maus bewege, so wird das geklickte Control wieder "ungeklickt" dargestellt.
Ich suche nun eine Möglichkeit, dass das Control auch geklickt bleibt, wenn ich die Maus auf dem Control bewege, ich hoffe mir kann jemand helfen, bzw. Links oder Tips geben. Danke !//**************************************************************************** // LOW LEVEL maushook callback funktion //**************************************************************************** LRESULT CALLBACK LLMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) { static HWND hWndOld=NULL; if(nCode>=0 && nCode == HC_ACTION) { MSLLHOOKSTRUCT *mhs = (MSLLHOOKSTRUCT*) lParam; if(mhs->flags) { mhs->flags=false; return CallNextHookEx(hMouseHook, nCode, wParam, lParam); } long nScreenWidth = ::GetSystemMetrics( SM_CXSCREEN ); long nScreenHeight = ::GetSystemMetrics( SM_CYSCREEN ); long lTempX =nScreenHeight-mhs->pt.y; long lTempY =mhs->pt.x-START_DIALOG_X; HWND hwndReceiver=WindowFromPoint(CPoint(lTempX,lTempY)); RECT rect; GetWindowRect(hwndReceiver,&rect); mhs->pt.x=lTempX; mhs->pt.y=lTempY; lTempX = max(0,(lTempX-rect.left)); lTempY = max(0,(lTempY-rect.top)); lTempX = min( lTempX, nScreenWidth ); lTempY = min( lTempY, nScreenHeight ); mhs->flags=true; if(wParam==WM_LBUTTONDOWN || wParam == WM_LBUTTONUP) { PostMessage(hwndReceiver, wParam,wParam==WM_LBUTTONDOWN ? MK_LBUTTON : 0 ,MAKELPARAM(lTempX,lTempY)); return 1; } if(wParam==WM_RBUTTONDOWN || wParam == WM_RBUTTONUP) { if(wParam==WM_LBUTTONDOWN) hWndOld=hwndReceiver; else hwndReceiver=hWndOld; PostMessage(hwndReceiver, wParam,wParam==WM_RBUTTONDOWN ? MK_RBUTTON : 0 ,MAKELPARAM(lTempX,lTempY)); return 1; } } return CallNextHookEx(hMouseHook, nCode, wParam, lParam); }