Интерфейс графических устройств, страница 4

Таблица 12.2. Значения параметра dwFlags функции ChangeDisplaySettings

Возвращаемое значение LONG. Возвращается одно из значений, перечисленных в табл. 12.3.

Включаемый файл

winuser.h

См. также

EnumDisplaySettings, CreateDC

Таблица 12.3. Значения, возвращаемые функцией ChangeDisplaySettings

Значение

Описание

DISP_CHANGE_BADFLAGS

Функции был передан недопустимый набор флажков.

DISP_CHANGE_BADMODE

Графический режим не поддерживается.

DISP_CHANGE_BADPARAM

Функции был передан недопустимый параметр. Это значение может указывать на недопустимый флажок или недопустимую комбинацию флажков.

DISP_CHANGE_FAILED

Была неудачной попытка драйвера дисплея перейти в указанный графический режим.

DISP_CHANGE_NOTUPDATED

(Только Windows 2000) В приложении не удалось записать в системный реестр новые установки параметров.

DISP_CHANGE_RESTART

Для перехода в данный графический режим работы должен быть перезапущен компьютер.

DISP_CHANGE_SUCCESSFUL

Изменение установок параметров было выполнено успешно.

Соответствующее сообщение WM_DISPLAYCHANGE

Пример

См. пример, приведенный в описании функции EnumDisplaySettings.

CreateCompatibleDC                           • Windows 98   * Windows 2000

Описание

Функция CreateCompatibleDC создает контекст устройства памяти (DC), совместимый с указанным устройством. Контекст устройства памяти можно использовать для операций вывода только после того, как в приложении будет выбрано и размещено в контексте устройства растровое изображение правильной ширины и высоты. После выбора растрового изображения в контексте устройства могут быть подготовлены изображения, которые будут скопированы на экран или напечатаны. После того как контекст устройства памяти станет ненужным, в приложении должна быть вызвана функция DeleteDC для удаления этого контекста устройства. Функция CreateCompatibleDC может использоваться только с устройствами, которые поддерживают растровые операции. В приложении можно с помощью функции GetDeviceCaps определить, поддерживает ли устройство эти операции.

Синтаксис

HDC CreateCompatibleDC( HDC hDC)

Параметры

hDC

HDC. Контекст устройства, для которого должен быть создан контекст  -устройства памяти. Если этот параметр равен NULL, функция создает контекст устройства памяти, совместимый с текущим экраном приложения.

Возвращаемое значение

HDC. В случае успешного выполнения возвращаемое значение — дескриптор контекста устройства памяти; в ином случае возвращаемое значение — NULL.

Включаемый файл

wingdi.h

См. также

DeleteDC

Пример

В следующем примере показано, как вывести растровое изображение в клиентскую область окна. С помощью функции CreateCompatibleDC создается

контекст устройства памяти. В этот контекст устройства памяти загружается растровое изображение, а затем отображается с помощью функции BitBlt.

CM.    \local-sources\chapl2\12-02.txt

CreateDC                                          + Windows 98   + Windows 2000

Описание

Функция CreateDC создает контекст для указанного устройства с использованием заданного имени. Эта функция обычно применяется при создании контекста устройства для принтера, но позволяет также получить контекст устройства для экрана (аппаратного экрана, а не клиентской области окна). Функцию CreateDC следует применять с осторожностью, поскольку она позволяет приложению выводить изображение на экран где угодно, а не только в границах окна. Для получения контекста устройства для окна на экране применяется функция GetDC или BeginPaint.

Синтаксис

HDC CreateDC( LPCTSTR IpszDriver, LPCTSTR IpszDevice, LPCTSTR IpszOutput, CONST DEVMODE* IpInitData )

Параметры

IpszDriver

LPCTSTR. Указатель на символьную строку с нулевым символом в конце, которая указывает имя файла драйвера устройства (без расширения). Например, имя файла 'DISPLAY может относиться к драйверу дисплея, а 'WIN SPOOL' — к драйверу принтера. Обратите внимание, что значение 'W1NSPOOL' допустимо только в Windows 2000.

IpszDevice

LPCTSTR. Указатель на символьную строку с нулевым символом в конце, которая содержит имя конкретного используемого устройства вывода. Это — имя (например, 'HP LaserJet'), которое указано диспетчером печати Print Manager.

IpszOutput

