-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