Frage

Ich bin mir fast sicher, dass ich die Antwort auf diese Frage kenne, aber ich hoffe, dass ich etwas übersehen habe.

Bestimmte Anwendungen scheinen in ihren Beschriftungsleisten und Schaltflächen das Aussehen und Verhalten von Vista Aero zu haben, selbst wenn sie unter Windows XP ausgeführt werden.(Als Beispiele fallen mir Google Chrome und die Windows Live-Fotogalerie ein.) Ich weiß, dass eine Möglichkeit, dies mit WinForms zu erreichen, darin besteht, ein randloses Formular zu erstellen, die Beschriftungsleiste/Schaltflächen selbst zu zeichnen und sie dann zu überschreiben WndProc um sicherzustellen, dass das Verschieben, Ändern der Größe und Klicken auf Schaltflächen das tun, was sie tun sollen (ich bin mir über die Einzelheiten nicht im Klaren, könnte es aber wahrscheinlich schaffen, wenn ich mir einen Tag Zeit zum Lesen der Dokumentation gäbe). Ich bin gespannt, ob es etwas anderes gibt. einfacherer Weg, den ich übersehe.Vielleicht einige API-Aufrufe oder Fensterstile, die ich übersehen habe?

Ich glaube, Google hat es für mich beantwortet, indem es den Roll-Your-Own-Window-Ansatz mit Chrome verwendet.Ich werde die Frage für einen anderen Tag offen lassen, falls jemand neue Informationen hat, aber ich glaube, dass ich die Frage selbst beantwortet habe.

War es hilfreich?

Lösung

Hier ist ein Artikel mit einem vollständigen Codebeispiel zur Verwendung Ihres eigenen benutzerdefinierten „Chrome“ für eine Anwendung:

http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx

Das sieht nach wirklich guten Sachen aus.Es gibt insgesamt 3 Artikel in der Serie und es läuft großartig, auch unter Vista!

Andere Tipps

Google Chrome ist nicht Verwenden Sie das Vista SDK, um dies unter XP zu erreichen.Wenn Sie hineinschauen src\chrome\browser\views\frame Abhängig von den Fähigkeiten des Systems gibt es mehrere Dateien zum Definieren des Browser-Frames.Unter XP sieht es so aus OpaqueFrame wird eingesetzt;In Zeile 19 heißt es:

// OpaqueFrame
//
//  OpaqueFrame is a CustomFrameWindow subclass that in conjunction with
//  OpaqueNonClientView provides the window frame on Windows XP and on Windows
//  Vista when DWM desktop compositing is disabled. The window title and
//  borders are provided with bitmaps.

Es sieht so aus, als würde es die Ressourcen in verbrauchen src\chrome\app\theme um die Rahmenschaltflächen zu zeichnen.

Es sieht also so aus, als ob meine Hoffnungen, dass es eine kostengünstige Möglichkeit gibt, das Vista-Design auf XP zu aktivieren, enttäuscht wurden.Die einzige Möglichkeit besteht darin, den Nicht-Client-Bereich Ihres Fensters manuell zu zeichnen.Ich glaube etwas wie das ist wahrscheinlich der richtige Weg, da Windows damit die Nicht-Client-Aufgaben wie das Verschieben und Ändern der Fenstergröße erledigen kann.

Sofern nicht jemand eine Methode findet, das Vista-Design unter XP auf magische Weise zu aktivieren, ist dies die Antwort auf die Frage, aber ich kann meinen eigenen Beitrag natürlich nicht als Antwort markieren.

Owen, ich verwende Chrome unter XP und sehe im Chrome-Fenster kein Glasdesign „Vista Aero“.Ich sehe es als durchgehendes Blau.

Wenn Sie benutzerdefinierte Designs für Steuerelemente und Fenstertitelleisten wünschen, ist dies möglich.Es gibt ein hervorragendes, kostenloses UI-Toolkit für WinForms, das genau das tut: KryptonToolkit

@Jonathan Holland:Ist dies etwas, das von .NET aus erledigt werden kann?

Ja, mit DllImport. Hier ist ein guter Blogbeitrag

Google Chrome verwendet das Windows Vista SDK, um den Glass-Look unter XP zu erhalten.Sie können es hier herunterladen:

http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065&displaylang=en

Dazu müssen Sie das verzögerte Laden der folgenden DLLs aktivieren, um den Glaseffekt in XP zu erhalten:

  • uxtheme.dll
  • dwmapi.dl

Nein, ich fürchte, es gibt keine andere einfache Möglichkeit, dies zu tun.

Du bist auf dem richtigen Weg.Sie müssen ein benutzerdefiniertes Winform erstellen und dann wie hier dargestellt vorgehen Beispiel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top