J'utilise un contrôle éclairé virtuel et j'obtiens les données d'une carte. Mon problème est quand j'exécute le code, il affiche la liste ok, mais quand le curseur de souris se déplace sur le contrôle de liste ou quand j'essaye de défiler vers le bas, il donne un échec de Debug Assertion disant map/set iterator n'est pas déréférencable. Ma méthode GetDispInfo() est comme suit:Problème de contrôle de liste virtuelle
void CListCtrlTestDlg::GetDispInfo(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
LV_ITEM* pItem = &(pDispInfo)->item;
map<int, Error_Struct>::iterator it = Error_Map.find((pItem->iItem) + 1);
int iErrCode = (*it).second.i_ErrorCode;
CString cError = (*it).second.c_Error;
switch(pItem->iSubItem)
{
case 0:
sprintf_s(pItem->pszText, 10, "[ %d ]", iErrCode);
break;
case 1:
sprintf_s(pItem->pszText, 100, "%s", cError);
break;
}
*pResult = 0;
}
Aussi, si lorsque le pointeur de la souris est au-dessus du contrôle de la liste, à nouveau le programme se bloque en disant violation d'accès de la ligne a montré ci-dessous en sortie. c fichier:
#else /* _UNICODE */
if (_putc_nolock(ch, f) == EOF)
Est-ce que quelqu'un a eu la même expérience? Qu'est-ce que je fais mal ici et comment puis-je résoudre ce problème?
Merci!