CComboBox dans une classe utilitaire
Bonjour,
voilà, je ne sais clairement pas un pro des MFC :oops: , 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 :
Code:
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;
}
}
}
}
} |
utilisé comme çà:
Code:
SelectCBItem(IDC_GROUP_TYPE_VALUE, m_stGroupData.Identifier);
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:
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;
}
}
}
}
} |
utilisé dans mes dialogs comme çà :
Code:
CMMITools::SelectCBItem(GetDlgItem(IDC_GROUP_TYPE_VALUE), m_stGroupData.Identifier);
Mais à la compilation j'ai cette erreur :
Code:
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 |
Quelqu'un peut-il me dire où çà coince ? 8O merci beaucoup.