我用WPF(C#和XAML)创建了一个记分板应用程序,当我通过复选框启用锁定时,我需要让一个窗口完全没有响应。这意味着您无法单击它,光标不会更改,尤其是单击它时窗口任务栏不会出现。这个记分牌位于游戏之上,记分牌是最顶层的窗口,但由于某种原因,我不能完全无法点击。
我尝试过IsHitTestVisible,Focusable,IsManipulationEnabled,ResizeMode,WindowStyle并将它们全部设置为false而不起作用。我仍然可以点击窗口,它会调出Window的任务栏,当你有一个全屏窗口的游戏时,它会变得很烦人。
我该怎么办?
更新
通过更改一些谷歌搜索词来找到答案。
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);
答案 0 :(得分:0)
您是否尝试过IsEnabled = false? 它适用于组件和窗口级别。
答案 1 :(得分:-1)
我看到了这个blog,他们在XNA游戏中放置了Wpf控件。我已经尝试了它的工作,你可以放置你的窗口,它也不会出现在任务栏中,他们也提供了全屏技术