Heim > Backend-Entwicklung > C++ > Wie kann ich die Fensterplatzierung „Auf dem Desktop' und „Unten' in WPF erreichen?

Wie kann ich die Fensterplatzierung „Auf dem Desktop' und „Unten' in WPF erreichen?

Linda Hamilton
Freigeben: 2024-12-29 02:00:11
Original
966 Leute haben es durchsucht

How Can I Achieve

Fensterplatzierungssteuerung in WPF: Option „Auf dem Desktop“

Rainlendars Fähigkeit, Fenster „auf dem Desktop“ zu platzieren, ermöglicht es ihnen, sich wie unterste Fenster zu verhalten. Dies ist keine integrierte Funktion von WPF, kann aber mithilfe von Win32-API-Aufrufen erreicht werden, die P/Invoke von C# erfordern.

Rainlendars Optionen:

Rainlendar bietet zwei Optionen für die Fensterplatzierung:

  • Auf dem Desktop: Die Das Fenster wird zu einem untergeordneten Fenster des Explorer-Desktopfensters, ähnlich wie das übergeordnete Fenster mit der SetParent-API festgelegt wird.
  • Unten: Das Fenster bleibt am unteren Rand der Z-Reihenfolge, direkt über dem Desktop.

Erreichen der Desktop-Platzierung:

So platzieren Sie ein WPF-Fenster „auf“. Desktop“ können Sie die SetParent-API verwenden:

[DllImport("user32.dll")]
public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
Nach dem Login kopieren

Wenn Sie hWndNewParent auf IntPtr.Zero setzen, wird das übergeordnete Fenster entfernt und das Fenster zu einem untergeordneten Desktop-Fenster.

Erreichen der Platzierung am unteren Rand:

Um ein Fenster „unten“ zu halten, müssen Sie das abfangen WM_WINDOWPOSCHANGING-Meldung:

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);
}
Nach dem Login kopieren

Durch Setzen von hwndInsertAfter auf HWND_BOTTOM und Hinzufügen des SWP_NOACTIVATE-Flags bleibt das Fenster immer unten und wird beim Klicken nicht aktiviert.

Das obige ist der detaillierte Inhalt vonWie kann ich die Fensterplatzierung „Auf dem Desktop' und „Unten' in WPF erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage