Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于关注WPF的几个问题_Wpf_Windows_Focus - Fatal编程技术网

关于关注WPF的几个问题

关于关注WPF的几个问题,wpf,windows,focus,Wpf,Windows,Focus,我对关注WPF有点问题。 我不想创建一个始终位于顶部的窗口,它永远不会得到焦点(即使我们点击它) 以下是我的解决方案: public partial class SkinWindow : Window { public SkinWindow() { InitializeComponent(); Loaded += ( object sender, RoutedEventArgs e ) => SetNoActiveWindow();

我对关注WPF有点问题。 我不想创建一个始终位于顶部的窗口,它永远不会得到焦点(即使我们点击它)

以下是我的解决方案:

public partial class SkinWindow : Window
{
    public SkinWindow()
    {
        InitializeComponent();
        Loaded += ( object sender, RoutedEventArgs e ) => SetNoActiveWindow();
    }

    private void SetNoActiveWindow()
    {
        WindowInteropHelper helper = new WindowInteropHelper( this );
        SetWindowLong( helper.Handle, GWL_EXSTYLE, WS_EX_NOACTIVATE );
        LockSetForegroundWindow( LSFW_LOCK );
    }

    const int GWL_EXSTYLE = -20;
    const int WS_EX_NOACTIVATE = 134217728;
    const int LSFW_LOCK = 1;

    [DllImport( "user32" )]
    public static extern bool LockSetForegroundWindow( uint UINT );

    [DllImport( "user32" )]
    public static extern IntPtr SetWindowLong( IntPtr hWnd, int nIndex, int dwNewLong );
}
第一个问题:它是可行的,但我必须选择另一个窗口来“删除”我的应用程序的焦点(在焦点不再给出之后,即使我点击我的窗口)。 第二个问题:当我移动或调整窗口大小时,当我放下窗口时会发生修改

你有什么想法/链接/文档吗?
谢谢:)

你可能想看看这篇文章:。答案特定于Windows窗体。不过,主要部分是使用Win32函数完成的,因此您可能可以从中获得一些想法