Я пытаюсь заполнить 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, ни один элемент не добавлен. Пожалуйста, что случилось? Большое спасибо!
проверять
SendMessage(hw, CB_INSERTSTRING, -1, (LPARAM)"test");
Вам нужно знать, что для проекта есть параметры 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 в порядке. Вы добавили один элемент в поле со списком. Но из-за неправильного кодирования может не отображаться текст, который вы хотите установить.