CGdiObject クラス

ビットマップ、領域、ブラシ、ペン、パレット、フォントなどの Windows のさまざまな種類のグラフィックス デバイス インターフェイス (GDI) の基底クラスを提供します。

構文

class CGdiObject : public CObject

メンバー

パブリック コンストラクター

名前 説明
CGdiObject::CGdiObject CGdiObject オブジェクトを構築します。

パブリック メソッド

名前 説明
CGdiObject::Attach Windows GDI オブジェクトを CGdiObject オブジェクトにアタッチします。
CGdiObject::CreateStockObject Windows の定義済みのストック ペン、ブラシ、またはフォントのいずれかに対するハンドルを取得します。
CGdiObject::D eleteObject オブジェクトに関連付けられているすべてのシステム ストレージを解放することによって、 CGdiObject オブジェクトにアタッチされている Windows GDI オブジェクトをメモリから削除します。
CGdiObject::D eleteTempMap FromHandleによって作成された一時的なCGdiObject オブジェクトを削除します。
CGdiObject::D etach CGdiObject オブジェクトから Windows GDI オブジェクトをデタッチし、Windows GDI オブジェクトへのハンドルを返します。
CGdiObject::FromHandle Windows GDI オブジェクトへのハンドルを指定した CGdiObject オブジェクトへのポインターを返します。
CGdiObject::GetObject バッファーに、 CGdiObject オブジェクトにアタッチされている Windows GDI オブジェクトを記述するデータを格納します。
CGdiObject::GetObjectType GDI オブジェクトの型を取得します。
CGdiObject::GetSafeHandle thisが NULL でない限り、m_hObjectを返します。その場合は NULL が返されます。
CGdiObject::UnrealizeObject ブラシの原点をリセットするか、論理パレットをリセットします。

パブリック演算子

名前 説明
CGdiObject::operator != 2 つの GDI オブジェクトが論理的に等しくないかどうかを判断します。
CGdiObject::operator == 2 つの GDI オブジェクトが論理的に等しいかどうかを判断します。
CGdiObject::operator HGDIOBJ アタッチされた Windows GDI オブジェクトへの HANDLE を取得します。

パブリック データ メンバー

名前 説明
CGdiObject::m_hObject このオブジェクトにアタッチされている HBITMAP、HPALETTE、HRGN、HBRUSH、HPEN、または HFONT を含むハンドル。

解説

CGdiObjectを直接作成することはありません。 代わりに、 CPenCBrushなど、派生クラスの 1 つからオブジェクトを作成します。

CGdiObjectの詳細については、「Graphic オブジェクト」を参照してください。

継承階層

CObject

CGdiObject

要件

ヘッダー: afxwin.h

CGdiObject::Attach

Windows GDI オブジェクトを CGdiObject オブジェクトにアタッチします。

BOOL Attach(HGDIOBJ hObject);

パラメーター

hObject
Windows GDI オブジェクトへのハンドル (HPEN や HBRUSH など)。

戻り値

添付ファイルが成功した場合は 0 以外。それ以外の場合は 0。

CGdiObject::CGdiObject

CGdiObject オブジェクトを構築します。

CGdiObject();

解説

CGdiObjectを直接作成することはありません。 代わりに、 CPenCbrushなど、派生クラスの 1 つからオブジェクトを作成します。

CGdiObject::CreateStockObject

定義済みのストック Windows GDI ペン、ブラシ、またはフォントのいずれかにハンドルを取得し、GDI オブジェクトを CGdiObject オブジェクトにアタッチします。

BOOL CreateStockObject(int nIndex);

パラメーター

nIndex
必要なストック オブジェクトの種類を指定する定数。 適切な値の説明については、Windows SDK の GetStockObject のパラメーター fnObject を参照してください。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

ストック ペンの CPen など、Windows GDI オブジェクト型に対応する派生クラスのいずれかを使用して、この関数を呼び出します。

CGdiObject::D eleteObject

Windows GDI オブジェクトに関連付けられているすべてのシステム 記憶域を解放することによって、添付の Windows GDI オブジェクトをメモリから削除します。

BOOL DeleteObject();

戻り値

GDI オブジェクトが正常に削除された場合は 0 以外。それ以外の場合は 0。

解説

CGdiObject オブジェクトに関連付けられているストレージは、この呼び出しの影響を受けません。 アプリケーションは、デバイス コンテキストで現在選択されているCGdiObject オブジェクトに対してDeleteObjectを呼び出さないでください。

パターン ブラシを削除しても、ブラシに関連付けられているビットマップは削除されません。 ビットマップは個別に削除する必要があります。

