我有一个带有样式的自定义绘制组合框,CBS_DROPDOWNLIST
我CBS_OWNERDRAWVARIABLE
可以绘制下拉列表的项目,但是当用户选择一个项目时,它是在组合框静态部分中绘制的[选择项目并显示选择后保持可见的组合部分],我想给它一个自定义文本,如下图所示
但我无法确定我找到了这样的代码
if(DrawItemStruct.CtlType == ODT_COMBOBOX)//the static part of the combo
DrawComboText(pDC, DrawItemStruct.itemID, &DrawItemStruct.rcItem);
else//the rest items
{
// Copy the text of the item to a string
char sItem[256];
GetString(sItem, DrawItemStruct.itemID);
biDrawText(pDC, sItem, -1, &DrawItemStruct.rcItem, f | DT_VCENTER | DT_SINGLELINE);
}
但是当我使用它时,我得到了所有项目CtlType == ODT_COMBOBOX
,当我调试上面的代码时,它返回ODT_COMBOBOX
静态部分,而对于下拉列表的项目,它返回ODT_LISTBOX
。
我想知道如何解决这个问题,如何检测到我正在绘制下拉列表中的静态部分或常规项目?