Rainlendar のウィンドウを "デスクトップ上" に配置する機能により、ウィンドウは最下位ウィンドウとして動作できます。これは WPF の組み込み機能ではありませんが、C# からの P/Invoke を必要とする Win32 API 呼び出しを使用して実現できます。
Rainlendar のオプション:
Rainlendar では、ウィンドウの配置に 2 つのオプションがあります:
デスクトップでの達成配置:
WPF ウィンドウを「デスクトップ上」に配置するには、SetParent API を使用できます。
[DllImport("user32.dll")] public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
hWndNewParent を IntPtr.Zero に設定すると、親が削除され、ウィンドウが作成されます。デスクトップの子。
最下位で達成配置:
ウィンドウを「下」に維持するには、WM_WINDOWPOSCHANGING メッセージをインターセプトする必要があります:
protected override void WndProc(ref Message m) { if (m.Msg == (int) WM.WINDOWPOSCHANGING) { var pos = (WINDOWPOS) Marshal.PtrToStructure(m.LParam, typeof(WINDOWPOS)); // Check if the window is being promoted to the top if ((pos.flags & SWP_NOMOVE) == 0 && (pos.flags & SWP_NOSIZE) == 0) { pos.hwndInsertAfter = HWND_BOTTOM; pos.flags |= SWP_NOACTIVATE; Marshal.StructureToPtr(pos, m.LParam, true); } } base.WndProc(ref m); }
hwndInsertAfter を HWND_BOTTOM に設定し、SWP_NOACTIVATE フラグを追加することで、ウィンドウは常に下部に残り、クリックしてもアクティブになりません。
以上がWPF で「デスクトップ上」および「下位」ウィンドウの配置を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。