CGdiObject Class
The latest version of this topic can be found at CGdiObject Class.
Provides a base class for various kinds of Windows graphics device interface (GDI) objects such as bitmaps, regions, brushes, pens, palettes, and fonts.
Syntax
class CGdiObject : public CObject
Members
Public Constructors
Name | Description |
---|---|
CGdiObject::CGdiObject | Constructs a CGdiObject object. |
Public Methods
Name | Description |
---|---|
CGdiObject::Attach | Attaches a Windows GDI object to a CGdiObject object. |
CGdiObject::CreateStockObject | Retrieves a handle to one of the Windows predefined stock pens, brushes, or fonts. |
CGdiObject::DeleteObject | Deletes the Windows GDI object attached to the CGdiObject object from memory by freeing all system storage associated with the object. |
CGdiObject::DeleteTempMap | Deletes any temporary CGdiObject objects created by FromHandle . |
CGdiObject::Detach | Detaches a Windows GDI object from a CGdiObject object and returns a handle to the Windows GDI object. |
CGdiObject::FromHandle | Returns a pointer to a CGdiObject object given a handle to a Windows GDI object. |
CGdiObject::GetObject | Fills a buffer with data that describes the Windows GDI object attached to the CGdiObject object. |
CGdiObject::GetObjectType | Retrieves the type of the GDI object. |
CGdiObject::GetSafeHandle | Returns m_hObject unless this is NULL , in which case NULL is returned. |
CGdiObject::UnrealizeObject | Resets the origin of a brush or resets a logical palette. |
Public Operators
Name | Description |
---|---|
CGdiObject::operator != | Determines if two GDI objects are logically not equal. |
CGdiObject::operator == | Determines if two GDI objects are logically equal. |
CGdiObject::operator HGDIOBJ | Retrieves a HANDLE to the attached Windows GDI object. |
Public Data Members
Name | Description |
---|---|
CGdiObject::m_hObject | A HANDLE containing the HBITMAP , HPALETTE , HRGN , HBRUSH , HPEN , or HFONT attached to this object. |
Remarks
You never create a CGdiObject
directly. Rather, you create an object from one of its derived classes, such as CPen
or CBrush
.
For more information on CGdiObject
, see Graphic Objects.
Inheritance Hierarchy
CGdiObject
Requirements
Header: afxwin.h
CGdiObject::Attach
Attaches a Windows GDI object to a CGdiObject
object.
BOOL Attach(HGDIOBJ hObject);
Parameters
hObject
A HANDLE
to a Windows GDI object (for example, HPEN
or HBRUSH
).
Return Value
Nonzero if attachment is successful; otherwise 0.
CGdiObject::CGdiObject
Constructs a CGdiObject
object.
CGdiObject();
Remarks
You never create a CGdiObject
directly. Rather, you create an object from one of its derived classes, such as CPen
or Cbrush.
CGdiObject::CreateStockObject
Retrieves a handle to one of the predefined stock Windows GDI pens, brushes, or fonts, and attaches the GDI object to the CGdiObject
object.
BOOL CreateStockObject(int nIndex);
Parameters
nIndex
A constant specifying the type of stock object desired. See the parameter fnObject for GetStockObject in the Windows SDK for a description of appropriate values.
Return Value
Nonzero if the function is successful; otherwise 0.
Remarks
Call this function with one of the derived classes that corresponds to the Windows GDI object type, such as CPen
for a stock pen.
CGdiObject::DeleteObject
Deletes the attached Windows GDI object from memory by freeing all system storage associated with the Windows GDI object.
BOOL DeleteObject();
Return Value
Nonzero if the GDI object was successfully deleted; otherwise 0.
Remarks
The storage associated with the CGdiObject
object is not affected by this call. An application should not call DeleteObject
on a CGdiObject
object that is currently selected into a device context.
When a pattern brush is deleted, the bitmap associated with the brush is not deleted. The bitmap must be deleted independently.
CGdiObject::DeleteTempMap
Called automatically by the CWinApp
idle-time handler, DeleteTempMap
deletes any temporary CGdiObject
objects created by FromHandle
.
static void PASCAL DeleteTempMap();
Remarks
DeleteTempMap
detaches the Windows GDI object attached to a temporary CGdiObject
object before deleting the CGdiObject
object.
Example
// DeleteTempMap() is a static member and so does not need to
// be called within the scope of an instantiated CGdiObject object.
CGdiObject::DeleteTempMap();
CGdiObject::Detach
Detaches a Windows GDI object from a CGdiObject
object and returns a handle to the Windows GDI object.
HGDIOBJ Detach();
Return Value
A HANDLE
to the Windows GDI object detached; otherwise NULL if no GDI object is attached.
CGdiObject::FromHandle
Returns a pointer to a CGdiObject
object given a handle to a Windows GDI object.
static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);
Parameters
hObject
A HANDLE
to a Windows GDI object.
Return Value
A pointer to a CGdiObject
that may be temporary or permanent.
Remarks
If a CGdiObject
object is not already attached to the Windows GDI object, a temporary CGdiObject
object is created and attached.
This temporary CGdiObject
object is only valid until the next time the application has idle time in its event loop, at which time all temporary graphic objects are deleted. Another way of saying this is that the temporary object is only valid during the processing of one window message.
CGdiObject::GetObject
Fills a buffer with data that defines a specified object.
int GetObject(
int nCount,
LPVOID lpObject) const;
Parameters
nCount
Specifies the number of bytes to copy into the lpObject
buffer.
lpObject
Points to a user-supplied buffer that is to receive the information.
Return Value
The number of bytes retrieved; otherwise 0 if an error occurs.
Remarks
The function retrieves a data structure whose type depends on the type of graphic object, as shown by the following list:
Object | Buffer type |
---|---|
CPen |
LOGPEN |
CBrush |
LOGBRUSH |
CFont |
LOGFONT |
CBitmap |
BITMAP |
CPalette |
WORD |
CRgn |
Not supported |
If the object is a CBitmap
object, GetObject
returns only the width, height, and color format information of the bitmap. The actual bits can be retrieved by using CBitmap::GetBitmapBits.
If the object is a CPalette
object, GetObject
retrieves a WORD that specifies the number of entries in the palette. The function does not retrieve the LOGPALETTE structure that defines the palette. An application can get information on palette entries by calling CPalette::GetPaletteEntries.
CGdiObject::GetObjectType
Retrieves the type of the GDI object.
UINT GetObjectType() const;
Return Value
The type of the object, if successful; otherwise 0. The value can be one of the following:
OBJ_BITMAP Bitmap
OBJ_BRUSH Brush
OBJ_FONT Font
OBJ_PAL Palette
OBJ_PEN Pen
OBJ_EXTPEN Extended pen
OBJ_REGION Region
OBJ_DC Device context
OBJ_MEMDC Memory device context
OBJ_METAFILE Metafile
OBJ_METADC Metafile device context
OBJ_ENHMETAFILE Enhanced metafile
OBJ_ENHMETADC Enhanced-metafile device context
CGdiObject::GetSafeHandle
Returns m_hObject
unless this is NULL, in which case NULL is returned.
HGDIOBJ GetSafeHandle() const;
Return Value
A HANDLE
to the attached Windows GDI object; otherwise NULL if no object is attached.
Remarks
This is part of the general handle interface paradigm and is useful when NULL is a valid or special value for a handle.
Example
See the example for CWnd::IsWindowEnabled.
CGdiObject::m_hObject
A HANDLE
containing the HBITMAP
, HRGN, HBRUSH
, HPEN
, HPALETTE
, or HFONT attached to this object.
HGDIOBJ m_hObject;
CGdiObject::operator !=
Determines if two GDI objects are logically not equal.
BOOL operator!=(const CGdiObject& obj) const;
Parameters
obj
A pointer to an existing CGdiObject
.
Remarks
Determines if a GDI object on the left side is not equal to a GDI object on the right side.
CGdiObject::operator ==
Determines if two GDI objects are logically equal.
BOOL operator==(const CGdiObject& obj) const;
Parameters
obj
A reference to an existing CGdiObject
.
Remarks
Determines if a GDI object on the left side is equal to a GDI object on the right side.
CGdiObject::operator HGDIOBJ
Retrieves a HANDLE
to the attached Windows GDI object; otherwise NULL if no object is attached.
operator HGDIOBJ() const;
CGdiObject::UnrealizeObject
Resets the origin of a brush or resets a logical palette.
BOOL UnrealizeObject();
Return Value
Nonzero if successful; otherwise 0.
Remarks
While UnrealizeObject
is a member function of the CGdiObject
class, it should be invoked only on CBrush
or CPalette
objects.
For CBrush
objects, UnrealizeObject
directs the system to reset the origin of the given brush the next time it is selected into a device context. If the object is a CPalette
object, UnrealizeObject
directs the system to realize the palette as though it had not previously been realized. The next time the application calls the CDC::RealizePalette function for the specified palette, the system completely remaps the logical palette to the system palette.
The UnrealizeObject
function should not be used with stock objects. The UnrealizeObject
function must be called whenever a new brush origin is set (by means of the CDC::SetBrushOrg function). The UnrealizeObject
function must not be called for the currently selected brush or currently selected palette of any display context.
See Also
Hierarchy Chart
CBitmap Class
CBrush Class
CFont Class
CPalette Class
CPen Class
CRgn Class