Implementation of DragDetect. Based on Wine code (C) 1993, 1994
Alexandre Julliard.
Modified: trunk/reactos/lib/user32/windows/input.c
_____
Modified: trunk/reactos/lib/user32/windows/input.c
--- trunk/reactos/lib/user32/windows/input.c 2005-06-07 16:34:07 UTC
(rev 15830)
+++ trunk/reactos/lib/user32/windows/input.c 2005-06-07 16:54:15 UTC
(rev 15831)
@@ -44,7 +44,46 @@
HWND hWnd,
POINT pt)
{
+#if 0
return NtUserDragDetect(hWnd, pt.x, pt.y);
+#else
+ MSG msg;
+ RECT rect;
+ POINT tmp;
+ ULONG dx = NtUserGetSystemMetrics(SM_CXDRAG);
+ ULONG dy = NtUserGetSystemMetrics(SM_CYDRAG);
+
+ rect.left = pt.x - dx;
+ rect.right = pt.x + dx;
+ rect.top = pt.y - dy;
+ rect.bottom = pt.y + dy;
+
+ SetCapture(hWnd);
+
+ for (;;)
+ {
+ while (PeekMessageW(&msg, 0, WM_MOUSEFIRST, WM_MOUSELAST,
PM_REMOVE))
+ {
+ if (msg.message == WM_LBUTTONUP)
+ {
+ ReleaseCapture();
+ return 0;
+ }
+ if (msg.message == WM_MOUSEMOVE)
+ {
+ tmp.x = LOWORD(msg.lParam);
+ tmp.y = HIWORD(msg.lParam);
+ if (!PtInRect(&rect, tmp))
+ {
+ ReleaseCapture();
+ return 1;
+ }
+ }
+ }
+ WaitMessage();
+ }
+ return 0;
+#endif
}
Show replies by date