Avant Windows XP, il existait essentiellement 2 types de composants graphiques :
les contrôles utilisateurs de base : bouton, zone de texte, combo box, ... définis dans la dll User32.dll. Celle-ci étant automatiquement liée à un exécutable lors de son lancement, les composants standards sont donc directement accessibles à un programme les contrôles communs (common controls) : zone de texte enrichi, liste déroulante, onglets, ... nécessitant la liaison dynamique avec la dll ComCtl32.dll, c'est à dire d'inclure COMMCTRL.H et d'appeller explicitement InitCommonControls au lancement du programme.
Windows XP possède une nouvelle version de cette librairie : la version 6, qui apporte un nouveau style graphique à tous les composants, y compris les composants utilisateurs de base. ComCtl32.dll version 6 redéfinit donc les composants standards contenus dans User32.dll.
Pour profiter de ces nouveaux styles, une application doit obligatoirement utiliser cette dll. Or, de nombreux programmes possèdent une interface minimale dépourvue de tout composant commun, et ne font donc pas appel à cette librairie. Pour rester compatible, Windows XP possède donc aussi l'ancienne version de ComCtl32.dll, c'est à dire la version 5. Celle-ci est contient uniquement les composants communs pourvus de l'ancien style.
Par défaut, un programme utilise les composants utilisateurs classiques définis dans User32.dll et les composants communs définis dans l'ancienne version de ComCtl32.dll : la version 5.
La seule chose à faire pour profiter du nouveau style visuel de Windows XP est donc tout simplement de faire appel à ComCtl32.dll version 6 dans son programme. Il n'y a donc aucune modification à faire dans le code d'un programme comme on pouraît le croire, si ce n'est à faire appel à InitCommonControls si ce n'était pas déjà fait.
En effet, spécifier la version à utiliser ne se fait pas programmaticalement. Il n'y a pas de fonction qui permette de spécifier la version à utiliser.
Ceci obligatoirement fait à l'aide d'un manifest. Un manifest est un fichier XML qui accompagne un fichier exécutable, et contient, entre autre, des informations sur l'exécutable (nom, version, ...) ainsi que sur la liaison / l'activation de librairies / composants COM. Ce type d'information était auparavant enregistrées dans la base de registre.
Voici un exemple de manifest pour le programme MonProgramme.exe :