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

Visual C++ Discussion :

[MFC/C++] Appel de LoadString dans une dll


Sujet :

Visual C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 40
    Points
    40
    Par défaut [MFC/C++] Appel de LoadString dans une dll
    Bonjour à toutes et à tous,

    J'ai un problème avec la fonction LoadString().
    J'ai une dll dans laquelles j'inclus une ressource avec une string table. Quand je veux extraire les string avec la fonction LoadString(), la fonction se passe mal. J'ai la message box suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    CString string;
    if (!string.LoadString( IDS_NO_CONNECTION ))
    {
    	AfxMessageBox(_T("Error Loading String: IDS_NO_CONNECTION"));
     
    }
    Cette dll est elle meme utilisée par une application MFC qui contient elle aussi des LoadString(). Par contre, dans l'application, LoadString() se passe bien!!!


    Avez vous une idée pour m'éclairer???

    Merci beaucoup..........

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Je crois bien que les MFC se partagent un seul HMODULE, dans une variable globale.
    Si ton programme n'est pas multithread, tu peux utilise AfxGetResourceHandle()/AfxSetResourceHandle() pour changer le HMODULE vers ta DLL et le remettre ensuite...

    Ou bien, la manière difficile: Tu utilises le LoadString() de l'API Win32 en donnant toi-même le HMODULE de la DLL (tu peux regarder le code source du LoadString() de MFC si tu ne veux pas avoir à *trop* te soucier de la taille...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    Je voudrais ajouter une petite précision.

    La dll a sa propre ressource et l'application aussi. L'appel à LoadString se fait dans la dll et dans l'application et la dll n'est pas une dll de ressource....

    Est ce que sa change des choses ou j'essaie ce que tu m'as dit????

    Je te remercie....


  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Ces précisions sont redondantes, donc ça ne change rien par rapport à ce que je t'ai dit. CString::LoadString() ne tape dans les ressources que d'un seul module à la fois, et ce module est choisi par une variable globale au processus

    La solution la plus sûre, c'est donc la seconde que j'ai donnée ("la manière difficile").

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    Merci pour tes réponses!!!!!!!!



  6. #6
    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,
    essaye de rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    au tout debut de ta fonction dans la dll.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/01/2010, 17h16
  2. Appel de fonction dans une DLL
    Par vtk37 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/04/2009, 09h58
  3. probleme appel de fonction dans une DLL
    Par sylvain.cool dans le forum C++
    Réponses: 12
    Dernier message: 19/06/2008, 18h00
  4. Réponses: 1
    Dernier message: 11/01/2008, 18h54
  5. DLL Native chargeant et appelant du code dans une DLL.NET
    Par cinemania dans le forum C++/CLI
    Réponses: 3
    Dernier message: 17/04/2007, 08h12

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