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
    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 �clair�

    Inscrit en
    D�cembre 2002
    Messages
    60
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2002
    Messages : 60
    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);
    }

  3. #3
    Candidat au Club
    Inscrit en
    D�cembre 2002
    Messages
    2
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2002
    Messages : 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 �clair�
    Inscrit en
    Avril 2002
    Messages
    61
    D�tails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 61
    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