soui
5.0.0.1
Soui5 Doc
Loading...
Searching...
No Matches
SResID.h
1
#ifndef __SRESID__H__
2
#define __SRESID__H__
3
4
#include <tchar.h>
5
6
#define MAX_RES_TYPE 30
// 资源类型预定义,最大长度不超过MAX_RES_TYPE
7
#define MAX_RES_NAME 100
// 注意:给资源名称时,最大长度不要超过MAX_RES_NAME
8
9
SNSBEGIN
10
11
/**
12
* @class SResID
13
* @brief 资源标识符类
14
*/
15
class
SResID
{
16
public
:
17
/**
18
* @brief 构造函数
19
* @param pszType 资源类型字符串
20
* @param pszName 资源名称字符串
21
*/
22
SResID
(LPCTSTR pszType, LPCTSTR pszName)
23
{
24
memset(
this
, 0,
sizeof
(
SResID
));
25
if
(pszType)
26
_tcscpy_s(
szType
, MAX_RES_TYPE, pszType);
27
if
(pszName)
28
_tcscpy_s(
szName
, MAX_RES_NAME, pszName);
29
_tcslwr(
szType
);
30
_tcslwr(
szName
);
31
}
32
33
/**
34
* @brief 资源类型字符串
35
*/
36
TCHAR
szType
[MAX_RES_TYPE + 1];
37
38
/**
39
* @brief 资源名称字符串
40
*/
41
TCHAR
szName
[MAX_RES_NAME + 1];
42
};
43
44
/**
45
* @class CElementTraits<SResID>
46
* @brief 特性类,用于定义SResID的哈希和比较操作
47
*/
48
template
<>
49
class
CElementTraits<
SResID
> :
public
CElementTraitsBase<SResID> {
50
public
:
51
/**
52
* @brief 计算SResID对象的哈希值
53
* @param resid SResID对象
54
* @return 哈希值
55
*/
56
static
ULONG
Hash
(INARGTYPE resid)
57
{
58
ULONG nHash = 0;
59
60
const
TCHAR *pch = resid.szType;
61
while
(*pch != 0)
62
{
63
nHash = (nHash << 5) + nHash + (*pch);
64
pch++;
65
}
66
67
pch = resid.szName;
68
while
(*pch != 0)
69
{
70
nHash = (nHash << 5) + nHash + (*pch);
71
pch++;
72
}
73
return
(nHash);
74
}
75
76
/**
77
* @brief 比较两个SResID对象是否相等
78
* @param element1 第一个SResID对象
79
* @param element2 第二个SResID对象
80
* @return 如果相等返回true,否则返回false
81
*/
82
static
bool
CompareElements
(INARGTYPE element1, INARGTYPE element2)
83
{
84
return
_tcscmp(element1.szType, element2.szType) == 0 && _tcscmp(element1.szName, element2.szName) == 0;
85
}
86
87
/**
88
* @brief 比较两个SResID对象的顺序
89
* @param element1 第一个SResID对象
90
* @param element2 第二个SResID对象
91
* @return 如果element1小于element2返回负数,如果相等返回0,如果element1大于element2返回正数
92
*/
93
static
int
CompareElementsOrdered
(INARGTYPE element1, INARGTYPE element2)
94
{
95
int
nRet = _tcscmp(element1.szType, element2.szType);
96
if
(nRet == 0)
97
nRet = _tcscmp(element1.szName, element2.szName);
98
return
nRet;
99
}
100
};
101
102
SNSEND
103
#endif
// __SRESID__H__
CElementTraits< SResID >::CompareElements
static bool CompareElements(INARGTYPE element1, INARGTYPE element2)
比较两个SResID对象是否相等
Definition
SResID.h:82
CElementTraits< SResID >::CompareElementsOrdered
static int CompareElementsOrdered(INARGTYPE element1, INARGTYPE element2)
比较两个SResID对象的顺序
Definition
SResID.h:93
CElementTraits< SResID >::Hash
static ULONG Hash(INARGTYPE resid)
计算SResID对象的哈希值
Definition
SResID.h:56
SResID
资源标识符类
Definition
SResID.h:15
SResID::SResID
SResID(LPCTSTR pszType, LPCTSTR pszName)
构造函数
Definition
SResID.h:22
SResID::szType
TCHAR szType[30+1]
资源类型字符串
Definition
SResID.h:36
SResID::szName
TCHAR szName[100+1]
资源名称字符串
Definition
SResID.h:41
SOUI
include
helper
SResID.h
Generated by
1.13.2