我有一个带有 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 位数字,每次都不同。
有谁知道是什么原因造成的?