См. \local-sources\chapl2\12-04.txtРисунок 12.1. Пример применения функции CreateFont
нием этого контекста приложение определяет число битов на пиксель и число цветовых плоскостей для дисплея. Для монитора SVGA эти характеристики соответствуют 8 битам и 1 цветовой плоскости. |
|||||||||
Си. \local-sou |
rces\chap!2\12-05. txt |
||||||||
CreateScalableFontResource * Windows 98 + Windows 2000 |
|||||||||
Описание |
При использовании в приложении, в котором установлены шрифты TrueType, функция CreateScalableFontResource создает файл ресурса шрифта для масштабируемого шрифта. В настоящее время поддерживаются только шрифты TrueType. В приложении можно вызвать функцию CreateScalableFontResource для создания файла ресурса шрифта (обычно с расширением имени файла .FOT), а затем — функцию AddFontResource для установки шрифта. |
||||||||
Синтаксис |
BOOL CreateScalableFontResource( DWORD dwHidden, LPCTSTR IpszFontRes, LPCTSTR IpszFontFile, LPCTSTR IpszCurrentPath ) |
||||||||
Параметры |
|||||||||
dwHidden |
DWORD. Если права доступа к шрифту допускают только чтение и шрифт должен быть скрыт от других приложений в системе, параметр должен быть установлен равным 1. В ином случае этот параметр должен быть установлен равным 0. |
||||||||
IpszFontRes |
LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую имя файла ресурса шрифта, создаваемого этой функцией. |
||||||||
IpszFontFile |
LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую имя файла масштабируемого шрифта, на основе которого должен быть создан файл ресурса шрифта. Если этот параметр содержит полный путь, параметр IpszCurrentPath должен иметь значение NULL или указывать на строку со значением NULL. Если путь не указан, функцию AddFontResource можно использовать только при условии, что файл TTF находится в каталоге SYSTEM системы Windows. |
||||||||
IpszCurrentPath |
LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую путь к файлу масштабируемого шрифта. |
||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||
Включаемый файл |
wingdi.h |
||||||||
См. также |
AddFontResource |
||||||||
Пример |
См. пример для функции AddFontResource. |
||||||||
DeleteDC • Windows 98 • Windows 2000 |
|||||||||
Описание |
Функция DeleteDC удаляет указанный контекст устройства (DC). В приложении не следует удалять контекст устройства, который был выбран с помощью функции GetDC, поэтому используйте функцию ReleaseDC. |
||||||||
Синтаксис |
BOOL DeleteDC( HDC hDC ) |
||||||||
Параметры |
|||||||||
hDC |
HDC. Дескриптор контекста устройства, который должен быть удален. |
||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||
Включаемый файл |
wingdi.h |
||||||||
См. также |
CreateDC, CreateCompatibleDC, CreateIC, ReleaseDC |
||||||||
Пример |
См. пример для функции CreateComoatibleDC. |
||||||||
DPtoLP • Windows 98 • Windows 2000 |
|||||||||
Описание |
Функция DPtoLP преобразует координаты устройства в логические координаты. Преобразование зависит от режима отображения данного контекста устройства (DC), от установок начал координат и экстентов для окна и области просмотра, а также от установок универсального преобразования. |
||||||||
Синтаксис |
BOOL DPtoLP( HDC hDC, LPPOINT IpPoints, int nCount ) |
||||||||
Параметры |
|||||||||
hDC |
HDC. Дескриптор контекста устройства. |
||||||||
IpPoints |
LPPOINT. Указатель на массив структур POINT. Будут преобразованы координаты д: и у, содержащиеся в каждой структуре POINT. |
||||||||
пCount |
int. Число точек в массиве. |
||||||||
Возвращаемоезначение |
BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||
Включаемый файл |
wingdi.h |
||||||||
См. также |
SetMapMode, LPtoDP |
||||||||
Пример |
См. пример для функции SetMapMode. |
||||||||
EnumDisplaySettings • Windows 98 • Windows 2000 |
|||||||||
Описание |
Функция EnumDisplaySettings позволяет получить информацию об одном из графических режимов устройства отображения. Эту функцию можно вызывать последовательно для получения информации обо всех графических режимах устройства отображения. Чтобы получить эту информацию, можно установить значение параметра iModeNum равным 0 при первом вызове и увеличивать его значение на единицу при каждом последующем вызове. Эту функцию следует вызывать, пока она не возвратит значение FALSE.При вызове функции EnumDisplaySettings с параметром iModeNum, установленным равным 0, операционная система инициализирует и кэширует информацию об устройстве отображения. При вызове функции EnumDisplaySettings с параметром iModeNum, установленным в ненулевое значение, функция возвращает информацию, которая была кэширована при последнем вызове этой функции. |
||||||||
Синтаксис |
BOOL EnumDisplaySettings( LPCTSTR IpszDeviceName, DWORD iModeNum, LPDEVMODE IpDevMode ) |
||||||||
Параметры |
|||||||||
IpszDeviceName |
LPCTSTR. Указатель на строку с нулевым символом в конце, обозначающую устройство отображения, о графическом режиме которого должна |
||||||||
быть получена информация с помощью этой функции. Этот параметр может иметь значение NULL, что указывает на текущее устройство отображения на том компьютере, где выполняется вызывающая нить. Строка должна быть задана в форме "\\.\DisplayX\ где А' может иметь значение 1, 2 или 3. В Windows 98 этот параметр должен иметь значение NULL. |
|||||||||
iModeNum |
DWORD. Значение индекса, обозначающего графический режим, о котором должна быть получена информация. Индексы графических режимов начинаются с нуля. |
||||||||
IpDevMode |
LPDEVMODE. Указатель на структуру DEVMODE, в которую функция записывает информацию об указанном графическом режиме. Дополнительная информация о том, какие члены структуры DEVMODE при этом заполняются, приведена в описании функции ChangeDisplaySettings. Определение структуры DEVMODE дано в описании функции CreateDC ранее в этой главе. |
||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||
Включаемый файл |
winuser.h |
||||||||
См. также |
ChangeDisplaySettings |
||||||||
Пример |
В следующем примере функция EnumDisplaySettings применяется для определения того, какие установки экрана поддерживаются имеющимися аппаратными средствами. В приложении каждая из этих установок вносится в окно со списком, который может просматривать пользователь. Если пользователь выбирает одну из установок и щелкает на пункте меню Test!, установки дисплея изменяются на пять секунд, а затем восстанавливаются в их первоначальные значения. |
||||||||
См. \local-sources\chapl2\12-06.txt |
|||||||||
EnumFontFamilies • Windows 98 • Windows 2000 |
|||||||||
Описание |
Функция EnumFontFamilies перебирает шрифты в семействе шрифтов или выбирает по одному шрифту из каждого семейства шрифтов, доступного для контекста устройства. Рекомендуется использовать функцию Enum-FontFamiliesEx, а не эту функцию. |
||||||||
Синтаксис |
int EnumFontFamilies( HDC hDC, LPCTSTR IpszFamily, FONTENUMPROC IpEnumFontFamProc, LPARAM IParam ) |
||||||||
Параметры |
|||||||||
hDC |
HDC. Дескриптор контекста устройства. |
||||||||
IpszFamily |
LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую имя семейства желаемых шрифтов. Если этот параметр установлен равным NULL, функция EnumFontFamilies случайным образом выбирает и перечисляет по одному шрифту для каждого доступного семейства шрифтов. |
||||||||
IpEnumFontFamProc |
|||||||||
IParam |
FONTENUMPROC. Адрес функции обратного вызова, определяемой приложением. Формат функции обратного вызова показан ниже. LPARAM. 32-разрядное значение, определяемое приложением, которое должно быть передано функции обратного вызова наряду с информацией о шрифте. |
||||||||
Возвращаемое значение |
|||||||||
int. Последнее значение, возвращенное функцией обратного вызова. |
|||||||||
Включаемый файл |
wingdi.h |
||||||||
См. также |
EnumFontFamiliesEx |
||||||||
Синтаксис обратного вызова |
|||||||||
int CALLBACK EnumFontFamProc( ENUMLOGFONT* Ipelf, NEWTEXTMETRIC* Ipntm, DWORD nFontType, LPARAM IParam ) |
|||||||||
Параметры обр |
•атного вызова |
||||||||
Ipelf |
ENUMLOGFONT*. Указатель на структуру ENUMLOGFONT, которая содержит информацию о логических атрибутах шрифта. Определение этой структуры следует за данным списком параметров. |
||||||||
Ipntm |
NEWTEXTMETRIC*. Если шрифт является шрифтом TrueType, указатель на структуру NEWTEXTMETRIC, которая содержит информацию о физических атрибутах шрифта; в ином случае указатель на структуру TEXTMETRIC. Определения этих структур следуют за списком параметров. |
||||||||
nFontlype |
DWORD. Тип шрифта. В качестве этого параметра может применяться комбинация DEVICE_FONTTYPE, RASTER_FONTTYPE и TRUETYPE_FONTTYPE. Для определения того, какие типы шрифтов установлены в системе, применяется двоичный оператор AND (&). |
||||||||
IParam |
LPARAM. Определяемые приложением данные, которые переданы в качестве параметра IParam функции EnumFontFamilies. |
||||||||
Определение ENUMLOGFONT |
|||||||||
typedef struct tagENUMLOGFONT { LOGFONT elfLogFont; TCHAR elfFullName [LF FULLFACESIZE] ; TCHAR elf Style [LF_FACESIZE] ; } ENUMLOGFONT ; |
|||||||||
Члены |
|||||||||
elfLogFont |
LOGFONT. Дополнительная информация приведена в описании функции CreateFontlndirect. |
||||||||
elfFullName |
TCHAR. Строка с нулевым символом в конце, содержащая полное имя шрифта. |
||||||||
elfStyle |
TCHAR. Строка с нулевым символом в конце, содержащая начертание шрифта, например "Bold". "Italic" и т.д. |
||||||||
Определение TEXTMETRIC |
|||||||||
typedef struct tagTEXTMETRIC { LONG tmHeight; LONG tmAscent; LONG tmDescent; LONG tmlnternalLeading ; LONG tmExternalLeading; LONG tmAveCharWidth; LONG tmMaxCharWidth; LONG tmWeight; |
|||||||||
LONG tmOverhang ; LONG tmDigitizedAspectX; LONG tmDigitizedAspectY; TCHAR tmFirstChar; TCHAR tmLastChar; TCHAR tmDefaultChar; TCHAR tmBreakChar; BYTE tmltalic; BYTE tmOnderlined; BYTE tmStruckOut; BYTE tmPitchAndFamily; BYTE tmCharSet; } TEXTMETRIC; |
|||||||||
Члены |
|||||||||
tmHeight |
LONG. Высота символов (подъем + спуск). |
||||||||
tmAscent |
LONG. Подъем символов (над опорной линией, в единицах длины). "Подъемом" сокращенно называют длину верхнего выносного элемента символа. |
||||||||
tmDescent |
LONG. Спуск символов (под опорную линию, в единицах длины). "Спуском" сокращенно называют длину нижнего выносного элемента символа. |
||||||||
tmlnternalLeading |
LONG. Величина внутреннего интерлиньяжа в пределах, установленных членом tmHeight. Проектировщик может установить значение этого члена равным 0. |
||||||||
tmExternalLeading |
LONG. Величина внешнего интерлиньяжа, который может быть добавлен в приложении между строками текста. Эта область не содержит мет ток и не изменяется при вызове функций вывода текста в режиме OPAQUE или TRANSPARENT. Проектировщик может установить значение этого члена равным 0. |
||||||||
tmAveCharWidtk |
LONG. Средняя ширина символов в шрифте, без учета выступа, требуемого для полужирных или курсивных символов (обычно этот параметр определен как ширина буквы "х"). |
||||||||
ImMaxCharWUh |
LONG. Ширина самого широкого символа в шрифте. |
||||||||
tm Weight |
LONG. Вес шрифта. |
||||||||
tmOverhang |
LONG. Дополнительная ширина в расчете на строку, которая может быть добавлена для некоторых синтезируемых шрифтов. При синтезировании некоторых атрибутов шрифта, например полужирного или курсивного, функция GDI или устройство могут быть вынуждены задавать дополнительную ширину строки с учетом увеличения ширины отдельных символов и всей строки в целом. Член tmOverhang позволяет определить в приложении, какая часть ширины символа представляет собой фактическую ширину символа, и какая — дополнительную ширину, которая относится ко всей строке. |
||||||||
tmDigitizedAspectX |
LONG. Коэффициент сжатия по горизонтали устройства, для которого был разработан шрифт. |
||||||||
tmDigitizedAspectY |
LONG. Коэффициент сжатия по вертикали устройства, для которого был разработан шрифт. |
||||||||
tmFirstChar |
TCHAR. Значение первого символа, определенного в шрифте. |
||||||||
tmLastChar |
TCHAR. Значение последнего символа, определенного в шрифте. |
||||||||
tmDefaultChar |
TCHAR. Значение символа, который должен применяться для замены символов, не принадлежащих к шрифту. |
||||||||
tmBreakChar |
TCHAR. Значение символа, который будет применяться для определения границы между словами при выравнивании текста. |
||||||||
tmltalic |
BYTE. Должен быть установлен в значение, отличное от нуля, если применяется курсивный шрифт. |
||||||||
tmUnderlined |
BYTE. Должен быть установлен в значение, отличное от нуля, если применяется подчеркивание. |
||||||||
tmStruckOut |
BYTE. Должен быть установлен в значение, отличное от нуля, если применяется перечеркивание. |
||||||||
tmPitchAndFamily |
BYTE. Информация о шаге, технологии и семействе физического шрифта. Четыре младших бита этого члена указывают информацию о шаге и технологии шрифта. Значения каждого бита определены в табл. 12.7. Четыре старших бита параметра tmPitchAndFamily обозначают семейство шрифта. В приложении для получения данных о семействе шрифта можно использовать значение OxFO и двоичный оператор AND (&). Семейства шрифтов определены в табл. 12.7. |
||||||||
Таблица 12.7. Значения члена tmPitchAndFamily структуры TEXTMETRIC |
|||||||||
Значение |
Описание |
||||||||
TMPFJJEVICE |
Если этот бит установлен, это — шрифт устройства. |
||||||||
TMPF_HXED_PTTCH |
Если этот бит установлен, шрифт — разноширинный; в ином случае шрифт — одноширинный. Обратите внимание, что значения этого бита противоположны тому, что подразумевается его именем. |
||||||||
TMPF_TRUETYPE |
Если этот бит установлен, это — шрифт TrueType. |
||||||||
TMPF_VECTOR |
Если этот бит установлен, шрифт является векторным. |
||||||||
ImCharSet |
BYTE. Набор символов шрифта. В системе заранее определены следующие наборы символов:ANSI CHARSET TURKISH CHARSET DEFAULT CHARSET HEBREW CHARSET SYMBOL_CHARSET ARABIC_CHARSET SHIFTJIS_CHARSET BALTIC_CHARSET HANGEUL_CHARSET RUSSIAN_CHARSET GB2312 CHARSET THAI CHARSET CHINESEBIG5 CHARSET EASTEUROPE CHARSET JOHAB CHARSET OEM_CHARSET GREEK_CHARSET MAC_CHARSET |
||||||||
Определение NEWTEXTMETRICtypedef struct tagNEWTEXTMETRIC { // To же, что и структура TEXTMETRIC.DWORD ntmFlags; OINT ntmSizeEM; UINT ntmCellHeight; UINT ntmAvgWidth; } NEWTEXTMETRIC; |
|||||||||
Члены ntm Flags |
DWORD. Битовая маска, которая указывает, является ли шрифт курсивным, подчеркнутым, выделенным, полужирным и т.д. Значения каждогр бита перечислены в табл. 12.8. |
||||||||
Таблица 12.8. Значения битов ntmRags структуры NEWTCXTMETRIC |
|||||||||
Бит Имя |
Описание |
||||||||
0 NTMJTALIC |
Курсив. |
||||||||
5 NTM_BOLD |
Полужирный. |
||||||||
8 NTM REGULAR |
Обычный. |
||||||||
16 NTM_NONNEGATIVE_AC |
Ни один глиф (специальный наборный знак, хранящийся в памяти в цифровом виде) в шрифте при любом размере не имеет отрицательной шпации А или С. |
||||||||
17 NTM_PS_OPENTYPE |
Шрифт OpenType PostScript. |
||||||||
1 8 NTM_TT_OPENTYPE |
Шрифт OpenType TrueType. |
||||||||
1 9 NTM_MULTIPLEMASTER |
Шрифт с несколькими базовыми шрифтами. |
||||||||
20 NTM_TYPE1 |
Шрифт Туре 1 . |
||||||||
21 NTM_DSIG |
Шрифт с цифровой подписью. Это позволяет контролировать качество шрифта и гарантировать, что шрифт проверен и не поврежден. | |
||||||||
ntmSizeEM |
UINT. Размер круглой шпации шрифта в условных единицах измерения (в которых был разработан шрифт). |
||||||||
ntmCellHeight |
UINT. Высота шрифта в условных единицах измерения, для сравнения со значением члена ntmSizeEM. |
||||||||
ntmAvgWidth |
UINT. Средняя ширина символов шрифта в условных единицах измерения, для сравнения со значением члена ntmSizeEM. |
||||||||
Пример |
В следующем примере (рис. 12.2) функция EnumFontFamilies применя- |
||||||||
EnumFontFamiliesEx • Windows 98 • Windows 2000 |
|||||||||
Описание |
Функция EnumFontFamiliesEx перечисляет в системе все шрифты, соответствующие характеристикам шрифта, которые указаны в заданной структуре LOGFONT. Эта функция перебирает шрифты с учетом гарнитуры, набора символов или того и другого. Для приложений на основе Win32 рекомендуется эта функция, а не EnumFontFamilies. |
||||||||
Синтаксис |
int EnumFontFamiliesEx( HDC hDC, LPLOGFONT IpLogFont, FONTENUMPROC IpEnumFontFamExProc, LPARAM IParam, DWORD dwFlags ) |
||||||||
Параметры |
|||||||||
hDC |
HDC. Контекст устройства, для которого должны быть перечислены доступные шрифты. |
||||||||
IpLogFont |
LPLOGFONT. Указатель на структуру LOGFONT, содержащую информацию о шрифтах, которые должны быть перечислены. Для согласования шрифтов применяются члены, перечисленные в табл. 12.9. Определение структуры LOGFONT приведено в описании функции CreateFontlndirect ранее в этой главе. |
||||||||
Таблица 12.9. Члены структуры LOGFONT, предназначенные для использования в функции EnumFontFamiliesEx |
|||||||||
Член |
Описание |
||||||||
HCharSet |
Если этот член установлен равным DEFAULT_CHARSET, функция перечисляет все шрифты во всех наборах символов. Если этот член установлен равным допустимому значению набора символов, функция перечисляет только шрифты в указанном наборе символов. |
||||||||
HFaceName |
Если этот член установлен равным пустой строке, функция перечисляет один шрифт в каждой доступной гарнитуре. Если этот член установлен равным допустимому имени гарнитуры, функция перечисляет все шрифты с указанным именем. |
||||||||
HPitchAndFamHy |
Должен быть установлен равным 0 для всех версий языка операционной системы, кроме еврейского и арабского. Для данных языков значение этого члена должно быть установлено равным MONO_FONT, чтобы были перечислены только те шрифты, в которых представлены все символы кодовой страницы. |
||||||||
IpEnumFontFamExProc |
|||||||||
FONTENUMPROC. Указатель на функцию обратного вызова, определяемую приложением. Определение функции обратного вызова приведено ниже. |
|||||||||
IParam |
LPARAM. Указывает 32-разрядное значение, определяемое приложением, которое передается функции обратного вызова в процессе перечисления шрифтов. |
||||||||
dwFlags |
DWORD. Зарезервированное значение; должно быть равно 0. |
||||||||
Возвращаемое значение |
int. В случае успешного выполнения функции, возвращается последнее значение, возвращенное функцией обратного вызова. |
||||||||
Включаемый файл |
wingdi.h |
||||||||
См. также |
EnumFontFamilies |
||||||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.