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

ства. Если параметр IpPoint равен NULL, функция не возвращает предыдущее значение начала координат области просмотра.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

GetViewportOrgEx, SetViewportOrgEx

Пример

В следующем примере создается окно с приватным контекстом устройств; (для класса окна указан стиль CS_OWNDC). При получении каждого сообщения \VM_SIZE программа переустанавливает коэффициенты масштабирования устройства, а также начало координат окна и начало координат об ласти просмотра. Применяется режим отображения MM_ISOTROPIC. Начало координат области просмотра совмещается с левым нижним углок окна. Поскольку после вызова функции SetWindowOrgEx начало координат окна всегда сдвигается на 10 единиц длины и в горизонтальном, и i вертикальном направлениях, создается впечатление, что начало координа" области просмотра находится в месте, расположенном на 10 единиц дли ны выше и правее левого нижнего угла. Когда пользователь выбирает пункт меню Test!, горизонтальное смещение окна становится равным нулю (к прежнему смещению, равному -10 добавляет 10). Начало координат области просмотра также сдвигается на 5 еди ниц длины и в горизонтальном, и в вертикальном направлениях. В резуль тате  объединения  действий  этих двух  смещений   начало  координа' сдвигается вправо на 15 пикселей и вниз на 5 пикселей (рис. 12.4).

См.    \local-sources\chapl2\12-14.txt

OffsetWindowOrgEx                     • Windows 98   • Windows 2000

Описание

Функция OffsetWindowOrgEx позволяет изменить начало координат окш для указанного контекста устройства (DC) с использованием заданны; значений горизонтального и вертикального смещений.

Синтаксис

BOOL OffsetWindowOrgEx( HDC hDC, int nXOffset, int nYOffset, LPPOINT IpPoint)

Параметры

hDC

HDC. Дескриптор контекста устройства.

nXOffset

int. Горизонтальное смещение в логических единицах длины.

nYOffset

int. Вертикальное смещение в логических единицах длины.

IpPoint

LPPOINT. Указатель на структуру POINT, которая принимает предыду щее значение начала координат окна. Если параметр IpPoint равен NULL функция не возвращает предыдущее значение начала координат.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

GetWindowOrgEx, SetWindowOrgEx, OffsetViewportOrgEx

Пример

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

RectVisible                               • Windows 98   • Windows 2000

Описание

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

Синтаксис

BOOL RectVisibIe( HDC hDC, CONST RECT* Iprc )

Параметры

hDC

HDC. Дескриптор контекста устройства.

Iprc

CONST RECT*. Указатель на структуру RECT, которая содержит логические координаты прямоугольной области, для которой должна быть выполнена проверка.

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

BOOL. TRUE, если часть прямоугольника находится внутри области отсечения; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

PtVisible, RectlnRegion, SelectCiipRgn, CreateRectRgn

Пример

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

PtVisible                                  • Windows 98   • Windows 2000

Описание          

Функция ItVisible позволяет определить, находится ли данная точка внутри области отсечения контекста устройства (DC).

Синтаксис

BOOL PtVisible( HDC hDC, int X, int Y)

Параметры

hDC

HDC. Дескриптор контекста устройства.

X

int. Логическая координата х точки.

Y

int. Логическая координата у точки.

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

BOOL. TRUE, если данная точка находится внутри области отсечения контекста устройства; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

RectVisible, PtlnRegion, PtlnRect, SelectCiipRgn

Пример

В следующем примере, когда пользователь выбирает пункт меню Test!, отображается текст, в котором указано, находится ли курсор мыши внутри области отсечения. На рис. 12.6 показан пример, когда пункт меню Test! выбран в то время, как курсор мыши находится внутри области отсечения. Обратите внимание, что показан только черный прямоугольник, если внутри области отсечения отображается часть прямоугольника.

ReleaseDC                               • Windows 98   • Windows 2000

Описание

