none
Problème dans l'atelier1 Exercice 8 RRS feed

  • Question

  • Salut,

    J'ai un petit probleme dans Problème dans l'atelier1 Exercice 8.
    A chaque fois que j'ouvre un fichier les colonnes de CHelloSDIView doublées.


    En Debuguant un peu j'ai pu constater qu'à chaque ouverture de fichier il y a un appel a

    void CHelloSDIView:SurprisenInitialUpdate()
    {
        CListView:SurprisenInitialUpdate();
        // TODO : vous pouvez remplir votre contrôle ListView
        // avec des éléments en accédant directement
        // au contrôle List par un appel à GetListCtrl().
        // on récupère le pointeur sur le CListCtrl associé à la vue
       
        CListCtrl& listCtrl=GetListCtrl();

        listCtrl.InsertColumn(CHelloSDIView::COLUMN_NOM,L"Nom");
        listCtrl.InsertColumn(CHelloSDIView::COLUMN_DIAMETRE,L"Diamètre");
        listCtrl.InsertColumn(CHelloSDIView::COLUMN_COULEUR,L"Couleur");
        listCtrl.InsertColumn(CHelloSDIView::COLUMN_NB_SAT,L"nombre de Satellites");
        // ajustement automatique de la largeur des colonnes
        listCtrl.SetColumnWidth(CHelloSDIView::COLUMN_NOM,LVSCW_AUTOSIZE_USEHEADER);
        listCtrl.SetColumnWidth(CHelloSDIView::COLUMN_DIAMETRE,LVSCW_AUTOSIZE_USEHEADER);
        listCtrl.SetColumnWidth(CHelloSDIView::COLUMN_COULEUR,LVSCW_AUTOSIZE_USEHEADER);
        listCtrl.SetColumnWidth(CHelloSDIView::COLUMN_NB_SAT,LVSCW_AUTOSIZE_USEHEADER);
    }

    ce qui fait qu'á mon avis GetlistCtrl() est implement de  4 colonnes a chaque appel et je voudrais savoir comment
    résoudre cela.

    D'avance merci



    samedi 8 novembre 2008 15:04

Toutes les réponses

  • J'ai palier le problème en faisant un test sur le nombre de colonne.

    int nColHeader=listCtrl.GetHeaderCtrl()->GetItemCount();
        //CString str;
        //str.Format(_T("Nbr colonnes : %.6d\n"), nColHeader);
        //AfxMessageBox(str);
        if (nColHeader<4)
        {
            listCtrl.InsertColumn(CHelloSDIView::COLUMN_NOM,L"Nom");
            listCtrl.InsertColumn(CHelloSDIView::COLUMN_DIAMETRE,L"Diamètre");
            listCtrl.InsertColumn(CHelloSDIView::COLUMN_COULEUR,L"Couleur");
            listCtrl.InsertColumn(CHelloSDIView::COLUMN_NB_SAT,L"nombre de Satellites");
            // ajustement automatique de la largeur des colonnes
            listCtrl.SetColumnWidth(CHelloSDIView::COLUMN_NOM,LVSCW_AUTOSIZE_USEHEADER);
            listCtrl.SetColumnWidth(CHelloSDIView::COLUMN_DIAMETRE,LVSCW_AUTOSIZE_USEHEADER);
            listCtrl.SetColumnWidth(CHelloSDIView::COLUMN_COULEUR,LVSCW_AUTOSIZE_USEHEADER);
            listCtrl.SetColumnWidth(CHelloSDIView::COLUMN_NB_SAT,LVSCW_AUTOSIZE_USEHEADER);
        }
    mercredi 12 novembre 2008 11:19