Rainlendar의 창을 "데스크톱에" 배치하는 기능을 사용하면 대부분의 창처럼 작동할 수 있습니다. 이는 WPF에 내장된 기능은 아니지만 C#에서 P/Invoke가 필요한 Win32 API 호출을 사용하여 구현할 수 있습니다.
Rainlendar의 옵션:
Rainlendar는 창 배치를 위한 두 가지 옵션을 제공합니다:
데스크탑에서 달성 배치:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!