WPF: не фокусируемое окно - PullRequest
       10

WPF: не фокусируемое окно

1 голос
/ 19 апреля 2010

Я занимаюсь разработкой WPF Touch Screen Keyboard.

Мне нужно знать, как можно сделать главное окно не сфокусированным, чтобы другие окна получали входные данные, когда я нажимал на кнопки виртуальной клавиатуры.

Простое применение "Focusable =" False "" к главному окну, и все дочерние элементы управления не работают.

Ответы [ 3 ]

0 голосов
/ 21 апреля 2010

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

0 голосов
/ 05 апреля 2017

Отсюда: https://social.msdn.microsoft.com/Forums/vstudio/en-US/41ca3605-247c-4c5b-ac5d-74ce5abd7b92/making-a-window-invisible-to-mouse-events-ishittestvisiblefalse-not-working?forum=wpf

Я понял, как это сделать. Ключ является флагом WS_EX_TRANSPARENT для расширенного стиля окна. Вы можете установить самое верхнее свойство, как обычно, тогда этот код заботится о том, чтобы сделать окно прозрачным для щелчков мыши:

Фрагмент кода

public const int WS_EX_TRANSPARENT = 0x00000020;
public const int GWL_EXSTYLE = (-20);

[DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr hwnd, int index);

[DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);

protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);

// Get this window's handle
IntPtr hwnd = new WindowInteropHelper(this).Handle;

// Change the extended window style to include WS_EX_TRANSPARENT
int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
}
0 голосов
/ 20 апреля 2010

Я думаю, что есть атрибут clickable, который вы можете установить в false, что останавливает форму, получающую сообщения о кликах.

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