LB_SETITEMDATA ListBox不工作Win32 Api c ++

时间:2016-08-06 18:33:13

标签: c++ api winapi listbox

我的代码应该在创建时获取itemID并更改代码,但它永远不会更改它(至少使用我的代码)并且我想更改我选择的项目" LB_ADDSTRING& #34;使用" LB_SETITEMDATA"。我怎么能这样做?谢谢!

//listBox Downloads
        hWndList = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("listbox"), "", LBS_HASSTRINGS | WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_AUTOVSCROLL, 0, ScreenAddaptX(10)+30, ScreenAddaptX(100), ScreenAddaptY(40), hwnd, (HMENU)105, NULL, NULL);
        SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)"Downloading Test at 50%");
        int nItem = SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)"Downloading Test1 at 70%");
        SendMessage(hWndList, LB_SETITEMDATA, (WPARAM)nItem, (LPARAM)"Downloading Test1 at 90%");

1 个答案:

答案 0 :(得分:1)

LB_SETITEMDATA设置与列表框中指定项关联的用户定义值。 它不用于更改项目的文本。

但是,您似乎正在尝试更改文字。由于某种原因,该操作没有消息,因此您必须删除该项并插入包含所需文本的新项目。

int nItem = 1;
SendMessage(list, LB_DELETESTRING, nItem, 0);
SendMessage(list, LB_INSERTSTRING, nItem, (LPARAM)"Downloading Test1 at 90%");