Как я могу сохранить окно в WPF?
У меня есть небольшая программа.NET, которая создает полноэкранное окно. Я хотел бы сохранить это окно самым задним окном (т.е. другие окна должны открываться поверх него, и оно не должно выходить вперед при нажатии). Есть ли практический способ сделать это в Windows Presentation Foundation?
1 ответ
Решение
Насколько я знаю, вам придется P/Invoke, чтобы сделать это правильно. Позвоните SetWindowPos
функция, указав дескриптор вашего окна и HWND_BOTTOM
флаг.
Это переместит ваше окно в нижнюю часть Z-порядка и предотвратит его затенение другими окнами.
Образец кода:
Private Const SWP_NOSIZE As Integer = &H1
Private Const SWP_NOMOVE As Integer = &H2
Private Const SWP_NOACTIVATE As Integer = &H10
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function SetWindowPos(hWnd As IntPtr, hWndInsertAfter As IntPtr,
X As Integer, Y As Integer,
cx As Integer, cy As Integer,
uFlags As Integer) As Boolean
End Function
Public Sub SetAsBottomMost(ByVal wnd As Window)
' Get the handle to the specified window
Dim hWnd As IntPtr = New WindowInteropHelper(wnd).Handle
' Set the window position to HWND_BOTTOM
SetWindowPos(hWnd, New IntPtr(1), 0, 0, 0, 0,
SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE)
End Sub