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(); return TRUE; }
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; strTemp.MakeLower(); if (strTemp.Find("builddefs") >= 0) { g_bBuildList = true; } //afxCurrentInstanceHandle = win32.hInstance; // afxCurrentResourceHandle = win32.hInstance; 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(); return TRUE; }
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; }