Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VC8 XP style [ Archives / API ] (JoebarGlut)

mardi 7 mars 2006 à 19:27:34 | VC8 XP style

JoebarGlut

Salut, j'ai un ancien programme que j'avais codé sous VC6 et je vois que dans l'IDE de VC8, mes dialogbox ont automatiquement pris le style XP. Cool.
Seulement quand je compile, je me retrouve avec les anciens controles :'(
Dois-je creer un nouveau projet et refaire mes fenetres ou existe-t-il une solution de conversion ?
merci.

mardi 7 mars 2006 à 20:23:05 | Re : VC8 XP style

spiky31

Membre Club
Réponse acceptée !
salut Ceci est tout a fait normal et il n'y a aucune conversion a faire ... (Surtout ne change rien !! ce sera du temps perdu) Il faut simplemnt que tu "insére" un fichier "manifest" dans ton executable Va dans les propriétés de ton projet : ->Configurations properties->Linker->Manifest file a l'option "Generate manifest" met "yes" a l'option "Manifest file" met le nom du fichier manifest avec son chemin d'acces Ton fichier manifest DOIT avoir cette gueule : Nom : tonapp.exe.manifest Contenu : wxWidgets application Voila ca devrait marcher ... Tu pouvait le faire sous VC6 aussi en bidoullant un peu (meme si le logiciel est sorti avant WinXP !!) Voila a+

mardi 7 mars 2006 à 21:44:16 | Re : VC8 XP style

JoebarGlut

J'ai fais ce que tu m'a dit : le "yes" etait deja la. J'ai ensuite ouvert le fichier "Projet05.exe.intermediate.manifest" de mon repertoire debug et remplacé le code existant pas le tiens.
J'ai recompilé mais rien n'a changé.
Sur un autre forum j'ai lu qu'il fallais un InitCommonControls() avant les createdialog et dialogbox. J'ai esseyé aussi, j'ai eu une erreur de lien.
J'ai alors rajouté
#include "commctrl.h" 
#pragma comment(lib, "comctl32.lib")
//#pragma comment(lib, "libcomctl32.a")

La lib commentée il ne l'a pas trouvé, j'ai donc compilé comme ça et ca passe. Mais toujours pas de XP style.

mardi 7 mars 2006 à 21:53:47 | Re : VC8 XP style

JoebarGlut

Oups désolé j'avais pas lu ça name="tonapp.exe", ça marche, impec merci ! :)

mardi 7 mars 2006 à 22:01:27 | Re : VC8 XP style

JoebarGlut

Par contre à chaque modif de mon code et compil, il me recree le fichier par default... si tu connais un truc, sinon c'est pas grave, je le ferais à la fin.

mardi 7 mars 2006 à 22:22:06 | Re : VC8 XP style

Xaviou

Réponse acceptée !
Voici comment je procède sous VS.NET 2003 :
Premièrement, tu fais comme te l'as expliqué Spiky31 : Tu crées un fichier texte contenant les infos qu'il t'a donnée.
Par exemple, je viens de le faire avec une application win32, ça donne ça :


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
  xmlns="urn:schemas-microsoft-com:asm.v1"
  manifestVersion="1.0">
<assemblyIdentity
    name="EssaiManifest.Application"
    processorArchitecture="x86"
    version="1.0.0.0"
    type="win32"/>
<description>EssaiManifest</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>


