У меня есть приложение C ++ с бэкэндом SQL, и я хранил идентификатор строки всех извлеченных столбцов (целое число, bigint первичного ключа в базе данных) с SetItemData () в строках управления списком по мере необходимости. Затем это извлекается с помощью GetItemData (), если этот идентификатор нужно запрашивать.
Теперь у меня возникает странная проблема в том, что в этом сценарии GetItemData () возвращает случайное 7-значное число вместо сохраненного идентификатора. Когда я добавляю строку, я использую следующий код:
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 цифр, каждый раз отличающийся.
Кто-нибудь знает, что может быть причиной этого?
Задача ещё не решена.
Других решений пока нет …