2010-04-19 6 views
1

Я разрабатываю клавиатуру с сенсорным экраном WPF.WPF: Окно без фокуса

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

Простое применение «Фокусное =« Неверное »« в главное окно и все дочерние элементы управления не работают.

ответ

0

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

0

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

0

Отсюда: 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 для расширенного style.You окна можно установить верхнее свойство, как обычно, то этот код заботится о создании окна прозрачного для щелчков мыши:

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

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); 
} 
Смежные вопросы