2015-07-07 5 views
0

Я пытаюсь создать CComboBox со следующим кодом:Debug Assertion Ошибка при создании 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"); 

Но это выдает сообщение об ошибке «Debug утверждении Failed» на

Файла: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winctrl1.cpp, Line 271 Эта проблема возникает, когда я пытаюсь создать CCombobox с флагом CBS_OWNERDRAWFIXED. Кто-нибудь, пожалуйста, сообщите мне, как создать CCombobox программно с свойством Owner Drawn, установленным на исправлено.

+0

Утверждение отладки оценивает выражение. Это должно дать вам хороший намек на то, что пошло не так. (Примечание: у вас есть исходный код.) – IInspectable

ответ

0

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

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

Я пробовал это, но проблема осталась такой же. –

+0

Он не остается прежним. Предыдущая ошибка, скорее всего, из-за отсутствия «MeasureItem». На вашем компьютере, вероятно, находится файл: 'C: \ Program Files (x86) \ Microsoft Visual Studio VERSION \ VC \ atlmfc \ src \ mfc \ winctrl1.cpp', вы можете проверить его, как было предложено в другом комментарии. –

+0

В моем случае это оставалось тем же, может быть, я не буду следовать правильному пути ... Ну, вы также предложили мне использовать регулярное поле со списком и изменить его шрифт, не могли бы вы рассказать, как это сделать? –

Смежные вопросы