как сделать GetMousePosition в любом месте экрана, за пределами окна (или любого визуального объекта) - PullRequest
0 голосов
/ 26 ноября 2010

Я бы хотел отследить положение курсора мыши в экранных координатах в любом месте экрана.Таким образом, даже если курсор мыши выходит за границы окна, есть ли способ получить положение курсора мыши?

Я пытаюсь заставить всплывающее окно следовать за курсором мыши,даже если оно выходит из главного окна.

Вот фрагмент кода того, что я пробовал (и не сработало):

        private void OnLoaded(object sender, RoutedEventArgs e)
    {           
        bool gotcapture = this.CaptureMouse();
        Mouse.AddLostMouseCaptureHandler(this, this.OnMouseLostCapture);
    }
            Point mouse_position_relative = Mouse.GetPosition(this);
        Point mouse_screen_position = popup.PointToScreen(mouse_position_relative);
        private void OnMouseLostCapture(object sender, MouseEventArgs e)
    {
        bool gotcapture = this.CaptureMouse();
        this.textblock.Text = "lost capture.";
    }

Ответы [ 3 ]

3 голосов
/ 26 ноября 2010

В чем именно заключалась ваша проблема?
Подождите! - это способ позиционирования всплывающего окна относительно экрана.см. PlacementMode.AbsolutePoint
Это показывает маленькое счастливое лицо, летающее вокруг:

private Popup _popup;

public Window1()
{
    InitializeComponent();

    this.Loaded += OnLoaded;
}

private void OnLoaded(object sender, RoutedEventArgs e)
{
    _popup = new Popup
              {
                  Child = new TextBlock {Text = "=))", Background = Brushes.White},
                  Placement = PlacementMode.AbsolutePoint,
                  StaysOpen = true,
                  IsOpen = true
              };
    MouseMove += MouseMoveMethod;
    CaptureMouse();
}

private void MouseMoveMethod(object sender, MouseEventArgs e)
{
    var relativePosition = e.GetPosition(this);
    var point= PointToScreen(relativePosition);
    _popup.HorizontalOffset = point.X;
    _popup.VerticalOffset = point.Y;
}
0 голосов
/ 04 ноября 2013

Существует несколько способов получить экранные координаты положения мыши вне WPF Window. К сожалению, вам нужно добавить ссылки, чтобы использовать любой из них, но это возможно . Вы можете найти примеры их обоих в ответе @ FredrikHedblad на вопрос Как получить текущие координаты экрана мыши в WPF? вопрос. По совпадению, на этот вопрос был дан ответ за несколько дней до того, как вы задали этот вопрос, и он сдался в течение 21 минуты.

0 голосов
/ 26 ноября 2010

Неважно, я понял, что нет способа разместить всплывающее окно относительно экрана, только относительно визуала, который его содержит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...