OSDN Git Service

restore position of pointer after correction by drag event
authorU-i7\gimy <gimy@users.sourceforge.jp>
Wed, 22 Jul 2009 15:51:12 +0000 (00:51 +0900)
committerU-i7\gimy <gimy@users.sourceforge.jp>
Wed, 22 Jul 2009 15:51:12 +0000 (00:51 +0900)
engine.cpp

index ce68ba5..502fe74 100644 (file)
@@ -611,7 +611,7 @@ unsigned int Engine::injectInput(const KEYBOARD_INPUT_DATA *i_kid, const KBDLLHO
 {\r
        if (i_kid->Flags & KEYBOARD_INPUT_DATA::E1) {\r
                Acquire a(&m_cskidq);\r
-               INPUT kid[2];\r
+               INPUT kid[3];\r
                int i = 0;\r
 \r
                if (m_dragging && !(i_kid->Flags & KEYBOARD_INPUT_DATA::BREAK)) {\r
@@ -688,6 +688,18 @@ unsigned int Engine::injectInput(const KEYBOARD_INPUT_DATA *i_kid, const KBDLLHO
                        return 1;\r
                        break;\r
                }\r
+               if (i == 1) {\r
+                       POINT pt;\r
+                       GetCursorPos(&pt);\r
+                       i++;\r
+                       kid[i].type = INPUT_MOUSE;\r
+                       kid[i].mi.dx = 65535 * pt.x / GetSystemMetrics(SM_CXVIRTUALSCREEN);\r
+                       kid[i].mi.dy = 65535 * pt.y / GetSystemMetrics(SM_CYVIRTUALSCREEN);\r
+                       kid[i].mi.time = 0;\r
+                       kid[i].mi.mouseData = 0;\r
+                       kid[i].mi.dwExtraInfo = 0;\r
+                       kid[i].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_VIRTUALDESK;\r
+               }\r
                SendInput(i + 1, &kid[0], sizeof(kid[0]));\r
        } else {\r
                INPUT kid;\r