Probleme avec une combobox en mfc [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
10 août 2006
-
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
-
Bonjour
voici mon probleme :
en utilisant visual 6 c++ avec les mfc

je voudrai afficher la liste des images contenu dans un repertoire et pouvoir selectionner les images via une combobox et les afffiché dans l'objet picture

je veux remplir une combobox et bien que j'ai suivi tt ce qui etait ecris dans l'aide et sur quelques forum Cela ne fonctionne pas voici mon code :

// SuiviCouleurRef.cpp : implementation file
//
#include "stdafx.h"
#include "FrameScan.h"
#include "SuiviCouleurRef.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// SuiviCouleurRef dialog

SuiviCouleurRef::SuiviCouleurRef(CWnd* pParent /*=NULL*/)
    : CDialog(SuiviCouleurRef::IDD, pParent)
{
    //{{AFX_DATA_INIT(SuiviCouleurRef)
    m_picture_color1 = _T("");
    m_combo_suivcolor1 = _T("bonjour");
    //}}AFX_DATA_INIT
   

}

void SuiviCouleurRef::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(SuiviCouleurRef)
    DDX_Text(pDX, IDC_SUIVICOLOREF1, m_picture_color1);
    DDX_CBString(pDX, IDC_COMBOSUIVICOLOR1, m_combo_suivcolor1);
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(SuiviCouleurRef, CDialog)
    //{{AFX_MSG_MAP(SuiviCouleurRef)
    ON_CBN_EDITCHANGE(IDC_COMBOSUIVICOLOR1, OnEditchangeCombosuivicolor1)
    ON_CBN_DBLCLK(IDC_COMBOSUIVICOLOR1, OnDblclkCombosuivicolor1)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// SuiviCouleurRef message handlers

void SuiviCouleurRef::OnEditchangeCombosuivicolor1()
{
    // TODO: Add your control notification handler code here

    //m_SuiviColorRef1.

}

void SuiviCouleurRef::OnDblclkCombosuivicolor1()
{
    // TODO: Add your control notification handler code here
        //m_combo_couleur1.InsertString(0,"gfgdfgd");

}

BOOL SuiviCouleurRef::OnInitDialog()
{
   
    CDialog::OnInitDialog();
   
    CString texte;
    texte="test";
    CWnd* objet =  GetDlgItem(IDC_COMBOSUIVICOLOR1);
    CComboBox* Combo;
    Combo = (CComboBox*) objet;

            Combo->AddString(texte);
                Combo->AddString(texte);
                Combo->AddString("dfsfdsfd");
                Combo->UpdateWindow();
                Combo->UpdateData();
                int TmpR =Combo->GetCurSel();
                //Combo->UpdateData(FALSE);
                //Combo->c
                UpdateData();
    // TODO: Add extra initialization here
   
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}

int SuiviCouleurRef::DoModal()
{
    // TODO: Add your specialized code here and/or call the base class
   
    return CDialog::DoModal();
}
l'interface :

#if !defined(AFX_SUIVICOULEURREF_H__8D62D4FA_C36C_455E_A908_515A3AB85338__INCLUDED_)
#define AFX_SUIVICOULEURREF_H__8D62D4FA_C36C_455E_A908_515A3AB85338__INCLUDED_

//#define IDD_SUIVICOULEURREF_DIALOG      103

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SuiviCouleurRef.h : header file
//
#include "Photo.h"
/////////////////////////////////////////////////////////////////////////////
// SuiviCouleurRef dialog

class SuiviCouleurRef : public CDialog
{
// Construction
public:
    SuiviCouleurRef(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
    //{{AFX_DATA(SuiviCouleurRef)
    enum { IDD = IDD_SUIVICOULEURREF_DIALOG };
    CString    m_picture_color1;
    CString    m_combo_suivcolor1;
    //}}AFX_DATA

// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(SuiviCouleurRef)
    public:
    virtual int DoModal();
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

// Implementation
protected:

    // Generated message map functions
    //{{AFX_MSG(SuiviCouleurRef)
    afx_msg void OnEditchangeCombosuivicolor1();
    afx_msg void OnDblclkCombosuivicolor1();
    virtual BOOL OnInitDialog();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SUIVICOULEURREF_H__8D62D4FA_C36C_455E_A908_515A3AB85338__INCLUDED_)

l'appel a cette boite de dialogue

    SuiviCouleurRef test;
    //test.
    test.DoModal();

6 réponses

Messages postés
7
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
10 août 2006

j'ai trouve la solution a mon probleme
et c'est tt bete mais faut vraiment aller la chercher loin :
il fallait agrandir le combobox dans la boite de dialogue ou plus exactement cliquer sur l'icone qui permet de descendre ou monter la taille de la liste
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Tu as l'air vraiment débutant, je te donne donc un conseil:
Stop MFC illico, ce n'est pas en se masquant le code qu'on apprend. Libre à toi de revenir sur MFC plus tard avec de solides bases.

Prends Petzold et suis les chapitres:
http://brunews.free.fr/brunews/download/CP5.zip
http://brunews.free.fr/brunews/download/CP5Sources.zip
Quand tu auras bien assimilé Petzold, devrait aller nettement mieux.

ciao...
BruNews, MVP VC++
Messages postés
7
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
10 août 2006

j'ajoute une autre info avec un caption impossible non plus de charger une valeur
Messages postés
7
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
10 août 2006

Effectivement je debute en MFC cepandant je n'ai pas trop le choix etant donne que je reprend un programme, ce que je ne comprend pas c'est que pour une autre boite de dialogue utilisant aussi une combobox cela marche parfaitement et pour celle ci il n'y a rien a faire pourtant j'ai procede de la meme maniere
enfin bref il doit y avoir un detail qui fait que les operations effectue dans OnInitDialog()
n'on aucun effet sur l'affichage un peu comme si la fonction d'initialisation se faisait apres pourquoi es ce que ca se met pas a jour ?

si quelqu'un avait des suggestion ce serait bien

avec mes remerciements
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Essaye en virant les UpdateData ou le DDX_CBString(pDX, IDC_COMBOSUIVICOLOR1, m_combo_suivcolor1);
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Ca allait être ma 2ème réponse....