0

我正在尝试使用以下代码创建一个 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 仅当我尝试使用CBS_OWNERDRAWFIXED标志创建 CCombobox 时才会出现此问题。有人请告诉我如何以编程方式创建一个 CCombobox,并将 Owner Drawn 属性设置为fixed

4

1 回答 1

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);
于 2015-07-07T07:09:02.630 回答