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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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 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.
Partager