В чем разница между ComboBox_AddItemData() и ComboBox_AddString()?

#winapi #combobox #itemscontrol

#winapi #combobox #itemscontrol

Вопрос:

В чем разница между ComboBox_AddItemData() и ComboBox_AddString() ? из документации мне это непонятно. ComboBox_AddItemData() Добавляет ли данные в поле со списком, в смысле SetWindowLongPtr(hwnd, GWLP_USERDATA, dataInstance) ? и в этом случае dataInstance можно каким-то образом преобразовать в строку, которая будет отображаться в выпадающем списке, или это псевдоним ComboBox_AddString() , может быть, по историческим причинам?

Комментарии:

1. нет никакой разницы на двоичном уровне. это добавит новый элемент в список поля со списком. вопрос только в стиле. ComboBox_AddString есть смысл использовать, когда CBS_HASSTRINGS включен стиль, в противном случае — использовать ComboBox_AddItemData . и, конечно GWLP_USERDATA , здесь нет ничего общего

2. Удобные макросы (например ComboBox_AddItemData ) расширяются до SendMessage вызовов. Документация для фактических сообщений (например, CB_ADDSTRING ) обычно содержит более полную документацию. ComboBox_AddItemData аналогичен GWLP_USERDATA в том смысле, что он позволяет клиентскому коду связывать произвольные данные с элементом. Затем поле со списком, нарисованное владельцем, может преобразовать данные элемента в его строковое представление для отображения.