46#pragma warning( disable : 4239 )
47#pragma warning( disable : 4786 )
48#pragma warning( disable : 4097 )
49#pragma warning( disable : 4100 )
50#pragma warning( disable : 4127 )
51#pragma warning( disable : 4702 )
52#pragma warning( disable : 4456 )
53#pragma warning( disable : 4840 )
54#pragma warning( disable : 4458 )
55#pragma warning( disable : 4457 )
72 #include <vcruntime_typeinfo.h>
74 #define GetProcAddressA GetProcAddress
78 #define TTRACE0(XX) TRACE0(XX)
79 #define TTRACE1(XX,P1) TRACE1(XX,P1)
80 #define TTRACE2(XX,P1,P2) TRACE2(XX,P1,P2)
81 #define TTRACE3(XX,P1,P2,P3) TRACE3(XX,P1,P2,P3)
82 #define TTRACE1A(XX,P1) TRACE1A(XX,P1)
83 #define TTRACE2A(XX,P1,P2) TRACE2A(XX,P1,P2)
84 #define TTRACE3A(XX,P1,P2,P3) TRACE3A(XX,P1,P2,P3)
87 #define TTRACE1(XX,P1)
88 #define TTRACE2(XX,P1,P2)
89 #define TTRACE3(XX,P1,P2,P3)
90 #define TTRACE1A(XX,P1)
91 #define TTRACE2A(XX,P1,P2)
92 #define TTRACE3A(XX,P1,P2,P3)
97 #define DEBUG_ONLY(XX)
100 #define TRACE2(XX,P1,P2)
101 #define TRACE3(XX,P1,P2,P3)
103 #define DEBUG_ONLY(XX) (XX)
104 #define TRACE0(XX) ::OutputDebugString(_T(XX))
105 #define TRACE1(XX,P1) do { TCHAR* _b=new TCHAR[1024]; TNB::STRLIB::PrintF(_b,1024,_T(XX),P1); ::OutputDebugString(_b); delete[] _b; } while ( false )
106 #define TRACE2(XX,P1,P2) do { TCHAR* _b=new TCHAR[1024]; TNB::STRLIB::PrintF(_b,1024,_T(XX),P1,P2); ::OutputDebugString(_b); delete[] _b; } while ( false )
107 #define TRACE3(XX,P1,P2,P3) do { TCHAR* _b=new TCHAR[1024]; TNB::STRLIB::PrintF(_b,1024,_T(XX),P1,P2,P3); ::OutputDebugString(_b); delete[] _b; } while ( false )
113 #define VERIFY(XX) (XX)
119 #if !defined(_WIN32_WCE)
121 #define ASSERT_REP(func,msg) _CrtDbgReport(_CRT_ASSERT,__FILE__,__LINE__,func,msg)
122 #define ASSERT_CHK(func,msg) \
123 do { if ( ASSERT_REP(func,msg)==1 ) { DebugBreak(); } } while ( false )
124 #define ASSERT0(expr,func,msg) \
125 do { if ( !(expr) ) { ASSERT_CHK(func,msg); } } while ( false )
126 #define ASSERT1(expr,func,msg,p1) \
127 do { if ( !(expr) ) { char* _b=new char[1024]; STRLIB::PrintF(_b,1024,msg,p1); ASSERT_CHK(func,_b); delete[] _b; } } while ( false )
128 #define ASSERT2(expr,func,msg,p1,p2) \
129 do { if ( !(expr) ) { char* _b=new char[1024]; STRLIB::PrintF(_b,1024,msg,p1,p2); ASSERT_CHK(func,_b); delete[] _b; } } while ( false )
130 #define ASSERT3(expr,func,msg,p1,p2,p3) \
131 do { if ( !(expr) ) { char* _b=new char[1024]; STRLIB::PrintF(_b,1024,msg,p1,p2,p3); ASSERT_CHK(func,_b); delete[] _b; } } while ( false )
134 #include <altcecrt.h>
135 #define ASSERT_REP(func,msg) (OutputDebugString(msg), OutputDebugString(_T("\r\n")), ::AfxAssertFailedLine(__FILE__,__LINE__))
137 #define ASSERT_REP(func ,msg) (OutputDebugString(msg), OutputDebugString(_T("\r\n")), DBGCHK(func, 0), 1)
139 #define ASSERT_CHK(func,msg) \
140 do { if ( ASSERT_REP(func,msg)==1 ) { DebugBreak(); } } while ( false )
141 #define ASSERT0(expr,func,msg) \
142 do { if ( !(expr) ) { ASSERT_CHK(func,_T(msg)); } } while ( false )
143 #define ASSERT1(expr,func,msg,p1) \
144 do { if ( !(expr) ) { TCHAR* _b=new TCHAR[1024]; STRLIB::PrintF(_b,1024,_T(msg),p1); ASSERT_CHK(func,_b); delete[] _b; } } while ( false )
145 #define ASSERT2(expr,func,msg,p1,p2) \
146 do { if ( !(expr) ) { TCHAR* _b=new TCHAR[1024]; STRLIB::PrintF(_b,1024,_T(msg),p1,p2); ASSERT_CHK(func,_b); delete[] _b; } } while ( false )
147 #define ASSERT3(expr,func,msg,p1,p2,p3) \
148 do { if ( !(expr) ) { TCHAR* _b=new TCHAR[1024]; STRLIB::PrintF(_b,1024,_T(msg),p1,p2,p3); ASSERT_CHK(func,_b); delete[] _b; } } while ( false )
151 #define ASSERTLIB(XX) ASSERT0(XX, "TNB Library", "TNB Library のバグの可能性があります。")
152 #define VERIFYLIB(XX) ASSERTLIB(XX)
154 #define ASSERT(XX) ASSERT1(XX, NULL, "[%s]\n\n上記箇所でアサートしました。", _T(#XX))
155 #if !defined(_WIN32_WCE)
156 #define TRACE1A(XX,P1) do { char* _b=new char[1024]; TNB::STRLIB::PrintF(_b,1024,XX,P1); ::OutputDebugStringA(_b); delete[] _b; } while ( false )
157 #define TRACE2A(XX,P1,P2) do { char* _b=new char[1024]; TNB::STRLIB::PrintF(_b,1024,XX,P1,P2); ::OutputDebugStringA(_b); delete[] _b; } while ( false )
158 #define TRACE3A(XX,P1,P2,P3) do { char* _b=new char[1024]; TNB::STRLIB::PrintF(_b,1024,XX,P1,P2,P3); ::OutputDebugStringA(_b); delete[] _b; } while ( false )
160 #define TRACE1A(XX,P1)
161 #define TRACE2A(XX,P1,P2)
162 #define TRACE3A(XX,P1,P2,P3)
165 #define ASSERT0(expr,func,msg)
166 #define ASSERT1(expr,func,msg,p1)
167 #define ASSERT2(expr,func,msg,p1,p2)
168 #define ASSERT3(expr,func,msg,p1,p2,p3)
169 #define ASSERTLIB(XX)
170 #define VERIFYLIB(XX) (XX)
171 #define TRACE1A(XX,P1)
172 #define TRACE2A(XX,P1,P2)
173 #define TRACE3A(XX,P1,P2,P3)
177 #define _GetLastError(XX) TNB::_LastErrorTrace(_T(__FILE__),__LINE__,_T(XX))
179 #define _GetLastError(XX) ::GetLastError()
183#define _BDMSG(x) _BDMSG0(x)
186#define _SELECTANY _declspec(selectany)
189 #define countof(X) (sizeof(X) / sizeof((X)[0]))
201 #define __noop (void)0
202 #define for if ( false ); else for
203 #define DEFSUPER(XX) typedef XX _super; typedef XX __super
205 #define DEFPARENTLISTENER(PARENT, INST) typedef IListener INST
206 #if defined(UNICODE) || defined(_UNICODE)
208 #pragma comment(linker, "/entry:\"wWinMainCRTStartup\"")
213 #define DEFSUPER(XX) typedef XX _super
214 #define _deprecated __declspec(deprecated)
215 #define DEFPARENTLISTENER(PARENT, INST) typedef PARENT::IListener INST
216 #if defined(__AFX_H__) && defined(_UNICODE) && defined(_DEBUG)
223 #define TRACE0(XX) ::OutputDebugStringW(_T(XX))
224 #define TRACE1(XX,P1) do { WCHAR* _b=new WCHAR[1024]; TNB::STRLIB::PrintF(_b,1024,_T(XX),P1); ::OutputDebugStringW(_b); delete[] _b; } while ( false )
225 #define TRACE2(XX,P1,P2) do { WCHAR* _b=new WCHAR[1024]; TNB::STRLIB::PrintF(_b,1024,_T(XX),P1,P2); ::OutputDebugStringW(_b); delete[] _b; } while ( false )
226 #define TRACE3(XX,P1,P2,P3) do { WCHAR* _b=new WCHAR[1024]; TNB::STRLIB::PrintF(_b,1024,_T(XX),P1,P2,P3); ::OutputDebugStringW(_b); delete[] _b; } while ( false )
230 #pragma warning ( disable : 4996 )
235 #pragma warning ( disable : 4793 )
236 #pragma comment(lib,"user32.lib")
240 #ifndef WM_PRINTCLIENT
241 #define WM_PRINTCLIENT -1
245#ifndef WM_THEMECHANGED
246 #define WM_THEMECHANGED 0x031A
250 #define DWORD_MAX 0xffffffffUL
254 #define DWORD_PTR ULONG_PTR
257#ifndef INVALID_SET_FILE_POINTER
258 #define INVALID_SET_FILE_POINTER 0xFFFFFFFF
262 typedef unsigned long ULONG_PTR, *PULONG_PTR;
266 typedef int INT_PTR, *PINT_PTR;
270 #define WS_EX_LAYERED 0x80000
274#define INVALID_SIZE ((size_t)(-1))
275#define INVALID_INDEX INVALID_SIZE
276inline bool IsValid(
size_t sz) {
return sz != INVALID_SIZE; }
277inline bool IsValid(HANDLE h) {
return h != INVALID_HANDLE_VALUE; }
278template<
typename TYP>
inline bool IsInvalid(TYP t) {
return ! IsValid(t); }
280 #define CLR_INVALID 0xFFFFFFFF
282#define CLR_AUTOSELECT 0xFEFFFFFF
283#define IS_RGBVALUE(RGB) (((RGB)&0xFF000000)==0)
297#define MESSAGE(d) message(__FILE__"("_BDMSG(__LINE__)") : message:" d)
307#define _BIT(X) (1ui64<<(X))
321#define _BIN(X) (TBinaryNotation<0##X>::VALUE)
343#define loop(VAR, CNT) for ( size_t VAR = 0, VAR##_size = CNT; VAR < VAR##_size; VAR++ )
355#define loop_dn(VAR, CNT) for ( size_t VAR##_r = 0, VAR##_size = CNT, VAR = CNT - 1; VAR##_r < VAR##_size; VAR--, VAR##_r++ )
376inline void MemCopy(T* _pDst,
const void* pSrc,
size_t len)
380 ASSERT( ! ::IsBadReadPtr(pSrc,
sizeof(T) * len) );
381 ASSERT( ! ::IsBadWritePtr(_pDst,
sizeof(T) * len) );
382 const T* P =
static_cast<const T*
>(pSrc);
383 while ( (len--) > 0 )
401 BYTE* B =
reinterpret_cast<BYTE*
>(&value);
402 size_t l =
sizeof(V);
443template<
typename TYP>
447 template<
typename SRC>
448 down_cast(SRC src) : m_typ(static_cast<TYP>(src))
450 ASSERT1( (SRC)(m_typ) == src,
"down_cast<>",
"オーバーフローしました。\nsource = %d", src );
452 down_cast(
float src) : m_typ(static_cast<TYP>(src))
454 ASSERT1( (LONGLONG)(m_typ) == LONGLONG(src),
"down_cast<>",
"オーバーフローしました。\nsource = %f", src );
456 down_cast(
double src) : m_typ(static_cast<TYP>(src))
458 ASSERT1( (LONGLONG)(m_typ) == LONGLONG(src),
"down_cast<>",
"オーバーフローしました。\nsource = %f", src );
460 operator TYP(
void)
const
469template<
typename T>
inline const T* Const(T* P)
471 return const_cast<const T*
>(P);
475template<
typename T>
inline int ToInt(T t)
477 return down_cast<int>(t);
481template<>
inline int ToInt(LONGLONG ll)
483 return down_cast<int>(ll);
487template<
typename T>
inline WORD ToWord(T t)
489 return down_cast<WORD>(t);
493template<
typename T>
inline DWORD
ToDword(T t)
495 return down_cast<DWORD>(t);
499template<
typename T>
inline INDEX ToIndex(T t)
501 return down_cast<INDEX>(t);
505template<
typename T1,
typename T2>
inline void _deprecated ForceSet(T1& t1,
const T2& t2)
512inline LONG InterlockedCompareExchange(LONG* _plDes, LONG lExchange, LONG lComperand)
514 typedef LONG (WINAPI* P_CompExc)(LONG*, LONG, LONG);
515 P_CompExc pCompExc =
reinterpret_cast<P_CompExc
>(&::InterlockedCompareExchange);
516 return pCompExc(_plDes, lExchange, lComperand);
521template<UINT n>
struct TBinaryNotation {
524 VALUE = BIT + (TBinaryNotation<n / 8u>::VALUE << 1u)
527template<>
struct TBinaryNotation<0> {
528 enum {BIT = 0, VALUE = 0};
531#ifdef __DEVICERESOLUTIONAWARE_H__
533inline int CalcScaleX(
int x) {
return DRA::SCALEX(x); }
534inline int CalcScaleX(
int x, HDC dc) {
return DRA::SCALEX(x); }
536inline int CalcScaleY(
int y) {
return DRA::SCALEY(y); }
537inline int CalcScaleY(
int y, HDC dc) {
return DRA::SCALEY(y); }
540inline int CalcScaleX(
int x, HDC dc)
542 return static_cast<int>(x * ::GetDeviceCaps(dc, LOGPIXELSX) / 96.0);
545inline int CalcScaleX(
int x)
547 HDC dc = ::GetDC(NULL);
548 int r = CalcScaleX(x, dc);
549 ::ReleaseDC(NULL, dc);
553inline int CalcScaleY(
int y, HDC dc)
555 return static_cast<int>(y * ::GetDeviceCaps(dc, LOGPIXELSY) / 96.0);
558inline int CalcScaleY(
int y)
560 HDC dc = ::GetDC(NULL);
561 int r = CalcScaleY(y, dc);
562 ::ReleaseDC(NULL, dc);
567inline void CalcScale(RECT& _rc)
569 _rc.left = CalcScaleX(_rc.left);
570 _rc.right = CalcScaleX(_rc.right);
571 _rc.top = CalcScaleY(_rc.top);
572 _rc.bottom = CalcScaleY(_rc.bottom);
575inline void CalcScale(SIZE& _sz)
577 _sz.cx = CalcScaleX(_sz.cx);
578 _sz.cy = CalcScaleY(_sz.cy);
581inline void CalcScale(POINT& _po)
583 _po.x = CalcScaleX(_po.x);
584 _po.y = CalcScaleY(_po.y);
631template<
typename TYP>
646 CWorkMemT(
size_t l) : m_size(l), m_lpBuf(new TYP[(l == 0) ? 1 : l])
654 if ( m_lpBuf != NULL )
680 m_lpBuf =
new TYP[l];
700 operator const TYP*(void)
const {
return m_lpBuf; }
706 operator TYP*(void) {
return m_lpBuf; }
712 const TYP*
Ref(
void)
const {
return m_lpBuf; }
718 TYP*
Ref(
void) {
return m_lpBuf; }
815 size_t l = _tcslen(lpsz) + 1;
830 return P == NULL || *P == 0;
840 LPCTSTR
Ref(
void)
const {
return m_str; }
845 operator LPCTSTR(
void)
const {
return m_str; }
850 operator LPTSTR(
void) {
return m_str; }
912 size_t l = strlen(lpsz) + 1;
927 return P == NULL || *P == 0;
937 LPCSTR
Ref(
void)
const {
return m_str; }
942 operator LPCSTR(
void)
const {
return m_str; }
947 operator LPSTR(
void) {
return m_str; }
963template<
typename T>
void Swap(T& t1, T& t2)
983 LPTSTR lpMsgBuf = NULL;
984 LPTSTR lpBuff =
reinterpret_cast<LPTSTR
>(&lpMsgBuf);
985 DWORD flag = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS;
986 DWORD r = ::FormatMessage(flag, NULL, dwError, LANG_USER_DEFAULT, lpBuff, 0, NULL);
989 _str = _T(
"Unknown");
995 size_t l = _tcslen(P);
998 if ( *P ==
'\n' || *P ==
'\r' )
1004 ::LocalFree(lpMsgBuf);
1021 *(
reinterpret_cast<BYTE*
>(&ret) + 0) = *(
reinterpret_cast<BYTE*
>(&val) + 1);
1022 *(
reinterpret_cast<BYTE*
>(&ret) + 1) = *(
reinterpret_cast<BYTE*
>(&val) + 0);
1039 *(
reinterpret_cast<BYTE*
>(&ret) + 0) = *(
reinterpret_cast<BYTE*
>(&val) + 3);
1040 *(
reinterpret_cast<BYTE*
>(&ret) + 1) = *(
reinterpret_cast<BYTE*
>(&val) + 2);
1041 *(
reinterpret_cast<BYTE*
>(&ret) + 2) = *(
reinterpret_cast<BYTE*
>(&val) + 1);
1042 *(
reinterpret_cast<BYTE*
>(&ret) + 3) = *(
reinterpret_cast<BYTE*
>(&val) + 0);
1059 ret = (ULONGLONG) (
SwapEndian((DWORD)(val >> 32))) << 32;
1060 ret |= (
SwapEndian((DWORD)(val & 0x00000000FFFFFFFF)));
1080 inline bool VPrintF(LPSTR _pWork,
size_t iLen, LPCSTR lpFmt, va_list V)
1083 #if _MSC_VER < 1400 || defined(_WIN32_WCE)
1084 return vsprintf(_pWork, lpFmt, V) >= 0;
1086 return vsprintf_s(_pWork, iLen, lpFmt, V) >= 0;
1101 inline bool PrintF(LPSTR _pWork,
size_t iLen, LPCSTR lpFmt, ...)
1104 va_start(args, lpFmt);
1105 bool r =
VPrintF(_pWork, iLen, lpFmt, args);
1121 inline bool VPrintF(LPWSTR _pWork,
size_t iLen, LPCWSTR lpFmt, va_list V)
1124 #if _MSC_VER < 1400 || defined(_WIN32_WCE)
1125 return vswprintf(_pWork, lpFmt, V) >= 0;
1127 return vswprintf_s(_pWork, iLen, lpFmt, V) >= 0;
1142 inline bool PrintF(LPWSTR _pWork,
size_t iLen, LPCWSTR lpFmt, ...)
1145 va_start(args, lpFmt);
1146 bool r =
VPrintF(_pWork, iLen, lpFmt, args);
1163 *_pWork++ =
static_cast<char>((dw % 26) +
'A');
1181 *_pWork++ =
static_cast<WCHAR
>((dw % 26) +
'A');
1194inline DWORD _LastErrorTrace(LPCTSTR lpszFile,
int line, LPCTSTR lpsz)
1196 DWORD dwErr = ::GetLastError();
1197 if ( dwErr != ERROR_SUCCESS )
1201 TRACE2(
"%s(%d): ", lpszFile, line );
1202 TRACE3(
"API[%s()]失敗 Last Error Code = 0x%08x(%s)\n", lpsz, dwErr, s.
Ref() );
1203 ::SetLastError(dwErr);
1208inline BOOL _DeleteObject(HGDIOBJ h)
1211 if ( ::GetObjectType(h) == NULL )
1213 ASSERT0(
false,
"DeleteObject",
"破棄されたGDIオブジェクトを破棄しようとしています。" );
1216 BOOL r = ::DeleteObject(h);
1217 ASSERT1( r,
"DeleteObject",
"GDIオブジェクトの破棄に失敗しました。\ncode = %d\ntype = 0x%08X", ::GetLastError() );
1220 return ::DeleteObject(h);
1240 const BYTE* B =
static_cast<const BYTE*
>(P);
1244 dwRc += B[i] << ((i + B[0]) & 0x0F);
1271 LONG_PTR* plNullBase;
1272 LONG_PTR alNullBase[8];
1273 HINSTANCE ahInstances[4];
1275 _SELECTANY TTnbParam g_tnbParam = { g_tnbParam.alNullBase };
1276 _SELECTANY TTnbParam* g_pTnbParam = &g_tnbParam;
1278 #define g_plNullBase g_pTnbParam->plNullBase
1281 #define ASEERT_NULLBASE ASSERTLIB((g_plNullBase[0]|g_plNullBase[1]|g_plNullBase[2]|g_plNullBase[3]| \
1282 g_plNullBase[4]|g_plNullBase[5]|g_plNullBase[6]|g_plNullBase[7])==0);
1298 if ( g_pTnbParam == &g_tnbParam )
1300 TCHAR buf[20] = _T(
"_!TnbLib!_");
1302 HANDLE hMap = ::CreateFileMapping(
reinterpret_cast<HANDLE
>(-1), NULL, PAGE_READWRITE, 0,
sizeof(TTnbParam), buf);
1303 ASSERT0( hMap != NULL,
"InitializeTnbLibrary",
"管理メモリが確保できませんでした。" );
1304 bool isFirst = (::GetLastError() != ERROR_ALREADY_EXISTS);
1305 g_pTnbParam =
static_cast<TTnbParam*
>(::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0));
1306 ASSERT0( g_pTnbParam != NULL,
"InitializeTnbLibrary",
"管理メモリが確保できませんでした。" );
1309 g_pTnbParam->plNullBase = g_pTnbParam->alNullBase;
1326 g_pTnbParam->ahInstances[type] = hInstance;
1343 if ( g_pTnbParam->ahInstances[type] == NULL )
1346 g_pTnbParam->ahInstances[type] = ::AfxGetInstanceHandle();
1348 g_pTnbParam->ahInstances[type] = g_pTnbParam->ahInstances[
EI_Process];
1351 return g_pTnbParam->ahInstances[type];
1368#ifndef _TnbUSINGNAMESPACE_DISABLE
1369 using namespace TNB;
#define loop(VAR, CNT)
loop構文.
~CCopyImpossible(void)
デストラクタ
CCopyImpossible(void)
デフォルトコンストラクタ
CSimpleAscii & operator=(LPCSTR lpsz)
[代入] 代入.
CSimpleAscii(const CSimpleAscii &other)
コンストラクタ
bool IsEmpty(void) const
[確認] 空チェック
CSimpleAscii(LPCSTR lpsz=NULL)
コンストラクタ
LPCSTR Ref(void) const
[取得] 文字列参照
CSimpleAscii & operator=(const CSimpleAscii &other)
[代入] 代入.
CSimpleStr & operator=(LPCTSTR lpsz)
[代入] 代入.
bool IsEmpty(void) const
[確認] 空チェック
CSimpleStr(const CSimpleStr &other)
コンストラクタ
LPCTSTR Ref(void) const
[取得] 文字列参照
CSimpleStr(LPCTSTR lpsz=NULL)
コンストラクタ
CSimpleStr & operator=(const CSimpleStr &other)
[代入] 代入.
size_t GetSize(void) const
[取得] サイズ取得
void Fill(const TYP &other)
[設定] 全情報代入.
CWorkMemT(size_t l)
コンストラクタ
void Swap(CWorkMemT &_other)
[設定] スワップ.
TYP * Ref(void)
[取得] ポインタ取得
void Resize(size_t l)
[設定] サイズ再設定
void Reset(size_t l, const TYP *P)
[設定] 再設定
const TYP * Ref(void) const
[取得] ポインタ取得
CWorkMemT< BYTE > CWorkMem
ワークメモリ.
DWORD ToDword(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
int ToInt(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
void SystemErrorToMessageText(CSimpleStr &_str, DWORD dwError)
[変換] SystemErrorコード文字列化.
void Swap(T &t1, T &t2)
[変換] スワッパー.
bool IsInRange(INDEX value, size_t size)
[確認] 範囲チェック.
void IgnoreUnusedValue(const T &value)
[宣言] 参照しない値宣言.
void Zero(V &value)
[設定] ゼロクリア.
WORD SwapEndian(WORD val)
[変換] エンディアン変換.
EInstanceType
インスタンスハンドル種.
HINSTANCE GetInstanceHandleByTnb(EInstanceType type=EI_Process)
[取得] インスタンスハンドル取得.
void SetInstanceHandleByTnb(EInstanceType type, HINSTANCE hInstance)
[設定] インスタンスハンドル指定.
DWORD CalcHash(const IConstCollectionT< TYP > &c)
COLLECT [HASH] ハッシュ値計算.
void IdToString(LPSTR _pWork, DWORD dw)
[作成] 識別用文字列作成(ASCII用) 32bit文字を一意の文字列に変換します。
bool VPrintF(LPSTR _pWork, size_t iLen, LPCSTR lpFmt, va_list V)
[作成] 書式付き文字列作成(ASCII/SJIS用)
bool PrintF(LPSTR _pWork, size_t iLen, LPCSTR lpFmt,...)
[作成] 書式付き文字列作成(ASCII/SJIS用)
void MemCopy(T *_pDst, const void *pSrc, size_t len)
[複製] メモリコピー
void InitializeTnbLibrary(void)
[設定] ライブラリ初期化.