2013-06-30 3 views
1

Я создал приложение для табло с WPF (C# и XAML), и мне нужно сделать одно окно полностью безответным, когда я включаю блокировку на нем с помощью флажка. Если вы не можете щелкнуть по нему, курсор не изменится, и, особенно, панель задач Windows не появится, когда вы нажмете на нее. Этот табло находится на вершине игры, табло - самое верхнее окно, но по какой-то причине я не могу сделать его совершенно незаметным.WPF Window unclickable

Я испробовал IsHitTestVisible, Focusable, IsManipulationEnabled, ResizeMode, WindowStyle и установил их все в false без эффекта. Я все еще могу щелкнуть по окну, и он вызывает панель задач Window, и это вызывает раздражение, когда вы играете в полноэкранном режиме.

Что я могу сделать по этому поводу?

Update:

Найдено ответ на изменение некоторых поисковых слов Google.

Win32 Class

//Rest of this code in located in the class itself 
    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); 

    public static void makeTransparent(IntPtr hwnd) 
    { 
    int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE); 
    Win32.SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT); 
    } 
    public static void makeNotTransparent(IntPtr hwnd) 
    { 
     int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE); 
     Win32.SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle^WS_EX_TRANSPARENT); 
    } 

Событие

 base.OnSourceInitialized(e); 

     IntPtr hwnd = new WindowInteropHelper(yourWindow).Handle; 
     Win32.makeTransparent(hwnd); 
+1

Я не знаю об идее отдельного табло. Почему бы не создать образ, который нарисован в игровом окне, как в большинстве игр? Или я пропустил какой-то момент? – ChiefTwoPencils

+0

У меня такая же проблема. Я хочу, чтобы пользователь щелкнул правой кнопкой мыши по окнам unclickabled, а окно (или рабочий стол) за ним реагирует на это событие. А также, что делать, если мы используем другие платформы, такие как Linux или Mac-OS? – Erfankam

ответ

0

Я видел этот blog, в котором они размещены контроль МОФ внутри XNA игры. Я пробовал это и его работу, вы можете разместить свое окно, и оно также не появится на панели задач, они также предоставили технику для полноэкранного просмотра.

1

Вы пробовали IsEnabled = false? Он работает для меня на компоненте и на уровне окна.