Сообщений 3 Оценка 1 Оценить |
Поскольку высота списка combobox-контрола определяется высотой самого контрола, то для ее изменения необходимо изменить высоту контрола любым доступным способом.
RECT r; int nLineCount = 6; // количество строк в выпадающем списке HWND cb = GetDlgItem( hDlg, IDC_COMBO1 ); GetWindowRect( cb, &r ); MapWindowPoints( NULL, hDlg, (LPPOINT)&r, 2 ); MoveWindow(cb, r.left, r.top, r.right - r.left, 24 + nLineCount * 13, TRUE); |
Константы 24 и 13 указаны для шрифта диалога MS Sans Serif 8. Для MS Sans Serif 10 и 12 подойдут пары (28, 16) и (32, 20) соответственно.
ПРИМЕЧАНИЕ Для большинства шрифтов, пригодных для использования в диалогах, подойдет следующий алгоритм определения этих констант:
где const_for_editbox - это большая из констант, и const_for_line - меньшая. Для шрифтов малых размеров алгоритм может давать эффект уменьшения количества видимых строк в выпадающем списке на одну, по сравнению с указываемым в nLineCount. Несложно опытным путем определить необходимый поправочный коэффициент-делитель (его необходимо уменьшать в случае уменьшения const_for_line). |
Сообщений 3 Оценка 1 Оценить |