*?!$... de ressources

cs_Xaviou Messages postés 154 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 2 octobre 2009 - 24 févr. 2003 à 22:25
cs_JuS Messages postés 121 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 20 mars 2009 - 25 mai 2004 à 11:35
'Lu à tous.

J'ai un problème avec les ressources.

Je voudrais compiler quelques icones avec mon éxécutable, afin de pouvoir les réutiliser lors de l'éxécution, mais ça ne marche pas.

Comme je n'ai pas Visual Studio .NET, je me suis inspiré d'un exemple du SDK pour créer un fichier .resx:

....
ResXResourceWriter rsxw = new ResXResourceWriter("MonFichier.resx");
Icon MonIcon=new Icon("Fichier.ico")
rsxw.AddResource("MainIcon",MonIcon);
rsxw.Close();

Dans mon application, je mets quelque chose du style :

ResourceManager Rsrc = new ResourceManager(Assembly.GetExecutingAssembly());
MaForm.Icon=(System.Drawing.Icon)rm.GetObject("MainIcon");

Je compile le tout avec la commande (abrégée) :

csc /res:MonFichier.resx Main.cs
J'obtiens donc un fichier Main.exe, qui bien sûr plante lorsque je l'éxécute.

J'attends avec impatience vos solutions, ou conseils.

Merci d'avance, et bonne prog à tous

5 réponses

sparky_rv Messages postés 9 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 6 octobre 2004
18 mars 2004 à 11:47
Salut !! bon dans mon cas je voulais faire la meme chose mettre plusieurs icones afin de creer un service et modifier l icone dans la bare des taches en fonction des evenements ..
tou fonctionne sauf que les icones etaient stockées a coté de l executble ... (chiant quoi)
grace a ton aide j ai peu trouve ou se cacher l icone dans le fichier et en rajouté ... (avec l aide de visual :p)

----------------------------------------------------------------------------------------------

donc si tu regarde ton fichier resx (sous visual)
l icone du prg principale se caracterisent par les lignes suivantes :

<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAB3d3d3d3d3cH+IiIh3d4dwBwAAAAAAAAAHiIiIiIiIAAcGZmZmZmgABwbm5u5u
6AAHBm5u7u74AAcG5u5u7ugABwZu7u7v6AAHBu5u7u7oAAcG7u7v7vgABwZu7u7v6AAHBu7v7v74AAcA
AAAAAAgAAHd3d3d3dwCAAQAAAAAAAAAAAACAAAAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
AACAAQAAgAEAAIABAADAAwAA
</value>
----------------------------------------------------------------------------------------------
et dans le prg principale on retrouvera l appelle de cette maniere :

this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));

----------------------------------------------------------------------------------------------

donc ce que j ai fait a ete de rajouter dans le fichier resx mes icones
ex :

<data name="$this.IconBlack" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAB3d3d3d3d3cH+IiIh3d4dwBwAAAAAAAAAHiIiIiIiIAAcFVVVVVVgABwV1dXdX
eAAHBVdXd3f4AAcFdXdXd3gABwVXd3d/eAAHBXdXd3d4AAcFd3d/d/gABwVXd3d/eAAHBXd/d/f4AAcA
AAAAAAgAAHd3d3d3dwCAAQAAAAAAAAAAAACAAAAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
AACAAQAAgAEAAIABAADAAwAA
</value>

<data name="$this.IconJaune" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAB3d3d3d3d3cH+IiIh3d4dwBwAAAAAAAAAHiIiIiIiIAAcDMzMzMzgABwOzs7s7
uAAHAzs7u7v4AAcDs7s7u7gABwM7u7u/uAAHA7s7u7u4AAcDu7u/u/gABwM7u7u/uAAHA7u/u/v4AAcA
AAAAAAgAAHd3d3d3dwCAAQAAAAAAAAAAAACAAAAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
AACAAQAAgAEAAIABAADAAwAA
</value>

<data name="$this.IconBlue" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAB3d3d3d3d3cH+IiIh3d4dwBwAAAAAAAAAHiIiIiIiIAAcGZmZmZmgABwbm5u5u
6AAHBm5u7u74AAcG5u5u7ugABwZu7u7v6AAHBu5u7u7oAAcG7u7v7vgABwZu7u7v6AAHBu7v7v74AAcA
AAAAAAgAAHd3d3d3dwCAAQAAAAAAAAAAAACAAAAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
AACAAQAAgAEAAIABAADAAwAA
</value>

----------------------------------------------------------------------------------------------
puis dans l initializeComponent pour recuperer ses icones (oui je l ai mis la dedans car une des variables de recup n est reconnue que la dedans ... ) j ai rajouté ca :

myIcons = new Icon[5];
myIcons[1] = ((System.Drawing.Icon)(resources.GetObject("$this.IconBlack")));//arret noir
myIcons[0] = ((System.Drawing.Icon)(resources.GetObject("$this.IconBlue")));//marche bleu
myIcons[2] = ((System.Drawing.Icon)(resources.GetObject("$this.Iconvert")));//traitement vert
myIcons[3] = ((System.Drawing.Icon)(resources.GetObject("$this.IconJaune")));//copie jaune
myIcons[4] = ((System.Drawing.Icon)(resources.GetObject("$this.IconRouge")));//rouge erreur

----------------------------------------------------------------------------------------------

voila je sais pas si j ai ete tress clair .. enfin acvec les exemples ca devrait aider .. (les icones c est moi qui les ai faites)
parcontre la modif effectué ca bloque le designer ..
si qqu un a mieu sympa de faire suivre !
0
sparky_rv Messages postés 9 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 6 octobre 2004
18 mars 2004 à 12:11
oups dans mon exemple resx j ai oublié les balises </data>
c est tout
0
cs_JuS Messages postés 121 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 20 mars 2009 1
14 mai 2004 à 15:45
Salut,

Je voulais savoir comment tu connaissais les valeurs qu'il faut mettre dans entre les balises <value></value> ???

-=[JuS]=-
0
sparky_rv Messages postés 9 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 6 octobre 2004
25 mai 2004 à 11:18
salut -=[JuS]=- !

alors pour se faire j ai utilisé visual studio par contre je previens c est caca ...
- j ai mis chaque icone une a une comme etant l icone pricipale du programme ...
- edité les fichier .resx (du mainprg)...
- copié les valeurs entre les balises <value></value>
et voila je me suis trouvé avec toutes mes icones ...
parcontre obligé de les garder dans un ficher separé et de les recoller a chaque modif du resx par visual sinon il ecrase tout !!

a priory c est code en object.bytearray.base64 donc il doit etre possible de faire un petit prg qui crache ca dans un txt de n importe quelle source !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JuS Messages postés 121 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 20 mars 2009 1
25 mai 2004 à 11:35
En cherchant c'est aussi la méthode que j'avais fait !
Mais bon c'est vrai que c'est fastidieux à faire !!!
Alors j'ai trouvé une meilleure solution !!!

Il faut créer une ImageList et insérer tes images dedans !
C'est easy à faire avec Visual Studio, mais bon si tu ne l'as pas ...

-=[JuS]=-
0
Rejoignez-nous