TNB Library
TnbIconManagerEx.h
[詳解]
1#pragma once
11#include "TnbBitmapImage.h"
12#include "TnbIconManager.h"
13
14
15
16//TNB Library
17namespace TNB
18{
19
20
21
43{
44 DEFSUPER(CIconManager);
46 HICON m_Create(ICONINFO& _ii)
47 {
48 HICON hIcon = ::CreateIconIndirect(&_ii);
49 if ( hIcon != NULL )
50 {
51 _super::Attach(hIcon);
52 }
53 return hIcon;
54 }
56 HICON m_Create(ICONINFO& _ii, CBitmapHandle bmp, COLORREF maskColor, BYTE alpha)
57 {
58 CBitmapImage bi;
59 bi.Set(bmp);
60 CBitmapHandle bmpMask = bi.CreateMaskBitmap(false, maskColor);
61 HRGN rgn = bi.CreateRgn(maskColor);
62 if ( rgn == NULL )
63 {
64 return NULL;
65 }
66 RECT rect = { 0, 0, bi.GetSize().cx, bi.GetSize().cy };
67 HDC dc = bi.GetDC();
68 ::ExtSelectClipRgn(dc, rgn, RGN_DIFF);
69 ::SetBkColor(dc, RGB(0, 0, 0)); // XOR されるから 0にしておく
70 ::ExtTextOut(dc, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
71 bi.ReleaseDC();
72 if ( alpha != 0xFF )
73 {
74 bi.CustomizeAlpha(alpha, RGB(0, 0, 0), 0);
75 }
76 _ii.hbmColor = bi.GetBitmapHandle();
77 _ii.hbmMask = bmpMask;
78 _DeleteObject(rgn);
79 return m_Create(_ii);
80 }
81public:
82
84 CIconManagerEx(void) : _super()
85 {
86 }
87
89 virtual ~CIconManagerEx(void)
90 {
91 }
92
102 HICON CreateIcon(CBitmapHandle bmpColor, CBitmapHandle bmpMask)
103 {
104 ICONINFO ii = { true, 0, 0, bmpMask, bmpColor };
105 ASSERTLIB( ii.fIcon && ii.yHotspot == 0 && ii.hbmMask == bmpMask.operator->() );
106 return m_Create(ii);
107 }
108
119 HICON CreateIcon(CBitmapHandle bmp, COLORREF maskColor = CLR_AUTOSELECT)
120 {
121 ICONINFO ii = { true, 0, 0 };
122 ASSERTLIB( ii.fIcon && ii.yHotspot == 0 );
123 return m_Create(ii, bmp, maskColor, 0xFF);
124 }
125
136 HCURSOR CreateCursor(DWORD xHotspot, DWORD yHotspot, CBitmapHandle bmpColor, CBitmapHandle bmpMask)
137 {
138 ICONINFO ii = { false, xHotspot, yHotspot, bmpMask, bmpColor };
139 ASSERTLIB( ! ii.fIcon && ii.yHotspot == yHotspot && ii.hbmMask == bmpMask.operator->() );
140 return m_Create(ii);
141 }
142
157 HCURSOR CreateCursor(DWORD xHotspot, DWORD yHotspot, CBitmapHandle bmp, int parsent = 100, COLORREF maskColor = CLR_AUTOSELECT)
158 {
159 ICONINFO ii = { false, xHotspot, yHotspot };
160 ASSERTLIB( ! ii.fIcon && ii.yHotspot == yHotspot );
161 return m_Create(ii, bmp, maskColor, static_cast<BYTE>(parsent * 255 / 100));
162 }
163};
164
165
166
167};
168
ビットマップイメージ管理関係のヘッダ
アイコン管理関係のヘッダ
HBITMAP型ハンドルハンドル
ビットマップイメージ管理クラス
HRGN CreateRgn(COLORREF transColor=CLR_AUTOSELECT) const
[作成] リージョン作成.
HDC GetDC(void)
[取得]デバイスコンテキストハンドル取得.
bool CustomizeAlpha(BYTE alpha)
[処理] アルファチャネル操作.
const SIZE & GetSize(void) const
[取得] イメージサイズ取得.
bool Set(int cx, int cy, COLORREF color=CLR_INVALID)
[設定] イメージ設定.
HBITMAP CreateMaskBitmap(bool boIsReverse=false, COLORREF transColor=CLR_AUTOSELECT) const
[作成] マスクパターンビットマップ作成.
CBitmapHandle GetBitmapHandle(void)
[取得] ビットマップハンドル取得
bool ReleaseDC(void)
[設定] デバイスコンテキストハンドル返却.
拡張アイコン管理クラス
CIconManagerEx(void)
コンストラクタ
virtual ~CIconManagerEx(void)
デストラクタ
HICON CreateIcon(CBitmapHandle bmpColor, CBitmapHandle bmpMask)
[作成] ビットマップから作成.
HICON CreateIcon(CBitmapHandle bmp, COLORREF maskColor=CLR_AUTOSELECT)
[作成] ビットマップから作成.
HCURSOR CreateCursor(DWORD xHotspot, DWORD yHotspot, CBitmapHandle bmpColor, CBitmapHandle bmpMask)
[作成] ビットマップから作成.
HCURSOR CreateCursor(DWORD xHotspot, DWORD yHotspot, CBitmapHandle bmp, int parsent=100, COLORREF maskColor=CLR_AUTOSELECT)
[作成] ビットマップから作成.
アイコン管理クラス
TNB Library
Definition: TnbDoxyTitle.txt:2