Элементы управления обрезаются в MFC при изменении отображения на 125% в Windows 7 - PullRequest
3 голосов
/ 28 октября 2009

У меня есть приложение MFC. Когда я запустил его в Windows 7, я понял, что при изменении процента отображения на meduium - 125% у меня есть TextControl, который обрезается (конец предложения не отображается.)

Как я могу это исправить?

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

Ответы [ 2 ]

1 голос
/ 29 октября 2009

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

Вы можете использовать макет структуры, подобный этому: Ultimate Toolbox Layout Manager , или вы можете свернуть свой собственный.

Вот общий шаблон, который я использую:

  1. Определить структуру, которая фиксирует идентификатор, размер, местоположение и поведение макета (привязка вверху | слева | справа | внизу) элемента управления
  2. В конструкторе документа инициализируйте массив структур с желаемым поведением макета
  3. В OnInitDialog захватить начальные контрольные позиции, например, для элементов управления, которые привязаны к верхнему левому углу, вам нужно получить начальное расстояние от верхнего и левого от родительского элемента.
  4. В OnSize переместите и измените размер каждого элемента управления в соответствии с его макетом.
0 голосов
/ 30 октября 2009

Я не совсем уверен, поможет ли это в вашем случае, но ResizableLib работает довольно хорошо для меня. Вы также можете пропустить создание библиотеки и просто использовать файлы в своем проекте.
Для CResizableDialog есть отдельная статья, в которой за несколько простых шагов объясняется, как реализовать это для существующих диалогов.

...