Как применить WS_EX_TRANSPARENT в WPF? - PullRequest
2 голосов
/ 09 марта 2010

Я хочу создать заставку, которую нельзя щелкнуть / выбрать мышью / пользовательским интерфейсом.

Как так, как подать заявку

 Win32.ExtendedWindowStyles.WS_EX_TRANSPARENT

в Windows Presentation Foundation Window?

В формах я бы сделал это .

Ответы [ 3 ]

5 голосов
/ 09 марта 2010
    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 ToTransparentWindow(this Window x)
    {

        x.SourceInitialized +=
            delegate
            {
                // Get this window's handle
                IntPtr hwnd = new WindowInteropHelper(x).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);
            };


    }
0 голосов
/ 09 марта 2010

в Win32 Api вы можете назначить стиль в CreateWindow (Ex) или более поздней версии, используя SetWindowLong, может быть, есть какой-то вид оболочки в WPF

0 голосов
/ 09 марта 2010

Вы можете использовать хост форм для размещения выигрышной формы, если вы действительно хотите, тогда вы можете использовать любые выигрышные формы, связанные с WPF.

Но имейте в виду, что WPF построен на Direct X. Однако уже есть класс заставки, который не основан на WPF и будет отображаться, пока среда выполнения .Net делает свое дело. Насколько мне известно, он не имеет такой же маршрутизируемый конвейер событий, как в окнах WPF. Вы можете попробовать поискать там, прежде чем идти по маршруту хоста форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...