화면 좌표를 기준으로 마우스 위치를 가져 오려고합니다. 나는 그것을하기 위해 다음 코드를 사용하고있다.마우스 이동이 WPF 외부에서 트리거되지 않음
window.PointToScreen(Mouse.GetPosition(window));
예상대로 작동합니다. 하지만 내 MouseMove 이벤트는 MainWindow 외부에서 실행되지 않습니다. 내 창을 복원 한 상태에서 마우스를 바탕 화면 위로 옮기면됩니다.
감사합니다.
화면 좌표를 기준으로 마우스 위치를 가져 오려고합니다. 나는 그것을하기 위해 다음 코드를 사용하고있다.마우스 이동이 WPF 외부에서 트리거되지 않음
window.PointToScreen(Mouse.GetPosition(window));
예상대로 작동합니다. 하지만 내 MouseMove 이벤트는 MainWindow 외부에서 실행되지 않습니다. 내 창을 복원 한 상태에서 마우스를 바탕 화면 위로 옮기면됩니다.
감사합니다.
CaptureMouse() 메서드를 사용하십시오. 위의 예를 들어
, 당신은 추가 할 수
window.CaptureMouse();
당신의 코드 숨김 MouseDown 이벤트 핸들러 내부.
window.ReleaseMouseCapture();
당신의 코드 숨김 MouseUp 이벤트 핸들러 내부 :
당신은 호출해야합니다.
마우스 버튼을 누르지 않아도 WPF 창 외부에서 마우스 위치를 캡처 할 수 있어야했습니다. Interop를 사용하여 WinAPI GetCursorPos를 창 이벤트 대신 스레드와 결합하여 호출하게되었습니다.
using System.Runtime.InteropServices;
using Point = System.Drawing.Point;
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCursorPos(ref Point lpPoint);
public MainWindow()
{
InitializeComponent();
new Thread(() =>
{
while (true)
{
//Logic
Point p = new Point();
GetCursorPos(ref p);
//Update UI
Dispatcher.BeginInvoke(new Action(() =>
{
Position.Text = p.X + ", " + p.Y;
}));
Thread.Sleep(100);
}
}).Start();
}
}
훌륭한 작품!
매우 유용합니다! 덕분에 – DevEstacion