我在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);

09-13 06:32