Определение расположения окна
В предыдущем разделе показано, как определять размеры окна. Другая важная задача - определение расположения окна на экране.
При перемещении окна функция окна получает сообщение 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;