TNB Library
公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
CBitmapHandle クラス

HBITMAP型ハンドルハンドル [詳解]

#include <TnbBitmapHandle.h>

+ CBitmapHandle の継承関係図

公開メンバ関数

 CBitmapHandle (const CBitmapHandle &other)
 コピーコンストラクタ. [詳解]
 
 CBitmapHandle (const CString &strFile, int cx=0, int cy=0, UINT fuLoad=LR_CREATEDIBSECTION)
 代入コンストラクタ. [詳解]
 
 CBitmapHandle (HBITMAP P)
 代入コンストラクタ. [詳解]
 
 CBitmapHandle (LPCTSTR lpszFile, int cx=0, int cy=0, UINT fuLoad=LR_CREATEDIBSECTION)
 代入コンストラクタ. [詳解]
 
 CBitmapHandle (UINT uBitmapResourceId, int cx=0, int cy=0, UINT fuLoad=LR_CREATEDIBSECTION)
 代入コンストラクタ. [詳解]
 
 CBitmapHandle (void)
 コンストラクタ. [詳解]
 
HBITMAP Detach (void)
 [取得] デタッチ. [詳解]
 
bool Draw (HDC hdc, int x=0, int y=0) const
 [処理] イメージ描画. [詳解]
 
int GetReferCount (void) const
 [取得] 参照数取得. [詳解]
 
bool GetSize (SIZE &_size) const
 [取得] ビットマップサイズ取得. [詳解]
 
bool IsNull (void) const
 [確認] NULLチェック [詳解]
 
void Null (void)
 [設定] 開放. [詳解]
 
 operator const HBITMAP (void) const
 [取得] TYP取得. [詳解]
 
 operator HBITMAP (void)
 [取得] TYP取得. [詳解]
 
bool operator!= (HBITMAP t) const
 [比較] TYP比較. [詳解]
 
HBITMAP operator-> (void)
 [取得] TYP取得. [詳解]
 
const HBITMAP operator-> (void) const
 [取得] TYP取得. [詳解]
 
bool operator== (HBITMAP t) const
 [比較] TYP比較. [詳解]
 
HBITMAP * ReferP (void)
 [取得] TYPのポインタ取得. [詳解]
 
HBITMAP const * ReferP (void) const
 [取得] TYPのポインタ取得. [詳解]
 
DWORD Save (LPCTSTR lpszFileName, WORD bitsPixel=0)
 [作成] BMPファイル作成. [詳解]
 
void SetClone (HBITMAP hBmp)
 [設定] HBITMAPセット. [詳解]
 
int SetReferCount (int iCount)
 [設定] 参照数設定 [詳解]
 

静的公開メンバ関数

static HBITMAP Create32bitDibSection (HBITMAP hbm, RGBQUAD *&_pRgb, BITMAPINFOHEADER *pHeader=NULL)
 [作成] 32bitビットマップ作成. [詳解]
 
static bool Draw (HDC hdc, HBITMAP hBmp, int x=0, int y=0)
 [処理] イメージ描画. [詳解]
 
static HBITMAP Load (LPCTSTR lpszFileName, int cx=0, int cy=0, UINT fuLoad=LR_CREATEDIBSECTION)
 [読込] BMPファイル読込み. [詳解]
 
static HBITMAP Load (UINT uBitmapResourceId, int cx=0, int cy=0, UINT fuLoad=LR_CREATEDIBSECTION)
 [読込] リソース読込み [詳解]
 
static HBITMAP LoadOem (UINT uOemBitmapResourceId, int cx=0, int cy=0, UINT fuLoad=0)
 [読込] OEMリソース読込み [詳解]
 
static DWORD Save (LPCTSTR lpszFileName, HBITMAP bmp, WORD bitsPixel=0)
 [作成] BMPファイル作成. [詳解]
 
static DWORD SaveMemory (CWorkMem &_save, HBITMAP bmp, WORD bitsPixel=0)
 [作成] BMPファイルイメージ作成. [詳解]
 