Функция ReleaseDC освобождает контекст устройства (DC), позволяя использовать его в других приложениях. Функция ReleaseDC освобождает только общедоступные контексты устройства и контексты устройства окна; действие этой функции не распространяется на контексты устройства класса или приватные контексты устройства. Рекомендуется использовать функцию ReleaseDC непосредственно после завершения вывода. При обработке сообщения WM_PAINT для освобождения контекста устройства, полученного с применением функции  BeginPaint, предназначена функция EndPaint.

Синтаксис

int ReleaseDC( HWND hWnd, HDC hDC )

Параметры hWnd

HWND. Дескриптор окна, для которого должен быть освобожден контекст устройства.

hDC

HDC. Дескриптор контекста устройства, который должен быть освобожден.

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

int. TRUE, если контекст устройства был освобожден; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

GetDC, GetWindowDC, EndPaint, DeleteDC

Пример

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

RemoveFontMemResourceEx            • Windows 98   • Windows 2000

Описание          

Функция RemoveFontMemResourceEx удаляет шрифты, добавленные из файла отображения памяти.

Синтаксис

BOOL RemoveFontMemResourceEx( HANDLE fli )

Параметры

HANDLE. Дескриптор ресурса шрифта. Это дескриптор, который возвр щен функцией AddFontMemResourceEx.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

AddFontMemResourceEx

RemoveFontResource                   • Windows 98   • Windows 2000

Описание

Функция   RemoveFontResource удаляет из таблицы шрифтов Windows шрифты, содержащиеся в указанном файле. Приложение, которое добавляет или удаляет шрифты из общедоступной таблицы шрифтов Windows, должно известить другие приложениях об этом изменении, отправив сообщение WM_FONTCHANGE всем окнам верхнего уровня в системе. Функция RemoveFontResource обычно применяется при обработке сообщения WM_DESTROY для удаления добавленных ресурсов шрифта. Б приложении не следует удалять обычные системные шрифты Windows или любые другие шрифты, которые не были загружены этим приложением.

Синтаксис

BOOL RemoveFontResource( LPCTSTR IpFileName )

Параметры

IpfileName

LPCTSTR Указатель на строку с нулевым символом в конце, которая содержит имя файла ресурса шрифта.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

AddFontResource, FindResource

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

WM_FONTCHANGE, WM_DESTROY

Пример

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

RemoveFontResourceEx                 • Windows 98   • Windows 2000

Описание

Функция RemoveFontResourceEx удаляет из системной таблицы шрифты, находящиеся в указанном файле.

Синтаксис

BOOL RemoveFontResourceEx( LPCTSTR IpFileName, DWORD dwFl, PVOID pdv )

Параметры

IpfileName

LPCTSTR. Указатель на строку с нулевым символом в конце, которая содержит имя файла ресурса шрифта.

dwFl

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

pdv

PVOID. Зарезервированное значение; должно быть равно нулю.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

AddFontResourceEx, FindResource

RestoreDC                               • Windows 98   • Windows 2000

Описание

Функция RestoreDC восстанавливает записанное ранее состояние контекста устройства (DC). Контекст устройства DC восстанавливается в состояние, которое ранее было записано функцией SaveDC. Состояния контекста устройства хранятся в стеке. Если приложение восстанавливает состояние, не находящееся на вершине стека, функция RestoreDC удаляет всю информацию состояния, расположенную между вершиной стека и указанным экземпляром информации о состоянии.

Синтаксис

BOOL RestoreDC( HDC hDC, int nSavedDC )

Параметры

hDC

HDC. Дескриптор контекста устройства, который должен быть восстановлен.

nSavedDC

int. Экземпляр контекста устройства, который должен быть восстановлен. Если параметр nSavedDC имеет положительное значение, он представля-

ет конкретный экземпляр контекста устройства, который должен быть восстановлен. Если параметр nSavedDC имеет отрицательное значение, он представляет экземпляр, который определен относительно текущего контекста устройства. Например, при значении этого параметра -1 восстанавливается состояние, сохраненное последним.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

SaveDC, GetDC, BeginPaint

Соответствую!!]

