57 HICON m_Load(
int iIconResourceId, HINSTANCE hIns)
62 if ( iIconResourceId < 0 )
64 lpsz = MAKEINTRESOURCE(-iIconResourceId);
65 cx = ::GetSystemMetrics(SM_CXSMICON);
66 cy = ::GetSystemMetrics(SM_CYSMICON);
70 lpsz = MAKEINTRESOURCE(iIconResourceId);
72 HANDLE r = ::LoadImage(hIns, lpsz, IMAGE_ICON, cx, cy, LR_DEFAULTCOLOR);
75 r = ::LoadImage(hIns, lpsz, IMAGE_CURSOR, cx, cy, LR_DEFAULTCOLOR);
77 return static_cast<HICON
>(r);
90 if ( ::GetIconInfo(h, &ii) )
92 ii.fIcon ? ::DestroyIcon(h) : ::DestroyCursor(h);
158 if ( m_mapIdIcon.
HasKey(iIconResourceId) )
162 return m_mapIdIcon.
RemoveKey(iIconResourceId);
174 INDEX i = av.
Find(hIcon);
175 if ( i != INVALID_INDEX )
181 i = m_vIcon.
Find(hIcon);
182 if ( i != INVALID_INDEX )
201 if ( ! m_mapIdIcon.
Lookup(iIconResourceId, hIcon) )
203 hIcon = m_Load(iIconResourceId, hIns);
206 m_mapIdIcon[iIconResourceId] = hIcon;
246 return ::LoadIcon(NULL,
reinterpret_cast<LPCTSTR
>(systemId));
271 HICON
Extract(LPCTSTR lpszFile, UINT iconIndex)
292 if ( av.
Find(hIcon) == INVALID_INDEX )
294 if ( m_vIcon.
Find(hIcon) == INVALID_INDEX )
314 HICON LoadFileInfo(LPCTSTR lpszFile, UINT uAddFlags = SHGFI_LARGEICON)
316 SHFILEINFO info = { 0 };
317 UINT uFlags = SHGFI_ICON | uAddFlags;
318 ::SHGetFileInfo(lpszFile, 0, &info,
sizeof(SHFILEINFO), uFlags);
319 if ( info.hIcon != NULL )
321 m_vIcon.
Add(info.hIcon);
#define loop(VAR, CNT)
loop構文.
void DestroyAll(void)
[開放] 全ハンドル開放.
HICON operator[](int iIconResourceId)
[取得] リソースから取得
INT_PTR ExtractNumber(LPCTSTR lpszFile)
[取得] ファイルから抽出可能数.
bool Destroy(int iIconResourceId)
[開放] ハンドル開放.
HICON LoadResource(int iIconResourceId)
[取得] リソースから取得
HICON LoadSystem(ESystemIconId systemId)
[取得] システムから取得
HICON Extract(LPCTSTR lpszFile, UINT iconIndex)
[取得] ファイルから抽出.
virtual ~CIconManager(void)
デストラクタ
void Attach(HICON hIcon)
[指定] ハンドル管理.
bool Destroy(HICON hIcon)
[開放] ハンドル開放.
ESystemIconId
システムのアイコンID値
@ E_ASTERISK
E_INFORMATION と同じです
@ E_ERROR
ストップマークのアイコン(米国の歩行者用信号の赤と同じで、手を開いて制止しているデザインです)
@ E_INFORMATION
情報アイコン(吹き出しの中に i の文字)
@ E_WINLOGO
Windows ロゴのアイコン
@ E_EXCLAMATION
E_WARNING と同じです
@ E_APPLICATION
既定のアプリケーションアイコン
CIconManager(void)
コンストラクタ
HICON LoadResource(int iIconResourceId, HINSTANCE hIns)
[取得] リソースから取得
void m_Destroy(HICON h)
[破棄] ハンドル破棄.
virtual size_t GetSize(void) const
[取得] 要素数取得
bool RemoveKey(INK key)
[削除] キーと値を削除
virtual bool Remove(INDEX index)
[削除] キーと値一つ削除.
CConstValuesAdapter GetValuesAdapter(void) const
[取得] 値のみの参照アダプタ取得.
virtual const CPair & At(INDEX index) const
[取得] 要素の参照取得.
virtual bool RemoveAll(void)
[削除] すべてのキーと値を削除
bool HasKey(INK key) const
[確認] キー有無
bool Lookup(INK key, VAL &_rValue) const
[取得] キーに対する値取得
virtual size_t GetSize(void) const
[取得] サイズ取得
virtual bool Remove(INDEX index)
[削除] 要素一つ削除.
virtual bool RemoveAll(void)
[削除] 空化
virtual INDEX Add(const TYP &t)
[追加] 要素一つ追加.
HINSTANCE GetInstanceHandleByTnb(EInstanceType type=EI_Process)
[取得] インスタンスハンドル取得.
INDEX Find(const IChecker &checker, INDEX startIndex=0, bool boIsReverse=false) const
[検索] 条件一致要素の検索.