0

SQL バックエンドを備えた C++ アプリケーションがあり、必要に応じてリスト コントロール行に SetItemData() を使用して、取得した列 (データベース内の整数、主キー bigint) の行 ID を格納しています。ID を照会する必要がある場合は、GetItemData() で取得します。

この 1 つのシナリオでは、GetItemData() が格納された ID ではなく、ランダムな 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);

奇妙なのは、最初のバッチの直後に 2 番目のコード バッチを実行しても、すべて問題ないということです。しかし、別の関数で実行すると、msgID はランダムな 7 桁のセットに設定され、毎回異なります。

誰がこれを引き起こしているのか考えていますか?

4

0 に答える 0