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 :

[MFC][DLL]Afficher une CDialog ?


Sujet :

MFC

  1. #1
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut [MFC][DLL]Afficher une CDialog ?
    Bonjour,

    j'ai fais une DLL ISAPI (extension serveur) qui en gros fonctionne comme un DLL.
    Je veux y intégrer une Classe que j'ai faite qui utilise l'avtivex flash.

    le problème est que L'activeX Flash doit être intégré dans une CDialog.
    Comme j'ai la possibilité d'intégrer des resources, j'ai crée une Dialog incluant mon ActiveX, j'ai généré la classe d'interface pour l'activeX.

    Mon problème est donc le suivant peut on afficher une CDialog directement depuisla DLL ?

    Car j'ai essayé DoModal et Create(ID_RESSOURCE, NULL), mais y as un méchant plantage ce qui me paraitrais logique...

    Eventuellement si il y as une solution à mon problème ?
    J'ai envisagé un ShellExecute sur un exe, mais ce sera mon dernier recour;

    Merci d'avance.
    Qui va piano va sano...

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    pour que la dialog fonctionne dans ta dll ,il faut que les MFC soit initialisés
    essaye de rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            // initialize MFC and print and error on failure
    	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    	{
    		// TODO: change error code to suit your needs
    	//	cerr << _T("Fatal Error: MFC initialization failed") << endl;
    		//nRetCode = 1;
    	}
    // et pour l'activex :
    AfxEnableControlContainer();

  3. #3
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Dans le DLLMain ?
    Qui va piano va sano...

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    oui essaye .

  5. #5
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    j'ai jamais eu ton cas ,mais j'ai deja fait apparaitre une boite de dialogue dans une dll pour un programme en mode console .

  6. #6
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Bon ben j'ai essayé dans le constructeur, y'as un méchant plantage dans AfxWinInit...
    et j'ai mis les inits dans une fonction et c'est pareil.
    En fait la DLL ISAPI est un peu diférente d'une DLL standard et je DLL Main existe pas en fait, il faut faire une fonction approchante...
    Qui va piano va sano...

  7. #7
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    a mon avis laisse tomber ,
    fait un bout de programme que tu lances
    avec un shellexecuteex (voir faq) avec attente que le process soit terminé .
    le process ecrit ses parametres dans un fichier que tu relis quand tu as finis
    ou communication interprocessus pipe nommes ou synchro event + fichier mappé en memoire.

  8. #8
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Une chose m'intrigue quand même car en debug je fais des AfxMessageBox et elles apparaissent...
    Les MessageBox sont bien héritée de CWnd? Non?
    Qui va piano va sano...

  9. #9
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    non c'est hors MFC , ça utilise plutot MessageBox

  10. #10
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Et en utlisant la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int WinMain(          HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
        LPSTR lpCmdLine,
        int nCmdShow
    );
    des ATL je crois, c'est possible ?
    Sinon je vais faire le shellExecute...
    Qui va piano va sano...

  11. #11
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Salut,

    j'ai le même pb avec une DLL classique et un ActiveX (navigateur Web)

    en suivant ce post j'ai aussi le même plantage dans AfxWinInit

    Dommage

    matazz, tu as laissé tomber et tu as utilisé un shellexecuteex

  12. #12
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Non, je suis sur un autre truc pour l'instant, mais ça fait partie d'une des choses que je vais devoir résoudre d'ici peu, donc j'avais commencé à poster.
    Je vais essayer avec le WinMain, de mon post précédent...
    Qui va piano va sano...

  13. #13
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    Bon ben j'ai trouvé sur CodeGuru la solution :
    http://www.codeguru.com/Cpp/W-P/dll/article.php/c101/
    Qui va piano va sano...

  14. #14
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    ah oui afxManageState

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

Discussions similaires

  1. Afficher une CDialog Modal ou modeless
    Par zifox dans le forum MFC
    Réponses: 2
    Dernier message: 04/04/2011, 11h06
  2. Réponses: 2
    Dernier message: 27/04/2007, 11h12
  3. [MFC] Communication entre une CDialog et une CFormview
    Par julien.nasser dans le forum MFC
    Réponses: 8
    Dernier message: 06/07/2006, 14h32
  4. [MFC] CTabCtrl dans une CDialog
    Par eyghon dans le forum MFC
    Réponses: 1
    Dernier message: 29/04/2005, 19h31
  5. Réponses: 3
    Dernier message: 28/01/2004, 14h55

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