Bonjour,
j'ai une liste d'objets cr��e avec la classe CList et je l'affiche dans une combo box.
Je souhaite aussi pouvoir supprimer des �l�ments de cette liste en les s�lectionnant dans la combo box mais ca ne marche pas.
Voil� mon bout de code pour supprimer un �l�ment:
code de la m�thode SupprimerMessage(pMessageSel):Code:
1
2
3
4
5
6
7
8 void CListeMessagesDlg::OnDeleteMsg() { int iIndex = m_pListMsg->GetCurSel(); CMessage* pMessageSel = (CMessage*) m_pListMsg->GetItemData(iIndex); ((CMainFrame*) m_pMainFrame)->SupprimerMessage(pMessageSel); AfficherListeMessages(); }
et enfin le code de la m�thode AfficherListeMessages():Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 void CMainFrame::SupprimerMessage (CMessage* pMessageASupprimer) { if( pMessageASupprimer == NULL) { return; } else { POSITION pos=m_pListeMessages->Find(pMessageASupprimer); m_pListeMessages->RemoveAt(pos); } }
Voil� le probl�me vient du fait que quelque soit l'�l�ment s�lectionn� le pointeur pMessageSel de la m�thode OnDeleteMsg() est toujours � NULL et donc ses champs sont vides...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 void CListeMessagesDlg::AfficherListeMessages() { m_pListMsg = (CComboBox*) GetDlgItem(IDC_COMBO_LIST_MSG); m_pListeMessages = ((CMainFrame*) m_pMainFrame)->GetListeMessages(); if (m_pListeMessages == NULL) { return; } UINT uiNbMessages = ((CMainFrame*) m_pMainFrame)->GetNbMessages(); POSITION pos = m_pListeMessages->GetHeadPosition(); for (UINT ui = 0; ui < uiNbMessages/*(int) uiNbMessages*/ ; ui++) { m_pMessage = (CMessage*) m_pListeMessages->GetNext(pos); CString sNomMessage = m_pMessage->GetNomMessage(); m_pListMsg->AddString(sNomMessage); } }
Si vous voyez d'ou cela peut venir merci de me l'indiquer.
Bien sur la m�thode AfficherListeMessages() est appel�e dans le InitDialog() de la dialog box donc les variables m_pListMsg et m_pListeMessages sont d�finies.