我正在使用虛擬光照控制,並從地圖獲取數據。我的問題是當我運行代碼時,它顯示列表ok,但是當鼠標光標移動到列表控件上或者當我嘗試向下滾動時,它會發出Debug Assertion失敗,說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;
}
此外,如果當鼠標指針是在該列表控制的頂部,再次程序崩潰說從線訪問衝突下面輸出顯示。 c文件:
#else /* _UNICODE */
if (_putc_nolock(ch, f) == EOF)
有沒有人有相同的經驗?我在這裏做錯了什麼,我該如何解決這個問題?
謝謝!