WPF에서는 창의 위치 지정 동작을 수정하여 Rainlendar의 "데스크톱에서" 옵션과 유사한 효과를 얻을 수 있습니다. 방법은 다음과 같습니다.
창이 Explorer 데스크탑의 하위 항목이 되는 "데스크톱에서" 효과를 얻으려면 SetParent API를 사용할 수 있습니다. 이 API를 사용하면 창 핸들의 상위 창을 설정할 수 있습니다. 상위 창을 데스크톱 창 핸들로 설정하면 WPF 창을 데스크톱에 포함할 수 있습니다.
"하단" 효과의 경우 SetWindowPos API를 사용하여 위치를 지정할 수 있습니다. WPF 창은 Z 순서 맨 아래에 있습니다. 이렇게 하면 다른 창을 열고 닫아도 창이 맨 아래에 유지됩니다.
클릭할 때 창이 앞으로 나오지 않도록 하려면 WM_WINDOWPOSCHANGING 메시지입니다. 이 메시지는 창의 위치나 크기가 변경되려고 할 때 Windows 운영 체제에서 전송됩니다. 이 메시지를 처리하고 변경 사항을 가로채면 창이 Z 순서의 맨 아래에 유지되도록 할 수 있습니다.
이를 C#에서 구현하려면 다음 코드를 사용해야 합니다.
protected override void OnSourceInitialized(EventArgs e) { _handle = new WindowInteropHelper(this).Handle; HwndSource source = PresentationSource.FromVisual(this) as HwndSource; source.AddHook(WndProc); } private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (msg == WM_WINDOWPOSCHANGING) { var pos = (WINDOWPOS)Marshal.PtrToStructure(lParam, typeof(WINDOWPOS)); // Force the window to remain at the bottom of the Z-order pos.hwndInsertAfter = HWND_BOTTOM; Marshal.StructureToPtr(pos, lParam, false); handled = true; } return IntPtr.Zero; }
SetParent API, SetWindowPos 및 WM_WINDOWPOSCHANGING 메시지 처리를 결합하면 "데스크톱에서" 및 "하단에서" 효과를 모두 얻을 수 있습니다. WPF 창을 위한 것입니다.
위 내용은 WPF에서 Rainlendar와 같은 창 위치 지정을 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!