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 :

Dll et boîte de dialogue MFC


Sujet :

MFC

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Dll et boîte de dialogue MFC
    J'ai créé une dll contenant des boîtes de dialogue MFC.
    Chacune de ces boîtes est reliée à une classe dérivée de CDialog.
    Ces classes sont exortées grâce à AFX_EXT_CLASS.
    Dans le contenaire (application cliente) ces classes sont visibles et toutes les fonctions membres fonctionnent.

    Mon problème est que je n'arrive pas à afficher ces boîtes de dialogue. La fonction DoModal() me retourne -1.

    Est ce que qelqu'un connait la solution ?

  2. #2
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 60
    Points : 105
    Points
    105
    Par défaut
    Je pense que le probleme est que les ressources ne correspondent pas a ce que ta DLL attend.

    Dans une application, il n'y a qu'une ressource de chargee a un moment donné. Par defaut, c'est celui de l'application principale (dans ce cas, ton application cliente). Lorsque tu cherches a creer ta boite de dialogue, la DLL cherche la ressource lui permettant de creer la boite de dialogue et ne la trouve pas, ou en trouve une qui ne convient pas.

    La solution est, dans les fonctions de ta DLL qui font appel aux ressources, de changer les ressources en cours d'utilisation, au debut et a la fin. Au debut de la fonction, tu charges les ressources de la DLL, et a la fin tu remet celles de l'application.

    Ca peut se faire comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void function()
    {
    	HMODULE hDll = ::GetModuleHandle("MyDll.dll");
    	if(hDll!=NULL)
    		AfxSetResourceHandle(hDll);
    	else
    		return; //echec
     
    	//Fais ce que tu as a faire
     
    	AfxSetResourceHandle(AfxGetApp()->m_hInstance);
    }
    Si la connaissance peut créer des problemes, ce n'est pas par l'ignorance que l'on peut les résoudre.
    -- Isaac Asimov

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Mille mercis
    Ca marche nickel je te remerci.
    par contre j'ai appliqué bêtement ce que tu as dis. et je ne comprend pas pourquoi ca ne marchait pas avant.

    encore merci

  4. #4
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 61
    Points : 83
    Points
    83
    Par défaut
    Si tu n'as toujours pas compris, tu peux lire ceci :

    http://msdn.microsoft.com/library/default.asp?url=/library/en-
    us/vclib/html/_mfc_afxgetstaticmodulestate.asp

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/09/2006, 07h58
  2. [MFC] Dessiner dans une boîte de dialogue
    Par Philippe320 dans le forum MFC
    Réponses: 5
    Dernier message: 03/03/2006, 21h44
  3. [MFC] DLL avec boite de dialogue
    Par ricky78 dans le forum MFC
    Réponses: 2
    Dernier message: 17/06/2005, 12h06
  4. [MFC] afficher une boîte de dialogue
    Par bigboomshakala dans le forum MFC
    Réponses: 13
    Dernier message: 10/05/2004, 14h22
  5. [MFC] Boîte de dialogue chronométrée
    Par mdriesbach dans le forum MFC
    Réponses: 5
    Dernier message: 18/02/2003, 12h40

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