0

我在 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,我将停止访问冲突。

正在插入所有项目并且正在设置项目检查状态。
但我想弄清楚为什么我会遇到访问冲突。

4

2 回答 2

1

ListView_SetCheckState(hListOutput, iItem , TRUE);

这似乎是错误的,因为它将指向比列表中可用的值大一的值(因为索引为零)。

尝试

unsigned int iItem1=iItem-3;//anything greater than zero..

ListView_SetCheckState(hListOutput,iItem1, TRUE);
于 2012-08-17T15:39:34.707 回答
0

ListView_InsertItem 的返回值是否等于 iItem?MSDN 文档指出项目索引是从插入函数返回的,因此在设置检查状态时使用该值可能是最安全的。

于 2012-08-20T03:04:09.880 回答