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] DoModal() plante


Sujet :

MFC

  1. #1
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut [MFC] DoModal() plante
    J'ai l'impresion que ce probleme est recurent dans mes applis, mais rien a faire je n'arrive pas a le resoudre.

    J'ai une DLL qui appelle le point d'entree d'une autre DLL. Dans ce point d'entree je me contente de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CMyDialog MyDialog;
    MyDialog.DoModal();
    Et la, rien a faire, j'ai une erreur, a la ligne 22 de afxwin1.inl

    Comment puis-je resoudre cela?

    EDIT:

    Si je me sers d'un ShowWindow :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CMyDialog MyDialog;
    MyDialog.ShowWindow(SW_SHOWDEFAULT);
    La j'ai une erreur a la ligne 301 de winocc.cpp

  2. #2
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    pour faire de l'ihm dans une dll, il faut s'assurer qu'il y ait pas de conflit dans les ressources entre les DLL et l'appli.

    Genre ta boite de dialog à un ID qui vaut 2500 dans ta dll et dans ton appli, l'ID 2500 correspond à un menu

  3. #3
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut presque
    Merci pour ta reponse, mais j'ai enfin trouve sur MSDN en... ITALIEN ! impossible de trouver cela en francais ou anglais.

    En fait, comme explique lorsque l'on cree une DLL MFC, dans le commentaire d'entete du fichier .cpp :

    //
    // Note!
    //
    // If this DLL is dynamically linked against the MFC
    // DLLs, any functions exported from this DLL which
    // call into MFC must have the AFX_MANAGE_STATE macro
    // added at the very beginning of the function.
    //
    // For example:
    //
    // extern "C" BOOL PASCAL EXPORT ExportedFunction()
    // {
    // AFX_MANAGE_STATE(AfxGetStaticModuleState());
    // // normal function body here
    // }
    //
    // It is very important that this macro appear in each
    // function, prior to any calls into MFC. This means that
    // it must appear as the first statement within the
    // function, even before any object variable declarations
    // as their constructors may generate calls into the MFC
    // DLL.
    //
    // Please see MFC Technical Notes 33 and 58 for additional
    // details.
    //
    Donc le bon code etait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CMyDialog MyDialog; 
    MyDialog.DoModal();
    [/code]

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    bah d'apres ce que j'ai pu comprendre du msdn sur AfxGetStaticModuleState, c'est un peu ce que j'expliquais ca evite des conflis de resources entre la dll et l'appli

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

Discussions similaires

  1. [MFC] Passer d'une fenetre Domodal en ShowWindow
    Par hholivier dans le forum MFC
    Réponses: 12
    Dernier message: 01/06/2007, 20h30
  2. [MFC] Plantage au deuxieme DoModal() avec TIMER
    Par ricky78 dans le forum MFC
    Réponses: 3
    Dernier message: 25/09/2006, 17h17
  3. Réponses: 8
    Dernier message: 20/06/2006, 17h25
  4. Réponses: 23
    Dernier message: 08/02/2006, 10h15
  5. [MFC] étrange comportement de DoModal()
    Par r0d dans le forum MFC
    Réponses: 11
    Dernier message: 15/06/2005, 20h53

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