2012-10-17 11 views
2

Я пытаюсь разработать приложение Windows, которое позволяет людям «рисовать на экране».Как сделать прозрачное окно окна WPF поверх всех других окон, но не влияет на ввод пользователя?

Я разрабатываю с:

.NET 3.5 C#/WPF

У меня есть окно WPF, который устраивается InkCanvas, как имеющие прозрачный фон.

окна XAML свойства:

ShowInTaskbar="True" ResizeMode="NoResize" Background="Transparent" 
WindowStyle="None" AllowsTransparency="True" Topmost="True" 

InkCanvas свойства:

Background="#11FFFFFF" 

мне нужен обработчик событий для следующего: - правой кнопкой мыши в любом месте окна - пресс побеге

желаемому результат: - Окно WPF остается поверх всех остальных окон, но уже не acti ve и больше не принимает ввод - Окно WPF может быть больше сфокусировано. Все входные данные от пользователей должны идти в их текущее сфокусированное окно и игнорировать окно wpf с чернилами, которые находятся поверх всего.

Основной пример использования: Пользователь приложения играет в игру. Они останавливаются и рисуют несколько стрелок в окне wpf/inkcanvas. Они заканчивают, нажав escape. Окно wpf остается сверху, с фигурами, которые пользователь открывает, а вход пользователя возвращается в любое открытое/сфокусированное окно.

До сих пор, я попытался это:

MouseRightButtonUp :: 

mywindow.isenabled = false 

и я попытался:

mywindow.IsInputMethodEnabled = false 

Не работает до сих пор, окно МОФ еще начинает захват пользовательского ввода. Мне как-то нужно сделать это окно как показано, но без его активации ... даже после того, как он был «использован» в течение некоторого периода времени.

Заранее благодарю за любой совет!

ответ

0

Вы можете перехватить WndProc (используя AddHook of the HwndSource, как показано на рисунке here) и перехватить WM_NCHITTEST и вернуть HTTRANSPARENT. Это позволит только пропускать его в другие окна в этом потоке. Другой вариант - установить бит расширенного стиля WS_EX_TRANSPARENT. См. Пример this question's answer.

+0

Спасибо, мы собираемся попробовать это направление сегодня и проинформируем вас о том, как это происходит. –

+0

@AlexanderPerls Прошло некоторое время, вы когда-нибудь находили решение? –

Смежные вопросы