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 :

CDialog dans une DLL � partir d'un EXE en C


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par d�faut CDialog dans une DLL � partir d'un EXE en C
    Bonjour (chui en forme aujourd'hui)

    Projet:
    J'ai une application en C qui est de type: Utilise les biblioth�ques Windows standard (donc non MFC).

    J'ai une DLL MFC avec une boite de dialogue.

    Je souhaite utilser cette DLL dans mon appli.


    Dans ma Dll:
    ------------
    Class CWinApp et CDialog
    Une fonction FonctionDll d'export/import qui a pour but de cr�er la CDialog en Modal.

    Dans mon Exe:
    --------------
    Je charge ma DLL par un
    HINSTANCE hInstance= LoadLibrary(PathDll);

    Probleme:
    ---------
    Si je fais m_MyDlg->DoModal(); dans la fonction CMyDllApp::InitInstance() elle s'ouvre sans probleme, mais c'est pas ce que je veux faire;

    Si je le fais dans la fonction d'export/import, ca plante dans le DoModal � la ligne: HINSTANCE hInst = AfxGetResourceHandle();

    J'ai parcouru ce forum et fait plein de tests, et je n'ai encore trouv� la solution, donc si vous avez une proposition.

    Merci
    mastergoddot

  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
    Par d�faut
    salut,
    pour l'avoir depuis tr�s longtemps je peux te dire que �a fonctionne...
    ta fonction d'import est une fonction C d�clar�e dans ta DLL appel�e depuis le programme en C ,c'est �a ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par d�faut
    Yes

  4. #4
    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
    La dll est bien lue avant l'appel de cette fonction ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par d�faut
    HINSTANCE hInstance;
    PSimuMgt pFctSimuManagmt;

    C�t� Exe:
    ---------
    typedef int (*PFONCTION)(void);

    HINSTANCE hInstance= LoadLibrary(PathDll);
    pFctDll= (PFONCTION)GetProcAddress (hInstance,"FonctionDll");
    ret = (pFctDll)();
    FreeLibrary(hInstance);

    C�t� DLL:
    ---------
    ifdef _USRDLL
    #define IMPEXP __declspec(dllexport)
    #else
    #define IMPEXP __declspec(dllimport)
    #endif

    IMPEXP int FonctionDll(void)
    {
    CDllDlg* pMyDlg = new CDllDlg;
    pMyDlg ->DoModal(); ==> Plantage
    }

    Faut-il mettre un parametre dans le constructeur de la Dlg?

    Meme plantage en non modal avec les fonction Create et ShowWindow

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par d�faut
    bonjour

    Ne faut il pas ajouter

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    Au debut de toute les fonctions que tu exportes?

    cordialement

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par d�faut
    Normal ou pas?

    Dans la fonction:
    INT_PTR CDialog:oModal()
    {
    // can be constructed with a resource template or InitModalIndirect
    ASSERT(m_lpszTemplateName != NULL || m_hDialogTemplate != NULL ||
    m_lpDialogTemplate != NULL);

    // load resource as necessary
    LPCDLGTEMPLATE lpDialogTemplate = m_lpDialogTemplate;
    HGLOBAL hDialogTemplate = m_hDialogTemplate;
    HINSTANCE hInst = AfxGetResourceHandle();

    J'ai :
    lpDialogTemplate = NULL
    hDialogTemplate = NULL

  8. #8
    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
    Citation Envoy� par ricky78
    bonjour

    Ne faut il pas ajouter

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    Au debut de toute les fonctions que tu exportes?

    cordialement
    c'st une possibilit� ...
    mais est-ce que ta dll en est static MFC ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par d�faut
    AFX_MANAGE_STATE(AfxGetStaticModuleState()); ==> C'est ca. Merci

    Ma DLL:
    Settings:
    Type de configuration: Biblioth�que dynamique (.dll)
    Utilisation des MFC: Utiliser les MFC dans une DLL partag�e.

    Que faudrait-il mettre?

    Merci

  10. #10
    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
    �a fonctionne avec AFX_MANAGE_STATE(AfxGetStaticModuleState() ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par d�faut
    En mettant le DLL en static, en effet je n'ai pas besoin d'ajout� cette ligne.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Lancer une dll � partir d'un exe
    Par jean.cdc dans le forum C
    R�ponses: 17
    Dernier message: 25/07/2006, 17h44
  2. [VStudio 6] pb avec fonctions dans une DLL
    Par MogDeChNord dans le forum MFC
    R�ponses: 8
    Dernier message: 08/01/2004, 08h57
  3. [BP7] Problème chargement de ressource dans une DLL
    Par Alcat�z dans le forum Turbo Pascal
    R�ponses: 11
    Dernier message: 26/07/2003, 21h36
  4. PB avec "self" dans une dll
    Par DiJiRiDouS dans le forum Langage
    R�ponses: 2
    Dernier message: 21/02/2003, 09h32
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et ant�rieur
    R�ponses: 6
    Dernier message: 20/09/2002, 10h15

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