LPCTSTR. Значение этого параметра игнорируется; должно быть установлено равным NULL. Информация о том, как направить вывод в файл, приведена в описании функции StartDoc. PVOID. Зарезервированное значение; установлено равным нулю.

Ip J nit Data

CONST DEVMODE*. Указатель на структуру DEVMODE, содержащую данные инициализации для драйвера устройства, которые зависят от устройства. Для использования по умолчанию параметров инициализации, указанных пользователем (если они имеются), значение этого параметра должно быть установлено равным NULL Определение структуры DEVMODE приведено в описании функции DeviceCapabilities в главе 14.

Возвращаемое значение

HDC. В случае успешного выполнения — дескриптор контекста устройства для указанного устройства; в ином случае возвращаемое значение NULL.

Включаемы!!файл

wingdi.h

См. также

DeleteDC, DocumentProperties, GetDC, BeginPaint, DeviceCapabilities

Пример

В следующем примере программа выводит одну строку текста на принтер, когда пользователь выбирает пункт меню Test!. Функция CreateDC создает контекст устройства для принтера. Принтер имеет имя "HP DeskJet 550C".

CreateFont                             Windows 98   • Windows 2000

Описание

Функция CreateFont создает логический шрифт с конкретными характеристиками. В приложении можно использовать этот шрифт, выбирая его в качестве шрифта для любого устройства. Обычно функция CreateFont применяется, когда в приложении нужно создать только один шрифт. Во многих случаях проще использовать функцию CreateFontlndirect, поскольку данные шрифта содержатся в структуре LOGFONT.

Синтаксис

HFONT CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, DWORD dwltalic, DWORD dwUnderline, DWORD dwStrikeOut, DWORD dwCharSet, DWORD dwOutputPrecision, DWORD dwClipPrecision, DWORD dwQuality, DWORD dwPitchAndFamily, LPCTSTR IpszFace )

, Параметры

nHeight

int. Желаемая высота ячейки символа или самого символа затребованного шрифта в логических единицах длины. Если параметр nHeight больше нуля, он указывает высоту ячейки символа. Если параметр nHeight — меньше нуля, его абсолютное значение указывает высоту символа. Если значение этого параметра установлено равным 0, применяется высота, заданная по умолчанию. Для указания высоты в пунктах может использоваться следующая формула:nHeight   =   -MulDiv( PointSize,   GetDeviceCaps ( hDC,   LOGPIXELSY ) ,   72  )

nWldth

int. Средняя ширина символов затребованного шрифта в логических единицах длины. Если значение этого параметра установлено равным 0, средством отображения шрифтов выбирается ближайшее подходящее значение. Ближайшее подходящее значение определяется путем сравнения абсолютных значений разницы между коэффициентом сжатия используемого устройства и цифровым коэффициентом сжатия доступных шрифтов.

nEscapement

int. Угол в десятках градусов между вектором смещения на ширину знака и осью х устройства. Вектор смещения на ширину знака расположен параллельно опорной линии строки текста.

nOrientation

int. Угол в десятках градусов между опорной линией каждого символа и осью х устройства. Значения параметров nEscapement и nOrientation в Windows 98 должны быть одинаковыми; они могут быть разными в Windows 2000, если установлен графический режим GM_ADVANCED.

nWeight

int. Желаемый вес шрифта. Если значение этого параметра установлено равным 0, применяется вес, заданный по умолчанию. Этот параметр может иметь одно из значений, приведенных в табл. 12.4.

Таблица 12.4. Значения параметра nWeight функции CreateFont

Значение

Вес

Значение

Bee

FW_DONTCARE

0

FW_MEDIUM

500

FW_THN

100

FW_SEMIBOLD

600

FW_EXTRALIGHT

200

FW_BOLD

700

FW_LIGHT

300

FW_EXTRABOtD

800

FW_NORMAL

400

FW_HEAVY

900

dwJtalic

DWORD. Устанавливается в TRUE для обозначения курсива.

dw Underline

DWORD. Устанавливается в TRUE для обозначения подчеркивания.

dwStrikeOut

DWORD. Устанавливается в TRUE для обозначения перечеркивания.

dwCharSet

