Листинг 18.1
static char Text[] * "Отсечение"; RECT г - {50.10.157.60}:
Static int dx[] - {6.7.9.11.14.17.20.23.26.29}; SetBkColor (hdc. RGB (0. 0. 0)); SetTextColor (hdc. RGB (255. 255. 255));
ExtTextOut(hdc.45.20.ET0_CLIPPED|ET0_0PAQUE.&r.Text.st r1en(Text).dx);
Когда говорят, что текст привязан к точке (X, Y), это означает что указаны координаты этой точки в прямоугольной области, которую занимает текст. По умолчанию точка (X,Y) находится в левом верхнем углу строки.
Функция UINT SetText AI i gn (HDC hdc. U INT fMode) получает параметр fMode, управляющий положением точки привязки. Параметр содержит флаг, задающий положение точки привязки по горизонтали, и флаг, задающий положение точки привязки по вертикали. Константы TA_LEFT, TA_RIGHT и TA_CENTER устанавливают точку привязки слева, в центре и справа от строки соответственно. Константы ТА_Т0Р, ТА_В0ТТ0М и TAJBASELINE определяют вертикальное позиционирование относительно точки (X, Y). Применение функции SetTextAlignO влияет на положение строки, но не перемещает область отсечения. В предыдущем примере можно изменить тип выравнивания перед выводом строки функцией SetText AI i gn (hdc. TA_CEN -TER). При этом положение на экране черного прямоугольника не изменится, но в нем будет видна только правая половина строки.
По умолчанию функции Text0ut() и ExtTextOut () не влияют на положение графического указателя. Но если в параметре fMode функции SetTextAlignO указан флаг TAJJPDATECP в сочетании с TA_LEFT или TA_RIGHT, то интерфейс GDI имитирует вывод на телетайп. При этом нельзя произвольно задавать позицию печатаемого символа на носителе изображения, символ выводится в позицию, заданную графическим указателем. После вывода очередного символа указатель смещается на соседнее место, определяя позицию для следующего символа. Новый оператор
Рис. 18.1. Пример текста
Текстовые сообщения и шрифты
вывода начинает вывод рядом с той позицией, на которой выведен последний символ предыдущим оператором.
Таким образом, при выполнении функции вывода строки первый ее символ выводится не в позицию (X. Y), а в позицию текущего графического указателя. Она может быть задана, например, вызовом MoveToExC). После завершения вывода указатель будет переведен на правый конец строки (при установленном флаге TA_LEFT) или на левый (при установленном флаге TA_RIGHT).