RajaPratap Ответов: 2

Как увеличить высоту элемента управления combobox в mfc?


Привет,

Я хочу увеличить высоту элемента управления combobox.Увеличение ширины элемента управления combobox происходит, но когда я пытаюсь увеличить высоту элемента управления, я не могу перетащить его вниз.

Я долго гуглил и не нашел никакого ответа, везде упоминают, как увеличить высоту комбо-текста, но не контрольную высоту.


Может ли кто-нибудь, пожалуйста, дать мне знать, как я могу увеличить высоту элемента управления combobox.



Заранее спасибо,
Раджа

Jochen Arndt

Какую высоту вы имеете в виду (высоту поля редактирования/статики или для выпадающей области) и как вы хотите установить высоту (программно или с помощью редактора ресурсов)?

2 Ответов

Рейтинг:
2

LupinTaiwan

Чтобы изменить визуальную высоту, вам нужно сделать ее OwnerDrawn и реализовать функцию MeasureItem (), например:

void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct- & gt;itemHeight = 17;
}

Вот хороший пример:
IconComboBox-Выбор Значков[^]


barneyman

этому вопросу уже & gt;2,5 года

Рейтинг:
17

Herbisaurus

Пример SetItemHeight C++из MSDN:

// Set the height of every item to be the 
// vertical size of the item's text extent.
CString str;
CSize   sz;
CDC*    pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, str);
   sz = pDC->GetTextExtent(str);

   m_pComboBox->SetItemHeight(i, sz.cy);
}
m_pComboBox->ReleaseDC(pDC);


Удачи,
Трава


RajaPratap

Спасибо за ваш ответ.Я тоже сделал то же самое.После того, как вы сделали то же самое, что и выше, размер увеличился(вертикальная высота).Но текст не в центре.Он находится точно на самом верху.Обычно, если мы берем стандартное поле со списком, текст в элементе управления кажется выровненным правильно.Теперь, когда я увеличил высоту, текст остается в том же положении. Разве он не движется вниз, когда мы увеличиваем высоту(я имею в виду, чтобы быть выровненным правильно).Не могли бы вы, пожалуйста, дать мне знать, как это сделать?