Dalam WPF, anda boleh mengubah suai gelagat penentududukan tetingkap untuk mencapai kesan yang serupa dengan pilihan "pada desktop" Rainlendar. Begini caranya:
Untuk mencapai kesan "pada desktop", di mana tetingkap menjadi anak kepada desktop Explorer, anda boleh menggunakan API SetParent. API ini membolehkan anda menetapkan tetingkap induk pemegang tetingkap. Dengan menetapkan tetingkap induk kepada pemegang tetingkap desktop, anda boleh membenamkan tetingkap WPF anda dalam desktop.
Untuk kesan "di bawah", anda boleh menggunakan API SetWindowPos untuk meletakkan tetingkap WPF anda di bahagian bawah pesanan Z. Ini memastikan tetingkap anda kekal di bahagian bawah, walaupun apabila tetingkap lain dibuka dan ditutup.
Untuk mengelakkan tetingkap anda daripada datang ke hadapan apabila diklik, anda boleh mengendalikan WM_WINDOWPOSCHANGING mesej. Mesej ini dihantar oleh sistem pengendalian Windows apabila kedudukan atau saiz tetingkap hampir berubah. Dengan mengendalikan mesej ini dan memintas perubahan, anda boleh memaksa tetingkap anda kekal di bahagian bawah pesanan Z.
Untuk melaksanakan ini dalam C#, anda perlu menggunakan kod berikut:
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; }
Dengan menggabungkan pengendalian mesej SetParent API, SetWindowPos dan WM_WINDOWPOSCHANGING, anda boleh mencapai kedua-dua "pada desktop" dan "pada kesan bawah" untuk tetingkap WPF anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Kedudukan Tetingkap seperti Rainlendar dalam WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!