是否有人知道如何使用C中的Win32 API(无论是C#还是C ++)将struct
中的项目添加到C中的ComboBox中?
struct item {
char *label,
int value;
};
因此,当我们检索所选项时,我们检索值而不是显示的字符串。
答案 0 :(得分:3)
您可以使用CB_SETITEMDATA
和CB_GETITEMDATA
消息。
基本上,在组合框中插入新字符串后,例如通过CB_ADDSTRING
,成功返回添加的字符串从零开始的索引。
然后,您可以将此索引与CB_SETITEMDATA
一起使用,将该项目(具有该索引)与您自己的自定义数据相关联(通过lParam
中的指针传递)。 / p>
同样,您可以使用CB_GETITEMDATA
检索该数据,在wParam
中指定要从中检索数据的项目的从0开始的索引。
P.S。您可能希望使用更高级别更方便的helper macros for ComboBoxes而不是原始Windows消息,例如ComboBox_SetItemData
或ComboBox_GetItemData
。