DWORD. Желаемый набор символов. Набор символов OEM зависит от операционной системы. Этот параметр важен в процессе подстановки шрифтов. Для обеспечения единообразных результатов должен быть указан конкретный набор символов. Если в параметре IpszFace указано имя гарнитуры, значение dwCharSet должно обязательно соответствовать набору символов указанной гарнитуры. Следующие значения являются стандартными:

ANSI_CHARSET

TURKISH  CHARSET

DEFAOLT_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

dwOutputPrecision

DWORD. Желаемая точность вывода. Точность вывода определяет, насколько точно вывод соответствует таким затребованным napaMeTpav шрифта, как высота, ширина, ориентация символов, смещение на ширину знака и шаг. В приложении можно с помощью значений OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS и OUT_TT_PRECIS управлять тем, какой шрифт должен использоваться, если в системе имеется несколько шрифтов с указанным именем. Параметр dwOutputPrecisioa может иметь одно из следующих значений:

OUT  DEFAULT  PRECIS

OUT DEVICE  PRECIS

OUT  STRING  PRECIS

OUT_RASTER_PRECIS

OUT_CHARACTER_PRECIS

OUT_TT_ONLY_PRECIS

OUT_STROKE_PRECIS

OUT  OUTLINE  PRECIS

OUT  TT  PRECIS

dwClipPrecision

DWORD. Желаемая точность отсечения. Точность отсечения определяв! способ отсечения символов, которые частично выходят за пределы об ласти отсечения. Для использования в приложении встроенного шриф та, предназначенного только для чтения, должно быть указано значени CLIP_EMBEDDED. Параметр dwClipPrecision может иметь одно или не сколько из следующих значений:

CLIP DEFAULT  PRECIS

CLIP  LH ANGLES

CLIP CHARACTER PRECIS

CLIPJTT ALWAYS

CLIP_STROKE_PRECIS

CLIP~EMBEDDED

CLIP_MASK

dwQuality

DWORD. Желаемое качество вывода. Качество вывода определяет, с ка кой точностью функции GDI согласовывают атрибуты логического шриф та. Параметр dwQuality может иметь одно из значений, приведенных табл. 12.5.

Таблица 12.5. Значения параметра dwQuality функции CreateFont

Значение

Описание

ANTIALIASED_QUALITY

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

DEFAULT_QUALITY

Внешний вид шрифта не имеет значения.

DRAFT_QUALITY

Внешний вид шрифта менее важен, чем при использовании значения PROOF  QUALITY. Для растровых шрифтов GDI разрешено масштабирование.

NONANTIALIASED_QUALITY

Устранение контурных неровностей шрифта не применяется.

PROOF_QUALITY

Качество символов шрифта важнее, чем точное соответствие атрибутам логического шрифта. Запрещено масштабирование растровых шрифтов GDI и выбирается шрифт, самый близкий по размерам.

dwPitchAndFamily

DWORD. Шаг и семейство шрифта. Для указания шага шрифта применяется одно из следующих значений:DEFAULT  PITCH FIXED_PITCH VARIABLE_PITCHДля указания семейства шрифта это значение должно быть объединено с одним из значений, приведенных в табл. 12.6, с использованием двоичного оператора OR (|).

Таблица 12.6. Значения параметра dwPitchAndFamily функции CreateFont

Значение

Описание

FF_DECORATIVE

Декоративные шрифты, например, Old English.

FF_DONTCARE

Выбор шрифта не имеет значения или шрифт неизвестен.

FF_MODERN

Шрифты с постоянной шириной штриха, с засечками или без засечек, например Pica, Elite и Courier New.

FF_ROMAN

Шрифты с переменной шириной штриха и с засечками, например MS Serif.

FF_SCRIPT

Шрифты, имитирующие рукописный текст, например Script и Cursive.

FF_SWISS

Шрифты с переменной шириной штриха и без засечек, например, MS Sans Serif.

IpszFace

LPCTSTR. Указатель на строку с нулевым символом в конце, длиной до 32 символов, в которой указано имя гарнитуры шрифта. Если параметр IpszFace равен NULL, функции GDI используют гарнитуру, заданную по умолчанию.

Возвращаемое значение

HFONT. В случае успешного выполнения дескриптор логического шрифта; в ином случае возвращаемое значение — NULL.

Включаемый файл

wingdi.h

См. также

CreateFontlndirect, SelectObject, TextOut, AddFontResource, EnumFontFamilies

IfWeight

LONG. To же, что и п Weight.

