TNB Library
公開型 | 公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
CIconManagerEx クラス

拡張アイコン管理クラス [詳解]

#include <TnbIconManagerEx.h>

+ CIconManagerEx の継承関係図

公開型

enum  ESystemIconId {
  E_APPLICATION = (INT_PTR)(IDI_APPLICATION) , E_ASTERISK = (INT_PTR)(IDI_ASTERISK) , E_ERROR = (INT_PTR)(IDI_ERROR) , E_EXCLAMATION = (INT_PTR)(IDI_EXCLAMATION) ,
  E_HAND = (INT_PTR)(IDI_HAND) , E_INFORMATION = (INT_PTR)(IDI_INFORMATION) , E_QUESTION = (INT_PTR)(IDI_QUESTION) , E_WARNING = (INT_PTR)(IDI_WARNING) ,
  E_WINLOGO = (INT_PTR)(IDI_WINLOGO)
}
 システムのアイコンID値 [詳解]
 

公開メンバ関数

void Attach (HICON hIcon)
 [指定] ハンドル管理. [詳解]
 
 CIconManagerEx (void)
 コンストラクタ [詳解]
 
HCURSOR CreateCursor (DWORD xHotspot, DWORD yHotspot, CBitmapHandle bmp, int parsent=100, COLORREF maskColor=CLR_AUTOSELECT)
 [作成] ビットマップから作成. [詳解]
 
HCURSOR CreateCursor (DWORD xHotspot, DWORD yHotspot, CBitmapHandle bmpColor, CBitmapHandle bmpMask)
 [作成] ビットマップから作成. [詳解]
 
HICON CreateIcon (CBitmapHandle bmp, COLORREF maskColor=CLR_AUTOSELECT)
 [作成] ビットマップから作成. [詳解]
 
HICON CreateIcon (CBitmapHandle bmpColor, CBitmapHandle bmpMask)
 [作成] ビットマップから作成. [詳解]
 
bool Destroy (HICON hIcon)
 [開放] ハンドル開放. [詳解]
 
bool Destroy (int iIconResourceId)
 [開放] ハンドル開放. [詳解]
 
void DestroyAll (void)
 [開放] 全ハンドル開放. [詳解]
 
HICON Extract (LPCTSTR lpszFile, UINT iconIndex)
 [取得] ファイルから抽出. [詳解]
 
INT_PTR ExtractNumber (LPCTSTR lpszFile)
 [取得] ファイルから抽出可能数. [詳解]
 
HICON LoadResource (int iIconResourceId)
 [取得] リソースから取得 [詳解]
 
HICON LoadResource (int iIconResourceId, HINSTANCE hIns)
 [取得] リソースから取得 [詳解]
 
HICON LoadSystem (ESystemIconId systemId)
 [取得] システムから取得 [詳解]
 
HICON operator[] (int iIconResourceId)
 [取得] リソースから取得 [詳解]
 
virtual ~CIconManagerEx (void)
 デストラクタ [詳解]
 

限定公開メンバ関数

void m_Destroy (HICON h)
 [破棄] ハンドル破棄. [詳解]
 

詳解

拡張アイコン管理クラス

本クラスを使用してアイコンをロードすると、開放すべきアイコンの開放漏れを防ぎます。
また、リソースIDとハンドルを関連付けて記憶しておくため、キャッシュ的な使い方が可能です。

カーソルもアイコンと同様に本クラスで管理することが可能です。

本クラスは、ビットマップからアイコン作成( CreateIcon() )、カーソル作成( CreateCursor() )が増えている以外、 
CIconManager とまったく同じです。
覚え書き
本クラスのインスタンスで取得した アイコンハンドルは、使用後、 APIの DestroyIcon() を使用せず、 Destroy() を使用し破棄します(インスタンスを削除してもハンドルは破棄されます) 。
必要ファイル
TnbIconManagerEx.h
日付
07/10/30 新規作成
07/11/16 アイコンに使ったHBITMAPを保持する必要なし

TnbIconManagerEx.h42 行目に定義があります。

列挙型メンバ詳解

◆ ESystemIconId

enum ESystemIconId
inherited

システムのアイコンID値

覚え書き
LoadSystem() で使用します。
列挙値
E_APPLICATION 

既定のアプリケーションアイコン

E_ASTERISK 

E_INFORMATION と同じです

E_ERROR 

