Documentation et exemples d’API pour dessiner sur Windows Aero Glass (DWM, GDI, GDI +) pour tous les programmeurs Win32

Je cherche de bonnes ressources pour apprendre à utiliser les API Win32 / GDI ou tout ce qui le remplace pour dessiner et peindre directement à l’aide de l’API Win32 sur un formulaire en verre.

Pendant que j’utilise Delphi, je l’ai taggé en tant que Delphi ou Visual C ++. Tous les exemples de code et articles que vous pouvez trouver seraient appréciés. Les articles MSDN ne semblent pas être écrits à ce sujet.

Comme objective, imaginons que vous souhaitiez soit: (a) reproduire ce que fait Google Chrome (tabs faisant partie du cadre) (b) reproduire ce que fait MS Office 2010 (bouton de sauvegarde sur le cadre en verre, référencé dans MFC pour VS 2010, comme “Quick Access Toolbar” (voir image ci-dessous).

Je n’utilise pas MFC, mais si l’examen des sources MFC constitue une bonne source d’informations, je suis curieux de savoir où dans les sources MFC ou les sources originales BCG (j’ai les deux) est implémenté le code de rendu / peinture Quick Access Toolbar.

texte alt

Mise à jour: Un lien associé à l’une des réponses ci-dessous montre le message de peinture NC (non client) et comment le traiter lors de la peinture sur un cadre en verre, ainsi qu’un article MSDN à ce sujet ici .

Ceci est un sous-ensemble de mon dossier de signets “Glass”, le résultat de nombreuses recherches / recherches sur ce sujet. J’ai trouvé tout cela utile pour apprendre à connaître le verre et résoudre divers problèmes. La plupart d’entre eux incluent le code Delphi, mais j’ai noté où il se trouve pour une autre langue.

Liens en verre ordinaire

  • Utiliser des fenêtres translucides avec Delphi : bonne introduction (à partir des bases) pour utiliser Glass dans les formulaires Delphi
  • Dessin personnalisé sur verre : explique comment dessiner un bitmap ou une autre image sur une surface vitrée de la fenêtre. Couvre les canaux alpha, etc.
  • Utilisation du verre dans un projet VC ++ : couvre le verre, dessine du texte, traite les notifications, etc. – une bonne introduction générale au fonctionnement. Un grand nombre des détails sous-jacents sont gérés par la VCL (par exemple, la propriété GlassFrame et les composants internes de TForm s’occupent de cela), mais il est très utile de comprendre les bases de la mise en œuvre au niveau de l’API de toute façon.
  • Comment dessiner sur la zone non client : cela montre comment dessiner quelque chose comme la barre d’outils d’Office dans la barre de titre. .Net, mais traduisible
  • Mise en place d’une barre de titre personnalisée : article très détaillé sur le dessin non-client (dans Delphi, donc le code Delphi). Suivi par la partie 2 , qui montre complètement prendre en charge toute la fenêtre et imiter la barre de titre standard vous-même. Ces deux articles vous permettront d’imiter Office et Chrome comme vous l’avez demandé dans la question.
  • Comment configurer les différents contrôles VCL pour qu’ils fonctionnent le mieux sur une surface vitrée : la VCL ne supporte pas très bien le verre. Vous obtiendrez souvent des artefacts, ou des contrôles ne dessinant pas du tout, peu importe ce que vous faites pour essayer de le résoudre. Cet article répertorie les composants visuels de base de la VCL (étiquettes, boutons, barres de progression, etc.) et les éléments à configurer pour qu’ils soient parfaitement dessinés, ou du moins «aussi bons que possible» lorsqu’ils sont placés sur une surface vitrée.

Avancé ou lié tangentiellement:

  • Comment fonctionne la composition de bureau, avec les surfaces GDI et DirectX
  • Liste des API de gestionnaire de bureau (dont certaines sont liées à Aero)

Ces publications sur le dessin d’une barre de titre personnalisée sous Vista / Windows 7 pourraient vous intéresser.

Image de l’échantillon:

Échantillon

Je suis sûr que vous avez trouvé la page MSDN sur le DWM . Il a sauté de nombreux sujets et quelques exemples. Certains articles “d’aperçu” contiennent des exemples (comme la vue d’ensemble DWM Blur Behind ).

Malheureusement, hormis la documentation, il y a très peu de bons articles. Vous pouvez commencer avec Utiliser le verre sur codeproject et regarder un verre de détection dans delphi – après cela, utiliser les fonctions directement à partir des documents n’est pas trop mal. Heureusement, ils sont tous très simples dans la pratique.

Bon site Web pour les composants en verre, y compris un bouton en verre:

http://rmklever.com/

De plus, ces anciens articles peuvent vous aider à:

  • Création d’applications Windows Vista Ready avec Delphi
  • Création d’applications Windows Vista Ready avec Delphi Update – Janvier 2007