(ие сообщения WM_PAINT

Пример

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

SaveDC                                  • Windows 98   • Windows 2000

Функция   SaveDC сохраняет текущее состояние контекста устроистьа (DC), копируя в стек контекста данные, которые описывают выбранные объекты и графические режимы (растровые изображения, кисти, палитры, шрифты, перья, области, режимы вывода и режимы отображения).

Синтаксис

intSaveDC(HDC hDC)

Параметры hDC

HDC. Дескриптор контекста устройства, который должен быть сохранен.

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

int. В случае успешного выполнения, сохраненный экземпляр контекста устройства; в ином случае возвращаемое значение — 0.

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

wingdi.h

См. также

RestoreDC, ReleaseDC, EndPaint

Соответствую]

щие сообщения WM_PAINT

Пример

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

ScaleViewportExtEx                     • Windows 98   • Windows 2000

Функция ScaleViewportExtEx меняет область просмотра для контеклла устройства (DC) с использованием коэффициентов, полученных из указанных множителей и делителей. Экстенты области просмотра изменяются следующим образом: НовыйЭкстент Области Просмотрах -(СтарыйЭкстентОбластиПросмотраХ* Xnum) / XdenomНовыйЭкстентО&яастиПросмотраУ = (СтарыйЭкстентОбластиПросмотраУ* Ynum)/ Ydenom

Синтаксис

BOOL ScaleViewportExtEx( HDC hDC, int Xnum, int Xdenom, int Ynum, in Ydenom, LPSIZE IpSize )

Параметры hDC

HDC. Дескриптор контекста устройства, для которого должно быть вы полнено масштабирование.

Xnum

int. Величина, на которую должен быть умножен текущий горизонтальный экстент.

Xdenom

int Величина, на которую должен быть разделен текущий горизонтальный экстент.

Ynum

int. Величина, на которую должен быть умножен текущий вертикальный экстент.

Ydenom

int. Величина, на которую должен быть разделен текущий вертикальный экстент.

IpSize

LPSIZE. Указатель на структуру SIZE, которая принимает предыдущие экстенты области просмотра в единицах длины устройства. Если параметр IpSize равен NULL, функция не возвращает предыдущий экстент области просмотра.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

ScaleWindowExtEx, SetViewportExtEx, GetViewportExtEx

Пример

В начале выполнения следующего примера инициализируются экстенты окна и области просмотра. Каждый раз, когда пользователь выбирает пункт меню Test!, происходит изменение коэффициентов масштабирования экстентов окна и области просмотра. В результате одна и та же линия по мере перемещения вниз по экрану становится длиннее. Класс окна имеет стиль CS_OWNDC, который указывает на приватный контекст устройства. Это значит, что стиль класса CS_OWNDC указан в функции WinMain.

См.    \local-sources\chapl2\12-16.txt

ScaleWindowExtEx                      • Windows 98   • Windows 2000

Описание

Функция ScaleWindowExtEx меняет область просмотра для контекста устройства (DC) с использованием коэффициентов, полученных из указанных множителей и делителей. Экстенты окна изменяются следующим образом: НовыйЭкстентОкнаХ = (СтарыйЭкстентОкнаХ* Xnum) / Xdenom НовыйЭкстентОкнаУ = (СтарыйЭкстентОкнаХ* Ynum) / Ydenom

Синтаксис

BOOL ScaleWindowExtEx( HDC hDC, int Xnum, int Xdenom, int Ynum, int Ydenom, LPSIZE IpSize )

Параметры

hDC

HDC. Дескриптор контекста устройства, для которого должно быть выполнено масштабирование.

Xnum

int. Величина, на которую должен быть умножен текущий горизонтальный экстент.

Xdenom

int Величина, на которую должен быть разделен текущий горизонтальный экстент.

Ynum

int. Величина, на которую должен быть умножен текущий вертикальный экстент.

Ydenom

int. Величина, на которую должен быть разделен текущий вертикальный экстент.

IpSize

LPSIZE. Указатель на структуру SIZE, которая принимает предыдущие экстенты окна в логических единицах длины. Если параметр IpSize равен NULL, функция не возвращает предыдущие экстенты окна.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

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

wingdi.h

См. также

ScaleViewportExtEx, GetWindowExtEx, SetWindowExtEx

Пример

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

SelectObject                            • Windows 98   • Windows 2000

Описание 

