Dans WPF, vous pouvez modifier le comportement de positionnement d'une fenêtre pour obtenir des effets similaires à l'option "sur le bureau" de Rainlendar. Voici comment :
Pour obtenir l'effet "sur le bureau", où la fenêtre devient un enfant du bureau de l'Explorateur, vous pouvez utiliser l'API SetParent. Cette API vous permet de définir la fenêtre parent d'un handle de fenêtre. En définissant la fenêtre parent sur le handle de la fenêtre du bureau, vous pouvez intégrer votre fenêtre WPF dans le bureau.
Pour l'effet "en bas", vous pouvez utiliser l'API SetWindowPos pour positionner votre fenêtre WPF en bas de l'ordre Z. Cela garantit que votre fenêtre reste en bas, même lorsque d'autres fenêtres sont ouvertes et fermées.
Pour éviter que votre fenêtre ne vienne à l'avant lorsque vous cliquez dessus, vous pouvez gérer le WM_WINDOWPOSCHANGING. Ce message est envoyé par le système d'exploitation Windows lorsque la position ou la taille d'une fenêtre est sur le point de changer. En traitant ce message et en interceptant la modification, vous pouvez forcer votre fenêtre à rester en bas de l'ordre Z.
Pour implémenter cela en C#, vous devrez utiliser le code suivant :
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; }
En combinant l'API SetParent, SetWindowPos et la gestion des messages WM_WINDOWPOSCHANGING, vous pouvez obtenir à la fois les effets « sur le bureau » et « en bas » pour votre Fenêtre WPF.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!