2009-09-09 8 views
4

J'ai un manifeste incorporé en tant que ressource Windows. Mais quelle est la bonne façon de l'appliquer?Comment utiliser un manifeste incorporé en tant que ressource? (Contrôles de style Windows XP/Vista)

Plus précisément:

J'ai mon dossier .manifest. C'est la norme pour faire en sorte qu'une application utilise des contrôles dans le style visuel de Windows XP/Vista. Lorsqu'il est appliqué en étant dans le même répertoire que le fichier .exe et correctement nommé, cela fonctionne.

Cependant, cette approche est plutôt lourde. J'aimerais que mon .exe soit autonome. Clairement, cela peut être fait, étant donné que la plupart des applications sur mon ordinateur parviennent à utiliser le style moderne sans un fichier manifeste distinct.

J'ai donc regardé autour de moi, et finalement trouvé l'intégration du manifeste en tant que ressource. J'ai donc ajouté cette ligne à mon fichier .rc:

1 RT_MANIFEST "mdiedit.exe.manifest" 

Mais que dois-je faire?

Editer: Si cela vous aide à le savoir, mon programme est écrit en D et construit en utilisant les compilateurs Digital Mars D et de ressources. Pas d'IDE. Mais je m'attendrais à ce que toute solution qui fonctionne en C (++), lorsqu'elle est construite en utilisant des outils de ligne de commande, fonctionne aussi en D.

+0

Eh bien, pouvez-vous vérifier que le fichier EXE contient en fait le manifeste? Je ne sais pas si votre environnement peut, mais Visual Studio peut ouvrir des fichiers EXE en utilisant l'éditeur de ressources. Si vous pouvez ouvrir la ressource RT_MANIFEST et vérifier le contenu. –

+0

Ce qui veut dire qu'à la surface vous faites tout correctement. Si le manifeste est dans le fichier EXE, aucune API distincte n'a besoin d'être appelée. –

Répondre

8

RT_MANIFEST est DEFINE, alors assurez-vous que votre fichier de ressources comprend l'en-tête correcte, ou tout simplement remplacer RT_MANIFEST avec 24

+0

Cela a fonctionné, merci! (Leçon apprise: les en-têtes Windows livrés avec DMC sont obsolètes.) Comment le compilateur de ressources interprète-t-il réellement un type de ressource inconnu? Sont-ils juste comme les identifiants de ressource en ce qu'ils peuvent être des mots ou des nombres? – Stewart

+0

Les ID de ressource peuvent être des chaînes ou des nombres. ... Et si cela a fonctionné, que diriez-vous de marquer la réponse? – Anders

0

Avez-vous encore ajouté le fichier .rc à votre projet? Vous pouvez également utiliser le compilateur de ressources de votre environnement de développement, tel que brcc32.exe ou rc.exe, pour compiler le fichier .rc dans un fichier .res, puis ajouter ce fichier à votre projet.

+0

Déjà fait. Aucun effet. (Si ce n'était pas le cas, aucune de mes boîtes de dialogue, menus ou icônes ne fonctionnerait.) Votre IDE peut-il automatiquement ajouter du code d'exécution lorsque vous faites cela? – Stewart

+0

Non, aucun code d'exécution n'est impliqué. Il compile les fichiers .rc directement dans les ressources exécutables. –