2
有谁知道如何将项目从struct
添加到C中的ComboBox中,就像在HTML中一样 - 使用C中的Win32 API以及C#和C++都不是?ComboBox项目中的Win32 API C结构
struct item {
char *label,
int value;
};
因此,当我们检索选择的项目时,我们检索值而不是显示的字符串。
有谁知道如何将项目从struct
添加到C中的ComboBox中,就像在HTML中一样 - 使用C中的Win32 API以及C#和C++都不是?ComboBox项目中的Win32 API C结构
struct item {
char *label,
int value;
};
因此,当我们检索选择的项目时,我们检索值而不是显示的字符串。
您可以使用CB_SETITEMDATA
和CB_GETITEMDATA
消息。
基本上,在组合框中插入新字符串后,例如,通过CB_ADDSTRING
,添加字符串的从零开始的索引在成功时返回。
然后你可以使用这个指数与CB_SETITEMDATA
,关联到该项目(具有指数)自己的自定义数据(通过指针在lParam
传递)。
同样,您可以使用CB_GETITEMDATA
检索该数据,在wParam
中指定要从中检索数据的项目的从0开始的索引。
P.S.您可能希望使用更高级的更方便的helper macros for ComboBoxes而不是原始Windows消息,例如ComboBox_SetItemData
或ComboBox_GetItemData
。
您可以使用'CB_SETITEMDATA'将一个指针大小的数据值与一个项目相关联,'CB_GETITEMDATA'将其检索出来。 –
你的意思是添加所有字符串后,用cb addstring说蓝色红色白色我做了一个循环到cb_setitemdata指定索引0,1,2与12,13,14作为值如果12意味着蓝色? –
@c-dev - 你需要在'CB_ADDSTRING'或'CB_INSERTSTRING'后面调用'CB_SETITEMDATA',并且使用'CB_SETITEMDATA'的这个消息的返回索引,但不要假设0,1,2 – RbMm