WPF (C# および XAML) を使用してスコアボード アプリケーションを作成しましたが、チェックボックスを使用してロックを有効にすると、1 つのウィンドウが完全に応答しなくなる必要があります。クリックできないということは、カーソルが変化せず、特にクリックしてもWindowsのタスクバーが表示されないということです。このスコアボードはゲームの上にあります。スコアボードは一番上のウィンドウですが、何らかの理由で完全にクリックできないようにすることはできません。
IsHitTestVisible、Focusable、IsManipulationEnabled、ResizeMode、WindowStyle を試してみましたが、それらをすべて false に設定しても効果はありませんでした。私はまだウィンドウをクリックすることができ、ウィンドウのタスクバーが表示され、フルスクリーンウィンドウにする必要があるゲームがあるとちょっと面倒になります.
これについて何ができますか?
アップデート:
いくつかのGoogle検索ワードを変更して答えを見つけました。
Win32 クラス
//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);