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] SDI - pb avec OnInitialUpdate()


Sujet :

MFC

  1. #1
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut [MFC] SDI - pb avec OnInitialUpdate()
    bonjour,

    j'ai pas réussi à trouver un titre court et explicite pour mon pb, désolé

    j'ai un projet SDI. j'ai mis un CTabCtrl dans ma CFormView.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // dans le .h
    CMyTabCtrl	m_ViewTab;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void CCOACH_equipeView::DoDataExchange(CDataExchange* pDX)
    {
    	CFormView::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CCOACH_equipeView)
    	DDX_Control(pDX, IDC_VIEWTAB, m_ViewTab);
    	//}}AFX_DATA_MAP
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void CCOACH_equipeView::OnInitialUpdate()
    {
    	CFormView::OnInitialUpdate();
    	GetParentFrame()->RecalcLayout();
    	ResizeParentToFit();
     
    	m_ViewTab.DeleteAllItems();
    	// Création des onglets
    	m_ViewTab.InsertItem(0, _T("    &Feuille de match      "));
    	m_ViewTab.InsertItem(1, _T("   &Classement individuel   "));
    	m_ViewTab.InsertItem(2, _T(" &Classement individuel IWF "));
     
    	m_ViewTab.Init();
    }
    Lorsque je lance mon appli, les 3 onglets apparaissent et je peux passer de l'un à l'autre (ouf!).
    Le problème, c'est quand je clique sur Nouveau (le bouton de la CToolBar ou dans le menu fichier). Là mon appli plante. j'ai une jolie MessageBox qui s'affiche avec le message suivant :

    Debug Assertion Failed

    Program: bidule.exe
    File: wincore.cpp
    Line: 668
    pour info, dans wincore.cpp je trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ASSERT(pWnd->m_hWnd == NULL);   // only do once
    J'obtiens le même plantage si j'ouvre un fichier de données (bouton Ouvrir du CToolBar ou dans le menu Fichier).

    Tant que je ne mets pas de CTabCtrl, tout va bien : mon prog lit le fichier de données, peut sauvegarder dans un fichier... (mais ya pas d'affichage sans le CTabCtrl )

    Tout à commencer à foirer quand j'ai tripoté le OnInitialUpdate().

    Quelqu'un voit mon erreur? ou mon oubli (de quelquechose de vachement important)

    Merci

    PS : la classe CMyTabCtrl marche nickel, je l'ai utilisé pour un projet dialog based.

  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
    salut,
    quand tu remontes la pile des appels quel est l'objet concerné par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ASSERT(pWnd->m_hWnd == NULL);

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    bien le bonjour

    CTab1 est une boîte de dialogue que j'ai mis dans le premier volet du CMyTabCtrl

    CTab1 est style CHild, sans bord, et ne contient que les boutons OK et CANCEL pour l'instant.


  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
    re,
    tu as mis un point d'arret dans initialupdate pour voir combien de fois elle est appelée ?
    autre point par quoi est appelé afxHookwindowcreate. ?


  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    OnInitialUpdate() est appelé une fois ( ) à l'exécution. puis à chaque fois que je clique sur Nouveau ou sur que j'ouvre un fichier.

    autre point par quoi est appelé afxHookwindowcreate. ?
    euh... kékidi le monsieur?? comment je fais pour savoir où il est appelé?

    (merci les écoles d'ingé où l'on ne programme qu'en lignes de commande avec gcc)

  6. #6
    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
    sur le screen shot que tu as mis il y a une combobox context ça permet de voir la pile des appels .
    pour ton pb il faut faire en sorte que les initialisations sur le tabctrl se fassent une fois .
    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
     
    void CCOACH_equipeView::OnInitialUpdate()
    {
    if( m_bInit) // a mettre dans le constructeur a true.
    {
       CFormView::OnInitialUpdate();
       GetParentFrame()->RecalcLayout();
       ResizeParentToFit();
     
       m_ViewTab.DeleteAllItems();
       // Création des onglets
       m_ViewTab.InsertItem(0, _T("    &Feuille de match      "));
       m_ViewTab.InsertItem(1, _T("   &Classement individuel   "));
       m_ViewTab.InsertItem(2, _T(" &Classement individuel IWF "));
     
       m_ViewTab.Init();
    }
    m_bInit=false;
    }

  7. #7
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    c cool merci !

    (ya des soucis avec le forum aujourd'hui? j'ai du mal à me connecter de temps en temps)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/05/2006, 11h11
  2. Réponses: 21
    Dernier message: 09/02/2005, 08h35
  3. [MFC] SDI - actualisation de CGridCtrl
    Par bigboomshakala dans le forum MFC
    Réponses: 4
    Dernier message: 27/11/2004, 20h12
  4. [MFC/SDI] BMP a la place d'un bouton
    Par gargle dans le forum MFC
    Réponses: 2
    Dernier message: 28/07/2004, 11h26
  5. Réponses: 4
    Dernier message: 14/06/2004, 09h29

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