TNB Library
TnbRapiFileFinder.h
[詳解]
1#pragma once
11#include "TnbFileFinder.h"
12#include "TnbStr.h"
13#include "TnbRapi.h"
14
15
16
17//TNB Library
18namespace TNB
19{
20
21
22
37{
38 DEFSUPER(CAbstractFileFinder);
39public:
40
42 CRapiFileFinder(void) : _super(), m_hFind(INVALID_HANDLE_VALUE)
43 {
45 }
46
48 virtual ~CRapiFileFinder(void)
49 {
50 Finish();
51 }
52
53protected:
54
62 virtual bool OnStart(WIN32_FIND_DATA& _data, LPCTSTR lpszName)
63 {
64 if ( ! CRapi::IsSupported() ) { return false; }
65 Finish();
66 CE_FIND_DATA ceFd;
67 m_hFind = ::CeFindFirstFile(CUnicode(lpszName), &ceFd);
68 bool r = (m_hFind != INVALID_HANDLE_VALUE);
69 if ( r )
70 {
71 m_CeFindDataToWin32(_data, ceFd);
72 }
73 return r;
74 }
75
84 virtual bool OnNext(WIN32_FIND_DATA& _data)
85 {
86 if ( ! CRapi::IsSupported() ) { return false; }
87 if ( m_hFind != INVALID_HANDLE_VALUE )
88 {
89 CE_FIND_DATA ceFd;
90 bool r = !! ::CeFindNextFile(m_hFind, &ceFd);
91 if ( r )
92 {
93 m_CeFindDataToWin32(_data, ceFd);
94 }
95 return r;
96 }
97 return false;
98 }
99
104 virtual void OnFinish(void)
105 {
106 if ( CRapi::IsSupported() && m_hFind != INVALID_HANDLE_VALUE )
107 {
108 ::CeFindClose(m_hFind);
109 m_hFind = INVALID_HANDLE_VALUE;
110 }
111 }
112
113private:
114 HANDLE m_hFind;
116 void m_CeFindDataToWin32(WIN32_FIND_DATA& _winFd, const CE_FIND_DATA& ceFd)
117 {
118 Zero(_winFd);
119 _winFd.dwFileAttributes = ceFd.dwFileAttributes;
120 _winFd.ftCreationTime = ceFd.ftCreationTime;
121 _winFd.ftLastAccessTime = ceFd.ftLastAccessTime;
122 _winFd.ftLastWriteTime = ceFd.ftLastWriteTime;
123 _winFd.nFileSizeHigh = ceFd.nFileSizeHigh;
124 _winFd.nFileSizeLow = ceFd.nFileSizeLow;
125 CStr s = ceFd.cFileName;
126 STRLIB::Copy(_winFd.cFileName, s);
127 }
128 friend class CCeFileFinderTest;
129};
130
131
132
133}; //TNB
134
135
136
ファイル検索関係のヘッダ
RAPI 関係のヘッダ
文字列管理関係のヘッダ
ファイル検索抽象クラス
Definition: TnbFileFinder.h:33
void Finish(void)
[設定] 検索終了.
RAPI ファイル検索クラス
CRapiFileFinder(void)
コンストラクタ
virtual ~CRapiFileFinder(void)
デストラクタ
virtual void OnFinish(void)
[通知] 検索終了通知
virtual bool OnStart(WIN32_FIND_DATA &_data, LPCTSTR lpszName)
[通知] 検索開始通知
virtual bool OnNext(WIN32_FIND_DATA &_data)
[通知] 次検索通知
static bool IsSupported(void)
[確認] サポート確認.
Definition: TnbRapi.h:127
static bool Startup(void)
[設定] RAPI 初期化.
Definition: TnbRapi.h:81
TNB::CStrT< WCHAR > CUnicode
UNICODE文字列クラス
Definition: TnbStr.h:1771
void Copy(LPSTR _dst, LPCSTR src)
[複製] 文字列コピー(ASCII/SJIS用)
Definition: TnbStrLib.h:89
void Zero(V &value)
[設定] ゼロクリア.
Definition: TnbDef.h:399
TNB Library
Definition: TnbDoxyTitle.txt:2