Поделиться через


Класс 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разделе "Графические объекты".

Иерархия наследования

CObject

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