1#ifndef __SWNDFINDER__H__
2#define __SWNDFINDER__H__
43class CElementTraits<
SFindInfo> :
public CElementTraitsBase<SFindInfo> {
50 static ULONG
Hash(INARGTYPE fi)
54 lRet = SStringElementTraits<SStringW>::Hash(fi.strName);
67 key.sep.hParent = fi.hParent;
68 key.sep.nDeep = fi.nDeep;
69 key.sep.findByName = fi.findByName;
83 bool bRet = element1.findByName == element2.findByName;
85 bRet = element1.hParent == element2.hParent;
88 if (element1.findByName)
89 bRet = element1.strName == element2.strName;
91 bRet = element1.nID == element2.nID;
104 int nRet = element1.findByName - element2.findByName;
106 nRet = element1.hParent - element2.hParent;
109 if (element1.findByName)
110 nRet = element1.strName.Compare(element2.strName);
112 nRet = element1.nID - element2.nID;
123 SINGLETON2_TYPE(SINGLETON_WINDOWFINDER)
125 friend class SWindow;
144 SWindow *
FindChildByID(SWindow *pParent,
int nID,
int nDeep);
162 void CacheResultForID(SWindow *pParent,
int nID,
int nDeep, SWindow *pResult);
173 typedef SMap<SFindInfo, SWND> FINDCACHE;
174 FINDCACHE m_findCache;
Pseudo-Singleton Template.
static bool CompareElements(INARGTYPE element1, INARGTYPE element2)
比较两个SFindInfo对象是否相等
static ULONG Hash(INARGTYPE fi)
计算SFindInfo对象的哈希值
static int CompareElementsOrdered(INARGTYPE element1, INARGTYPE element2)
比较两个SFindInfo对象的顺序
A class representing an ASCII string.
void CacheResultForID(SWindow *pParent, int nID, int nDeep, SWindow *pResult)
缓存通过ID查找的结果
SWindow * FindChildByName(SWindow *pParent, const SStringW &strName, int nDeep)
通过名称查找子窗口
SWindow * FindChildByID(SWindow *pParent, int nID, int nDeep)
通过ID查找子窗口
SWindow * FindChildByKey(SWindow *pParent, const SFindInfo &fi)
通过查找信息查找子窗口
void CacheResultForName(SWindow *pParent, const SStringW &strName, int nDeep, SWindow *pResult)
缓存通过名称查找的结果
Base class for SOUI DUI windows.
SFindInfo(SWindow *pParent, const SStringW &strName, int nDeep)
构造函数,通过名称查找