我在Visual Studio的输出窗口中遇到以下错误:First-chance exception at 0x5d0d47af (msvcr100d.dll) in Program.exe: 0xC0000005: Access violation reading location 0xcccccccc.
每次执行此代码:
const int iItem = ListView_GetItemCount(hListOutput);
LVITEM lvI;
lvI.mask = LVIF_TEXT | LVIF_GROUPID;
lvI.iSubItem = 0;
lvI.iGroupId = 101;
lvI.iItem = iItem;
lvI.pszText = const_cast<LPWSTR>(mystr.c_str());
if (ListView_InsertItem(hListOutput, &lvI) != -1)
{
ListView_SetCheckState(hListOutput, iItem, TRUE);
}
如果我将
ListView_SetCheckState
注释掉,则停止出现访问冲突。将插入所有项目,并设置项目检查状态。
但是我想弄清楚为什么我遇到访问冲突。
最佳答案
ListView_SetCheckState(hListOutput,iItem,TRUE);
这个值似乎是错误的,因为它将指向一个比列表中的值大的值(因为索引为零)。
尝试
unsigned int iItem1=iItem-3;//anything greater than zero..
ListView_SetCheckState(hListOutput,iItem1, TRUE);