Учебное пособие: Вывод текста

Остальные параметры этой функции:

hDC - контекст-приемник изображения;

lpfnDraw - функция, осуществляющая вывод текста в промежуточный контекст устройства. Если этот параметр NULL, то используется TextOut(), иначе Вы должны передать адрес связанной с вашим приложением функции (см. процедуру MakeProcInstance() ), имеющей следующий вид:

BOOL CALLBACK GrayStringProc( hDC, lpParam, cChars ) {

// drawing text

return 1;}

параметры lParam и cChars передаютсяизфункции GrayString(); hDC указываетпромежуточныйконтекстустройства. Вывод надо осуществлять начиная с позиции 0,0;

Функция должна вернуть не 0, если все в порядке. Значение 0 указывает на ошибку и приводит к завершению работы функции GrayString().

lParam - если параметр lpfnDraw равен NULL, то lParam является дальним указателем на выводимую строку символов, иначе это может быть любое значение, используемое функцией GrayStringProc();

cChars - число символов в выводимой строке;

nX и nY - позиция для вывода

nWidth - размеры создаваемого промежуточного битмапа, который будет nHeight - принимать строку.

Некоторые особенности применения функции GrayString():

контекст-приемник изображения должен использовать координаты MM_TEXT

атрибуты контекста–приемника НЕ копируются в промежуточный контекст устройства, он использует значения атрибутов по умолчанию;

если cChars равно 0, то GrayString() предполагает, что lParam является указателем на asciiz строку (оканчивающаяся нулевым байтом) и вычисляет ее длину

если nWidth и nHeight равны 0, то GrayString() будет сам вычислять размеры битмапа для строки, указанной параметрами lParam и cChars

большинство современных адаптеров позволяют отображать достаточное число оттенков серого для вывода серых строк. Вы можете проверить, какой метод надо использовать (GrayString() или TextOut() с серым цветом текста), воспользовавшись функцией

rgbGrayText= GetSysColor( COLOR_GRAYTEXT );

если rgbGrayText равно 0 (черный цвет), то Вы должны использовать функцию GrayString(), иначе Вы можете установить серый цвет и воспользоваться функцией TextOut():

SetTextColor( hDC, rgbGrayText ); ...

Шрифты

После изучения основных средств работы с текстом мы перейдем к изучению шрифтов. Для того, что бы дальнейший материал был более понятным, нам надо разобраться с основами классификации шрифтов в Windows. При рассмотрении данной классификации следует иметь в виду ее условность и неизбежное применение типографических терминов. В настоящее время не существует общепринятой системы классификации шрифтов, более того многие термины трактуются совершенно различным образом в разных системах классификации. (Так, например, italic может обозначать наклонный шрифт, наклонный курсив или узкий шрифт, у которого горизонтальные штрихи толще вертикальных).

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

шрифты устройства

шрифты GDI

Со шрифтами устройств мы разбираться не будем, так как это очень специфичные шрифты и их свойства жестко определены возможностями аппаратуры. Основное внимание мы сосредоточим на шрифтах GDI.

Классификация шрифтов GDI

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

К-во Просмотров: 415
Бесплатно скачать Учебное пособие: Вывод текста