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

MFC Discussion :

"a required ressource was unavailable"


Sujet :

MFC

  1. #1
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut "a required ressource was unavailable"
    Bonjour,
    j'ai dans mon projet une DLL qui contient des dialogs.
    Je viens de rajouter des icônes pour ces dialogs, et j'ai un message qui remonte sous la forme de boîtes de dialogue windows empilées qui me dit "a required ressource was unavailable". Ca ne plante pas l'appli, elle continue à tourner en tâche de fond.

    Ma question :
    Qu'est-ce que c'est que ce message : :

    si vous avez des idées...


    Pour info, je charge les icônes avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    		hIcon = (HICON)::LoadImage(	AfxFindResourceHandle(MAKEINTRESOURCE(IDI_NOK_1),RT_GROUP_ICON), 
    												MAKEINTRESOURCE(IDI_NOK_1), 
    												IMAGE_ICON, 
    												16,16,LR_DEFAULTSIZE);

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    quand un exe est lié a une dll ,les fonctions de chargement des ressources situées dans l'executable chargeront les ressources de l'executable.
    dans la dll les fonctions chargeront les ressources de la DLL....
    donc si l'exe essaye de lire les ressources de la dll pb .

    Essaye de rajouter cette macro de synchronisation avant ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    sinon on verra une autre solution..

  3. #3
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    ok, merci, j'essaye ça.

  4. #4
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    raté, éxactement pareil...
    pourtant j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		AFX_MANAGE_STATE(AfxGetStaticModuleState()); 
    		hIcon = (HICON)::LoadImage(	AfxFindResourceHandle(MAKEINTRESOURCE(IDI_OK_1),RT_GROUP_ICON), 
    												MAKEINTRESOURCE(IDI_OK_1), 
    												IMAGE_ICON, 
    												16,16,LR_DEFAULTSIZE);
    je ne vois pas trop comment m'en sortir...

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    d'ou est fait l'appel (exe ou dll ) ?
    ,et ou est située la ressource ,dans la dll ou dans l'exe ?

  6. #6
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    l'exe fait appel à une fonction de la DLL qui par classes d'interfaces interposées va faire appel à une fonction qui chargera la ressource, donc le code qui charge la ressource se situe dans le code de la DLL, mais il est appelé à partir de l'exe.
    La ressource est une ressource de la DLL.

    Ca fonctionne 9 fois sur 10, mais de façon a priori aléatoire, ça plante.
    Il doit y avoir un accès concourant ou un truc du style...

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    tu es en DLL MFC partagées ou statiques ?

  8. #8
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Apparement ton icone et chargé depuis un dossier (dans la RessourceView de ta DLL) qui s'appelle "RT_GROUP_ICON" et ton icone s'appelle "IDI_NOK_1"
    Je sais pas mais est-ce-que les deux existent ?

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    eventuellement si c'est bien un probleme de lecture ressources tu peux essayer ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HINSTANCE hsav=AfxGetResourceHandle();
    AfxSetResourceHandle(::GetModuleHandle("mydll.dll");
    // ton traitement
     
    // restore
    AfxSetResourceHandle(hsav);
    si ça ne fonctionne pas l'erreur est ailleurs....


  10. #10
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    @Matazz : RT_GROUP_ICON est défini comme "A hardware-independent group icon resource type."

    @Farscape : toujours pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	HINSTANCE hsav=AfxGetResourceHandle();
    	AfxSetResourceHandle(::GetModuleHandle("os.dll"));
    	hIcon = (HICON)::LoadImage(	AfxFindResourceHandle(MAKEINTRESOURCE(IDI_OK_1),RT_GROUP_ICON), 
    											MAKEINTRESOURCE(IDI_OK_1), 
    											IMAGE_ICON, 
    											16,16,LR_DEFAULTSIZE); 
    	AfxSetResourceHandle(hsav);
    Qu'est-ce que tu veux dire par DLL partagée ou statique ?
    je ne charge pas explicitement les DLL par du code, mais j'utilise les "dependencies" du projet pour les lier à l'exe.
    Donc DLL en statique, a priori.

Discussions similaires

  1. [VB]probleme double quote dans une ressource de type string
    Par JulienCEA dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/02/2006, 12h38

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