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.