Границы Vista и Widows 7 отрезаны от содержимого - PullRequest
2 голосов
/ 14 декабря 2009

Формы в Windows 7 и Vista имеют более толстые границы, чем в XP. В результате часть содержимого, которое охватывает всю высоту или ширину формы, будет обрезана. Есть ли простой способ исправить это, или все формы моего приложения должны быть изменены, чтобы приспособиться к этому?

Обновление: похоже, ошибка размера формы, а не границ, которые вызывают проблему. Смотрите следующие изображения для примера. Обратите внимание, что элементы управления имеют правильное расположение в верхнем правом углу, но они достигают каждой формы в Windows 7, в то время как в XP сохраняется граница. Тот же код используется для изменения размера и расположения элементов управления.

Вот как выглядит форма в XP: альтернативный текст http://img504.yfrog.com/img504/1328/bordersxp.png

А вот такая же форма в Windows 7: альтернативный текст http://img231.imageshack.us/img231/9171/borders7h.png

1 Ответ

1 голос
/ 14 декабря 2009

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

Вы, вероятно, хотите выполнить это внутри Form_Load.

В VB6 размер и ширина клиента для форм называются ScaleWidth и ScaleHeight. Установка этих значений только портит масштабирование, а не изменяет размер формы, поэтому вместо этого вам придется выполнять вычисления, чтобы можно было установить обычные свойства Width и Height.

BorderSize = Me.Width - Me.ScaleWidth
Me.Width = BorderSize + CorrectScaleWidth
//Same for height!
...