2016-11-30 97 views
2

有谁知道如何将项目从struct添加到C中的ComboBox中,就像在HTML中一样 - 使用C中的Win32 API以及C#和C++都不是?ComboBox项目中的Win32 API C结构

struct item { 
    char *label, 
    int value; 
}; 

因此,当我们检索选择的项目时,我们检索值而不是显示的字符串。

+3

您可以使用'CB_SETITEMDATA'将一个指针大小的数据值与一个项目相关联,'CB_GETITEMDATA'将其检索出来。 –

+0

你的意思是添加所有字符串后,用cb addstring说蓝色红色白色我做了一个循环到cb_setitemdata指定索引0,1,2与12,13,14作为值如果12意味着蓝色? –

+1

@c-dev - 你需要在'CB_ADDSTRING'或'CB_INSERTSTRING'后面调用'CB_SETITEMDATA',并且使用'CB_SETITEMDATA'的这个消息的返回索引,但不要假设0,1,2 – RbMm

回答

3

您可以使用CB_SETITEMDATACB_GETITEMDATA消息。

基本上,在组合框中插入新字符串后,例如,通过CB_ADDSTRING,添加字符串的从零开始的索引在成功时返回。

然后你可以使用这个指数与CB_SETITEMDATA,关联到该项目(具有指数)自己的自定义数据(通过指针lParam传递)。

同样,您可以使用CB_GETITEMDATA检索该数据,在wParam中指定要从中检索数据的项目的从0开始的索引。

P.S.您可能希望使用更高级的更方便的helper macros for ComboBoxes而不是原始Windows消息,例如ComboBox_SetItemDataComboBox_GetItemData