本文整理汇总了C++中CFileFind::GetRoot方法的典型用法代码示例。如果您正苦于以下问题:C++ CFileFind::GetRoot方法的具体用法?C++ CFileFind::GetRoot怎么用?C++ CFileFind::GetRoot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFileFind
的用法示例。
在下文中一共展示了CFileFind::GetRoot方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddRecursiveFiles
void COpenFileDlg::AddRecursiveFiles( const CUString& strDir,int nItem )
{
CFileFind fileFind;
CUString pathAndFileType = strDir + CUString( _W( "\\*.*" ));
BOOL bStop=FALSE;
CUStringConvert strCnv;
// Iterate through the items in the listbox and populate the listconrol.
if (fileFind.FindFile( strCnv.ToT( pathAndFileType ) ) )
{
do
{
bStop=(fileFind.FindNextFile()==0);
CUString strFileName = CUString( fileFind.GetFileName() );
CUString strFileRoot = CUString( fileFind.GetRoot() );
CUString strFileType;
if ( TRUE == fileFind.IsDirectory() &&
FALSE == fileFind.IsDots() &&
TRUE == m_bRecursiveDir )
{
AddRecursiveFiles( strDir + CUString( _W( "\\" ) ) + strFileName, nItem );
}
if (fileFind.IsDirectory()==FALSE && fileFind.IsDots()==FALSE)
{
int nPos=strFileName.ReverseFind( _T( '.' ) );
if (nPos>0)
{
CUString strExt;
strExt = strFileName.Right(strFileName.GetLength()-nPos-1);
strFileType = strExt;
strExt.MakeUpper();
if ( CompareExt( strExt ) == TRUE )
{
CUString strFileSize;
CUString strFileDate;
CTime fileTime;
// Get the data/time stamp of this file
fileFind.GetLastWriteTime( fileTime );
// Format date time string
strFileDate.Format( _W( "%4d/%02d/%02d %02d:%02d" ), fileTime.GetYear(), fileTime.GetMonth(), fileTime.GetDay(), fileTime.GetHour(), fileTime.GetMinute() );
strFileSize.Format( _W( "%10.2f" ), fileFind.GetLength() / ( 1024.0 * 1024.0 ) );
CUStringConvert strCnv;
m_ctrlRequestedFiles.InsertItem( nItem, strCnv.ToT( strFileName ));
m_ctrlRequestedFiles.SetItemText( nItem, FILE_OPEN_TYPE, strCnv.ToT( strFileType ) );
m_ctrlRequestedFiles.SetItemText( nItem, FILE_OPEN_DATE ,strCnv.ToT( strFileDate ) );
m_ctrlRequestedFiles.SetItemText( nItem, FILE_OPEN_PATH, strCnv.ToT( strFileRoot ) );
m_ctrlRequestedFiles.SetItemText( nItem, FILE_OPEN_SIZE, strCnv.ToT( strFileSize ) );
m_ctrlRequestedFiles.SetItemData( nItem, (DWORD)fileTime.GetTime() );
nItem++;
}
}
}
} while (bStop!=TRUE);
}
m_bSortAscending=TRUE;
}
示例2: InitInstance
BOOL CRadiantApp::InitInstance()
{
// If there's a .INI file in the directory use it instead of registry
char RadiantPath[_MAX_PATH];
GetModuleFileName( NULL, RadiantPath, _MAX_PATH );
// search for exe
CFileFind Finder;
Finder.FindFile( RadiantPath );
Finder.FindNextFile();
// extract root
CString Root = Finder.GetRoot();
// build root\*.ini
CString IniPath = Root + "\\REGISTRY.INI";
// search for ini file
Finder.FindNextFile();
char dllPath[ MAX_OSPATH ];
fileSystem->FindDLL( "tools/Tools", dllPath, false );
if ( !dllPath[ 0 ] ) {
return NULL;
}
m_pszAppName = dllPath;
if (Finder.FindFile( IniPath ))
{
Finder.FindNextFile();
// use the .ini file instead of the registry
free((void*)m_pszProfileName);
m_pszProfileName=_tcsdup(_T(Finder.GetFilePath()));
// look for the registry key for void* buffers storage ( these can't go into .INI files )
int i=0;
CString key;
HKEY hkResult;
DWORD dwDisp;
DWORD type;
char iBuf[3];
do
{
sprintf( iBuf, "%d", i );
key = "Software\\Q3Radiant\\IniPrefs" + CString(iBuf);
// does this key exists ?
if ( RegOpenKeyEx( HKEY_CURRENT_USER, key, 0, KEY_ALL_ACCESS, &hkResult ) != ERROR_SUCCESS )
{
// this key doesn't exist, so it's the one we'll use
strcpy( g_qeglobals.use_ini_registry, key.GetBuffer(0) );
RegCreateKeyEx( HKEY_CURRENT_USER, key, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkResult, &dwDisp );
RegSetValueEx( hkResult, "RadiantName", 0, REG_SZ, reinterpret_cast<CONST BYTE *>(RadiantPath), strlen( RadiantPath )+1 );
RegCloseKey( hkResult );
break;
}
else
{
char RadiantAux[ _MAX_PATH ];
unsigned long size = _MAX_PATH;
// the key exists, is it the one we are looking for ?
RegQueryValueEx( hkResult, "RadiantName", 0, &type, reinterpret_cast<BYTE *>(RadiantAux), &size );
RegCloseKey( hkResult );
if ( !strcmp( RadiantAux, RadiantPath ) )
{
// got it !
strcpy( g_qeglobals.use_ini_registry, key.GetBuffer(0) );
break;
}
}
i++;
} while (1);
g_qeglobals.use_ini = true;
}
else
{
// Change the registry key under which our settings are stored.
SetRegistryKey( EDITOR_REGISTRY_KEY );
g_qeglobals.use_ini = false;
}
m_hInstance = win32.hInstance;
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.
// CMultiDocTemplate* pDocTemplate;
// pDocTemplate = new CMultiDocTemplate(
// IDR_RADIANTYPE,
// RUNTIME_CLASS(CRadiantDoc),
// RUNTIME_CLASS(CMainFrame), // custom MDI child frame
// RUNTIME_CLASS(CRadiantView));
// AddDocTemplate(pDocTemplate);
// create main MDI Frame window
//afxCurrentWinApp = this;
g_PrefsDlg.LoadPrefs();
qglEnableClientState( GL_VERTEX_ARRAY );
CString strTemp = m_lpCmdLine;
//.........这里部分代码省略.........
示例3: InitInstance
BOOL CRadiantApp::InitInstance() {
//g_hOpenGL32 = ::LoadLibrary("opengl32.dll");
// AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
//AfxEnableMemoryTracking(FALSE);
#ifdef _AFXDLL
//Enable3dControls(); // Call this when using MFC in a shared DLL
#else
//Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// If there's a .INI file in the directory use it instead of registry
char RadiantPath[_MAX_PATH];
GetModuleFileName( NULL, RadiantPath, _MAX_PATH );
// search for exe
CFileFind Finder;
Finder.FindFile( RadiantPath );
Finder.FindNextFile();
// extract root
CString Root = Finder.GetRoot();
// build root\*.ini
CString IniPath = Root + "\\REGISTRY.INI";
// search for ini file
Finder.FindNextFile();
if( Finder.FindFile( IniPath ) ) {
Finder.FindNextFile();
// use the .ini file instead of the registry
free( ( void * )m_pszProfileName );
m_pszProfileName = _tcsdup( _T( Finder.GetFilePath() ) );
// look for the registry key for void* buffers storage ( these can't go into .INI files )
int i = 0;
CString key;
HKEY hkResult;
DWORD dwDisp;
DWORD type;
char iBuf[3];
do {
sprintf( iBuf, "%d", i );
key = "Software\\Q3Radiant\\IniPrefs" + CString( iBuf );
// does this key exists ?
if( RegOpenKeyEx( HKEY_CURRENT_USER, key, 0, KEY_ALL_ACCESS, &hkResult ) != ERROR_SUCCESS ) {
// this key doesn't exist, so it's the one we'll use
strcpy( g_qeglobals.use_ini_registry, key.GetBuffer( 0 ) );
RegCreateKeyEx( HKEY_CURRENT_USER, key, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkResult, &dwDisp );
RegSetValueEx( hkResult, "RadiantName", 0, REG_SZ, reinterpret_cast<CONST BYTE *>( RadiantPath ), strlen( RadiantPath ) + 1 );
RegCloseKey( hkResult );
break;
} else {
char RadiantAux[ _MAX_PATH ];
unsigned long size = _MAX_PATH;
// the key exists, is it the one we are looking for ?
RegQueryValueEx( hkResult, "RadiantName", 0, &type, reinterpret_cast<BYTE *>( RadiantAux ), &size );
RegCloseKey( hkResult );
if( !strcmp( RadiantAux, RadiantPath ) ) {
// got it !
strcpy( g_qeglobals.use_ini_registry, key.GetBuffer( 0 ) );
break;
}
}
i++;
} while( 1 );
g_qeglobals.use_ini = true;
} else {
// Change the registry key under which our settings are stored.
SetRegistryKey( EDITOR_REGISTRY_KEY );
g_qeglobals.use_ini = false;
}
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.
// CMultiDocTemplate* pDocTemplate;
// pDocTemplate = new CMultiDocTemplate(
// IDR_RADIANTYPE,
// RUNTIME_CLASS(CRadiantDoc),
// RUNTIME_CLASS(CMainFrame), // custom MDI child frame
// RUNTIME_CLASS(CRadiantView));
// AddDocTemplate(pDocTemplate);
// create main MDI Frame window
g_PrefsDlg.LoadPrefs();
glEnableClientState( GL_VERTEX_ARRAY );
CString strTemp = m_lpCmdLine;
strTemp.MakeLower();
if( strTemp.Find( "builddefs" ) >= 0 ) {
g_bBuildList = true;
}
CMainFrame *pMainFrame = new CMainFrame;
if( !pMainFrame->LoadFrame( IDR_MENU_QUAKE3 ) ) {
return FALSE;
}
if( pMainFrame->m_hAccelTable ) {
::DestroyAcceleratorTable( pMainFrame->m_hAccelTable );
}
pMainFrame->LoadAccelTable( MAKEINTRESOURCE( IDR_MINIACCEL ) );
m_pMainWnd = pMainFrame;
// The main window has been initialized, so show and update it.
pMainFrame->ShowWindow( m_nCmdShow );
pMainFrame->UpdateWindow();
//.........这里部分代码省略.........