CGdiObject::D eleteTempMap

CWinAppアイドル時間ハンドラーによって自動的に呼び出DeleteTempMapFromHandleによって作成された一時的なCGdiObject オブジェクトが削除されます。

static void PASCAL DeleteTempMap();

解説

DeleteTempMapCGdiObject オブジェクトを削除する前に、一時的なCGdiObject オブジェクトにアタッチされている Windows GDI オブジェクトをデタッチします。

// 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

CGdiObject オブジェクトから Windows GDI オブジェクトをデタッチし、Windows GDI オブジェクトへのハンドルを返します。

HGDIOBJ Detach();

戻り値

デタッチされた Windows GDI オブジェクトへの HANDLE 。GDI オブジェクトがアタッチされていない場合は NULL。

CGdiObject::FromHandle

Windows GDI オブジェクトへのハンドルを指定した CGdiObject オブジェクトへのポインターを返します。

static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);

パラメーター

hObject
Windows GDI オブジェクトへのハンドル。

戻り値

一時的または永続的な CGdiObject へのポインター。

解説

CGdiObject オブジェクトがまだ Windows GDI オブジェクトにアタッチされていない場合は、一時的なCGdiObject オブジェクトが作成され、アタッチされます。

この一時 CGdiObject オブジェクトは、アプリケーションがイベント ループで次にアイドル時間を過ぎ、その時点ですべての一時グラフィック オブジェクトが削除されるまでのみ有効です。 もう 1 つの言い方は、一時オブジェクトが 1 つのウィンドウ メッセージの処理中にのみ有効であるという点です。

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 オブジェクトの場合、 GetObject はパレット内のエントリの数を指定する WORD を取得します。 この関数は、パレットを定義する 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 でない限り、m_hObjectを返します。その場合は NULL が返されます。

HGDIOBJ GetSafeHandle() const;

戻り値

添付された Windows GDI オブジェクトへのハンドル。それ以外の場合、オブジェクトがアタッチされていない場合は NULL。

解説

これは一般的なハンドル インターフェイス パラダイムの一部であり、NULL がハンドルの有効または特別な値である場合に便利です。

CWnd::IsWindowEnabled の例を参照してください。

CGdiObject::m_hObject

このオブジェクトにアタッチされている HBITMAP、HRGN、HBRUSH、HPEN、HPALETTE、または HFONT を含むハンドル。

HGDIOBJ m_hObject;

CGdiObject::operator !=

2 つの GDI オブジェクトが論理的に等しくないかどうかを判断します。

BOOL operator!=(const CGdiObject& obj) const;

パラメーター

obj
既存の CGdiObjectへのポインター。

解説

左側の GDI オブジェクトが右側の GDI オブジェクトと等しくないかどうかを判断します。

CGdiObject::operator ==

2 つの GDI オブジェクトが論理的に等しいかどうかを判断します。

BOOL operator==(const CGdiObject& obj) const;

パラメーター

obj
既存の CGdiObjectへの参照。

解説

左側の GDI オブジェクトが右側の GDI オブジェクトと等しいかどうかを判断します。

CGdiObject::operator HGDIOBJ

添付された Windows GDI オブジェクトへの HANDLE を取得します。それ以外の場合、オブジェクトがアタッチされていない場合は NULL。

operator HGDIOBJ() const;

CGdiObject::UnrealizeObject

ブラシの原点をリセットするか、論理パレットをリセットします。

BOOL UnrealizeObject();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

UnrealizeObjectCGdiObject クラスのメンバー関数ですが、CBrushオブジェクトまたはCPalette オブジェクトでのみ呼び出す必要があります。

CBrushオブジェクトの場合、UnrealizeObjectは、次に選択されたブラシがデバイス コンテキストにリセットされるときに、指定されたブラシの原点をリセットするようにシステムに指示します。 オブジェクトが CPalette オブジェクトの場合、 UnrealizeObject は、以前に実現されていないようにパレットを実現するようにシステムに指示します。 アプリケーションが次に指定したパレットの CDC::RealizePalette 関数を呼び出す場合、システムは論理パレットをシステム パレットに完全に再マップします。

UnrealizeObject関数はストック オブジェクトと共に使用しないでください。 UnrealizeObject関数は、新しいブラシの原点が設定されるたびに呼び出す必要があります (CDC::SetBrushOrg 関数を使用)。 UnrealizeObject関数は、現在選択されているブラシまたは現在選択されている任意の表示コンテキストのパレットに対して呼び出さないでください。

関連項目

階層図
CBitmap クラス
CBrush クラス
CFont クラス
CPalette クラス
CPen クラス
CRgn クラス