Bonjour,
voilà, je ne sais clairement pas un pro des MFC , et donc je patauge dans un truc surement tout bête : j'ai plusieurs dialog avec des combobox dont je doit sélectionner automatiquement une ligne en fonction d'une valeur de data.
Or pour ce faire j'ai codé une méthode simple :
utilisé comme çà:
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
19
20 void CMMIGroup::SelectCBItem(int nID, long nData) { CComboBox* pComboBox = static_cast<CComboBox*>(GetDlgItem(nID)); if ( NULL != pComboBox ) { int nCount = pComboBox->GetCount(); for (int i=0; i<nCount; i++) { if ( nData == pComboBox->GetItemData(i) ) { if (CB_ERR == pComboBox->SetCurSel(i)) { infolog << "CMMIGroup::SelectCBItem -> ERROR : SetCurSel returns CB_ERR " << endlog; } } } } }
Bon donc ce code fonctionne très bien, mais jusqu'à présent c'est du code dupliqué car mis dans le code de chaque dialog. Je veux donc mettre le code dans une classe utilitaire, et j'ai donc fait çà :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SelectCBItem(IDC_GROUP_TYPE_VALUE, m_stGroupData.Identifier);
utilisé dans mes dialogs comme çà :
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
19
20 void CMMITools::SelectCBItem(CWnd hNd, long nData) { CComboBox* pComboBox = static_cast<CComboBox*>(hNd); if ( NULL != pComboBox ) { int nCount = pComboBox->GetCount(); for (int i=0; i<nCount; i++) { if ( nData == pComboBox->GetItemData(i) ) { if (CB_ERR == pComboBox->SetCurSel(i)) { infolog << "CEpidMMITools::SelectCBItem -> ERROR : SetCurSel returns CB_ERR " << endlog; } } } } }
Mais à la compilation j'ai cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CMMITools::SelectCBItem(GetDlgItem(IDC_GROUP_TYPE_VALUE), m_stGroupData.Identifier);
Quelqu'un peut-il me dire où çà coince ? merci beaucoup.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 x:\mmi\project\emmitools.cpp(469) : error C2440: 'type cast' : cannot convert from 'class CWnd' to 'class CComboBox *' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Partager