Не удалось отладить утверждение при создании CCombobox со свойством Overdrawn

Я пытаюсь создать 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, установленным в фиксированный.

0

Решение

Чтобы использовать владелец, вы должны использовать свой собственный класс.

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);
0

Другие решения


По вопросам рекламы [email protected]