-1
我想在Visual Studio 2010和WIN32(C++)的ComboBox中保存'username'和'ID'。下面的代碼是的ItemData設置爲組合框:爲什麼ComboBox不會在循環中設置和獲取ItemData?
HWND hCB;
hCB = CreateWindowEx(0, L"COMBOBOX", 0x00,
CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_VSCROLL,
10, 10, 200, 100,
hWnd, NULL, (HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE), NULL);
WCHAR sTemp[256];
for (int i =0 ; i<4 ; i++)
{
wsprintf(sTemp, L"%s%d", L"User", i);
SendMessage(hCB, CB_ADDSTRING, 0, (LPARAM) sTemp);
wsprintf(sTemp, L"%s%d", L"ID", i);
SendMessage(hCB, CB_SETITEMDATA, (WPARAM)i, (LPARAM)sTemp);
}
和代碼用於獲取的ItemData從組合框是:
WCHAR *sTemp;
for (int i=0; i < 4 ; i++)
{
sTemp = (WCHAR *)SendMessage(hCB, CB_GETITEMDATA, (WPARAM)i, 0);
MessageBox(NULL, sTemp, NULL, MB_OK);
}
的問題是,消息框不顯示任何內容。 當我通過爲每個組合框項目添加一個CB_GETITEMDATA消息來檢查代碼的第一部分時,我發現項目的所有itemdata值都是「ID3」,這是列表中的最後一個項目數據。 我認爲代碼很簡單,但是我找不到我的代碼有什麼問題?
那麼如何將字符串分配給循環中的itemdata?直到現在我還以爲combobox使用內部數據結構來保存itemdata! – Shaheen
@Shaheen - 請看我編輯的答案。 –
真是一團糟!如果我應該爲每個itemdata分配內存,那麼我會創建一個數據結構或文件來保存數據。一路走來,感謝您的關注。 – Shaheen