Хотя этот вопрос, вероятно, задавался тысячу раз раньше (я уверен, что прочитал тысячу ответов). Я до сих пор не понимаю.
Допустим, у меня есть функция, которая создает ComboBox следующим образом:
scopeComboSelector=CreateCombobox(hwnd,
GetModuleHandle(0),
CBS_DROPDOWNLIST,
re,
IDCC_DROPDOWNLIST_SCOPE_SELECTOR,
_T("Scopes"));
Где «re» является позиционирующим прямоугольником. И IDCC_DROPDOWNLIST_SCOPE_SELECTOR (довольно длинное имя) является идентификатором комбинированного списка. Теперь дело в том, что я действительно могу заполнить этот «выпадающий список выбора», но я понятия не имею, как просто получить текущее выбранное значение в виде строки.
Я видел около 10 способов сделать это, которые все сразу дают ошибки (нужно конвертировать в LPWSTR -> исправление результатов в большем количестве террора).
Может быть, я просто привык к Java, где можно просто сказать:
textfield.getText();
Как достичь этого в Win32 C ++ (Microsoft Visual Studio)?
редактировать
Код, который я использовал:
char userName[_MAX_PATH+1];
GetDlgItemTextW(scopeComboSelector,
IDCC_DROPDOWNLIST_SCOPE_SELECTOR,
(LPWSTR)userName,
200);
Возвращает: userName == пусто
Обновить
Теперь с помощью: GetDlgItemText (). Отладчик сообщает мне значение userName = «»
документация имеет пример кода Windows 9x в стиле C
Вам нужно просто заменить C на C ++ и глупые T-макросы Windows 9x на wchar_t
и друзья.
Всегда хорошая идея прочитать документацию.
Других решений пока нет …