WIN32 API C -программа: Combo Box имеет пустой список или не выпадает, несмотря на заполнение CB_ADDSTRING - PullRequest
0 голосов
/ 04 марта 2020

Я использую Visual C ++ 2008 для создания C -программы с использованием диалогового окна WIN32 API с использованием широких символов. Пока все элементы управления работают, но теперь я добавил поле со списком, перетащив его из панели инструментов в диалоговое окно ресурсов. Я выполнил необходимое кодирование (см. Ниже), но когда я щелкаю поле со списком, список, кажется, не выпадает или становится пустым, когда я нажимаю на поле со списком. Однако последний элемент («ПУНКТ 2») отображается в поле со списком. Я помещаю код в WM_INITDIALOG вместо WM_CREATE, потому что мое приложение состоит только из одного диалогового окна. Вот часть моего кода:

LRESULT CALLBACK BasicScanProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{

    HWND hWndComboBox;

    switch(uMsg)
    {

        case WM_INITDIALOG:

            hWndComboBox = GetDlgItem(hwnd,IDC_COMBO1); //gets handle
            SendMessage(hWndComboBox, CB_ADDSTRING, 0, TEXT("ITEM 1")); //adds items
            SendMessage(hWndComboBox, CB_ADDSTRING, 0, TEXT("ITEM 2"));
            SendMessage (hWndComboBox, CB_SETCURSEL, (WPARAM) 1, (LPARAM) 0); //display first item


Я пробовал ниже с теми же результатами, что и выше:

SendMessage (hWndComboBox, (UINT) CB_ADDSTRING, (WPARAM) 0, (LPARAM) "ITEM 1");
SendMessage (hWndComboBox, (UINT) CB_ADDSTRING, (WPARAM) 0, (LPARAM) "ITEM 2");

Как отобразить два элемента (ПУНКТ 1 и ПУНКТ 2 ) в раскрывающемся списке моего поля со списком, когда я нажимаю на элемент управления?

1 Ответ

0 голосов
/ 05 марта 2020

enter image description here Да, эта проблема решена. Проблема не в l ie где-либо в коде, а в ручном изменении размера с помощью мыши или клавиш со стрелками высоты элемента управления Combo Box в редакторе ресурсов визуального C ++, чтобы также учитывать высоту области раскрывающегося списка, когда он падает (т. е. при нажатии) ПЛЮС нормальная высота поля со списком в обычном режиме без выпадающего меню. Таким образом, размер (высота) элемента управления Combo Box при его помещении в редактор ресурсов должен быть больше высоты по умолчанию только элемента управления Combo Box, поскольку его область раскрывающегося списка еще не была расширена.

Кому изменить высоту элемента управления Combo Box немного сложно. Курсор мыши не изменится на стрелку вверх / вниз при первом щелчке при первом щелчке на поле со списком, чтобы выбрать его. Вам нужно будет снова щелкнуть стрелку вниз в правом конце поля со списком (да, во второй раз). Только тогда вы сможете получить стрелку изменения размера вверх / вниз. Большое спасибо @JonathanPotter за эту информацию!

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