Question

Je suis presque certain de connaître la réponse à cette question, mais j'espère qu'il y a quelque chose que j'ai oublié.

Certaines applications semblent avoir l'apparence de Vista Aero dans leurs barres de sous-titres et leurs boutons, même lorsqu'elles fonctionnent sous Windows XP.(Google Chrome et Windows Live Photo Gallery me viennent à l'esprit à titre d'exemples.) Je sais qu'une façon d'y parvenir à partir de WinForms serait de créer un formulaire sans bordure et de dessiner vous-même la barre de légende/les boutons, puis de remplacer WndProc pour m'assurer que le déplacement, le redimensionnement et les clics sur les boutons font ce qu'ils sont censés faire (je ne suis pas clair sur les détails, mais je pourrais probablement y parvenir avec un jour pour lire la documentation.) Je suis curieux de savoir s'il existe un autre, moyen plus simple que je néglige.Peut-être certains appels d'API ou styles de fenêtres que j'ai négligés ?

Je pense que Google y a répondu pour moi en utilisant l'approche « déroulez votre propre fenêtre » avec Chrome.Je laisserai la question ouverte un autre jour au cas où quelqu'un aurait de nouvelles informations, mais je pense avoir répondu moi-même à la question.

Était-ce utile?

La solution

Voici un article avec un exemple de code complet sur la façon d'utiliser votre propre "chrome" personnalisé pour une application :

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

Cela ressemble à de très bonnes choses.Il y a un total de 3 articles dans sa série, et ça fonctionne très bien, et sur Vista aussi !

Autres conseils

Google Chrome est pas en utilisant le SDK Vista pour y parvenir sur XP.Si vous jetez un coup d'œil src\chrome\browser\views\frame il existe plusieurs fichiers pour définir le cadre du navigateur en fonction des capacités du système.Sous XP, cela ressemble à OpaqueFrame est utilisé;la ligne 19 dit ceci :

// 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.

On dirait qu'il utilise les ressources de src\chrome\app\theme pour dessiner les boutons du cadre.

Il semble donc que mes espoirs qu'il existe une sorte de moyen peu coûteux d'activer le thème Vista sur XP sont anéantis.La seule façon de le faire est de dessiner manuellement la zone non cliente de votre fenêtre.Je crois quelque chose comme ça est probablement la bonne voie, car elle permet à Windows de gérer les éléments non-clients comme le déplacement et le redimensionnement de la fenêtre.

À moins que quelqu'un puisse trouver une méthode pour activer comme par magie le thème Vista sur XP, c'est la réponse à la question mais je ne peux évidemment pas marquer mon propre message comme réponse.

Owen, j'utilise Chrome sur XP et je ne vois pas le thème en verre "Vista Aero" sur la fenêtre Chrome.Je le vois en bleu uni.

Si vous souhaitez créer un thème personnalisé pour les contrôles et les barres de titre des fenêtres, cela peut être réalisé.Il existe une excellente boîte à outils d'interface utilisateur gratuite pour WinForms qui fait exactement cela : KryptonToolkit

@Jonathan Hollande :Est-ce quelque chose qui peut être fait à partir de .NET ?

Oui, en utilisant DllImport. Ici est un bon article de blog

Google Chrome utilise le SDK Windows Vista pour obtenir l'aspect du verre sur XP.Vous pouvez le télécharger ici:

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

En utilisant cela, vous devez activer le chargement différé des DLL suivantes pour obtenir l'effet Glass dans XP :

  • uxtheme.dll
  • dwmapi.dl

Non, j'en ai bien peur, il n'existe pas d'autre moyen simple de procéder.

Tu es sur la bonne piste.Vous devrez créer un Winform personnalisé, puis procéder comme illustré dans ceci exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top