Определение расположения окна


В предыдущем разделе показано, как определять размеры окна. Другая важная задача - определение расположения окна на экране.

При перемещении окна функция окна получает сообщение WM_MOVE, вместе с ним она получает новые координаты внутренней области окна:

wParam - не используется; LOWORD(lParam) - X-координата верхнего левого угла клиентской части окна; HIWORD(lParam) - Y-координата верхнего левого угла клиентской части окна.

Замечание.Для окон, имеющих стили WS_OVERLAPPED и WS_POPUP, координаты отсчитываются от верхнего левого угла экрана. Для окон стиля WS_CHILD эти координаты отсчитываются от верхнего левого угла внутренней области родительского окна.

В любой момент времени приложение может такжеопределить расположение и размер окна, вызвав функцию:

void GetWindowRect(HWND hwnd, RECT FAR* lprc);
  • Эта функция выдает информацию о расположении и размере прямоугольной области, ограничивающей окно, с учетом заголовка, рамки и полос просмотра. Все координаты отсчитываются от верхнего левого угла экрана.

Метрики текста

Приложения Windows могут выводить текст с использованием различных шрифтов. Прежде всего, следует отметить, что

Все шрифты можно разделить на две группы относительно ширины букв:

  • К первой относятсяшрифты с фиксированной шириной букв (fixed-pitch font). Все буквы такого шрифта имеют одинаковую ширину.
  • Вторая группа шрифтов - шрифты с переменной шириной букв (variable-pitch font). Для таких шрифтов каждая буква имеет свою ширину.

Кроме того,

Шрифты также можно разделить на следующие группы относительно начертания:

  • Растровые шрифты (raster font) состоят из отдельных пикселов. Если выполнить масштабирование растрового шрифта в сторону увеличения размера букв, наклонные линии и закругления будут изображаться в виде “лестницы”.
  • Контурные шрифты (stroke font) больше подходят для плоттеров. При масштабировании таких шрифтов можно достигнуть лучших результатов, чем при масштабировании растровых. Однако при большом размере букв результат все равно получается неудовлетворительный.
  • Масштабируемые шрифты TrueType сохраняют начертание символов при любом изменении размеров, поэтому они используются чаще всего.

В контекст отображения по умолчанию выбран так называемый системный шрифт SYSTEM_FONT. Системный шрифт используется в Windows, например, для текста в заголовках окон, меню и диалоговых панелях.

  • Системный шрифт относится к растровым шрифтам с переменной шириной букв.

Переменная ширина букв усложняет задачу вывода текста, но в составе программного интерфейса Windows имеется функция, предназначенная для подсчета длины текстовой строки lpszString длиной cbString

DWORD GetTextExtent(HDC hdc, LPSTR lpszString,int cbString);

Для получения информации о шрифте, выбранном в контекст устройства, предназначена функция:

BOOL GetTextMetrics(HDC hdc, TEXTMETRIC FAR* lptm);

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



Дата добавления: 2017-01-26; просмотров: 920;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.