Функция SelectObject выбирает объект в указанный контекст устройства. Новый объект заменяет в контексте устройства предыдущий объект тоге же типа. Функция SelectObject возвращает ранее выбранный объект. Закончив работу с контекстом устройства, приложение восстанавливает первоначальный объект.

Синтаксис

HGDIOBJ SelectObject( HDC hDC, HGDIOBJ hGDIObj )

Параметры

hDC

HDC. Контекст устройства, в который выбран объект.

hGDIObj

HGDIOBJ. Объект, который должен быть выбран. Указанный объект должен быть создан с помощью одной из функций GDI, перечисленных в разделе "См. также" описания настоящей функции или должен представлять собой стандартный системный объект, полученный с помощью функции GetStockObject.

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

HGDIOBJ. Если выбранный объект не является областью и функция выполнена успешно, возвращаемое значение — дескриптор заменяемого объекта. Если выбранный объект — область и функция выполнена успешно, возвращаемым значением является SIMPLEREGION (если область состоит из одного прямоугольника), COMPLEXREGION (если область состоит из нескольких прямоугольников) или NULLREGION (если область пуста). Если возникает ошибка и выбранный объект не является областью, возвращаемое значение —  NULL; в ином случае возвращаемое значение — GDI_ERROR

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

wingdi.h

См. также

CombineRgn, CreateBitmap, CreateBitmapIndirect, CreateBrushlndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBPatternBrush, Create EllipticRgn, CreateEUipticRgnlndirect, CreateFont, CreateFontlndirect, CreateHatchBrush, CreatePatternBrush, CreatePen, CreatePenlndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnlndirect, CreateSolidBrush

Пример

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

SetGraphicsMode                         • Windows 98   • Windows 2000

Описание

Функция SetGraphicsMode устанавливает графический режим для указанного контекста устройства. В Windows 98 поддерживается только совместимый графический режим. Расширенный графический режим поддерживается только в Windows 2000. Этот графический режим обеспечивает преобразование из универсальной системы координат в систему координат устройства. Поскольку в Windows 98 этот режим не поддерживается, лучше всего добиться, чтобы расширенные метафайлы выглядели в этой системе так же, как в Windows 2000. Для этого в Windows 98 можно моделировать расширенный графический режим при отображении конкретных записей расширенных метафайлов. Ниже перечислены три области, в которых графический вывод изменяется в зависимости от графического режима. Вывод текста. В совместимом режиме вывод текста шрифтом TrueType (или векторным шрифтом) происходит во многом аналогично выводу текста растровым шрифтом в части преобразования из универсальной системы координат в систему координат устройства в контексте устройства. Вывод текста шрифтом TrueType всегда осуществляется слева направо и сверху вниз, даже если остальные графические компоненты зеркально перевернуты относительно оси х или у. При любых преобразованиях происходит только масштабирование высоты текста, выводимого шрифтом TrueType, с применением соответствующего коэффициента. Единственный способ вывода негоризонтального текста в совместимом режиме состоит в указании ненулевого значения смещения на ширину знака или применении другой ориентации для логического шрифта, выбранного в контексте устройства. В расширенном графическом режиме вывод текста шрифтом TrueType полностью соответствует преобразованию из универсальной системы координат в систему координат устройства в контексте устройства. Исключение прямоугольника. Если установлен совместимый графический режим, система исключает нижнюю и правую кромки при выводе на экран прямоугольников. В расширенном графическом режиме эти кромки включены.Вычерчивание дуг. Если установлен совместимый графический режим, интерфейс GDI вычерчивает дуги с использованием текущего направления черчения дуги в пространстве устройства. При использовании такого соглашения вычерчивание дуг не подчиняется преобразованиям из системы координат страницы в систему координат устройства, для которых требуется зеркальное отображение относительно осей х или у. В расширенном графическом режиме интерфейс GDI всегда вычерчивает дуги в направлении против часовой стрелки в логическом пространстве.

Синтаксис

int SetGraphicsMode( HDC hDC, int iMode )

Параметры

hDC

HDC. Контекст устройства, для которого должен быть установлен графический режим.