0

我有一个带有 SQL 后端的 C++ 应用程序,并且根据需要在列表控制行上使用 SetItemData() 存储任何检索到的列(数据库中的整数、主键 bigint)的行 ID。如果需要查询该 ID,则使用 GetItemData() 检索该 ID。

我现在遇到了一个奇怪的问题,在这种情况下,GetItemData() 返回一个随机的 7 位数字而不是存储的 ID。当我添加行时,我使用以下代码:

CListCtrl& lc = GetListCtrl();
for (int i = 0; i < vInsertItems.size(); i++) {
    int j = lc.InsertItem(i,i.strName);

    DWORD dwdRowID = (DWORD)cammms,nRowID;
    lc.SetItemData(j,dwdRowID);
}

要检索和检查值,我可以执行以下操作(我已确定 nCurrentlySelectedIndex 是正确的):

CListCtrl& lc = GetListCtrl();
int msgID = lc.GetItemData(nCurrentlySelectedIndex);
CString debugInt; debugInt.Format(_T("debugInt = %d"),msgID);
AfxMessageBox(debugInt);

奇怪的是,如果我在第一批代码之后直接运行第二批代码,一切都很好。但是如果我在一个单独的函数中运行它,msgID 会被设置为一组随机的 7 位数字,每次都不同。

有谁知道是什么原因造成的?

4

0 回答 0