Невозможно изменить высоту поля со списком в редакторе диалогов VS - PullRequest
1 голос
/ 10 апреля 2010

Кажется, что любое комбо-окно, которое я создаю, застревает на высоте 12 диалоговых единиц. В рекомендациях Microsoft относительно интервалов и размеров элементов управления в диалоговых окнах говорится, что поле со списком должно иметь высоту 14 диалоговых блоков.

Я даже пытался редактировать файл ресурсов в блокноте и перекомпилировать в Visual Studio, не открывая редактор ресурсов - но поля со списком по-прежнему имеют неправильный размер!

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 27 сентября 2011

Высота, которую вы указываете для поля со списком указывает размер поля со списком при его открытии . Высота части управления редактированием зависит от шрифта. (Или в зависимости от размера вашего предмета, если вы рисуете владельца.)

1 голос
/ 08 февраля 2012

в моем случае я обработал сообщение WM_WINDOWPOSCHANGING и изменил член cy в структуре WINDOWPOS, это работает, может помочь.

0 голосов
/ 23 ноября 2017

Теперь давайте предположим, что вы хотите изменить размер выпадающей области (список, который появляется при нажатии кнопки). Помните, что поле со списком раньше было просто окном редактирования и списком, склеенным вместе в старые времена. Поэтому нам нужно как-то изменить общую ширину / высоту.

Одним из способов является редактирование ширины / высоты в файле RC напрямую.

Удивительная вещь в диалоговом редакторе VS заключается в том, что по умолчанию он создает область по умолчанию «перетаскивания» с почти нулевым пикселем. Вы вообще не увидите список!

В редакторе диалоговых окон наведите курсор мыши над раскрывающейся кнопкой, пока курсор мыши не станет север-юг. Затем нажмите, и отобразятся реальные границы, и вы можете изменить область.

Пример:

Dialog editor trick

0 голосов
/ 13 апреля 2010

Вы можете получить HWND и размеры комбинированных компонентов с помощью WTL :: CComboBox :: GetComboBoxInfo (), например, в вашем OnInitDialog ():

COMBOBOXINFO cbi = {sizeof COMBOBOXINFO}; 
CComboBox(GetDlgItem(ID_MYCOMBO)).GetComboBoxInfo(&cbi);
CRect rComboEdit = cbi.rcItem;
// adjust rComboEdit to your needs
CEdit(cbi.hwndItem).MoveWindow(rComboEdit);
...