Я пытаюсь создать CCombobox со следующим кодом:
CComboBox* cSearchBar = new CComboBox();
if (!cSearchBar->Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | CBS_OWNERDRAWFIXED | CBS_DROPDOWN | CBS_AUTOHSCROLL, CRect(150,10,325,15), this, IDC_COMBO))
TRACE0("Failed to create search bar\n");
Но выдает сообщение об ошибке «Ошибка отладки» на
Файл: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winctrl1.cpp, Line 271
Эта проблема возникает только при попытке создать CCombobox с CBS_OWNERDRAWFIXED
флаг. Кто-нибудь, подскажите, пожалуйста, как программно создать CCombobox со свойством Owner Drawn, установленным в фиксированный.
Чтобы использовать владелец, вы должны использовать свой собственный класс.
class CMyComboBox : public CComboBox
{
public:
void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
void MeasureItem(LPMEASUREITEMSTRUCT ms);//ms->itemHeight = 15...
};
Пример:
https://msdn.microsoft.com/en-us/library/y5hb5f9t.aspx
Или вы можете использовать обычный комбинированный список и просто изменить его шрифт. Объявите шрифт как член класса. Создать шрифт и позвонить SetFont
после создания ComboBox:
{
CFont m_font;
//...
}
cSearchBar->Create...
m_font.CreatePointFont(120, L"Segoe UI");
cSearchBar->SetFont(&m_font);