I/Italic

BYTE. To же, что и dwltalic.

IfUnderline

BYTE. To же, что и dwUnderline.

IfStrikeOut

BYTE. To же, что и dwStrikeOut.

IfCharSet

BYTE. To же, что и dwCharSet.

IfOutPrecision

BYTE. To же, что и dwOutputPrecision.

If Clip Precision

BYTE. To же, что и dw ClipPrecision.

IfQuality

BYTE. To же, что и dwQuality.

IfPitchAndFamily

BYTE. То же, что и dwPitchAndFamily.

IfFaceName

TCHAR[LF_FACESIZE]. To же, что и IpszFace.

Пример

См. пример для функции EnumFontFamilies.

CreateIC                                           • Windows 98   • Windows 2000

Описание

Функция CreateIC создает информационный контекст для устройства, позволяя быстро получить информацию об устройстве без создания контекста устройства. Эта функция обычно применяется с функцией GetDeviceCaps для выборки информации о принтере или мониторе.

Синтаксис

HDC CreateIC (LPCTSTR IpszDriver, LPCTSTR IpszDevice, LPCTSTR IpszOutput, CONST DEVMODE * Ipdvmlnit)

Параметры

IpszDriver

LPCTSTR. Указатель на символьную строку с нулевым символом в конце, содержащую имя драйвера устройства (например, "Epson" для принтера или "DISPLAY" для экрана).

IpszDevice

LPCTSTR. Указатель на символьную строку с нулевым символом в конце, содержащую имя устройства вывода, которое указано диспетчером печати Print Manager (например, "Epson FX-80"). Это — не модель принтера. Этот параметр должен применяться для принтеров, а для монитора устанавливается равным NULL.

IpszOutput

LPCTSTR Этот параметр игнорируется; он присутствует для того, чтобы прототип функции остался таким же, как в Windows 3.x.

Ipdvmlnit .

CONST DEVMODE*. Указатель на структуру DEVMODE, которая содержит данные инициализации для драйвера устройства, зависящие от используемого устройства. Для выборки этой структуры, заполненной для конкретного устройства, может применяться функция DocumentProperties. Для использования по умолчанию параметров инициализации, указанных пользователем (если они имеются), значение этого параметра должно быть установлено равным NULL. Определение структуры DEVMODE приведено в описании функции CreateDC.

Возвращаемое значение

HDC. В случае успешного выполнения — дескриптор информационного контекста; в ином случае возвращаемое значение — NULL.

Включаемый файл

wingdi.h

См. также

DeleteDC, CreateDC, GetDeviceCaps, CreateCompatibleDC

Пример

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

CreateFontlndirect                             * Windows 98   * Windows 2000

Описание

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

Синтаксис

HFONT CreateFontIndirect( CONST LOGFONT* Iplf)

Параметры

Iplf

CONST LOGFONT*. Указатель на структуру LOGFONT, которая определяет характеристики логического шрифта. Определение структуры LOGFONT приведено ниже.

Возвращаемое значение

HFONT. В случае успешного выполнения — дескриптор логического шрифта; в ином случае возвращаемое значение — NULL.

Включаемый файл

wingdi.h

См. также

CreateFont, SelectObject, TextOut, AddFontResource, EnumFontFamilies

Определение LOGFONT

Члены этой структуры непосредственно соответствуют параметрам фу! кции CreateFont.

typedef   struct   tagLOGFONTLONG   If Height;

LONG   IfWidth;

LONG   IfEscapement;

LONG   IfOrientation;

LONG   IfWeight;

BYTE   If Italic;

BYTE  If Underline;

BYTE   If Strikeout;

BYTE   IfCharSet;

BYTE   IfOutPrecision;

BYTE   If ClipPrecision ;

BYTE   If Quality;

BYTE   IfPitchAndFamily;

TCHAR   If FaceName [LF FACESIZE] ;

LOGFONT;

Члены

I/Height

LONG. To же, что и nHeight.

I/Width

LONG. To же, что и nWidth.

IfEscapement

LONG. To же, что и nEscapement.

IfOrientation

LONG. To же, что и nOrientation.

Пример

В примере, показанном на рис. 12.1, создается шрифт Times New >Roman размером 24x16 единиц длины, а затем используется для вывода текста в клиентскую область окна, когда пользователь выбирает пункт меню Test!.