ストップマークのアイコン(米国の歩行者用信号の赤と同じで、手を開いて制止しているデザインです)

E_EXCLAMATION 

E_WARNING と同じです

E_HAND 

E_ERROR と同じです

E_INFORMATION 

情報アイコン(吹き出しの中に i の文字)

E_QUESTION 

疑問符のアイコン

E_WARNING 

感嘆符のアイコン

E_WINLOGO 

Windows ロゴのアイコン

TnbIconManager.h105 行目に定義があります。

構築子と解体子

◆ CIconManagerEx()

CIconManagerEx ( void  )

コンストラクタ

TnbIconManagerEx.h84 行目に定義があります。

◆ ~CIconManagerEx()

virtual ~CIconManagerEx ( void  )
virtual

デストラクタ

TnbIconManagerEx.h89 行目に定義があります。

関数詳解

◆ Attach()

void Attach ( HICON  hIcon)
inherited

[指定] ハンドル管理.

指定のハンドルを本インスタンスで管理するようにします。

覚え書き
本クラス以外でアイコンハンドルを作成し、インスタンスで管理させたい場合、本メソッドを使います。
引数
hIconアイコンハンドル。 ここで指定したアイコンハンドルは APIの DestroyIcon() を使用しないでください。

TnbIconManager.h289 行目に定義があります。

◆ CreateCursor() [1/2]

HCURSOR CreateCursor ( DWORD  xHotspot,
DWORD  yHotspot,
CBitmapHandle  bmp,
int  parsent = 100,
COLORREF  maskColor = CLR_AUTOSELECT 
)

[作成] ビットマップから作成.

指定のビットマップからカーソルを作成します。

引数
xHotspotカーソルのホットスポットの X 座標を指定します。
yHotspotカーソルのホットスポットの Y 座標を指定します。
bmpビットマップ ハンドルを指定します。
parsentカーソル表示時の濃さ(単位;%)。 省略なら指定のビットマップのアルファチャネルがそのまま適応されます。 0 を指定すると、半透明しなくなります。
maskColorマスク色を指定します。 省略すると、BITMAPの左下の色をマスク色とします。
CLR_INVALID を指定すると透過色なしでアイコンを作成します。
戻り値
NULL以外カーソルハンドル(アイコンハンドル)。 APIの DestroyIcon() DestroyCursor() は使用しないでください。
NULLエラー

TnbIconManagerEx.h157 行目に定義があります。

◆ CreateCursor() [2/2]

HCURSOR CreateCursor ( DWORD  xHotspot,
DWORD  yHotspot,
CBitmapHandle  bmpColor,
CBitmapHandle  bmpMask 
)

[作成] ビットマップから作成.

指定のビットマップからカーソルを作成します。

引数
xHotspotカーソルのホットスポットの X 座標を指定します。
yHotspotカーソルのホットスポットの Y 座標を指定します。
bmpColorXOR ビットマスク(画像)用のビットマップ ハンドルを指定します。
bmpMaskAND ビットマスク(透過)用のビットマップ ハンドルを指定します。
戻り値
NULL以外カーソルハンドル(アイコンハンドル)。 APIの DestroyIcon() DestroyCursor() は使用しないでください。
NULLエラー

TnbIconManagerEx.h136 行目に定義があります。

◆ CreateIcon() [1/2]

HICON CreateIcon ( CBitmapHandle  bmp,
COLORREF  maskColor = CLR_AUTOSELECT 
)

[作成] ビットマップから作成.

指定のビットマップからアイコンを作成します。

引数
bmpビットマップ 。
maskColorマスク色を指定します。 省略すると、BITMAPの左下の色をマスク色とします。
CLR_INVALID を指定すると透過色なしでアイコンを作成します。
戻り値
NULL以外アイコンハンドル。 APIの DestroyIcon() は使用しないでください。
NULLエラー

TnbIconManagerEx.h119 行目に定義があります。

◆ CreateIcon() [2/2]

HICON CreateIcon ( CBitmapHandle  bmpColor,
CBitmapHandle  bmpMask 
)

[作成] ビットマップから作成.

指定のビットマップからアイコンを作成します。

覚え書き
ビットマップからアイコンを作るには、 CBitmapImage が使用できます。
引数
bmpColorXOR ビットマスク(画像)用のビットマップを指定します。
bmpMaskAND ビットマスク(透過)用のビットマップを指定します。
戻り値
NULL以外アイコンハンドル。 APIの DestroyIcon() は使用しないでください。
NULLエラー