詳解

HBITMAP型ハンドルハンドル

HBITMAP 、一つを管理します。参照する本インスタンスがなくなると、自動的に DeleteObject() します。
ポイント
本クラスを引数に持つ関数の場合、 HBITMAP , CBitmapHandle 以外に、 BITMAPファイル名(文字列)、 BITMAP リソースID を指定することもできます。

    //= 宣言
    void Foo(CBitmapHandle bmp); // こういう関数の場合・・・

    //= 使用時
    Foo("c:\\BMP\\BackTop1.bmp");  // BackTop1.bmpファイルを読み込んで Foo() をコールします。
    Foo(IDB_BACKTOP1");  // リソースの IDB_BACKTOP1 を読み込んで Foo() をコールします。
    

注意
一度本クラスで管理したら、 HBITMAP として取り出したものを一時的に以外には使用しないでください。 特に HBITMAP を介しての複製は問題が発生します。本クラスの管理下からはずす場合、 Detach() を使用します。

    CBitmapHandle bh(IDB_PIC1);   // リソースから読込み
    HBITMAP h1 = bh;              // bh で管理している HBITMAP を参照。
    {
        CBitmapHandle temp = h1;  // ハンドルを記憶
    }                             // デストラクタ時に h1 のハンドルを破棄。      
    HBITMAP h2 = bh;              // bh で管理している HBITMAP を参照。
                                  // しかし temp のデストラクタ時に 破棄されているので、
                                  // ここでは無効なハンドルが h2 に代入される。
    

必要ファイル
TnbBitmapHandle.h
日付
06/09/29 テンプレート化。
07/11/03 継承し、メンバ追加。
07/11/12 内部管理を現在のDesktop設定の影響を受けないように修正。
07/11/13 Save() 追加。
07/11/15 SetClone() 追加。
08/04/07 LoadOem() 追加。 ファイルをLoadする時も、 INSTANCE ハンドルを指定するようにした。
08/07/02 Create32bitDibSection() 追加。CE対応。
10/09/15 SaveMemory() 追加

TnbBitmapHandle.h101 行目に定義があります。

構築子と解体子

◆ CBitmapHandle() [1/6]

CBitmapHandle ( void  )

コンストラクタ.

NULL状態のビットマップ(HBITMAP を管理していない)オブジェクトが作成されます。

TnbBitmapHandle.h111 行目に定義があります。

◆ CBitmapHandle() [2/6]

CBitmapHandle ( const CBitmapHandle other)

コピーコンストラクタ.

コピー元に有効な HBITMAPがある場合、本インスタンスでも、 そこを参照するようになります。

引数
otherコピー元

TnbBitmapHandle.h121 行目に定義があります。

◆ CBitmapHandle() [3/6]

CBitmapHandle ( HBITMAP  P)

代入コンストラクタ.

HBITMAP を保持するオブジェクトが作成されます。

引数
PHBITMAP。

TnbBitmapHandle.h130 行目に定義があります。

◆ CBitmapHandle() [4/6]

CBitmapHandle ( UINT  uBitmapResourceId,
int  cx = 0,
int  cy = 0,
UINT  fuLoad = LR_CREATEDIBSECTION 
)

代入コンストラクタ.

指定ビットマップリソースを読み込み、それをを保持するオブジェクトが作成されます。 読み込み失敗した場合、NULL状態のビットマップオブジェクトが作成されます。

覚え書き
インスタンスハンドルは、 GetInstanceHandle(EI_Bitmap) の値が使用されます。
引数
uBitmapResourceIdビットマップリソースID
cx読み込みXサイズを指定できます。省略すると、リソースの情報のままになります。
cy読み込みYサイズを指定できます。省略すると、リソースの情報のままになります。
fuLoad読込みオプションを指定できます。省略可能。
-> http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadimage.asp

TnbBitmapHandle.h145 行目に定義があります。

◆ CBitmapHandle() [5/6]

CBitmapHandle ( LPCTSTR  lpszFile,
int  cx = 0,
int  cy = 0,
UINT  fuLoad = LR_CREATEDIBSECTION 
)

代入コンストラクタ.

指定ファイルを読み込み、それをを保持するオブジェクトが作成されます。 ファイル読み込み失敗した場合、NULL状態のビットマップオブジェクトが作成されます。

引数
lpszFileファイル名。
cx読み込みXサイズを指定できます。省略すると、ファイルの情報のままになります。
cy読み込みYサイズを指定できます。省略すると、ファイルの情報のままになります。
fuLoad読込みオプションを指定できます。省略可能。
-> http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadimage.asp

TnbBitmapHandle.h160 行目に定義があります。

◆ CBitmapHandle() [6/6]

CBitmapHandle ( const CString &  strFile,
int  cx = 0,
int  cy = 0,
UINT  fuLoad = LR_CREATEDIBSECTION 
)

代入コンストラクタ.

指定ファイルを読み込み、それをを保持するオブジェクトが作成されます。 ファイル読み込み失敗した場合、NULL状態のビットマップオブジェクトが作成されます。

引数
strFileファイル名。
cx読み込みXサイズを指定できます。省略すると、ファイルの情報のままになります。
cy読み込みYサイズを指定できます。省略すると、ファイルの情報のままになります。
fuLoad読込みオプションを指定できます。省略可能。
-> http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadimage.asp

TnbBitmapHandle.h176 行目に定義があります。

関数詳解

◆ Create32bitDibSection()

static HBITMAP Create32bitDibSection ( HBITMAP  hbm,
RGBQUAD *&  _pRgb,
BITMAPINFOHEADER *  pHeader = NULL 
)
static

[作成] 32bitビットマップ作成.

覚え書き
元のビットマップの大きさ、絵を持つ DIBセクションのビットマップを作成します。
引数
[in]hbm元のビットマップ。
[out]_pRgbビットマップのアドレスが返ります。
[out]pHeaderヘッダ情報が返ります。省略可能。
戻り値
NULL失敗。
NULL以外ビットマップハンドル。 使用後は、明示的に ::DeleteObject() してください。

TnbBitmapHandle.h281 行目に定義があります。

◆ Detach()

HBITMAP Detach ( void  )

[取得] デタッチ.

本インスタンスが破棄してもハンドルを破棄しないように取り出します。 本インスタンスは NULL状態になります。

戻り値
NULLハンドルを持っていない。
NULL以外HBITMAP。 使用後は、明示的に ::DeleteObject() してください。

TnbBitmapHandle.h211 行目に定義があります。

◆ Draw() [1/2]

static bool Draw ( HDC  hdc,
HBITMAP  hBmp,
int  x = 0,
int  y = 0 
)
static

[処理] イメージ描画.

指定のデバイスコンテキストの指定の位置に、指定のイメージビットマップを描画します。

引数
hdc描画対象のデバイスコンテキスト。
hBmpビットマップ。
x描画X位置(左が0)。省略すると0。
y描画Y位置(上が0)。省略すると0。
戻り値
true成功。
false失敗。

TnbBitmapHandle.h384 行目に定義があります。

◆ Draw() [2/2]

bool Draw ( HDC  hdc,
int  x = 0,
int  y = 0 
) const

[処理] イメージ描画.

指定のデバイスコンテキストの指定の位置に、本インスタンスで持っているイメージを描画します。

引数
hdc描画対象のデバイスコンテキスト。
x描画X位置(左が0)。省略すると0。
y描画Y位置(上が0)。省略すると0。
戻り値
true成功。
false失敗。

TnbBitmapHandle.h249 行目に定義があります。

◆ GetReferCount()

int GetReferCount ( void  ) const
inherited

[取得] 参照数取得.

TYPポインタが参照されている数を知ることが出来ます。

覚え書き
通常使う必要は有りません。
戻り値
参照数

TnbPointerHandle.h221 行目に定義があります。

◆ GetSize()

bool GetSize ( SIZE &  _size) const

[取得] ビットマップサイズ取得.

本オブジェクトが保持しているビットマップの大きさを返します。

引数
[out]_sizeサイズ格納。
戻り値
true成功。
false失敗。保持していません。

TnbBitmapHandle.h189 行目に定義があります。

◆ IsNull()

bool IsNull ( void  ) const
inherited

[確認] NULLチェック

戻り値
trueTYPポインタ無し
falseTYPポインタ有り

TnbPointerHandle.h197 行目に定義があります。

◆ Load() [1/2]

static HBITMAP Load ( LPCTSTR  lpszFileName,
int  cx = 0,
int  cy = 0,
UINT  fuLoad = LR_CREATEDIBSECTION 
)
static

[読込] BMPファイル読込み.

引数
lpszFileNameファイル名。
cx読み込みXサイズを指定できます。省略すると、ファイルの情報のままになります。
cy読み込みYサイズを指定できます。省略すると、ファイルの情報のままになります。
fuLoad読込みオプションを指定できます。省略可能。
-> http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadimage.asp
戻り値
NULL失敗。
NULL以外ビットマップハンドル。 使用後は、明示的に ::DeleteObject() してください。

TnbBitmapHandle.h341 行目に定義があります。

◆ Load() [2/2]

static HBITMAP Load ( UINT  uBitmapResourceId,
int  cx = 0,
int  cy = 0,
UINT  fuLoad = LR_CREATEDIBSECTION 
)
static

[読込] リソース読込み

覚え書き
インスタンスハンドルは、 GetInstanceHandle(EI_Bitmap) の値が使用されます。
引数
uBitmapResourceIdビットマップリソースID
cx読み込みXサイズを指定できます。省略すると、リソースの情報のままになります。
cy読み込みYサイズを指定できます。省略すると、リソースの情報のままになります。
fuLoad読込みオプションを指定できます。省略可能。
-> http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadimage.asp
戻り値
NULL失敗。
NULL以外ビットマップハンドル。 使用後は、明示的に ::DeleteObject() してください。

TnbBitmapHandle.h324 行目に定義があります。

◆ LoadOem()

static HBITMAP LoadOem ( UINT  uOemBitmapResourceId,
int  cx = 0,
int  cy = 0,
UINT  fuLoad = 0 
)
static

[読込] OEMリソース読込み

引数
uOemBitmapResourceIdOEMビットマップリソースID
cx読み込みXサイズを指定できます。省略すると、リソースの情報のままになります。
cy読み込みYサイズを指定できます。省略すると、リソースの情報のままになります。
fuLoad読込みオプションを指定できます。省略可能。
-> http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadimage.asp
戻り値
NULL失敗。
NULL以外ビットマップハンドル。 使用後、 ::DeleteObject() する必要はありません。

TnbBitmapHandle.h365 行目に定義があります。

◆ Null()

void Null ( void  )
inherited

[設定] 開放.

本インスタンスが管理しているTYPを開放します。

覚え書き
operator=(NUL) と同じ動作です。
TYPが他からも使われていたら、参照を一つ減らすだけです。

TnbPointerHandle.h229 行目に定義があります。

◆ operator const HBITMAP()

operator const HBITMAP ( void  ) const
inherited

[取得] TYP取得.

管理しているTYPを返します

戻り値
TYP の値

TnbPointerHandle.h262 行目に定義があります。

◆ operator HBITMAP()

operator HBITMAP ( void  )
inherited

[取得] TYP取得.

管理しているTYPを返します

戻り値
TYP の値

TnbPointerHandle.h255 行目に定義があります。

◆ operator!=()

bool operator!= ( HBITMAP  t) const
inherited

[比較] TYP比較.

保持している TYPと比較します。

引数
t比較対照
戻り値
false同じ
true異なる

TnbPointerHandle.h294 行目に定義があります。

◆ operator->() [1/2]

HBITMAP operator-> ( void  )
inherited

[取得] TYP取得.

管理しているTYPを返します

戻り値
TYP の値

TnbPointerHandle.h269 行目に定義があります。

◆ operator->() [2/2]

const HBITMAP operator-> ( void  ) const
inherited

[取得] TYP取得.

管理しているTYPを返します

戻り値
TYP の値

TnbPointerHandle.h276 行目に定義があります。

◆ operator==()

bool operator== ( HBITMAP  t) const
inherited

[比較] TYP比較.

保持している TYPと比較します。

引数
t比較対照
戻り値
true同じ
false異なる

TnbPointerHandle.h285 行目に定義があります。

◆ ReferP() [1/2]

HBITMAP * ReferP ( void  )
inherited

[取得] TYPのポインタ取得.

戻り値
TYPのポインタ

TnbPointerHandle.h242 行目に定義があります。

◆ ReferP() [2/2]

HBITMAP const * ReferP ( void  ) const
inherited

[取得] TYPのポインタ取得.

戻り値
TYPのポインタ

TnbPointerHandle.h248 行目に定義があります。

◆ Save() [1/2]

static DWORD Save ( LPCTSTR  lpszFileName,
HBITMAP  bmp,
WORD  bitsPixel = 0 
)
static

[作成] BMPファイル作成.

覚え書き
CE では bitsPixel は無視され必ず32になります。
引数
lpszFileNameファイル名。
bmpビットマップ
bitsPixel一ドットのビット数。1,4,8,16,24,32 のいずれかが指定できます。 0なら ビットマップの情報ままになります。
戻り値
ERROR_SUCCESS成功。
上記以外失敗。数値はシステムエラーコードです( SystemErrorToMessageText() で文字列化できます)。

TnbBitmapHandle.h549 行目に定義があります。

◆ Save() [2/2]

DWORD Save ( LPCTSTR  lpszFileName,
WORD  bitsPixel = 0 
)

[作成] BMPファイル作成.

覚え書き
CE では bitsPixel は無視され必ず32になります。
引数
lpszFileNameファイル名。
bitsPixel一ドットのビット数。1,4,8,16,24,32 のいずれかが指定できます。 0なら ビットマップの情報ままになります。
戻り値
ERROR_SUCCESS成功。
上記以外失敗。数値はシステムエラーコードです( SystemErrorToMessageText() で文字列化できます)。

TnbBitmapHandle.h263 行目に定義があります。

◆ SaveMemory()

static DWORD SaveMemory ( CWorkMem _save,
HBITMAP  bmp,
WORD  bitsPixel = 0 
)
static

[作成] BMPファイルイメージ作成.

覚え書き
CE では bitsPixel は無視され必ず32になります。
引数
[out]_save保存先。
[in]bmpビットマップ
[in]bitsPixel一ドットのビット数。1,4,8,16,24,32 のいずれかが指定できます。 0なら ビットマップの情報ままになります。
戻り値
ERROR_SUCCESS成功。
上記以外失敗。数値はシステムエラーコードです( SystemErrorToMessageText() で文字列化できます)。

TnbBitmapHandle.h415 行目に定義があります。

◆ SetClone()

void SetClone ( HBITMAP  hBmp)

[設定] HBITMAPセット.

指定の HBITMAP の複製を本オブジェクトで管理します。

覚え書き
HBITMAP の破棄のタイミングを CBitmapHandle に管理させたくない時、使用します。
引数
hBmpHBITMAP。

TnbBitmapHandle.h230 行目に定義があります。

◆ SetReferCount()

int SetReferCount ( int  iCount)
inherited

[設定] 参照数設定

覚え書き
通常使う必要は有りません。例外として、0以下の参照数は、参照を増やすことが 出来ない様になっているため、意図的に使用することが出来ます。
引数
iCount設定する参照数
戻り値
設定前の参照数

TnbPointerHandle.h209 行目に定義があります。