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 :

Charger String Table à partir d'une DLL


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut Charger String Table à partir d'une DLL
    Bonjour,

    J'essaie de charger des Strings à partir d'une String Table contenue dans une DLL que j'ai moi-même compilée.

    Voici mon code actuel, que j'ai pu faire grâce a la msdn :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	HINSTANCE HandleLib = LoadLibrary(DllPath ); //DllPath est une String qui contient le chemin de ma DLL
    	HGLOBAL	hresource=LoadResource(HandleLib,FindResource(HandleLib,"","TEXT"));
     
    	DWORD L = 1;  //index de l'entrée dans la String Table ?
    	DWORD S = 40; // taille du buffer ?
    	char* buffer;
    	va_list args = NULL; // ???
    	if (!FormatMessage(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER, HandleLib, L, S, buffer, S, &args))
    	{
    		AfxMessageBox("bug load library");
    	}
    	AfxMessageBox(*buffer);
    qui malheureusement résulte en un joli plantage.

    Y voyez vous une erreur ?
    Ou peut-être ai-je mal compilé ma DLL ?

    Je débute avec les DLL donc il est fort possible que j'ai fait une erreur très bête.

    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Bon, après bien des galères, j'ai fini par trouver.
    Je met le code, qui n'est pas bien compliqué d'ailleurs, des fois que ça pourrait aider quelqu'un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    HINSTANCE library = LoadLibrary("DPFFrancais.dll");
     
     
    char buffer[40];
    LoadString(library,IDS_ERROR,buffer,40);
    AfxMessageBox(buffer);
     
    /* à chaque affichage 
    IDS_ERROR est défini comme entier, dans un .h*/
     
     
    FreeLibrary(library);
    Evidemment, DPFFrancais.dll contient ma String Table.

  3. #3
    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
    Par défaut
    salut,
    moi j'aurais plutôt utiliser LoadString des MFC avec un CString .
    pour éviter d'utiliser une chaine de caractères et le problème inhérent à la taille du buffer.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Salut.

    Moui, effectivement, bien plus pratique.

    Je suis passé aux CString après en avoir eu marre d'adapter à chaque fois la taille de mes buffers aux messages..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Charger une forme à partir d'une dll ?
    Par Night_Wolf1619 dans le forum Débuter
    Réponses: 14
    Dernier message: 07/04/2013, 19h44
  2. Charger à un arbre à partir d'une Table et ordre alphabétique
    Par Chacha35 dans le forum Windows Forms
    Réponses: 13
    Dernier message: 15/10/2009, 16h18
  3. Réponses: 6
    Dernier message: 06/03/2008, 10h46
  4. Réponses: 2
    Dernier message: 18/01/2008, 10h10
  5. pb de récup de handle à partir d'une dll
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2002, 12h29

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