00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "stdafx.h"
00026 #include "Radiant.h"
00027
00028 #include "MainFrm.h"
00029 #include "ChildFrm.h"
00030 #include "RadiantDoc.h"
00031 #include "RadiantView.h"
00032 #include "PrefsDlg.h"
00033
00034 #ifdef _DEBUG
00035 #define new DEBUG_NEW
00036 #undef THIS_FILE
00037 static char THIS_FILE[] = __FILE__;
00038 #endif
00039
00041
00042
00043 BEGIN_MESSAGE_MAP(CRadiantApp, CWinApp)
00044
00045 ON_COMMAND(ID_HELP, OnHelp)
00046
00047
00048 ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
00049 ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
00050
00051 ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
00052 END_MESSAGE_MAP()
00053
00055
00056
00057 CRadiantApp::CRadiantApp()
00058 {
00059
00060
00061 }
00062
00064
00065
00066 CRadiantApp theApp;
00067
00069
00070
00071 HINSTANCE g_hOpenGL32 = NULL;
00072 HINSTANCE g_hOpenGL = NULL;
00073 bool g_bBuildList = false;
00074
00075 BOOL CRadiantApp::InitInstance()
00076 {
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087 #if 0
00088
00089 #ifdef _AFXDLL
00090 Enable3dControls();
00091 #else
00092 Enable3dControlsStatic();
00093 #endif
00094
00095 #endif
00096
00097
00098 char RadiantPath[_MAX_PATH];
00099 GetModuleFileName( NULL, RadiantPath, _MAX_PATH );
00100
00101
00102 CFileFind Finder;
00103 Finder.FindFile( RadiantPath );
00104 Finder.FindNextFile();
00105
00106 CString Root = Finder.GetRoot();
00107
00108 CString IniPath = Root + "\\REGISTRY.INI";
00109
00110 Finder.FindNextFile();
00111 if (Finder.FindFile( IniPath ))
00112 {
00113 Finder.FindNextFile();
00114
00115 free((void*)m_pszProfileName);
00116 m_pszProfileName=_tcsdup(_T(Finder.GetFilePath()));
00117
00118 int i=0;
00119 CString key;
00120 HKEY hkResult;
00121 DWORD dwDisp;
00122 DWORD type;
00123 char iBuf[3];
00124 do
00125 {
00126 sprintf( iBuf, "%d", i );
00127 key = "Software\\Q3Radiant\\IniPrefs" + CString(iBuf);
00128
00129 if ( RegOpenKeyEx( HKEY_CURRENT_USER, key, 0, KEY_ALL_ACCESS, &hkResult ) != ERROR_SUCCESS )
00130 {
00131
00132 strcpy( g_qeglobals.use_ini_registry, key.GetBuffer(0) );
00133 RegCreateKeyEx( HKEY_CURRENT_USER, key, 0, NULL,
00134 REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkResult, &dwDisp );
00135 RegSetValueEx( hkResult, "RadiantName", 0, REG_SZ, reinterpret_cast<CONST BYTE *>(RadiantPath), strlen( RadiantPath )+1 );
00136 RegCloseKey( hkResult );
00137 break;
00138 }
00139 else
00140 {
00141 char RadiantAux[ _MAX_PATH ];
00142 unsigned long size = _MAX_PATH;
00143
00144 RegQueryValueEx( hkResult, "RadiantName", 0, &type, reinterpret_cast<BYTE *>(RadiantAux), &size );
00145 RegCloseKey( hkResult );
00146 if ( !strcmp( RadiantAux, RadiantPath ) )
00147 {
00148
00149 strcpy( g_qeglobals.use_ini_registry, key.GetBuffer(0) );
00150 break;
00151 }
00152 }
00153 i++;
00154 } while (1);
00155 g_qeglobals.use_ini = true;
00156 }
00157 else
00158 {
00159
00160
00161
00162 SetRegistryKey("Q3Radiant");
00163 g_qeglobals.use_ini = false;
00164 }
00165
00166 LoadStdProfileSettings();
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182 g_PrefsDlg.LoadPrefs();
00183
00184 int nMenu = IDR_MENU1;
00185
00186 CString strOpenGL = (g_PrefsDlg.m_bSGIOpenGL) ? "opengl.dll" : "opengl32.dll";
00187 CString strGLU = (g_PrefsDlg.m_bSGIOpenGL) ? "glu.dll" : "glu32.dll";
00188
00189 if (!QGL_Init(strOpenGL, strGLU))
00190 {
00191 g_PrefsDlg.m_bSGIOpenGL ^= 1;
00192 strOpenGL = (g_PrefsDlg.m_bSGIOpenGL) ? "opengl.dll" : "opengl32.dll";
00193 strGLU = (g_PrefsDlg.m_bSGIOpenGL) ? "glu.dll" : "glu32.dll";
00194 if (!QGL_Init(strOpenGL, strGLU))
00195 {
00196 AfxMessageBox("Failed to load OpenGL libraries. \"OPENGL32.DLL\" and \"OPENGL.DLL\" were tried");
00197 return FALSE;
00198 }
00199 g_PrefsDlg.SavePrefs();
00200 }
00201
00202 CString strTemp = m_lpCmdLine;
00203 strTemp.MakeLower();
00204 if (strTemp.Find("builddefs") >= 0)
00205 g_bBuildList = true;
00206
00207 CMainFrame* pMainFrame = new CMainFrame;
00208 if (!pMainFrame->LoadFrame(nMenu))
00209 return FALSE;
00210
00211 if (pMainFrame->m_hAccelTable)
00212 ::DestroyAcceleratorTable(pMainFrame->m_hAccelTable);
00213
00214 pMainFrame->LoadAccelTable(MAKEINTRESOURCE(IDR_MINIACCEL));
00215
00216 m_pMainWnd = pMainFrame;
00217
00218
00219 CCommandLineInfo cmdInfo;
00220 ParseCommandLine(cmdInfo);
00221
00222
00223
00224
00225
00226
00227 pMainFrame->ShowWindow(m_nCmdShow);
00228 pMainFrame->UpdateWindow();
00229
00230 free((void*)m_pszHelpFilePath);
00231 CString strHelp = g_strAppPath;
00232 AddSlash(strHelp);
00233 strHelp += "Q3RManual.chm";
00234 m_pszHelpFilePath= _tcsdup(strHelp);
00235
00236
00237 return TRUE;
00238 }
00239
00241
00242
00243 int CRadiantApp::ExitInstance()
00244 {
00245
00246
00247 QGL_Shutdown();
00248 return CWinApp::ExitInstance();
00249 }
00250
00251 BOOL CRadiantApp::OnIdle(LONG lCount)
00252 {
00253 if (g_pParentWnd)
00254 g_pParentWnd->RoutineProcessing();
00255 return CWinApp::OnIdle(lCount);
00256 }
00257
00258 void CRadiantApp::OnHelp()
00259 {
00260 ShellExecute(m_pMainWnd->GetSafeHwnd(), "open", m_pszHelpFilePath, NULL, NULL, SW_SHOW);
00261 }