SetCapture und WM_MOUSEMOVE
-
Ich sitze hier seit einer Ewigkeit und wunderte mich, warum die Koordinaten spinnen wenn ich links über das Anwendungsfenster fahre, während mein Capture an ist.
Nach ettlichen Versuchen beschloss ich dann mal die Koordinaten zu loggen und siehe da die Koordinaten sind unsigned 16Bitter und laufen dabei über.Habe das dann mal auf die Schnelle so gelöst:
case WM_MOUSEMOVE: if( g_isDragging ) { SetCapture( hWnd ); POINT cp; GetCursorPos( &cp ); ScreenToClient( hWnd, &cp ); RECT cr; GetClientRect( hWnd, &cr ); if( cp.x < 0 ) cp.x = 0; if( cp.y < 0 ) cp.y = 0; if( cp.x > cr.right ) cp.x = cr.right - 1; if( cp.y > cr.bottom ) cp.y = cr.bottom - 1; g_dragRect.right = cp.x; g_dragRect.bottom = cp.y; } return 0;Gibt es denn keine bessere Lösung (und den Überlauf zu erkennen und dann entsprechend zu handeln sehe ich nicht als ne bessere Lösung an)?
-
PtInRect() - LOL
Das wär meiner Meinung nach 'auf die schnelle'

also irg wie so:
if(!PtInRect(...)) // du A r s c h else // netter J u n g e r
hoffe konnte helfen...
MfG CodeFiner
-
ohne 'r'

MfG CodeFinder
-
Die Funktion nützt mir leider nichts, da es ja erlaubt ist die Maus aus dem Fenster zu bewegen (das ganze zeichnet nen rechteck und wenn man da an den Rand fahren will ist das recht schwer ohne mauscapturing).
Es ging mir auch mehr um das erhalten der Koordinaten als das Einfügen der Begrenzungen.