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 :

Problème d’ouverture de boite de dialogue.


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Par défaut Problème d’ouverture de boite de dialogue.
    Bonjour, j’ai un problème sur mon application.

    Je lance à partir d’une première boite de dialogue, une seconde, comme ça :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // suppression d'une eventuelle fenetre deja créée
    	m_fenetrereglage.DestroyWindow();
    	// Creation de la fenetre de saisie des coordonnées
    	m_fenetrereglage.Create(IDD_reglage,this);
    	// centrage de la fenetre
    	m_fenetrereglage.CenterWindow();
    	// Affichage de la fenetre 
    	m_fenetrereglage.ShowWindow(SW_SHOW);

    mais depuis que j’ai mis un “tableau” dans cette seconde boite de dialogue de cette manière
    http://www.codeproject.com/miscctrl/gridctrl.asp

    Lorsque je ferme cette seconde boite de dialogue, je ne peux plus la recréer à partir de la première boite.

    J’ai une erreur « assertion fail »

    Et je ne comprends pas le problème.

    Si quelqu’un peut m’éclairer

    Merci d’avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Salut,

    Est ce que tu detruit aussi ton tableau et tu le recré lorsque tu recré ton dialogue?

    Sinon ton instance CGridCtrl* maGrid; dans la definition de ta classe, met la en dessou de tout ce que tu as déclaré.

    J'espère que cela fonctionnera, même si j'ai pas la prétention de l'affirmer!

    Bye

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Par défaut
    bonjour,

    désolé pour la reponse tardive j'ai été sur un autre projet.
    oui le tableau est bien créé et detruit.

    j'ai essayé ton astuce mais pas de mieux.

    sinon si je lance la fenetre2 avec la méthode DoModal, il y a aucun problème.
    hormis le fait que je ne peux plus reccuperer le port série en tache de fond dans la fenêtre 1.

    mais je vais essayer de basculer cette tâche dans la fenêtre 2.

    je reposterais un message si il y a pas d'amélioration

    merci.

  4. #4
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    Salut,

    Moi aussi ça m'arrive d'avoir des "assertion fail" ; mais qd ça arrive, je les "traque", je recherche la ligne où c'est et j'analyse ... et si je pose une question sur un forum je mets des détails sur le contexte, l'assertion ...

    Désolé, mais moi ça ne me donne pas envie de t'aider dans ton problème quand il faut "interviewer" pour connaitre tous les détails.

    En gros, ce que je comprends de ta question:

    J'ai deux boites de dialogue. J'ai une "assertion fail". Je comprends pas, aidez moi.
    Alors, STP, peux tu donner des détails.

    @+

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Par défaut
    salut stephdim,

    désolé pour le manque d'information.

    Alors lors de l’exécution du programme il me renvoie à la ligne en gras et bleu de :

    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
    18
    19
    20
    void AFXAPI AfxHookWindowCreate(CWnd* pWnd)
    {
    	_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
    	if (pThreadState->m_pWndInit == pWnd)
    		return;
    
    	if (pThreadState->m_hHookOldCbtFilter == NULL)
    	{
    		pThreadState->m_hHookOldCbtFilter = ::SetWindowsHookEx(WH_CBT,
    			_AfxCbtFilterHook, NULL, ::GetCurrentThreadId());
    		if (pThreadState->m_hHookOldCbtFilter == NULL)
    			AfxThrowMemoryException();
    	}
    	ASSERT(pThreadState->m_hHookOldCbtFilter != NULL);
    	ASSERT(pWnd != NULL);
    	ASSERT(pWnd->m_hWnd == NULL);   // only do once
    
    	ASSERT(pThreadState->m_pWndInit == NULL);   // hook not already in progress
    	pThreadState->m_pWndInit = pWnd;
    }
    Dans wincore.cpp


    la fin de la pile des appels est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >	prog.exe!AfxHookWindowCreate(CWnd * pWnd=0x0012f118)  Ligne 624 + 0x1c octets	C++
     	prog.exe!CWnd::CreateDlgIndirect(const DLGTEMPLATE * lpDialogTemplate=0x00812ca8, CWnd * pParentWnd=0x0012e7e8, HINSTANCE__ * hInst=0x00400000)  Ligne 315	C++
     	prog.exe!CDialog::CreateIndirect(const DLGTEMPLATE * lpDialogTemplate=0x00812ca8, CWnd * pParentWnd=0x0012e7e8, void * lpDialogInit=0x00000000, HINSTANCE__ * hInst=0x00400000)  Ligne 211	C++
     	prog.exe!CDialog::CreateIndirect(void * hDialogTemplate=0x00812ca8, CWnd * pParentWnd=0x0012e7e8, HINSTANCE__ * hInst=0x00400000)  Ligne 188 + 0x16 octets	C++
     	prog.exe!CDialog::Create(const char * lpszTemplateName=0x00000082, CWnd * pParentWnd=0x0012e7e8)  Ligne 170 + 0x14 octets	C++
     	prog.exe!CDialog::Create(unsigned int nIDTemplate=130, CWnd * pParentWnd=0x0012e7e8)  Ligne 601 + 0x18 octets	C++
     	prog.exe!CprogDlg::OnReglage()  Ligne 518 + 0x25 octets	C++

    et j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     	pWnd	0x0012f118 {reglage hWnd=0x00070a60}	CWnd *
     
               pWnd->m_hWnd	0x00070a60 {unused=??? }	HWND__ *
    		unused	CXX0030: Erreur : impossible d'évaluer l'expression
    reglage est ma seconde boite de dialogue.

    contexte, j'ai une Première boite de dialogue qui sert à piloter un process à l’aide du port série.
    La seconde boite de dialogue permet le réglage du système ainsi que son débogage.


    je crois que là il y a tout.

    merci

  6. #6
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    cette assertion se produit quand tu créés une boite de dialogue sur un objet CDialog qui est encore attaché à une autre boite ...

    pourtant le code que tu donnes dans ton 1er post m'a l'air plutot pas mal pour éviter justement ce probleme ...

    Vérifies que tu n'aies (des fois que) pas deux appels consécutifs à la fonction Create() au moment de l'initialisation (dans le constructeur de ton CDialog par ex)

    tu dis que c'est depuis que tu as intégré ton GridCtrl. Peux tu nous montrer comment tu instancies ce controle (création, variable de l'objet ...) ?


    @+

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/07/2011, 10h20
  2. Problème MAJ boite de dialogue
    Par Nemesis007 dans le forum MFC
    Réponses: 2
    Dernier message: 07/04/2007, 00h24
  3. Réponses: 1
    Dernier message: 06/01/2007, 15h22
  4. Réponses: 18
    Dernier message: 04/12/2006, 21h22
  5. problème boite de dialogue au demarrage xp
    Par imeys dans le forum Windows XP
    Réponses: 6
    Dernier message: 16/01/2006, 13h41

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