我正在使用虚拟照明控件,并从地图中获取数据。我的问题是当我运行代码时,它显示列表正常,但是当鼠标光标移动到列表控件上或当我尝试向下滚动时,它给出了一个调试断言失败,说 map/set 迭代器不可取消引用。我的 GetDispInfo() 方法如下:
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;
}
此外,如果当鼠标指针位于列表控件的顶部时,程序会再次崩溃,并从 output.c 文件中显示的行中显示访问冲突:
#else /* _UNICODE */
if (_putc_nolock(ch, f) == EOF)
有没有人有同样的经历?我在这里做错了什么,我该如何解决这个问题?
谢谢你!