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 :

Dialog MFC d'une dll dans un exe non MFC


Sujet :

MFC

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Dialog MFC d'une dll dans un exe non MFC
    Voilà j'ai une dll (MFC partagée) qui contient une fonction permettant l'affichage d'une boîte de dialogue. Cette fonction fonctionne correctement si je l'appelle avec un projet MFC.
    Cependant lorsque je l'appelle avec un projet non MFC, la boite de dialogue ne s'affiche pas car HWND hWndParent retourné par la fonction PreModal() me retourne NULL dans la fonction DoModal().
    Quelqu'un pourrait m'aider?

    merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Points : 347
    Points
    347
    Par défaut
    bonjour

    as tu appeleéla macro AFX_MANAGE_STATE(AfxGetStaticModuleState( )) ?
    dans l'ensemble des fonctions que tu exportes ?

    Cordialement

  3. #3
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Bonsoir,

    - Une Dll d'extension MFC ne peut être utilisé que par des exe ou dll avec support des MFC.
    - Une Dll régulière MFC peut être utilisé par un exe ou dll avec ou sans support des MFC.

  4. #4
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Je crée deux projets :

    Un projet DLL régulière MFC appelé Called
    Un projet Win32 Console Applications sans aucun support ni MFC ni ATL appelé Caller

    Dans un fichier CalledExport.h que j'ajoute au projet Called, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #pragma once
     
    extern "C" INT_PTR WINAPI AfxShowCalledDlg();
    Dans le fichier Called.def
    j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ; Called.def : Declares the module parameters for the DLL.
     
    LIBRARY      "Called.dll"
     
    EXPORTS
        ; Explicit exports can go here
        AfxShowCalledDlg		@1
    Dans le fichier Called.cpp
    j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // Called.cpp : Defines the initialization routines for the DLL.
    //
     
    #include "stdafx.h"
    #include "Called.h"
    #include "CalledDlg.h"  // Définition de ma dialog
     
    //...
     
    extern "C" INT_PTR WINAPI AfxShowCalledDlg()
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
    	CCalledDlg dlg;     // CCalledDlg est une classe dérivant de CDialog du projet Called
    	return dlg.DoModal();
    }
    Dans le projet Caller j'ai le fichier Caller.cpp
    avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Caller.cpp : Defines the entry point for the console application.
    //
     
    #include "stdafx.h"
    #include "..\Called\CalledExport.h"
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	AfxShowCalledDlg();
    	return 0;
    }

    Dans le fichier "stdafx.h" du projet Caller j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    #pragma once
    
    #include "targetver.h"
    
    #include <stdio.h>
    #include <tchar.h>
    #include <windows.h>
    Dans le projet Caller j'ai les setting suivants :
    - Configuration Properties > General > Use Of MFC : Use Standard Windows Librairies

    - Configuration Properties > General > Use Of ATL: Not Using ATL

    - Configuration Properties > Linker > Input > ..\Debug\Called.lib
    Et Voilà

Discussions similaires

  1. [Débutant] comment embed une DLL dans mon .exe final
    Par mapmip dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/10/2011, 11h55
  2. [VB] COmment compiler une dll dans un exe (zlib.dll)
    Par Khrysby dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/11/2005, 12h10
  3. Intégrer une dll dans un EXE
    Par Akim13 dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 02h11
  4. Inclusion d'une DLL dans un exe?
    Par luareon22 dans le forum MFC
    Réponses: 10
    Dernier message: 29/08/2005, 12h08
  5. Inclure une DLL dans le .exe final?? possible?
    Par xavmax dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2005, 17h00

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