TNB Library
TnbConstResourceData.h
[詳解]
1#pragma once
11#include "TnbCollection.h"
12
13
14
15//TNB Library
16namespace TNB
17{
18
19
20
34{
35public:
36
48 class CValue
49 {
50 public:
51
56 CValue(LPCTSTR lpsz) : m_lpsz(lpsz)
57 {
58 }
59
64 CValue(int id) : m_lpsz(MAKEINTRESOURCE(id))
65 {
66 }
67
72 operator LPCTSTR() const
73 {
74 return m_lpsz;
75 }
76
77 private:
78 LPCTSTR m_lpsz;
79 };
80
81
82 //----------------------------
83
84
86 CConstResourceData(void) : m_size(0), m_pData(NULL)
87 {
88 }
89
96 virtual bool Lock(DWORD dwTime = INFINITE) const
97 {
98 return true;
99 }
100
105 virtual void Unlock(void) const
106 {
107 }
108
113 virtual size_t GetSize(void) const
114 {
115 return m_size;
116 }
117
126 virtual const BYTE& At(INDEX index) const
127 {
128 if ( IsInRange(index) )
129 {
130 return m_pData[index];
131 }
133 }
134
141 virtual const BYTE* ReferBuffer(void) const
142 {
143 return m_pData;
144 }
145
178 bool Attach(CValue name, CValue type = RT_RCDATA, HMODULE hModule = NULL, WORD wLanguage = 0)
179 {
180 Detach();
181 if ( hModule == NULL )
182 {
183 hModule = GetInstanceHandleByTnb();
184 }
185 HRSRC h = NULL;
186 if ( wLanguage == 0 )
187 {
188 h = ::FindResource(hModule, name, type);
189 }
190 else
191 {
192 h = ::FindResourceEx(hModule, type, name, wLanguage);
193 }
194 if ( h != NULL )
195 {
196 HGLOBAL hGM = ::LoadResource(hModule, h);
197 m_size = ::SizeofResource(hModule, h);
198 m_pData = static_cast<const BYTE*>(::LockResource(hGM));
199 }
200 return ! IsEmpty();
201 }
202
207 void Detach(void)
208 {
209 m_size = 0;
210 m_pData = NULL;
211 }
212
213private:
214 size_t m_size;
215 const BYTE* m_pData;
216};
217
218
219
220}; // TNB
221
情報群管理関係のヘッダ
リソース値設定補助クラス
CValue(LPCTSTR lpsz)
コンストラクタ.
CValue(int id)
コンストラクタ.
リソースデータ参照クラス
virtual size_t GetSize(void) const
[取得] 要素数取得.
virtual const BYTE & At(INDEX index) const
[取得] 要素の参照取得.
virtual bool Lock(DWORD dwTime=INFINITE) const
[排他] ロック
CConstResourceData(void)
コンストラクタ
bool Attach(CValue name, CValue type=RT_RCDATA, HMODULE hModule=NULL, WORD wLanguage=0)
[設定] アタッチ.
void Detach(void)
[設定] デタッチ.
virtual const BYTE * ReferBuffer(void) const
[取得] データアドレス取得.
virtual void Unlock(void) const
[排他] アンロック.
INDEX範囲外例外
Definition: TnbException.h:81
HINSTANCE GetInstanceHandleByTnb(EInstanceType type=EI_Process)
[取得] インスタンスハンドル取得.
Definition: TnbDef.h:1341
TNB Library
Definition: TnbDoxyTitle.txt:2
情報群管理インターフェーステンプレート
bool IsEmpty(void) const
[確認] 要素の有無確認.
bool IsInRange(INDEX index) const
[確認] INDEXの有効確認.
連続メモリ配置型情報群管理インターフェーステンプレート