У меня есть настраиваемое рисованное поле со списком со стилем 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
.
Я хочу знать, как решить эту проблему, как определить, что я рисую статическую часть или обычный элемент в раскрывающемся списке?
ODT_COMBOBOX
для текста в статическом элементе управления.ODT_LISTBOX
для текста из элемента списка. Это или я не понял вашего вопроса. - person manuell   schedule 08.03.2014DrawItemStruct.itemID == -1
- person user1793036   schedule 10.03.2014