IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

[C++/CLI / Csharp][2.0] Comment recuperer une ressource ?


Sujet :

C++/CLI

  1. #1
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par d�faut [C++/CLI / Csharp][2.0] Comment recuperer une ressource ?
    Probl�me simple concernant le framework 2.0
    Je possede une picture box dans ma form et je souhaite lui faire changer d'image selon le comportement de ma form.
    j'essaye d'utiliser ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    Resources::ResourceSet resx(L"Form1.resX");
    IC_Etat->Image = safe_cast<System::Drawing::Image^> (resx.GetObject("inactif"));
    mais en fait je recupere une excepion du type
    An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll

    Additional information: Stream is not a valid resource file.
    en gros il me dit que ce n'est pas un stream : en fait je sais que ce n'est aps un stream : c'est mon pathname de mon resX.
    j'ai regarder et intellisense me propose bien un constructeur qui prend un pathname et non un stream. Alors je vois pas pourquoi �a fonctionne pas.
    Bref si quelqu'un a une solution pour avoir par exemple 3-4 image et selon si on clike sur un bouton sa affiche tellle ou telle image.
    Merci

    PS: les image ne doivent pas etre dynamic : elle sont cacher a linterieur de l'appli il faut quelle soit compil� comme s'il s'agissait d'un icone.

  2. #2
    Expert confirm�
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    D�tails du profil
    Informations personnelles :
    �ge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par d�faut
    http://msdn2.microsoft.com/library/s08s45bc.aspx#

  3. #3
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par d�faut
    a oui j'avai oublier de preciser que j'avai deja consulter la msdn et que cela produisai la meme exception... en gros neguib : ton lien je le connaissais mais si tu regarde bien ma syntaxe est bonne. et la je vien de REfaire ma syntaxe pour que cela ressemble a l'exemple msdn:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Resources::ResourceSet^ rs = gcnew Resources::ResourceSet("Form1.resX");
    et la meme exception est generer ! alors .... voil� quoi si quelqu'un a reussi a faire �a d�j�

  4. #4
    Expert confirm�
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    D�tails du profil
    Informations personnelles :
    �ge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par d�faut
    c'est vraiment bizarre

    Bon en fait, cela doit parler d'une exception interne, car sousjascent � ce constructeur, il a une instanciation d'1 ResourceReader(fileName) qui lui m�me fait appel � une instanciation de FileStream
    Et l� il serait peut �tre interressant de verifier (try/catch) s'il s'agit bien d'un ArgumentException de ton constructeur
    Citation Envoy� par MSDN
    path est une cha�ne vide (""), ne contient que des espaces blancs ou contient un ou plusieurs caract�res non valides.
    Alors qu'effectivement le constructeur de FileStream rec�le de bien plus nombreuses sources d'exceptions (notamment toutes les IOExceptions)
    Tentes avec le chemin complet du fichier etc...

  5. #5
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par d�faut
    Voila ce que me dit le msdn :
    Citation Envoy� par MSDN
    ResourceSet (Stream)
    Creates a new instance of the ResourceSet class using the system default ResourceReader that reads resources from the given stream.
    Supported by the .NET Compact Framework.

    ResourceSet (String)
    Creates a new instance of the ResourceSet class using the system default ResourceReader that opens and reads resources from the given file.
    Supported by the .NET Compact Framework.
    Et voil� ce que j'en conclu :
    Le constructeur qui prend comme param�tre un string correspondant au pathname n'est pas implement�.
    Par consequent lorsqu'il voit un type string comme param�tre du constructeur il l'utilise comme stream mais ce ne sont pas des type compatible. Et du coup ben �a me met dans la merde ...
    Bref ... donc j'aimerai alors utiliser ce qui marchent : je vais utiliser le constructeur qui prend un Stream comme param�tre (m�me si je sais pas ce que c'est)

  6. #6
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par d�faut
    Ca marche pas ! -__-
    Bon on va faire plus simple comment linker de maniere static des images et n'importe laquelle dans un picture box grace a la methode :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    MyPictureBox->Image = (System::Drawing::Image^)???? ;
    en gros comment obtenir un type System:rawing::Image a partir d'une ressource dans le resX (et aussi faut-il vraiment utiliser le file.resX si on veut une ressource staticement linker)
    Tant de question sans reponse ...
    Merci d'avance pour les nombreuses reponse que vous allez m'aporter

  7. #7
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par d�faut
    J'ai un PictureBox et je veu m'en servir pour simuler une diode allum�e ou �teinte ... j'ai creer 2 image que j'ai ajouter dans mon fichiers resx(est ce qu'il fallait ?). Mais je n'arrive pas a donner un attribut a mon PictureBox pour changer l'image car il me demande un type System:rawing::Image.
    En gros je reprend ma question d'avant :
    comment obtenir un type System:rawing::Image a partir d'une ressource dans le resX ?

  8. #8
    Membre �m�rite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    D�tails du profil
    Informations personnelles :
    �ge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par d�faut
    Mode d'emploi pour utiliser des ressources avec Visual C++ 2005 Express.

    IL faut �viter d'utiliser le fichier resx associer aux forms puisqu'il est recr�� par le designer � chaque modification...
    On peut utiliser son propre fichier resx. VS Express n'offre pas de template pour cr�er directement ces fichier.
    Il faut donc cr�er un fichier vide avec l'extension resx : dans l'explorateur menu Fichier/Nouveau/Document texte puis changer le nom.
    Pour l'exemple, j'utiliserai le nom "custom.resx"

    Ajouter ce fichier au projet.

    Ins�rer une image � partir de l'�diteur Visual Studio.

    Le code suivant permet de r�cup�rer l'image et de l'afficher dans une PictureBox
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     Resources::ResourceManager^ resManager = gcnew Resources::ResourceManager("test.custom", Reflection::Assembly::GetExecutingAssembly());
     this->pictureBox1->Image = safe_cast<Image^>(resManager->GetObject("imageTest"));
    "test.custom" est compos� du nom d'application et du nom du fichier resx
    "imageTest" est le nom de l'image dans le fichier resx.

    Mode d'emploi pour utiliser des ressources avec Visual C# 2005 Express.

    Pour la m�me op�ration en C#, il est beaucoup plus simple d'utiliser la page de propri�t� du projet qui offre un onglet Resources qui correspond � un fichier resx.
    Le compilateur C# fait tout le travail et le m�me exemple se r�duit �:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
                this.pictureBox1.Image = global::test.Properties.Resources.imageTest;
    o� "test" est le nom du projet et "imageTest" le nom de l'image.

  9. #9
    Membre �m�rite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    D�tails du profil
    Informations personnelles :
    �ge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par d�faut
    Apr�s r�flexion, l'utilisation des ressources me para�t bien compliqu�e pour r�soudre ton probl�me.

    Il me semble plus adapt� d'utiliser un composant ImageList pour stocker uniquement des images li�es � une Form.

  10. #10
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par d�faut
    Merci NicolasG, pour tes information plus que utiles
    car on va dire que j'avaias beau chercher : c'est quand m�me pas facile a trouver.
    C.U.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 5
    Dernier message: 11/05/2006, 19h20
  2. comment recuperer une variable sans input?
    Par fenneck dans le forum Langage
    R�ponses: 20
    Dernier message: 02/04/2006, 19h26
  3. [Mail] Comment recuperer une variable d'environement.
    Par bullrot dans le forum Langage
    R�ponses: 3
    Dernier message: 06/03/2006, 15h01
  4. Picklist: comment recuperer une partie de la valeur
    Par mesquest dans le forum Bases de donn�es
    R�ponses: 3
    Dernier message: 07/06/2004, 08h54
  5. comment recuperer une variable dans flash
    Par kr�puscul dans le forum Flash
    R�ponses: 30
    Dernier message: 16/10/2003, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo