2016-11-30 64 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