Utiliser les styles xp en visual basic

Description

Utiliser les styles XP en Visual Basic

Introduction

L'arrivée du nouveau système d'exploitation de Microsoft, Windows XP, a aussi conduit à l'arrivée d'une nouvelle interface, qui se distingue des versions précédentes de Windows. Cette nouvelle interface touche aussi bien les fenêtre que les contrôles (barre d'outils, boutons, ...) .

Malheureusement, ceux qui ont essayé d'exécuter des anciennes applications sous Windows XP ont pu se rendre compte que les nouveaux styles n'étaient pas pris en compte, et l'application présentait une "vieille" interface du même style que Windows 98.

Utiliser les styles pour un programme non prévu pour Windows XP

En fait, pour profiter de la nouvelle interface, il est nécessaire de créer un fichier qui va accompagner le programme, pour signaler à Windows que cette application peut utiliser les nouveaux styles, et exécuter une fonction API au démarrage du programme pour initialiser les styles. Ce fichier porte le nom de l'exécutable suivit de l'extension ".manifest". Par exemple 'notepad.exe.manifest'. Ce fichier contient entre autres la version pour lequel il a été créé et la description du programme.

Pour essayer d'inclure les nouveaux styles, créons un nouveau projet Visual Basic qui contient quelques contrôles (boutons, ...) et compilons-le en exécutable avec comme nom projet1.exe. Si vous l'exécutez, il n'aura pas les nouveaux styles de Windows XP. Téléchargez le fichier manifeste qui va l'accompagner et placez-le dans le même dossier que le fichier compilé. Attention ! Pour que ceci fonctionne, il faut que le fichier .manifest porte le même nom que le fichier compilé qui l'accompagne (par exemple projet1.exe.manifest si votre exécutable porte le nom de projet1.exe), et doit se trouver dans le même dossier !
Pour initialiser les styles au démarrage de votre programme, utiliser le code ci dessous.

En compilant et exécutant le programme à nouveau, on se rend compte que Windows prend cette fois ci en compte la nouvelle interface.

Utiliser les styles sous Visual Basic

Mais un problème se pose encore : lors de la création de la feuille sous Visual Basic, celui-ci affiche les contrôles avec l'ancienne interface ; c'est pas très pratique, puisque nous sommes obligés à chaque fois de compiler l'application et de l'exécuter accompagnée de son fichier "manifest" pour tester les nouveaux styles.
Pour contrer ce problème, il faut "donner" à Visual Basic lui-même un fichier "manifest", qui lui permettra d'utiliser les nouveaux styles pour sa propre interface mais également pour la création de feuille !
Téléchargez le fichier manifest et copiez-le dans le dossier où est installé Visual Basic (par exemple C:\Program Files\Microsoft Visual Studio\VB98). Exécutez Visual Basic et ouvrez le projet précédent. Visual Basic affiche désormais les nouveaux style lors de la création de la feuille, mais également lorsqu'on exécute le programme sous Visual Basic. Il n'est donc plus nécessaire d'effectuer une compilation à chaque fois que l'on veut tester l'interface de notre application.

Si vous placez des frames dans votre feuilles qui contient des contrôles, notamment des coches ou des options, vous vous rendrez compte que Visual Basic les peint avec un fond noir, ce qui rend le contrôle illisible. Pour contrer ce problème, il est nécessaire de placer un autre contrôle conteneur, par exemple un contrôle PictureBox à l'intérieur de la frame, et placer tous les contrôles de le PictureBox. Il suffit ensuite de mettre la propriété BorderStyle à 0 pour "cacher" cette manip.

Pour aller plus loin

Si vous trouvez contraignant de distribuer vos exécutables accompagné d'un fichier "manifest", il est possible d'insérer ce fichier "manifest" dans les ressources du programme, soit à en utilisant l'éditeur de ressources de Visual C++ (celui de Visual Basic ne fonctionne pas), soit depuis un programme capable de modifier les ressources d'un exécutable, comme Ressource Hacker.
Il est nécessaire de placer ce fichier "manifest" avec un type 24 (et non "24") et un ID de 1. Par exemple si vous utiliser l'éditeur de ressource de Visual C++, cliquez sur Insert Resource puis cliquez sur le bouton Custom.... Dans la zone Resource Type, tapez 24 (sans guillements) et collez le contenu du fichier "manifest" (ouvert auparavant avec le bloc-notes par exemple). Affichez ses propriétés et changer le ID en 1 (sans guillements). Enregistrez les ressources et compilez votre programme. Celui-ci s'exécute en intégrant les nouveaux styles de Windows XP sans nécessairement être accompagné de son fichier "manifest", qui est maintenant lié à l'intérieur de l'exécutable.
Pour illustrer ces manipulations, télécharger ce fichier et suivez les étapes :

1. Ouvrez le fichier "manifest" avec le bloc-note.
2. Utilisez l'éditeur de ressources de Visual C++ pour modifier les ressources du projet Visual Basic.
3. Cliquez sur le menu Insert puis Resource, puis sur le bouton Custom...
4. Entrez comme type de ressource : 24
5. Coller le contenu du fichier "manifest"
6. Fermer la ressource et modifier ses propriétés en mettant 1 dans l'ID.
7. Enregistrez la ressource et compilez votre fichier sous Visual Basic. L'exécutable supporte les nouveaux styles sans fichier "manifest" l'accompagnant !

Source / Exemple :


' Pour initialiser les styles, placer ce code à la déclaration de la feuille :

Private Declare Function InitCommonControls Lib "comctl32.dll" () As Long

' Puis ce code en réponse à l'événement Initialise de la feuille :

Private Sub Form_Initialize()

     InitCommonControls

End Sub

Conclusion :


Pour avoir plus d'informations et un article comportant des images, visitez notre page : http://www.atlence.com/programs/winxp_vb.php

Pour nous écrire (demande d'infos, ...) : programmation@atlence.com.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.