#pragma once #include #define MAX_RES_TYPE 30 //资源类型预定义,最大长度不超过10 #define MAX_RES_NAME 100 //注意:给资源令名时,最大长度不要超过MAX_RES_NAME namespace SOUI { class SResID { public: SResID(LPCTSTR pszType, LPCTSTR pszName) { memset(this, 0, sizeof(SResID)); if (pszType) _tcscpy_s(szType, MAX_RES_TYPE, pszType); if (pszName) _tcscpy_s(szName, MAX_RES_NAME, pszName); _tcslwr(szType); _tcslwr(szName); } TCHAR szType[MAX_RES_TYPE + 1]; TCHAR szName[MAX_RES_NAME + 1]; }; template<> class CElementTraits : public CElementTraitsBase { public: static ULONG Hash(INARGTYPE resid) { ULONG nHash = 0; const TCHAR * pch = resid.szType; while (*pch != 0) { nHash = (nHash << 5) + nHash + (*pch); pch++; } pch = resid.szName; while (*pch != 0) { nHash = (nHash << 5) + nHash + (*pch); pch++; } return(nHash); } static bool CompareElements(INARGTYPE element1, INARGTYPE element2) { return _tcscmp(element1.szType, element2.szType) == 0 && _tcscmp(element1.szName, element2.szName) == 0; } static int CompareElementsOrdered(INARGTYPE element1, INARGTYPE element2) { int nRet = _tcscmp(element1.szType, element2.szType); if (nRet == 0) nRet = _tcscmp(element1.szName, element2.szName); return nRet; } }; }//end of namespace SOUI