Класс CGdiObject
Предоставляет базовый класс для различных типов объектов интерфейса графических устройств Windows (GDI), таких как растровые изображения, области, кисти, перья, палитры и шрифты.
Синтаксис
class CGdiObject : public CObject
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CGdiObject::CGdiObject | Формирует объект CGdiObject . |
Открытые методы
Имя | Описание |
---|---|
CGdiObject::Attach | Присоединяет объект GDI Windows к объекту CGdiObject . |
CGdiObject::CreateStockObject | Извлекает дескриптор к одному из предопределенных стандартных перьев, кистей или шрифтов Windows. |
CGdiObject::D eleteObject | Удаляет объект Windows GDI, подключенный CGdiObject к объекту из памяти, освобождая все системное хранилище, связанное с объектом. |
CGdiObject::D eleteTempMap | Удаляет все временные CGdiObject объекты, созданные с помощью FromHandle . |
CGdiObject::D etach | Отсоединяет объект GDI Windows от CGdiObject объекта и возвращает дескриптор объекту GDI Windows. |
CGdiObject::FromHandle | Возвращает указатель на CGdiObject объект, заданный дескриптором объекта GDI Windows. |
CGdiObject::GetObject | Заполняет буфер данными, описывающими объект GDI Windows, подключенный к объекту CGdiObject . |
CGdiObject::GetObjectType | Извлекает тип объекта GDI. |
CGdiObject::GetSafeHandle | Возвращается, если this значение NULL не равно NULL, в этом случае возвращается m_hObject значение NULL. |
CGdiObject::UnrealizeObject | Сбрасывает источник кисти или сбрасывает логическую палитру. |
Открытые операторы
Имя | Описание |
---|---|
CGdiObject::operator != | Определяет, являются ли два объекта GDI логически не равными. |
CGdiObject::operator == | Определяет, равны ли два объекта GDI логически. |
CGdiObject::operator HGDIOBJ | Извлекает ДЕСКРиптор для присоединенного объекта GDI Windows. |
Открытые члены данных
Имя | Описание |
---|---|
CGdiObject::m_hObject | ДЕСКРИПТОР, содержащий HBITMAP, HPALETTE, HRGN, HBRUSH, HPEN или HFONT, подключенный к этому объекту. |
Замечания
Вы никогда не создаете напрямую CGdiObject
. Скорее, вы создаете объект из одного из производных классов, таких как CPen
или CBrush
.
Дополнительные сведения см. в CGdiObject
разделе "Графические объекты".
Иерархия наследования
CGdiObject
Требования
Заголовок: afxwin.h
CGdiObject::Attach
Присоединяет объект GDI Windows к объекту CGdiObject
.
BOOL Attach(HGDIOBJ hObject);
Параметры
hObject
ДЕСКРИПтор объекта GDI Windows (например, HPEN или HBRUSH).
Возвращаемое значение
Ненулевое значение, если вложение выполнено успешно; в противном случае — 0.
CGdiObject::CGdiObject
Формирует объект CGdiObject
.
CGdiObject();
Замечания
Вы никогда не создаете напрямую CGdiObject
. Скорее, вы создаете объект из одного из производных классов, таких как CPen
или Cbrush
.
CGdiObject::CreateStockObject
Извлекает дескриптор к одному из предопределенных стандартных перьев Windows GDI, кистей или шрифтов и присоединяет объект GDI к объекту CGdiObject
.
BOOL CreateStockObject(int nIndex);
Параметры
nIndex
Константа, указывающая тип требуемого объекта акций. Описание соответствующих значений см. в параметре fnObject для GetStockObject в пакете SDK для Windows.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Вызовите эту функцию с одним из производных классов, которые соответствуют типу объекта Windows GDI, например CPen
для пера акций.
CGdiObject::D eleteObject
Удаляет подключенный объект GDI Windows из памяти, освобождая все системное хранилище, связанное с объектом GDI Windows.
BOOL DeleteObject();
Возвращаемое значение
Ненулевое значение, если объект GDI успешно удален; в противном случае — 0.
Замечания
Хранилище, связанное с объектом, CGdiObject
не влияет на этот вызов. Приложение не должно вызывать DeleteObject
объект, выбранный CGdiObject
в данный момент в контексте устройства.
При удалении кисти шаблона растровое изображение, связанное с кистью, не удаляется. Растровое изображение должно быть удалено независимо.
CGdiObject::D eleteTempMap
Вызывается автоматически обработчиком CWinApp
времени простоя, удаляет все временные CGdiObject
объекты, DeleteTempMap
созданные с помощьюFromHandle
.
static void PASCAL DeleteTempMap();
Замечания
DeleteTempMap
отсоединяет объект Windows GDI, подключенный к временному CGdiObject
объекту перед удалением CGdiObject
объекта.
Пример
// DeleteTempMap() is a static member and so does not need to
// be called within the scope of an instantiated CGdiObject object.
CGdiObject::DeleteTempMap();
CGdiObject::D etach
Отсоединяет объект GDI Windows от CGdiObject
объекта и возвращает дескриптор объекту GDI Windows.
HGDIOBJ Detach();
Возвращаемое значение
Отсоединяемый HANDLE
объект Windows GDI; в противном случае значение NULL, если объект GDI не подключен.
CGdiObject::FromHandle
Возвращает указатель на CGdiObject
объект, заданный дескриптором объекта GDI Windows.
static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);
Параметры
hObject
ДЕСКРИПтор объекта GDI Для Windows.
Возвращаемое значение
Указатель на объект, CGdiObject
который может быть временным или постоянным.
Замечания
CGdiObject
Если объект еще не подключен к объекту GDI Windows, создается временный и присоединенный CGdiObject
объект.
Этот временный объект действителен только до следующего момента, когда приложение имеет время простоя CGdiObject
в цикле событий, в то время как все временные графические объекты удаляются. Другой способ сказать, что временный объект действителен только во время обработки одного сообщения окна.
CGdiObject::GetObject
Заполняет буфер данными, определяющими указанный объект.
int GetObject(
int nCount,
LPVOID lpObject) const;
Параметры
nCount
Указывает количество байтов для копирования в буфер lpObject .
lpObject
Указывает на предоставленный пользователем буфер, который требуется получить сведения.
Возвращаемое значение
Количество полученных байтов; в противном случае значение 0, если возникает ошибка.
Замечания
Функция извлекает структуру данных, тип которой зависит от типа графического объекта, как показано в следующем списке:
Object | Тип буфера |
---|---|
CPen |
LOGPEN |
CBrush |
LOGBRUSH |
CFont |
LOGFONT |
CBitmap |
ТОЧЕЧНЫЙ РИСУНОК |
CPalette |
WORD |
CRgn |
Не поддерживается |
Если объект является CBitmap
объектом, GetObject
возвращает только сведения о ширине, высоте и цветном формате растрового изображения. Фактические биты можно извлечь с помощью CBitmap::GetBitmapBits.
Если объект является CPalette
объектом, извлекает слово WORD, GetObject
указывающее количество записей в палитре. Функция не извлекает структуру LOGPALETTE , которая определяет палитру. Приложение может получить сведения о записях палитры, вызвав CPalette::GetPaletteEntries.
CGdiObject::GetObjectType
Извлекает тип объекта GDI.
UINT GetObjectType() const;
Возвращаемое значение
Тип объекта, если он выполнен успешно; в противном случае — 0. Может иметь следующие значения:
Растровое изображение OBJ_BITMAP
Кисть OBJ_BRUSH
Шрифт OBJ_FONT
палитра OBJ_PAL
перо OBJ_PEN
OBJ_EXTPEN расширенное перо
регион OBJ_REGION
контекст устройства OBJ_DC
контекст устройства OBJ_MEMDC памяти
метафайл OBJ_METAFILE
контекст устройства метафайла OBJ_METADC
расширенный метафайл OBJ_ENHMETAFILE
OBJ_ENHMETADC контекст устройства с расширенным метафайловом
CGdiObject::GetSafeHandle
Возвращается, если this
значение NULL не равно NULL, в этом случае возвращается m_hObject
значение NULL.
HGDIOBJ GetSafeHandle() const;
Возвращаемое значение
ДЕСКРИПтор присоединенного объекта GDI Для Windows; В противном случае значение NULL, если объект не присоединен.
Замечания
Это является частью парадигмы интерфейса общего дескриптора и полезно, если значение NULL является допустимым или специальным значением для дескриптора.
Пример
См. пример CWnd ::IsWindowEnabled.
CGdiObject::m_hObject
ДЕСКРИПтор, содержащий HBITMAP, HRGN, HBRUSH, HPEN, HPALETTE или HFONT, подключенный к этому объекту.
HGDIOBJ m_hObject;
CGdiObject::operator !=
Определяет, являются ли два объекта GDI логически не равными.
BOOL operator!=(const CGdiObject& obj) const;
Параметры
obj
Указатель на существующий CGdiObject
.
Замечания
Определяет, не равен ли объект GDI на левой стороне объекту GDI справа.
CGdiObject::operator ==
Определяет, равны ли два объекта GDI логически.
BOOL operator==(const CGdiObject& obj) const;
Параметры
obj
Ссылка на существующую CGdiObject
.
Замечания
Определяет, равен ли объект GDI на левой стороне объекту GDI справа.
CGdiObject::operator HGDIOBJ
Извлекает ДЕСКРиптор в присоединенный объект GDI Windows; В противном случае значение NULL, если объект не присоединен.
operator HGDIOBJ() const;
CGdiObject::UnrealizeObject
Сбрасывает источник кисти или сбрасывает логическую палитру.
BOOL UnrealizeObject();
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Хотя UnrealizeObject
это функция-член CGdiObject
класса, она должна вызываться только в CBrush
объекте или CPalette
объектах.
Для CBrush
объектов UnrealizeObject
система направляет систему для сброса источника заданной кисти при следующем выборе в контекст устройства. Если объект является CPalette
объектом, UnrealizeObject
система направляет систему на реализацию палитры, как будто она ранее не была реализована. При следующем вызове функции CDC::RealizePalette для указанной палитры система полностью перенаправит логическую палитру на системную палитру.
Функция UnrealizeObject
не должна использоваться с объектами акций. Функция UnrealizeObject
должна вызываться всякий раз, когда задан новый источник кисти (с помощью функции CDC::SetBrushOrg ). Функция UnrealizeObject
не должна вызываться для выбранной кисти или выбранной палитры любого контекста отображения.
См. также
Диаграмма иерархии
Класс CBitmap
Класс CBrush
Класс CFont
Класс CPalette
Класс CPen
Класс CRgn