C ++ MFC visual studio заполняет комбинированный список, создаваемый динамически

0

Я пытаюсь заполнить combobox, который я создал динамически, используя этот код:

            hw = ::CreateWindowEx(0, _T("COMBOBOX")
            , NULL, WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWN
            ,gx, gy, w,h
            , this->m_hWnd, (HMENU)id, AfxGetApp()->m_hInstance, NULL
            );
            LRESULT msg ;
            msg=::SendMessage(hw,CB_ADDSTRING,i,(LPARAM)"test");
            if (msg = CB_ERRSPACE)
            {
                MessageBox(NULL,((LPCTSTR)""),0);
            }

Я всегда получил значение NULL в msg, ни один элемент не добавлен. Пожалуйста, что случилось? Большое спасибо!

  • 0
    Вы используете Unicode или ANSI? Кроме того, если вы назначаете CB_ERRSPACE для msg, не сравнивайте его.
  • 0
    Я использую ANSI, и я действительно проводил тестирование аффекта с CB_ERRSPACE .. хорошее замечание
Теги:
dynamic
mfc
combobox

2 ответа

0
Лучший ответ

проверять

SendMessage(hw, CB_INSERTSTRING, -1, (LPARAM)"test");
  • 0
    Большое спасибо, я исправил, как вы сказали, и я также увеличил значение h, которое является высотой комбо. Поэтому я понял, что не могу отобразить длинный список (длиннее экрана), чтобы позволить пользователям выбирать параметр. Я думал, что смогу использовать комбинированный ящик с правильным подъёмом. Вы подтверждаете? еще раз спасибо
  • 0
    да, я думаю, вы не можете иметь комбо длиннее экрана
0

Вам нужно знать, что для проекта есть параметры Unicode и MBCS. Я предполагаю, что ваш проект имеет настройки Unicode.

Поэтому вам нужно использовать _T или TEXT, когда вы предъявляете иск константам charater и хотите использовать их в функциях WinAPI.

msg=::SendMessage(hw,CB_ADDSTRING,i,(LPARAM)TEXT("test"));
if (msg = CB_ERRSPACE)
  MessageBox(NULL,TEXT(""),0);

Результат msg == 0 в порядке. Вы добавили один элемент в поле со списком. Но из-за неправильного кодирования может не отображаться текст, который вы хотите установить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню