사용 SlimDX.RawInput 실제로 HWND (컨트롤의/폼의 핸들)에서 커서를 얻으려면, 당신은 "USER32.DLL"에서 통근 기능에 필요
- BOOL GetCursorPos (LPOINT lpPoint)
대신 System.Runtime.Interlop 및 System.Drawing.Point를 사용하십시오 (대신 POINT 구조체를 만들지 않는 한).
[DllImport("user32.dll",CallingConvention=CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.Bool)]
internal unsafe static extern bool GetCursorPos(Point* lpPoint);
이 당신에게 당신이 lpPoint 주소를 가지고도 BOOL을 반환 ScreenToClient (HWND HWND, LPPOINT lpPoint)로 전달합니다 바탕 화면 다음에 커서의 실제 위치를 얻을 것이다.
[DllImport("user32.dll",CallingConvention=CallingConvention.StdCall,SetLastError=true)]
internal static extern int ScreenToClient(IntPtr hWnd, Point* p);
것은 그냥이 다음처럼에서 포인트를하자 :
이
public unsafe Point GetClientCurorPos(IntPtr hWnd, Point*p)
{
Point p = new Point();
if (GetCursorPos(&p))
{
ScreenToClient(hWnd, &p);
}
return p;
}
당신은 SlimDX.RawInput.Device를 사용할 수 있습니다.MouseInput 처리기를 원하거나 WndProc에 대한 재정의로 코딩 작업을 수행 할 수 있습니다. WndProc은 WINAPI 프로그래머들 모두에게 익숙한 지루하고 어려운 메시지를 처리하는 데 사용됩니다. 그러나, 당신은 당신이 가진 더 많은 컨트롤을 낮추십시오. 마찬가지로 모든 정보를 다시 가져 왔지만 핸들러의 MouseInputEventArgs에서 마우스 위치를 얻는다 고 말한 것입니다. WndProc 콜백을 통해 처리 된 메시지를 확인하는 것이 좋습니다.