TnbIconManagerEx.h102 行目に定義があります。

◆ Destroy() [1/2]

bool Destroy ( HICON  hIcon)
inherited

[開放] ハンドル開放.

引数
hIcon本インスタンスで管理しているアイコンハンドル。
戻り値
true成功。
false失敗(本インスタンスで管理していないハンドルが指定された)。

TnbIconManager.h171 行目に定義があります。

◆ Destroy() [2/2]

bool Destroy ( int  iIconResourceId)
inherited

[開放] ハンドル開放.

引数
iIconResourceId本インスタンスでロードしたリソースID。
戻り値
true成功。
false失敗(本インスタンスで管理していないリソースIDが指定された)。

TnbIconManager.h156 行目に定義があります。

◆ DestroyAll()

void DestroyAll ( void  )
inherited

[開放] 全ハンドル開放.

本インスタンスで管理しているハンドルをすべて開放します。

TnbIconManager.h135 行目に定義があります。

◆ Extract()

HICON Extract ( LPCTSTR  lpszFile,
UINT  iconIndex 
)
inherited

[取得] ファイルから抽出.

覚え書き
指定のファイル内のリソースからアイコンを取得します。
インスタンスハンドルは、 GetInstanceHandle(EI_Process) の値が使用されます。
引数
lpszFileファイル名。ファイルは、 EXE DLL ICO ファイルが指定できます。
iconIndexインデックス。 ExtractNumber() で得られる「アイコン数」未満を指定できます。
戻り値
NULL以外アイコンハンドル。 APIの DestroyIcon() は使用しないでください。
NULLエラー(存在しない)

TnbIconManager.h271 行目に定義があります。

◆ ExtractNumber()

INT_PTR ExtractNumber ( LPCTSTR  lpszFile)
inherited

[取得] ファイルから抽出可能数.

覚え書き
指定のファイル内のリソースからアイコンを取得します。
インスタンスハンドルは、 GetInstanceHandle(EI_Process) の値が使用されます。
引数
lpszFileファイル名。ファイルは、 EXE DLL ICO ファイルが指定できます。
戻り値
1以上ファイル内のアイコン数。
0エラー(存在しない)

TnbIconManager.h257 行目に定義があります。

◆ LoadResource() [1/2]

HICON LoadResource ( int  iIconResourceId)
inherited

[取得] リソースから取得

覚え書き
インスタンスハンドルは、 GetInstanceHandle(EI_Icon) の値が使用されます。
引数
iIconResourceIdアイコンリソースID。 ×-1 した値を指定することで、 小さい ICON をロードできます。
戻り値
NULL以外アイコンハンドル。 APIの DestroyIcon() は使用しないでください。
NULLエラー(存在しない)

TnbIconManager.h219 行目に定義があります。

◆ LoadResource() [2/2]

HICON LoadResource ( int  iIconResourceId,
HINSTANCE  hIns 
)
inherited

[取得] リソースから取得

引数
iIconResourceIdアイコンリソースID。 ×-1 した値を指定することで、 小さい ICON をロードできます。
hInsインスタンス。
戻り値
NULL以外アイコンハンドル。 APIの DestroyIcon() は使用しないでください。
NULLエラー(存在しない)

TnbIconManager.h198 行目に定義があります。

◆ LoadSystem()

HICON LoadSystem ( ESystemIconId  systemId)
inherited

[取得] システムから取得

引数
systemIdシステムアイコンID。
戻り値
NULL以外アイコンハンドル。 APIの DestroyIcon() は使用しないでください。
NULLエラー(存在しない)

TnbIconManager.h244 行目に定義があります。

◆ m_Destroy()

void m_Destroy ( HICON  h)
protectedinherited

[破棄] ハンドル破棄.

覚え書き
ハンドルがアイコンかカーソルかチェックして破棄します。
引数
hアイコンかカーソルのハンドル

TnbIconManager.h86 行目に定義があります。

◆ operator[]()

HICON operator[] ( int  iIconResourceId)
inherited

[取得] リソースから取得

覚え書き
インスタンスを指定しない LoadResource() と同じ動きをします。
引数
iIconResourceIdアイコンリソースID
戻り値
NULL以外アイコンハンドル。 APIの DestroyIcon() は使用しないでください。
NULLエラー(存在しない)

TnbIconManager.h231 行目に定義があります。