soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
SwndFinder.cpp
1#include "souistd.h"
2#include <helper/SwndFinder.h>
3#include <core/SWnd.h>
4
5SNSBEGIN
6
7SFindInfo::SFindInfo(SWindow *pParent, const SStringW &_strName, int _nDeep)
8 : hParent(pParent->GetSwnd())
9 , strName(_strName)
10 , nDeep(_nDeep)
11 , findByName(true)
12{
13}
14
15SFindInfo::SFindInfo(SWindow *pParent, int _nID, int _nDeep)
16 : hParent(pParent->GetSwnd())
17 , nID(_nID)
18 , nDeep(_nDeep)
19 , findByName(false)
20{
21}
22
23//////////////////////////////////////////////////////////////////////////
24SWindow *SWindowFinder::FindChildByName(SWindow *pParent, const SStringW &strName, int nDeep)
25{
26 SFindInfo fi(pParent, strName, nDeep);
27 return FindChildByKey(pParent, fi);
28}
29
30SWindow *SWindowFinder::FindChildByID(SWindow *pParent, int nID, int nDeep)
31{
32 SFindInfo fi(pParent, nID, nDeep);
33 return FindChildByKey(pParent, fi);
34}
35
36SWindow *SWindowFinder::FindChildByKey(SWindow *pParent, const SFindInfo &fi)
37{
38 FINDCACHE::CPair *pFind = m_findCache.Lookup(fi);
39 if (!pFind)
40 {
41 return NULL;
42 }
43 else
44 {
45 SWindow *pRet = SWindowMgr::GetWindow(pFind->m_value);
46 if (!pRet)
47 {
48 m_findCache.RemoveKey(fi);
49 }
50 return pRet;
51 }
52}
53
54void SWindowFinder::CacheResultForName(SWindow *pParent, const SStringW &strName, int nDeep, SWindow *pResult)
55{
56 SFindInfo fi(pParent, strName, nDeep);
57 SASSERT(m_findCache.Lookup(fi) == NULL);
58 SASSERT(pResult);
59 m_findCache[fi] = pResult->GetSwnd();
60}
61
62void SWindowFinder::CacheResultForID(SWindow *pParent, int nID, int nDeep, SWindow *pResult)
63{
64 SFindInfo fi(pParent, nID, nDeep);
65 SASSERT(m_findCache.Lookup(fi) == NULL);
66 SASSERT(pResult);
67 m_findCache[fi] = pResult->GetSwnd();
68}
69
70SNSEND
SOUI基础DUI窗口模块
A class representing an ASCII string.
Definition sstringw.h:96
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.
Definition SWnd.h:286
SWND GetSwnd() SCONST OVERRIDE
Retrieves the window handle.
Definition Swnd.cpp:489
static SWindow * GetWindow(SWND swnd)
Retrieves the SWindow pointer from a given handle.
查找信息结构体
Definition SwndFinder.h:13
SFindInfo(SWindow *pParent, const SStringW &strName, int nDeep)
构造函数,通过名称查找
Definition SwndFinder.cpp:7