Получить текст поля со списком Win32 API C ++ (НЕТ MFC) - PullRequest
1 голос
/ 31 августа 2011

Я пытаюсь настроить поле со списком, чтобы пользователь мог выбрать опцию из выпадающего меню, а затем получить то, что выбрал пользователь, используя Win32 API C ++, а не MFC. Я прочитал пост Джона здесь , и я не мог заставить что-либо работать. Я могу установить текст для поля со списком, но не могу получить то, что выбрал пользователь. Вот несколько методов, которые я попробовал:

                LPTSTR buf;
                ComboBox_GetText(hwnd, buf, 9);
                MessageBox(NULL, buf, NULL, MB_OK);

И

                char* buf;
                GetDlgItemText(hwnd, IDC_COMBO1, buf, 9);
                MessageBox(NULL, buf, NULL, MB_OK);

IDC_COMBO1 - это идентификатор поля со списком, а hwnd - это HWND текущего диалогового окна. Код моего диалогового окна с полем со списком:

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG4 DIALOG 0, 0, 424, 181 STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU CAPTION "Dialog" FONT 8, "Ms Shell Dlg" { COMBOBOX IDC_COMBO1, 113, 31, 119, 19, CBS_DROPDOWN | CBS_HASSTRINGS PUSHBUTTON "Button1", IDC_BUTTON1, 188, 112, 50, 14 }

Я использую файл ресурсов для этого. Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 31 августа 2011

Для вызова ComboBox_GetText параметр hwnd должен быть дескриптором самого поля со списком, а не диалога. Вы можете получить это HWND с GetDlgItem(hwnd, IDC_COMBO1);

Кроме того, вы не можете передать неинициализированный указатель на любую функцию; Вы должны передать указатель на созданный вами буфер.

            char buf[10];
            GetDlgItemText(hwnd, IDC_COMBO1, buf, 9);
            MessageBox(NULL, buf, NULL, MB_OK); 
1 голос
/ 01 сентября 2011

Если я правильно помню, вам нужно использовать ComboBox_GetCurSel , чтобы определить, какой элемент выбран, а затем вы можете использовать ComboBox_GetLBText , чтобы получить фактический текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...