Pour vérifier si ton fichier est valide, donnes-lui le même nom que ton éxécutable en lui ajoutant ".manifest" à la fin
Ainsi, mon exemple me fait un éxécutable qui s'appelle EssaiManifest.exe
J'ai donc appelé mon fichier EssaiManifest.exe.manifest
Place ce fichier dans le même répertoire que l'éxécutable.
Lance ton éxécutable par un double-click depuis l'explorateur, si ton fichier est OK, tu doit avoir le style XP pris en compte. Pour info, avec une simple application Win32 de base, et un malheureux bouton dessus, j'ai été obligé de linker avec comctl32.lib et de faire un appel à InitCommonControls(); Ceci est dû au fait que les contrôles ayant le style XP ne sont plus considérés comme de simples boutons, mais comme des contrôles avancés (ou quelque chose comme ça).
L'inconvénient de cette méthode, c'est que tu es obligé de fournir le fichier manifest avec ton application.
Il existe une autre méthode qui est de l'inclure dans les resources de ton éxécutable.
Voici la marche à suivre (je suis toujours sous VC.NET 2003)
Déplace ton fichier manifest dans le répertoire contenant tes resoures, et, comme c'est du xml, appelles-le tout simplement "Manifest.xml". (plus besoin du nom de l'éxéctuable, on s'en fout)
Ensuite, dans Visual Studio, vas dans l'onglet des resources, et fais un click droit sur le nom de ton fichier resources dans l'arborescence (pour moi, c'est EssaiManifest.rc)
Clique sur Resources Symbols, et ajoute une entrée appelée IDR_MANIFEST, en lui donnant la valeur 1 (c'est impératif)
Vas ensuite dans Project / Add Resource, choisi "Import", et vas chercher le fichier "Manifest.xml"
Visual Studio te demande alors de quel type est cette resource : tapes RT_MANIFEST dans le champ Ressource Type.
Normalement, ton fichier a du s'ouvrir en mode hexadécimal dans l'éditeur de Visual Studio. Fermes-le, on n'a plus besoin de l'éditer.
Changes ensuite l'ID de la resource que l'on vient d'ajouter, en lui donnant IDR_MANIFEST (celui qui valait 1 tout à l'heure).
Compiles, et le tour est joué. Le fichier manifest a été inclus à ton éxécutable, et n'a plus besoin d'être fourni avec l'application.

Une autre méthode existe pour les éxécutables dont tu ne possèdes pas le code source, c'est d'ajouter ce fichier à l'éxécutable avec un logiciel permettant de lire/écrire les resources d'un éxécutable (par exemple, ResHack).

J'espère avoir été clair
Si tu rencontres des problèmes, n'hésites pas.

mercredi 8 mars 2006 à 06:24:50 | Re : VC8 XP style

spiky31

Membre Club
Réponse acceptée !
Salut La lib "comctl32.lib" je la lie habituellement quand j'utilise des controles qui ne sont pas chargé en memoire par winXP. (Exemple : Progress Bar) Par contre elle ne ma jamais servi pour obtenir le style XP ... Maintenant, je ne savais pas qu'un appel a InitCommonControls() m'obligeait a linker le fichier manifest, comme je le linke tout le temps ... :) Bref a verifier Pour ta derniere question Joebar, ca vien tout simplement du fait que je me suis planté :). Mon fichier je le mets dans "Manifest tool"->"Additional manifest files". Voila excuse moi pour ma petite erreur ... Si ta encore des questions, n'esites pas, j'essaierais d'y repondre ce soir (la je vais au boulot ...) sauf si quelqu'un ta deja repondu :) Voila a+

mercredi 8 mars 2006 à 13:32:16 | Re : VC8 XP style

JoebarGlut

J'ai mis le manifest dans "manifest supplémentaire", ça fonctionne à merveille :) J'ai aussi commenté les InitCommonControls(), ils ne sont pas obligatoires avant chaque appels aux boites de dialogue comme je l'avais lu. Je l'ai donc juste mis au debut du winmain. J'ai aussi testé ta soluce Xav, mais ca n'a pas fonctionné. Ton explication etait claire mais peut etre que quelque chose a changé dans la version 8. Merci à vous deux !! :) bye



Cette discussion est classé dans : style, xp, vc8


Répondre à ce message

Sujets en rapport avec ce message

Style XP avec la MFC [ par Dodgy ] Bonjour,je suis novice en programmation objet. Je recherche actuellement un moyen pour que les applications que je cree en MFC avec VC++6 aient le sty Changer un Visual Style sous XP [ par kemenaran ] Voila, je cherche un API ou une commande VB6 pour charger un thème visuel (fichier .msstyle) sans passer par "Propriétés de l'Affichage". Je connais l Richedits et style XP [ par Nebula ] Bonjour, Encore une contrariété avec les RichEdits : ils ne prennent pas l'apparence XP, comme les edits normaux. Dixit MSDN : "To use visual styles Style XP [ par Crazy_Joe ] Bonjour, J'ai cherché un peu partout dans le forum pensant que ça aurait été une question fréquente mais non, je n'ai rien trouvé. J'aimerais appliqu Problème d'onglets avec le style XP [ par MasterShadows ] Salut à tous,voilà le problème, je suis en train d'écrire un p'tit programme à base d'onglets, alors voilà ce que j'ai fait :En prenant l'éditeur de r DLL - style XP sous IE et Outlook [ par latournd ] Bonjour, Nous avons développé une DLL windows avec une interface graphique à l'aide des librairies MFC.Le style de la DLL est bien conforme au style X Style Xp [ par yoyo269 ] Salut à tous,je suis actuellement sous Dev-C++ 4.9.9.2 et je souhaiterais qu'un de mes programmes ait le style XP.J'arrive à obtenir le style XP sans fichier manifest - Style XP [ par Roro8883 ] Bonjour à tout le monde !Je suis en train de développer un programme avec wxWidgets, dans lequel j'utilise un fichier .manifest pour avoir le style XP Dev-Cpp et Windows XP Style [ par lektrosonic ] Quand je selectionne aux Projects Options: Suporte Windows XP Style..et je lance mon application, la fenetre est trop laide. Atutour des edit et des s [Win32] Comment laisser le style Windows 9* à une boite de dialogue alors que la fenêtre principale est au style XP ? [ par uaip ] Bonjour à tous,Ma question est toute bête (je pense) pourtant je n'y arrive pas.En gros, j'ai créé une fenêtre utilisant l'API Win32, et je lui ai mis


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.