//初始化函数 BOOL CLogonServerApp::InitInstance() { __super::InitInstance(); //初始化组件 AfxInitRichEdit2(); InitCommonControls(); AfxEnableControlContainer(); HMODULE hMod; hMod = LoadLibrary(TEXT( "riched20.dll")); //设置注册表 SetRegistryKey(szSystemRegKey); //获取目录 GetModuleFileName(AfxGetInstanceHandle(),m_szDirWork,sizeof(m_szDirWork)); int nModuleLen=lstrlen(m_szDirWork); int nProcessLen=lstrlen(m_pszExeName)+lstrlen(TEXT(".EXE")); m_szDirWork[nModuleLen-nProcessLen]=0; //创建目录 lstrcat(m_szDirWork, TEXT("CustomFace")); CreateDirectory(m_szDirWork, NULL) ; //显示主窗口 CLogonServerDlg ServerDlg; m_pMainWnd=&ServerDlg; ServerDlg.DoModal(); FreeLibrary(hMod); return FALSE; }
BOOL CIMoteConsoleApp::InitInstance() { InitCommonControls(); CWinApp::InitInstance(); 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. AfxInitRichEdit2(); CIMoteConsoleDlg *dlg =new CIMoteConsoleDlg; m_pMainWnd = dlg; dlg->LoadProfileInfo(); int nResponse = dlg->DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } dlg->SaveProfileInfo(); delete dlg; // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }
BOOL ChupaiApp::InitInstance() { // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Set this to include all the common control classes you want to use // in your application. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); AfxInitRichEdit2(); // 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 // Change the registry key under which our settings are stored // TODO: You should modify this string to be something appropriate // such as the name of your company or organization SetRegistryKey(_T("Local AppWizard-Generated Applications")); ChupaiDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }
BOOL CWinfingerprintApp::InitInstance() { // 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. #ifdef _AFXDLL // Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif AfxInitRichEdit2(); // Initialize RichEdit Control _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); CWinfingerprintDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }
BOOL CMainApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); g_Profile.Init(theApp); AfxEnableControlContainer(); // 创建 shell 管理器,以防对话框包含 // 任何 shell 树视图控件或 shell 列表视图控件。 CShellManager *pShellManager = new CShellManager; // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); _tsetlocale(LC_CTYPE, _T("chs")); AfxInitRichEdit2(); CMainDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用 // “确定”来关闭对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用 // “取消”来关闭对话框的代码 } // 删除上面创建的 shell 管理器。 if (pShellManager != NULL) { delete pShellManager; } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return FALSE; }
CDebugWindow::CDebugWindow(CWnd* pParent /*=NULL*/) : CDialog(CDebugWindow::IDD, pParent) , m_debug_status(_T("")) { AfxInitRichEdit2(); Create(IDD, pParent); LogWindow.SetFrame(this); }
SDBOOL CPacketRobotApp::InitInstance() { // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Set this to include all the common control classes you want to use // in your application. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); WSADATA wsd; if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0) { return false; } AfxInitRichEdit2(); CWinApp::InitInstance(); 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 // Change the registry key under which our settings are stored // TODO: You should modify this string to be something appropriate // such as the name of your company or organization SetRegistryKey(_T("Local AppWizard-Generated Applications")); HMODULE hModule = ::LoadLibrary(_T("pv.dll")); CPacketRobotDlg dlg; CGlobe::m_poDlg = &dlg; CGlobe::m_poSeesion = new CCliSession(); m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } delete CGlobe::m_poSeesion; // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }
BOOL CPerlECApp::InitInstance() { #ifdef _MERGE_PROXYSTUB if (!PrxDllMain(m_hInstance, DLL_PROCESS_ATTACH, NULL)) return FALSE; #endif BOOL bRet = CWinApp::InitInstance(); AfxInitRichEdit2( ); return bRet; }
BOOL CRichEditCtrl::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) { if (!AfxInitRichEdit2()) return FALSE; CWnd* pWnd = this; return pWnd->Create(RICHEDIT_CLASS, NULL, dwStyle, rect, pParentWnd, nID); }
//初始化函数 BOOL CGameFrameApp::InitInstance() { __super::InitInstance(); CString strFile,strTemp; CTime tmCur = CTime::GetCurrentTime(); CString strTime = tmCur.Format("%m%d"); strFile.Format("log\\%sCGameFrameApp.log",strTime); strTemp.Format("into InitInstance"); WriteLog(strFile, strTemp); //内部初始化 AfxOleInit(); AfxInitRichEdit2(); InitCommonControls(); AfxEnableControlContainer(); strTemp.Format("into InitInstance 1"); WriteLog(strFile, strTemp); //初始化界面库 IUnknownEx * pIUnknownEx=(IUnknownEx *)m_SkinRecordFile.QueryInterface(IID_IUnknownEx,VER_IUnknownEx); CSkinAttribute::LoadSkinAttribute(pIUnknownEx); //加载配置 g_GlobalOption.LoadOptionParameter(); strTemp.Format("into InitInstance 2"); WriteLog(strFile, strTemp); try { //创建主窗口 m_pGameFrame=GetGameFrameDlg(); ASSERT(m_pGameFrame!=NULL); if (m_pGameFrame==NULL) throw TEXT("游戏主窗口创建失败"); //设置主窗口 m_pMainWnd=m_pGameFrame; AfxSetResourceHandle(GetModuleHandle(GAME_FRAME_DLL_NAME)); m_pGameFrame->Create(IDD_GAME_FRAME,NULL); AfxSetResourceHandle(GetModuleHandle(NULL)); } catch (LPCTSTR pszMesssage) { CString strBuffer; strBuffer.Format(TEXT("由于 [ %s ] 游戏程序即将退出。"),pszMesssage); AfxMessageBox(strBuffer,MB_ICONSTOP); if (m_pGameFrame!=NULL) SafeDelete(m_pGameFrame); return FALSE; } return TRUE; }
BOOL CAxTIF5App::InitInstance() { //TODO: call AfxInitRichEdit2() to initialize richedit2 library. BOOL bInit = COleControlModule::InitInstance(); if (bInit) { bInit = AfxInitRichEdit2(); } return bInit; }
BOOL CSpeakerServerApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); AfxInitRichEdit2(); if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); CSpeakerServerDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用 // “确定”来关闭对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用 // “取消”来关闭对话框的代码 } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return FALSE; }
//初始化函数 BOOL CGameFrameApp::InitInstance() { __super::InitInstance(); //内部初始化 AfxOleInit(); AfxInitRichEdit2(); InitCommonControls(); AfxEnableControlContainer(); hMod = LoadLibrary(TEXT( "riched20.dll")); //加载资源 if(g_GlobalOption.LoadGameFrameRes()==false) { ShowInformation(TEXT("加载资源失败!"),0,MB_ICONSTOP); return FALSE; } //加载配置 g_GlobalOption.LoadOptionParameter(); try { //创建主窗口 m_pGameFrame=GetGameFrameDlg(); ASSERT(m_pGameFrame!=NULL); if (m_pGameFrame==NULL) throw TEXT("游戏主窗口创建失败"); //设置主窗口 m_pMainWnd=m_pGameFrame; AfxSetResourceHandle(GetModuleHandle(GAME_FRAME_DLL_NAME)); m_pGameFrame->Create(IDD_GAME_FRAME,NULL); AfxSetResourceHandle(GetModuleHandle(NULL)); } catch (LPCTSTR pszMesssage) { CString strBuffer; strBuffer.Format(TEXT("由于 [ %s ] 游戏程序即将退出。"),pszMesssage); ShowInformation(strBuffer,0,MB_ICONSTOP); if (m_pGameFrame!=NULL) SafeDelete(m_pGameFrame); return FALSE; } return TRUE; }
//启动函数 BOOL CGameServerApp::InitInstance() { __super::InitInstance(); //设置组件 AfxInitRichEdit2(); InitCommonControls(); AfxEnableControlContainer(); //设置注册表 SetRegistryKey(szProduct); //显示窗口 CGameServerDlg GameServerDlg; m_pMainWnd=&GameServerDlg; GameServerDlg.DoModal(); return FALSE; }
//初始化函数 BOOL CCenterServerApp::InitInstance() { __super::InitInstance(); //初始化组件 AfxInitRichEdit2(); InitCommonControls(); AfxEnableControlContainer(); //设置注册表 SetRegistryKey(szSystemRegKey); //显示主窗口 CCenterServerDlg ServerDlg; m_pMainWnd=&ServerDlg; ServerDlg.DoModal(); return FALSE; }
int CStatusView::OnCreate(LPCREATESTRUCT lpCreateStruct) { USES_CONVERSION; if (CView::OnCreate(lpCreateStruct) == -1) return -1; // Create the style DWORD dwStyle = WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_READONLY | WS_VSCROLL | ES_AUTOVSCROLL | ES_NOHIDESEL; // Custom initialization of the richedit control #if _MFC_VER > 0x0600 VERIFY(AfxInitRichEdit() || AfxInitRichEdit2()); #else VERIFY(AfxInitRichEdit()); #endif CWnd* pWnd = m_pRichEditCtrl; BOOL bResult = pWnd->Create(RICHEDIT_CLASS, NULL, dwStyle, CRect(1, 1, 10, 10), this, 0); return (bResult ? 0 : -1); }
BOOL CSLSKSpooferApp::InitInstance() { // InitCommonControls() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. AfxInitRichEdit2(); InitCommonControls(); //CWinApp::InitInstance(); AfxEnableControlContainer(); WSocket::Startup(); CSLSKSpooferDlg dlg; //m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. WSocket::Cleanup(); return FALSE; }
// COpenHoldemApp initialization BOOL COpenHoldemApp::InitInstance() { Scintilla_RegisterClasses(AfxGetInstanceHandle()); // Initialize richedit2 library AfxInitRichEdit2(); // Change class name of Dialog WNDCLASS wc; GetClassInfo(AfxGetInstanceHandle(), "#32770", &wc); wc.lpszClassName = "OpenHoldemFormula"; wc.hIcon = AfxGetApp()->LoadIcon(IDI_ICON1); RegisterClass(&wc); // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Set this to include all the common control classes you want to use // in your application. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); // Since OH 2.2.0 we always use an ini-files, // the one and only in our OH-directory, // no matter how it is named. // For the technical details please see: // http://msdn.microsoft.com/de-de/library/xykfyy20(v=vs.80).aspx InstantiateSomeSingletonsForVeryEarlyUseInInitInstance(); free((void*)m_pszProfileName); m_pszProfileName = _strdup(p_filenames->IniFilePath().GetString()); prefs.LoadPreferences(); // Classes if (!p_sessioncounter) p_sessioncounter = new CSessionCounter; // Start logging immediatelly after the loading the preferences // and initializing the sessioncounter. start_log(); InstantiateAllSingletons(); // mouse.dll - failure in load is fatal _mouse_dll = LoadLibrary("mouse.dll"); if (_mouse_dll==NULL) { CString t = ""; t.Format("Unable to load mouse.dll, error: %d\n\nExiting.", GetLastError()); OH_MessageBox(t, "OpenHoldem mouse.dll ERROR", MB_OK | MB_TOPMOST); return false; } else { _dll_mouse_process_message = (mouse_process_message_t) GetProcAddress(_mouse_dll, "ProcessMessage"); _dll_mouse_click = (mouse_click_t) GetProcAddress(_mouse_dll, "MouseClick"); _dll_mouse_click_drag = (mouse_clickdrag_t) GetProcAddress(_mouse_dll, "MouseClickDrag"); if (_dll_mouse_process_message==NULL || _dll_mouse_click==NULL || _dll_mouse_click_drag==NULL) { CString t = ""; t.Format("Unable to find all symbols in mouse.dll"); OH_MessageBox(t, "OpenHoldem mouse.dll ERROR", MB_OK | MB_TOPMOST); FreeLibrary(_mouse_dll); _mouse_dll = NULL; return false; } } // keyboard.dll - failure in load is fatal _keyboard_dll = LoadLibrary("keyboard.dll"); if (_keyboard_dll==NULL) { CString t = ""; t.Format("Unable to load keyboard.dll, error: %d\n\nExiting.", GetLastError()); OH_MessageBox(t, "OpenHoldem keyboard.dll ERROR", MB_OK | MB_TOPMOST); return false; } else { _dll_keyboard_process_message = (keyboard_process_message_t) GetProcAddress(_keyboard_dll, "ProcessMessage"); _dll_keyboard_sendstring = (keyboard_sendstring_t) GetProcAddress(_keyboard_dll, "SendString"); _dll_keyboard_sendkey = (keyboard_sendkey_t) GetProcAddress(_keyboard_dll, "SendKey"); if (_dll_keyboard_process_message==NULL || _dll_keyboard_sendstring==NULL || _dll_keyboard_sendkey==NULL) { CString t = ""; t.Format("Unable to find all symbols in keyboard.dll"); OH_MessageBox(t, "OpenHoldem keyboard.dll ERROR", MB_OK | MB_TOPMOST); FreeLibrary(_keyboard_dll); _keyboard_dll = NULL; return false; } } MyLoadStdProfileSettings(k_number_of_last_recently_used_files_in_file_menu); // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(COpenHoldemDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(COpenHoldemView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); EnableShellOpen(); RegisterShellFileTypes(false); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Open the most recently saved file. (First on the MRU list.) Get the last // file from the registry. We need not account for cmdInfo.m_bRunAutomated and // cmdInfo.m_bRunEmbedded as they are processed before we get here. if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew) { CString sLastPath(GetProfileString(_afxFileSection, "File1")); if (! sLastPath.IsEmpty()) { CFile f; // If file is there, set to open! if (f.Open(sLastPath, CFile::modeRead | CFile::shareDenyWrite)) { cmdInfo.m_nShellCommand = CCommandLineInfo::FileOpen; cmdInfo.m_strFileName = sLastPath; f.Close(); } } } // Dispatch commands specified on the command line. Will return FALSE if // app was launched with /RegServer, /Register, /Unregserver or /Unregister. if (!ProcessShellCommand(cmdInfo)) return FALSE; if (prefs.simple_window_title()) m_pMainWnd->PostMessage(WMA_SETWINDOWTEXT, 0, (LPARAM)NULL); // The one and only window has been initialized, so show and update it if (prefs.gui_start_minimized()) { m_pMainWnd->ShowWindow(SW_MINIMIZE); } else { m_pMainWnd->ShowWindow(SW_SHOW); } m_pMainWnd->UpdateWindow(); // call DragAcceptFiles only if there's a suffix // In an SDI app, this should occur after ProcessShellCommand // Enable drag/drop open m_pMainWnd->DragAcceptFiles(); // Bring main window to front m_pMainWnd->SetWindowPos(&CWnd::wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); m_pMainWnd->SetActiveWindow(); m_pMainWnd->SetFocus(); m_pMainWnd->SetForegroundWindow(); // autoconnect on start, if preferred if (prefs.autoconnector_when_to_connect() == k_AutoConnector_Connect_Once) { p_autoconnector->Connect(NULL); } // Start thread anyway; permanent connection might be enabled later via preferences. p_autoconnectorthread->StartThread(); return TRUE; }
BOOL COleDataDemoApp::InitInstance() { // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX icc = { sizeof(icc), // 0xFFFF ICC_WIN95_CLASSES | ICC_STANDARD_CLASSES }; VERIFY(::InitCommonControlsEx(&icc)); CWinApp::InitInstance(); // 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 // Change the registry key under which our settings are stored // TODO: You should modify this string to be something appropriate // such as the name of your company or organization // SetRegistryKey(_T("JoeArndt")); // Initialize OLE support. VERIFY(AfxOleInit()); VERIFY(AfxInitRichEdit2()); #if 1 // Turn off COM exception handler. // See http://blogs.msdn.com/b/oldnewthing/archive/2011/01/20/10117963.aspx // I should have make notes here why I did this. // After two years I only remember that I had some problems with faulty code in COleDropSourceEx::GiveFeedback // resulting in an exception that was not detected. OSVERSIONINFO VerInfo; VerInfo.dwOSVersionInfoSize = sizeof(VerInfo); ::GetVersionEx(&VerInfo); if (VerInfo.dwMajorVersion >= 6) { IGlobalOptions *pGlobalOptions; #if defined(IID_PPV_ARGS) // The IID_PPV_ARGS macro has been introduced with Visual Studio 2005 HRESULT hr = ::CoCreateInstance(CLSID_GlobalOptions, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGlobalOptions)); #else HRESULT hr = ::CoCreateInstance(CLSID_GlobalOptions, NULL, CLSCTX_INPROC_SERVER, IID_IGlobalOptions, (LPVOID*)&pGlobalOptions); #endif if (SUCCEEDED(hr)) { // With Vista, CoInitializeSecurity() must be called before the IGlobalOptions interface can be used. // COMGLB_EXCEPTION_DONOT_HANDLE_ANY is not supported with Vista. // NOTE: This is not tested with Vista! It may be necessary to use other parameters! if (6 == VerInfo.dwMajorVersion && 0 == VerInfo.dwMinorVersion) { hr = ::CoInitializeSecurity( NULL, // PSECURITY_DESCRIPTOR pSecDesc, -1, // LONG cAuthSvc, NULL, // SOLE_AUTHENTICATION_SERVICE *asAuthSvc, NULL, // void *pReserved1, RPC_C_AUTHN_LEVEL_DEFAULT, // DWORD dwAuthnLevel, RPC_C_IMP_LEVEL_IDENTIFY, // DWORD dwImpLevel, NULL, // void *pAuthList, EOAC_NONE, // DWORD dwCapabilities, NULL // void *pReserved3 ); if (SUCCEEDED(hr)) hr = pGlobalOptions->Set(COMGLB_EXCEPTION_HANDLING, COMGLB_EXCEPTION_DONOT_HANDLE); } // With Windows 7, CoInitializeSecurity() must be only called for specific IGlobalOptions // operations and parameters but not for those used here. else hr = pGlobalOptions->Set(COMGLB_EXCEPTION_HANDLING, COMGLB_EXCEPTION_DONOT_HANDLE_ANY); pGlobalOptions->Release(); } TRACE1("Set GlobalOptions result: %#X\n", hr); } #endif COleDataDemoDlg *pDlg = new COleDataDemoDlg; m_pMainWnd = pDlg; pDlg->DoModal(); delete pDlg; // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }
//初始化函数 BOOL CGamePlazaApp::InitInstance() { __super::InitInstance(); //判断是否重入 #ifndef ADMIN_PLAZA #ifndef _DEBUG bool bExistIGame=false; CMutex Mutex(FALSE,MAIN_DLG_CLASSNAME,NULL); if (Mutex.Lock(0)==FALSE) bExistIGame=true; CWnd * pIGameWnd=CWnd::FindWindow(MAIN_DLG_CLASSNAME,NULL); if (pIGameWnd!=NULL) { bExistIGame=true; if (pIGameWnd->IsIconic()) pIGameWnd->ShowWindow(SW_RESTORE); pIGameWnd->SetActiveWindow(); pIGameWnd->BringWindowToTop(); pIGameWnd->SetForegroundWindow(); } if (bExistIGame==true) return FALSE; #endif #endif //程序初始化 AfxOleInit(); AfxInitRichEdit(); AfxInitRichEdit2(); InitCommonControls(); AfxEnableControlContainer(); //设置注册表 SetRegistryKey(szSystemRegKey); //加载界面库 CSkinAttribute::LoadSkinAttribute(GET_OBJECT_INTERFACE(m_SkinRecordFile,IUnknownEx)); //加载配置 g_GlobalOption.LoadOptionParameter(); //全局信息 if (g_GlobalUnits.InitGlobalUnits()==false) { AfxMessageBox(TEXT("游戏广场初始化失败,程序即将退出!"),MB_ICONSTOP); return FALSE; } //变量定义 WNDCLASS WndClasss; ZeroMemory(&WndClasss,sizeof(WndClasss)); //注册窗口 WndClasss.style=CS_DBLCLKS; WndClasss.lpfnWndProc=DefWindowProc; WndClasss.lpszClassName=MAIN_DLG_CLASSNAME; WndClasss.hInstance=AfxGetInstanceHandle(); WndClasss.hIcon=LoadIcon(MAKEINTRESOURCE(IDR_MAINFRAME)); WndClasss.hCursor=LoadStandardCursor(MAKEINTRESOURCE(IDC_ARROW)); if (AfxRegisterClass(&WndClasss)==FALSE) AfxThrowResourceException(); //建立窗口 CGameFrame * pMainFrame=new CGameFrame(); pMainFrame->Create(MAIN_DLG_CLASSNAME,TEXT(""),WS_MINIMIZEBOX|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,CRect(0,0,0,0)); m_pMainWnd=pMainFrame; return TRUE; }
BOOL CDirstatApp::InitInstance() { CWinApp::InitInstance(); InitCommonControls(); // InitCommonControls() is necessary for Windows XP. VERIFY(AfxOleInit()); // For SHBrowseForFolder() AfxEnableControlContainer(); // For our rich edit controls in the about dialog VERIFY(AfxInitRichEdit()); // Rich edit control in out about box VERIFY(AfxInitRichEdit2()); // On NT, this helps. EnableHtmlHelp(); SetRegistryKey(_T("Seifert")); LoadStdProfileSettings(4); m_langid= GetBuiltInLanguage(); LANGID langid = CLanguageOptions::GetLanguage(); if (langid != GetBuiltInLanguage()) { CString resourceDllPath = FindResourceDllPathByLangid(langid); if (!resourceDllPath.IsEmpty()) { // Load language resource DLL HINSTANCE dll = LoadLibrary(resourceDllPath); if (dll != NULL) { // Set default module handle for loading of resources AfxSetResourceHandle(dll); m_langid = langid; } else { TRACE(_T("LoadLibrary(%s) failed: %u\r\n"), resourceDllPath, GetLastError()); } } // else: We use our built-in English resources. CLanguageOptions::SetLanguage(m_langid); } GetOptions()->LoadFromRegistry(); free((void*)m_pszHelpFilePath); m_pszHelpFilePath=_tcsdup(ConstructHelpFileName()); // ~CWinApp() will free this memory. m_pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CDirstatDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CGraphView)); if (!m_pDocTemplate) return FALSE; AddDocTemplate(m_pDocTemplate); CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); m_nCmdShow= SW_HIDE; if (!ProcessShellCommand(cmdInfo)) return FALSE; GetMainFrame()->InitialShowWindow(); m_pMainWnd->UpdateWindow(); // When called by setup.exe, windirstat remained in the // background, so we do a m_pMainWnd->BringWindowToTop(); m_pMainWnd->SetForegroundWindow(); if (cmdInfo.m_nShellCommand != CCommandLineInfo::FileOpen) { OnFileOpen(); } return TRUE; }
BOOL CTortoiseProcApp::InitInstance() { CheckUpgrade(); CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); CMFCButton::EnableWindowsTheming(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; Gdiplus::GdiplusStartup(&m_gdiplusToken,&gdiplusStartupInput,NULL); //set the resource dll for the required language CRegDWORD loc = CRegDWORD(_T("Software\\TortoiseGit\\LanguageID"), 1033); long langId = loc; CString langDll; CStringA langpath = CStringA(CPathUtils::GetAppParentDirectory()); langpath += "Languages"; HINSTANCE hInst = NULL; do { langDll.Format(_T("%sLanguages\\TortoiseProc%d.dll"), (LPCTSTR)CPathUtils::GetAppParentDirectory(), langId); hInst = LoadLibrary(langDll); CString sVer = _T(STRPRODUCTVER); CString sFileVer = CPathUtils::GetVersionFromFile(langDll); if (sFileVer.Compare(sVer)!=0) { FreeLibrary(hInst); hInst = NULL; } if (hInst != NULL) { AfxSetResourceHandle(hInst); } else { DWORD lid = SUBLANGID(langId); lid--; if (lid > 0) { langId = MAKELANGID(PRIMARYLANGID(langId), lid); } else langId = 0; } } while ((hInst == NULL) && (langId != 0)); TCHAR buf[6]; _tcscpy_s(buf, _T("en")); langId = loc; // MFC uses a help file with the same name as the application by default, // which means we have to change that default to our language specific help files CString sHelppath = CPathUtils::GetAppDirectory() + _T("TortoiseGit_en.chm"); free((void*)m_pszHelpFilePath); m_pszHelpFilePath=_tcsdup(sHelppath); sHelppath = CPathUtils::GetAppParentDirectory() + _T("Languages\\TortoiseGit_en.chm"); do { CString sLang = _T("_"); if (GetLocaleInfo(MAKELCID(langId, SORT_DEFAULT), LOCALE_SISO639LANGNAME, buf, _countof(buf))) { sLang += buf; sHelppath.Replace(_T("_en"), sLang); if (PathFileExists(sHelppath)) { free((void*)m_pszHelpFilePath); m_pszHelpFilePath=_tcsdup(sHelppath); break; } } sHelppath.Replace(sLang, _T("_en")); if (GetLocaleInfo(MAKELCID(langId, SORT_DEFAULT), LOCALE_SISO3166CTRYNAME, buf, _countof(buf))) { sLang += _T("_"); sLang += buf; sHelppath.Replace(_T("_en"), sLang); if (PathFileExists(sHelppath)) { free((void*)m_pszHelpFilePath); m_pszHelpFilePath=_tcsdup(sHelppath); break; } } sHelppath.Replace(sLang, _T("_en")); DWORD lid = SUBLANGID(langId); lid--; if (lid > 0) { langId = MAKELANGID(PRIMARYLANGID(langId), lid); } else langId = 0; } while (langId); setlocale(LC_ALL, ""); if(!CheckMsysGitDir()) { UINT ret = CMessageBox::Show(NULL, IDS_PROC_NOMSYSGIT, IDS_APPNAME, 3, IDI_HAND, IDS_PROC_SETMSYSGITPATH, IDS_PROC_GOTOMSYSGITWEBSITE, IDS_ABORTBUTTON); if(ret == 2) { ShellExecute(NULL, NULL, _T("http://code.google.com/p/msysgit/"), NULL, NULL, SW_SHOW); } else if(ret == 1) { // open settings dialog CSinglePropSheetDlg(CString(MAKEINTRESOURCE(IDS_PROC_SETTINGS_TITLE)), new CSetMainPage(), this->GetMainWnd()).DoModal(); } return FALSE; } if (CAppUtils::GetMsysgitVersion() < 0x01070a00) { int ret = CMessageBox::ShowCheck(NULL, IDS_PROC_OLDMSYSGIT, IDS_APPNAME, 1, IDI_EXCLAMATION, IDS_PROC_GOTOMSYSGITWEBSITE, IDS_ABORTBUTTON, IDS_IGNOREBUTTON, _T("OldMsysgitVersionWarning"), IDS_PROC_NOTSHOWAGAINIGNORE); if (ret == 1) { CMessageBox::RemoveRegistryKey(_T("OldMsysgitVersionWarning")); // only store answer if it is "Ignore" ShellExecute(NULL, NULL, _T("http://code.google.com/p/msysgit/"), NULL, NULL, SW_SHOW); return FALSE; } else if (ret == 2) { CMessageBox::RemoveRegistryKey(_T("OldMsysgitVersionWarning")); // only store answer if it is "Ignore" return FALSE; } } // InitCommonControls() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX used = { sizeof(INITCOMMONCONTROLSEX), ICC_ANIMATE_CLASS | ICC_BAR_CLASSES | ICC_COOL_CLASSES | ICC_DATE_CLASSES | ICC_HOTKEY_CLASS | ICC_INTERNET_CLASSES | ICC_LISTVIEW_CLASSES | ICC_NATIVEFNTCTL_CLASS | ICC_PAGESCROLLER_CLASS | ICC_PROGRESS_CLASS | ICC_TAB_CLASSES | ICC_TREEVIEW_CLASSES | ICC_UPDOWN_CLASS | ICC_USEREX_CLASSES | ICC_WIN95_CLASSES }; InitCommonControlsEx(&used); AfxOleInit(); AfxEnableControlContainer(); AfxInitRichEdit2(); CWinAppEx::InitInstance(); SetRegistryKey(_T("TortoiseGit")); AfxGetApp()->m_pszProfileName = _tcsdup(_T("TortoiseProc")); // w/o this ResizableLib will store data under TortoiseGitProc which is not compatible with older versions CCmdLineParser parser(AfxGetApp()->m_lpCmdLine); hWndExplorer = NULL; CString sVal = parser.GetVal(_T("hwnd")); if (!sVal.IsEmpty()) hWndExplorer = (HWND)_ttoi64(sVal); while (GetParent(hWndExplorer)!=NULL) hWndExplorer = GetParent(hWndExplorer); if (!IsWindow(hWndExplorer)) { hWndExplorer = NULL; } // if HKCU\Software\TortoiseGit\Debug is not 0, show our command line // in a message box if (CRegDWORD(_T("Software\\TortoiseGit\\Debug"), FALSE)==TRUE) AfxMessageBox(AfxGetApp()->m_lpCmdLine, MB_OK | MB_ICONINFORMATION); if ( parser.HasKey(_T("path")) && parser.HasKey(_T("pathfile"))) { CMessageBox::Show(NULL, IDS_ERR_INVALIDPATH, IDS_APPNAME, MB_ICONERROR); return FALSE; } CTGitPath cmdLinePath; CTGitPathList pathList; if (g_sGroupingUUID.IsEmpty()) g_sGroupingUUID = parser.GetVal(L"groupuuid"); if ( parser.HasKey(_T("pathfile")) ) { CString sPathfileArgument = CPathUtils::GetLongPathname(parser.GetVal(_T("pathfile"))); cmdLinePath.SetFromUnknown(sPathfileArgument); if (pathList.LoadFromFile(cmdLinePath)==false) return FALSE; // no path specified! if ( parser.HasKey(_T("deletepathfile")) ) { // We can delete the temporary path file, now that we've loaded it ::DeleteFile(cmdLinePath.GetWinPath()); } // This was a path to a temporary file - it's got no meaning now, and // anybody who uses it again is in for a problem... cmdLinePath.Reset(); } else { CString sPathArgument = CPathUtils::GetLongPathname(parser.GetVal(_T("path"))); if (parser.HasKey(_T("expaths"))) { // an /expaths param means we're started via the buttons in our Win7 library // and that means the value of /expaths is the current directory, and // the selected paths are then added as additional parameters but without a key, only a value // because of the "strange treatment of quotation marks and backslashes by CommandLineToArgvW" // we have to escape the backslashes first. Since we're only dealing with paths here, that's // a save bet. // Without this, a command line like: // /command:commit /expaths:"D:\" "D:\Utils" // would fail because the "D:\" is treated as the backslash being the escape char for the quotation // mark and we'd end up with: // argv[1] = /command:commit // argv[2] = /expaths:D:" D:\Utils // See here for more details: http://blogs.msdn.com/b/oldnewthing/archive/2010/09/17/10063629.aspx CString cmdLine = GetCommandLineW(); cmdLine.Replace(L"\\", L"\\\\"); int nArgs = 0; LPWSTR *szArglist = CommandLineToArgvW(cmdLine, &nArgs); if (szArglist) { // argument 0 is the process path, so start with 1 for (int i = 1; i < nArgs; ++i) { if (szArglist[i][0] != '/') { if (!sPathArgument.IsEmpty()) sPathArgument += '*'; sPathArgument += szArglist[i]; } } sPathArgument.Replace(L"\\\\", L"\\"); } LocalFree(szArglist); } if (sPathArgument.IsEmpty() && parser.HasKey(L"path")) { CMessageBox::Show(hWndExplorer, IDS_ERR_INVALIDPATH, IDS_APPNAME, MB_ICONERROR); return FALSE; } int asterisk = sPathArgument.Find('*'); cmdLinePath.SetFromUnknown(asterisk >= 0 ? sPathArgument.Left(asterisk) : sPathArgument); pathList.LoadFromAsteriskSeparatedString(sPathArgument); } if (pathList.GetCount() == 0) { pathList.AddPath(CTGitPath::CTGitPath(g_Git.m_CurrentDir)); } // Subversion sometimes writes temp files to the current directory! // Since TSVN doesn't need a specific CWD anyway, we just set it // to the users temp folder: that way, Subversion is guaranteed to // have write access to the CWD { DWORD len = GetCurrentDirectory(0, NULL); if (len) { std::unique_ptr<TCHAR[]> originalCurrentDirectory(new TCHAR[len]); if (GetCurrentDirectory(len, originalCurrentDirectory.get())) { sOrigCWD = originalCurrentDirectory.get(); sOrigCWD = CPathUtils::GetLongPathname(sOrigCWD); } } TCHAR pathbuf[MAX_PATH]; GetTortoiseGitTempPath(MAX_PATH, pathbuf); SetCurrentDirectory(pathbuf); } CheckForNewerVersion(); if (parser.HasVal(_T("configdir"))) { // the user can override the location of the Subversion config directory here CString sConfigDir = parser.GetVal(_T("configdir")); // g_GitGlobal.SetConfigDir(sConfigDir); } CAutoGeneralHandle TGitMutex = ::CreateMutex(NULL, FALSE, _T("TortoiseGitProc.exe")); if (!g_Git.SetCurrentDir(cmdLinePath.GetWinPathString(), parser.HasKey(_T("submodule")) == TRUE)) { for (int i = 0; i < pathList.GetCount(); ++i) if(g_Git.SetCurrentDir(pathList[i].GetWinPath())) break; } if(!g_Git.m_CurrentDir.IsEmpty()) { sOrigCWD = g_Git.m_CurrentDir; SetCurrentDirectory(g_Git.m_CurrentDir); } if (g_sGroupingUUID.IsEmpty()) { CRegStdDWORD groupSetting = CRegStdDWORD(_T("Software\\TortoiseGit\\GroupTaskbarIconsPerRepo"), 3); switch (DWORD(groupSetting)) { case 1: case 2: // implemented differently to TortoiseSVN atm break; case 3: case 4: { CString wcroot; if (g_GitAdminDir.HasAdminDir(g_Git.m_CurrentDir, true, &wcroot)) { git_oid oid; CStringA wcRootA(wcroot); if (!git_odb_hash(&oid, wcRootA.GetBuffer(), wcRootA.GetLength(), GIT_OBJ_BLOB)) { CStringA hash; git_oid_tostr(hash.GetBufferSetLength(GIT_OID_HEXSZ + 1), GIT_OID_HEXSZ + 1, &oid); hash.ReleaseBuffer(); g_sGroupingUUID = hash; } } } } } CString sAppID = GetTaskIDPerUUID(g_sGroupingUUID).c_str(); InitializeJumpList(sAppID); EnsureGitLibrary(false); { CString err; try { // requires CWD to be set CGit::m_LogEncode = CAppUtils::GetLogOutputEncode(); // make sure all config files are read in order to check that none contains an error g_Git.GetConfigValue(_T("doesnot.exist")); } catch (char* msg) { err = CString(msg); } if (!err.IsEmpty()) { UINT choice = CMessageBox::Show(hWndExplorer, err, _T("TortoiseGit"), 1, IDI_ERROR, CString(MAKEINTRESOURCE(IDS_PROC_EDITLOCALGITCONFIG)), CString(MAKEINTRESOURCE(IDS_PROC_EDITGLOBALGITCONFIG)), CString(MAKEINTRESOURCE(IDS_ABORTBUTTON))); if (choice == 1) { // open the config file with alternative editor CAppUtils::LaunchAlternativeEditor(g_Git.GetGitLocalConfig()); } else if (choice == 2) { // open the global config file with alternative editor CAppUtils::LaunchAlternativeEditor(g_Git.GetGitGlobalConfig()); } return FALSE; } } // execute the requested command CommandServer server; Command * cmd = server.GetCommand(parser.GetVal(_T("command"))); if (cmd) { cmd->SetExplorerHwnd(hWndExplorer); cmd->SetParser(parser); cmd->SetPaths(pathList, cmdLinePath); retSuccess = cmd->Execute(); delete cmd; } // Look for temporary files left around by TortoiseSVN and // remove them. But only delete 'old' files because some // apps might still be needing the recent ones. { DWORD len = GetTortoiseGitTempPath(0, NULL); std::unique_ptr<TCHAR[]> path(new TCHAR[len + 100]); len = GetTortoiseGitTempPath (len + 100, path.get()); if (len != 0) { CDirFileEnum finder(path.get()); FILETIME systime_; ::GetSystemTimeAsFileTime(&systime_); __int64 systime = (((_int64)systime_.dwHighDateTime)<<32) | ((__int64)systime_.dwLowDateTime); bool isDir; CString filepath; while (finder.NextFile(filepath, &isDir)) { HANDLE hFile = ::CreateFile(filepath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, isDir ? FILE_FLAG_BACKUP_SEMANTICS : NULL, NULL); if (hFile != INVALID_HANDLE_VALUE) { FILETIME createtime_; if (::GetFileTime(hFile, &createtime_, NULL, NULL)) { ::CloseHandle(hFile); __int64 createtime = (((_int64)createtime_.dwHighDateTime)<<32) | ((__int64)createtime_.dwLowDateTime); if ((createtime + 864000000000) < systime) //only delete files older than a day { ::SetFileAttributes(filepath, FILE_ATTRIBUTE_NORMAL); if (isDir) ::RemoveDirectory(filepath); else ::DeleteFile(filepath); } } else ::CloseHandle(hFile); } } } } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }
//----- InitInstance() ------------------------------------------------------ BOOL CNifUtilsSuiteApp::InitInstance() { // init common controls (since Win95) INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); // init own instance CWinAppEx::InitInstance(); // no interaction with Win7 taskbar EnableTaskbarInteraction(FALSE); // init RichEdit AfxInitRichEdit2(); // initialize configuration CStringA configName; bool hasConfig(false); GetModuleFileNameA(NULL, configName.GetBuffer(MAX_PATH), MAX_PATH); configName.ReleaseBuffer(); configName.Replace(".exe", ".xml"); hasConfig = Configuration::initInstance((const char*) configName); // initialize Havok (HK_MEMORY_USAGE bytes of physics solver buffer) hkMemoryRouter* pMemoryRouter(hkMemoryInitUtil::initDefault(hkMallocAllocator::m_defaultMallocAllocator, hkMemorySystem::FrameInfo(HK_MEMORY_USAGE))); hkBaseSystem::init(pMemoryRouter, errorReport); // initialize material map Configuration* pConfig(Configuration::getInstance()); NifUtlMaterialList::initInstance(pConfig->_pathNifXML, pConfig->_matScanTag, pConfig->_matScanName); // Register the application's document templates. CSingleDocTemplate* pDocTemplate(new CSingleDocTemplate(IDR_MAINFRAME, RUNTIME_CLASS(CNifUtilsSuiteDoc), RUNTIME_CLASS(CNifUtilsSuiteFrame), RUNTIME_CLASS(CFormNifConvertView)) ); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); if (!ProcessShellCommand(cmdInfo)) return FALSE; // call DragAcceptFiles only if there's a suffix // In an SDI app, this should occur after ProcessShellCommand // The one and only window has been initialized, so show and update it m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); if (!hasConfig) { AfxMessageBox(L"Seems you're running NifUtilsSuite for the first time.\nYou're redirected to Settings now."); m_pMainWnd->PostMessage(WM_COMMAND, ID_OPTIONS_EDIT); } return TRUE; }
//初始化函数 BOOL CGamePlazaApp::InitInstance() { __super::InitInstance(); //判断是否重入 #ifndef ADMIN_PLAZA #ifndef _DEBUG bool bExistIGame=false; CMutex Mutex(FALSE,MAIN_DLG_CLASSNAME,NULL); if (Mutex.Lock(0)==FALSE) bExistIGame=true; CWnd * pIGameWnd=CWnd::FindWindow(MAIN_DLG_CLASSNAME,NULL); if (pIGameWnd!=NULL) { bExistIGame=true; if (pIGameWnd->IsIconic()) pIGameWnd->ShowWindow(SW_RESTORE); pIGameWnd->SetActiveWindow(); pIGameWnd->BringWindowToTop(); pIGameWnd->SetForegroundWindow(); } if (bExistIGame==true) return FALSE; #endif #endif DWORD d=MAKELONG(MAKEWORD(6,0),MAKEWORD(1,0)); //程序初始化 AfxOleInit(); AfxInitRichEdit(); AfxInitRichEdit2(); InitCommonControls(); AfxEnableControlContainer(); //设置注册表 SetRegistryKey(szSystemRegKey); //加载界面库 CSkinAttribute::LoadSkinAttribute(GET_OBJECT_INTERFACE(m_SkinRecordFile,IUnknownEx)); //加载配置 g_GlobalOption.LoadOptionParameter(); //全局信息 if (g_GlobalUnits.InitGlobalUnits()==false) { AfxMessageBox(TEXT("游戏广场初始化失败,程序即将退出!"),MB_ICONSTOP); return FALSE; } //注册窗口类 WNDCLASS WndClasss; memset(&WndClasss,0,sizeof(WndClasss)); WndClasss.lpfnWndProc=::DefWindowProc; WndClasss.hInstance=AfxGetInstanceHandle(); WndClasss.lpszClassName=MAIN_DLG_CLASSNAME; if (!AfxRegisterClass(&WndClasss)) AfxThrowResourceException(); //建立窗口 const DWORD dwStyte=WS_SYSMENU|WS_MINIMIZEBOX|WS_OVERLAPPED|WS_CLIPCHILDREN; CGameFrame * pMainFrame=new CGameFrame(); pMainFrame->Create(MAIN_DLG_CLASSNAME,TEXT(""),dwStyte,CRect(0,0,0,0)); m_pMainWnd=pMainFrame; return TRUE; }
BOOL CVandaEngine1App::InitInstance() { // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Set this to include all the common control classes you want to use // in your application. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); AfxEnableControlContainer(); SetRegistryKey(_T("Vanda Engine 1")); CVandaEngine1Dlg dlg; m_pMainWnd = &dlg; ex_pVandaEngine1Dlg = &dlg; AfxInitRichEdit2(); CCommandLineInfo oInfo; ParseCommandLine(oInfo); // DON'T display a new MDI child window during startup!!! //oInfo.m_nShellCommand = CCommandLineInfo::FileNothing; //if (!ProcessShellCommand(oInfo)) // return FALSE; if(!oInfo.m_strFileName.IsEmpty()) { g_openVINFile = CTrue; Cpy( g_fileNameInCommandLine, oInfo.m_strFileName.GetBuffer( oInfo.m_strFileName.GetLength() ) ); oInfo.m_strFileName.ReleaseBuffer(); std::string fullStr( GetCommandLine() ); std::string subStr; subStr.append( "''" ); subStr.append(oInfo.m_strFileName.GetString()); subStr.append( "''" ); std::string tempStr = fullStr.substr( 0, fullStr.length() - subStr.length() ); CChar tempStrChar[MAX_NAME_SIZE]; Cpy( tempStrChar, tempStr.c_str() ); CChar* afterPath = GetAfterPath( tempStrChar ); std::string afterPathStr( afterPath); std::string finalStr = tempStr.substr(0, tempStr.length() - afterPathStr.length() - 1); finalStr.erase(0, 1); SetCurrentDirectory( finalStr.c_str() ); } INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } return FALSE; }
BOOL CPGLauncherApp::InitInstance() { // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Set this to include all the common control classes you want to use // in your application. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); //запрет запуска дополнительного экземл¤ра приложени¤ if (!m_mutexLock->Lock(1)) { AfxMessageBox(_T("PGLauncher is running")); return FALSE; } AfxInitRichEdit2(); CWinApp::InitInstance(); if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); // Create the shell manager, in case the dialog contains // any shell tree view or shell list view controls. CShellManager *pShellManager = new CShellManager; // Activate "Windows Native" visual manager for enabling themes in MFC controls CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); // 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 // Change the registry key under which our settings are stored // TODO: You should modify this string to be something appropriate // such as the name of your company or organization SetRegistryKey(_T("Local AppWizard-Generated Applications")); CPGLauncherDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } else if (nResponse == -1) { TRACE(traceAppMsg, 0, "Warning: dialog creation failed, so application is terminating unexpectedly.\n"); TRACE(traceAppMsg, 0, "Warning: if you are using MFC controls on the dialog, you cannot #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS.\n"); } // Delete the shell manager created above. if (pShellManager != NULL) { delete pShellManager; } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }
BOOL CCodeTesterApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); _tsetlocale(LC_CTYPE, _T("chs")); AfxInitRichEdit2(); ::AfxSocketInit(); AfxEnableControlContainer(); // 创建 shell 管理器,以防对话框包含 // 任何 shell 树视图控件或 shell 列表视图控件。 CShellManager *pShellManager = new CShellManager; WCHAR buff[100]; GetCurrentDirectory(100, buff); m_ProfileName = buff; m_ProfileName += "\\"; m_ProfileName += m_pszProfileName; WIN32_FIND_DATAW findFileData; /* uint32 value1 = 0x10000000; TRACE(L"value1=%08x\n", value1); uint32 value2 = value1 << 4; TRACE("value=%08x\n", value2); uint32 value3 = value1 - value2; TRACE("value1 - value2=%08x\n", value1 - value2); TRACE("value2 - value1=%08x\n", value2 - value1); if(value1 >= 0x0FFFFFFF) { value1 = (0xFFFFFFFF - value1) << 4; } */ HANDLE handle = FindFirstFile(m_ProfileName, &findFileData); if(0xFFFFFFFF == (UINT)handle) { ::WritePrivateProfileString(L"FrameInfo",L"CarrierNum",L"10",m_ProfileName); ::WritePrivateProfileString(L"FrameInfo",L"SiteNum",L"1",m_ProfileName); ::WritePrivateProfileString(L"FrameInfo",L"GwID",L"1",m_ProfileName); ::WritePrivateProfileString(L"FrameInfo",L"GwType",L"31",m_ProfileName); ::WritePrivateProfileString(L"FrameInfo",L"CpuID",L"1",m_ProfileName); ::WritePrivateProfileString(L"WirelessGate",L"WgIpAddr",L"192.168.0.27",m_ProfileName); ::WritePrivateProfileString(L"WirelessGate",L"CdmsIpAddr",L"192.168.0.25",m_ProfileName); ::WritePrivateProfileString(L"WirelessGate",L"BcIpAddr",L"192.168.0.20",m_ProfileName); ::WritePrivateProfileString(L"WirelessGate",L"IpMask",L"255.255.255.0",m_ProfileName); ::WritePrivateProfileString(L"WirelessGate",L"IpGate",L"192.168.0.1",m_ProfileName); ::WritePrivateProfileString(L"CmdList",L"Cmd01",L"0",m_ProfileName); } CStringA strName(m_ProfileName); // CHAR buf[100]; DWORD ipaddr = 0; // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); if (!AfxSocketInit()) { AfxMessageBox(L"Socket init failed."); return FALSE; } //GetPrivateProfileString(L"wg.ini", L" CCodeTesterDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用 // “确定”来关闭对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用 // “取消”来关闭对话框的代码 } // 删除上面创建的 shell 管理器。 if (pShellManager != NULL) { delete pShellManager; } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return FALSE; }
BOOL CModbusPollApp::InitInstance() { // InitCommonControlsEx() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // Set this to include all the common control classes you want to use // in your application. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); if(!AfxInitRichEdit()) { AfxMessageBox(_T("Initial RichEdit Control Error."));// return FALSE;// } //AfxInitRichEdit2(); if(!AfxInitRichEdit2()) { AfxMessageBox(_T("Initial RichEdit Control Error."));// return FALSE;// } get_ExePath(); // Initialize OLE libraries if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); EnableTaskbarInteraction(FALSE); // AfxInitRichEdit2() is required to use RichEdit control // AfxInitRichEdit2(); // 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 // Change the registry key under which our settings are stored // TODO: You should modify this string to be something appropriate // such as the name of your company or organization SetRegistryKey(_T("Local AppWizard-Generated Applications")); LoadStdProfileSettings(4); // Load standard INI file options (including MRU) InitContextMenuManager(); InitKeyboardManager(); InitTooltipManager(); CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate(IDR_ModbusPollTYPE, RUNTIME_CLASS(CModbusPollDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CModbusPollView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // create main MDI Frame window CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME)) { delete pMainFrame; return FALSE; } m_pMainWnd = pMainFrame; // call DragAcceptFiles only if there's a suffix // In an MDI app, this should occur immediately after setting m_pMainWnd // Enable drag/drop open m_pMainWnd->DragAcceptFiles(); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Enable DDE Execute open EnableShellOpen(); RegisterShellFileTypes(TRUE); // Dispatch commands specified on the command line. Will return FALSE if // app was launched with /RegServer, /Register, /Unregserver or /Unregister. if (!ProcessShellCommand(cmdInfo)) return FALSE; // The main window has been initialized, so show and update it pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); return TRUE; }
BOOL CCustomPlayer::InitPlayer(HWND iMainWindow, HWND iRenderWindow, int iConfig, const void* iData,int iDataSize) { // keep a reference on the main/render window m_MainWindow = iMainWindow; m_RenderWindow = iRenderWindow; // start the Virtools Engine //CKInitCustomPlayer(false); CKStartUp(); ////////////////////////////////////////////////////////////////////////// // we have unmet requirements ? XString errorText; int hasError = DoSystemCheck(errorText); ////////////////////////////////////////////////////////////////////////// // show splash when we have no error and we are not in the explicit configuration mode ( invoked by : "CustomPlayer.exe -c ") : if( GetPAppStyle()->UseSplash() && !hasError && PGetApplicationMode() != config ) { ShowSplash(); } // retrieve the plugin manager ... CKPluginManager* pluginManager = CKGetPluginManager(); ////////////////////////////////////////////////////////////////////////// // ... to intialize plugins ... if (!_InitPlugins(*pluginManager)) { MessageBox(NULL,UNABLE_TO_INIT_PLUGINS,INIT_ERROR,MB_OK|MB_ICONERROR); return FALSE; } ////////////////////////////////////////////////////////////////////////// // ... and the render engine. int renderEngine = _InitRenderEngines(*pluginManager); if (renderEngine==-1) { MessageBox(NULL,UNABLE_TO_LOAD_RENDERENGINE,INIT_ERROR,MB_OK|MB_ICONERROR); return FALSE; } ////////////////////////////////////////////////////////////////////////// // now create the CK context XString inifile = CKGetStartPath(); inifile << "CompositionPrefs_R_Hi.ini"; CKERROR res = CKCreateContext(&m_CKContext,m_MainWindow,inifile.Str()); if (res!=CK_OK) { MessageBox(NULL,UNABLE_TO_INIT_CK,INIT_ERROR,MB_OK|MB_ICONERROR); return FALSE; } #if defined(CUSTOM_PLAYER_STATIC) // if the player is not static char BehaviorPath[_MAX_PATH]; char szPath[_MAX_PATH]; VxGetModuleFileName(NULL,szPath,_MAX_PATH); CKPathSplitter ps(szPath); sprintf(BehaviorPath,"%s%s%s",ps.GetDrive(),ps.GetDir(),GetEPathProfile()->BehaviorPath.Str()); pluginManager->ParsePlugins(BehaviorPath); #endif ////////////////////////////////////////////////////////////////////////// // adding load callback if(GetPAppStyle()->UseSplash() && !m_LastError && PGetApplicationMode() != config ) { if (GetPAppStyle()->ShowLoadingProcess()) { m_CKContext->SetInterfaceMode(FALSE,LoadCallBack,NULL); } } // retrieve the main managers which will be used by the player m_MessageManager = m_CKContext->GetMessageManager(); m_RenderManager = m_CKContext->GetRenderManager(); m_TimeManager = m_CKContext->GetTimeManager(); m_AttributeManager = m_CKContext->GetAttributeManager(); m_EnginePointers.TheMessageManager = m_MessageManager; m_EnginePointers.TheRenderManager = m_RenderManager; m_EnginePointers.TheTimeManager = m_TimeManager; m_EnginePointers.TheCKContext = m_CKContext; //We have an error, show our dialog : if (hasError) { AfxInitRichEdit2(); CustomPlayerDialog k(NULL,CString(errorText.Str())); k.DoModal(); if (CPA_ABORT_ON_ERROR) { return FALSE; } } m_InputManager = (CKInputManager*)m_CKContext->GetManagerByGuid(INPUT_MANAGER_GUID); if (!m_MessageManager || !m_RenderManager || !m_TimeManager || !m_AttributeManager || !m_InputManager) { MessageBox(NULL,UNABLE_TO_INIT_MANAGERS,INIT_ERROR,MB_OK|MB_ICONERROR); return FALSE; } // initialize the display driver using the player configuration (resolution, rasterizer, ...) if (!_InitDriver()) { MessageBox(NULL,UNABLE_TO_INIT_DRIVER,INIT_ERROR,MB_OK|MB_ICONERROR); return FALSE; } PLoadResourcePaths(CUSTOM_PLAYER_CONFIG_FILE,"Textures",0); PLoadResourcePaths(CUSTOM_PLAYER_CONFIG_FILE,"Data",1); PLoadResourcePaths(CUSTOM_PLAYER_CONFIG_FILE,"Music",2); // now load the composition if (iDataSize) { // if iDataSize is not null it means the composition is already in memory if (_Load(iData,iDataSize)!=CK_OK) { MessageBox(NULL,"Unable to load composition from memory.","Initialization Error",MB_OK|MB_ICONERROR); return FALSE; } } else if (_Load((const char*)iData)!=CK_OK) { // else we load it from a file (iData contains the filename) MessageBox(NULL,"Unable to load composition from file.","Initialization Error",MB_OK|MB_ICONERROR); return FALSE; } //GetPlayer().HideSplash(); //show our dialog ? if (GetPAppStyle()->g_ShowDialog) { AfxInitRichEdit2(); CustomPlayerDialog k(NULL,CString(errorText.Str())); k.DoModal(); } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // update of our member variables vtPlayer::Structs::xSEnginePointers* ep = GetPlayer().GetEnginePointers(); vtPlayer::Structs::xSEngineWindowInfo* ewinfo = GetPlayer().GetEngineWindowInfo(); m_WindowedHeight = ewinfo->g_HeightW; m_WindowedWidth = ewinfo->g_WidthW; m_FullscreenWidth = ewinfo->g_Width; m_FullscreenHeight = ewinfo->g_Height; if(ewinfo->g_GoFullScreen) m_Driver = ewinfo->g_FullScreenDriver; else m_Driver = ewinfo->g_WindowedDriver; m_FullscreenBpp = ewinfo->g_Bpp; ////////////////////////////////////////////////////////////////////////// CKVariableManager *vm = (CKVariableManager *)m_EnginePointers.TheCKContext->GetVariableManager(); vm->SetValue("CK2_3D/Antialias", GetEWindowInfo()->FSSA * 2 ); if(PGetApplicationMode() != config) { if (GetPlayer().GetPAppStyle()->IsRenderering()) { ////////////////////////////////////////////////////////////////////////// // create the render context if (GetEWindowInfo()->g_GoFullScreen) { // in fullscreen we specify the rendering size using a rectangle (CKRECT) CKRECT rect; rect.left = 0; rect.top = 0; rect.right = m_FullscreenWidth; rect.bottom = m_FullscreenHeight; // create the render context m_RenderContext = m_RenderManager->CreateRenderContext(m_RenderWindow,GetEWindowInfo()->g_FullScreenDriver,&rect,TRUE,m_FullscreenBpp); // set the position of the render window ::SetWindowPos(m_RenderWindow,NULL,0,0,m_FullscreenWidth,m_FullscreenHeight,SWP_NOMOVE|SWP_NOZORDER); // resize the render context if (m_RenderContext) { m_RenderContext->Resize(0,0,m_FullscreenWidth,m_FullscreenHeight); } } else { ////////////////////////////////////////////////////////////////////////// // [2/18/2008 mc007] // we only repositioning the window when we are not displayed by a hosting application like // a charp panel ! if (!GetPAppStyle()->g_OwnerDrawed) { LONG st = GetWindowLong(m_MainWindow,GWL_STYLE); st|=WS_THICKFRAME; st&=~WS_SIZEBOX; SetWindowLong(m_MainWindow,GWL_STYLE,st); //reposition the window m_MainWindowRect.left = (GetSystemMetrics(SM_CXSCREEN)-m_WindowedWidth)/2; m_MainWindowRect.right = m_WindowedWidth+m_MainWindowRect.left; m_MainWindowRect.top = (GetSystemMetrics(SM_CYSCREEN)-m_WindowedHeight)/2; m_MainWindowRect.bottom = m_WindowedHeight+m_MainWindowRect.top; BOOL ret = AdjustWindowRect(&m_MainWindowRect,WS_OVERLAPPEDWINDOW & ~(WS_SYSMENU|WS_SIZEBOX|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_SIZEBOX),FALSE); ::SetWindowPos(m_MainWindow,0,m_MainWindowRect.left,m_MainWindowRect.top,m_MainWindowRect.right - m_MainWindowRect.left,m_MainWindowRect.bottom - m_MainWindowRect.top,NULL); // set the position of the render window ::SetWindowPos(m_RenderWindow,NULL,0,0,m_WindowedWidth,m_WindowedHeight,SWP_NOMOVE|SWP_NOZORDER); } // create the render context m_RenderContext = m_RenderManager->CreateRenderContext(m_RenderWindow,m_Driver,0,FALSE); // resize the render context if (m_RenderContext) { m_RenderContext->Resize(0,0,m_WindowedWidth,m_WindowedHeight); } } ////////////////////////////////////////////////////////////////////////// // when somebody changed any resolution in the configuration tab , we should update our windows : //store current size /* GetWindowRect(m_MainWindow,&m_MainWindowRect); LONG st = GetWindowLong(m_MainWindow,GWL_STYLE); st|=WS_THICKFRAME; st&=~WS_SIZEBOX; SetWindowLong(m_MainWindow,GWL_STYLE,st); //reposition the window m_MainWindowRect.left = (GetSystemMetrics(SM_CXSCREEN)-m_WindowedWidth)/2; m_MainWindowRect.right = m_WindowedWidth+m_MainWindowRect.left; m_MainWindowRect.top = (GetSystemMetrics(SM_CYSCREEN)-m_WindowedHeight)/2; m_MainWindowRect.bottom = m_WindowedHeight+m_MainWindowRect.top; BOOL ret = AdjustWindowRect(&m_MainWindowRect,WS_OVERLAPPEDWINDOW & ~(WS_SYSMENU|WS_SIZEBOX|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_SIZEBOX),FALSE); ::SetWindowPos(m_MainWindow,0,m_MainWindowRect.left,m_MainWindowRect.top,m_MainWindowRect.right - m_MainWindowRect.left,m_MainWindowRect.bottom - m_MainWindowRect.top,NULL); // and set the position of the render window in the main window ::SetWindowPos(m_RenderWindow,NULL,0,0,m_WindowedWidth,m_WindowedHeight,SWP_NOMOVE|SWP_NOZORDER); m_RenderContext->Resize(0,0,GetEWindowInfo()->g_GoFullScreen ? m_FullscreenWidth : m_WindowedWidth, GetEWindowInfo()->g_GoFullScreen ? m_FullscreenHeight : m_WindowedHeight);*/ if (!m_RenderContext) { MessageBox(NULL,UNABLE_TO_CREATE_RENDERCONTEXT,INIT_ERROR,MB_OK|MB_ICONERROR); return FALSE; } ////////////////////////////////////////////////////////////////////////// // clear the render view m_RenderContext->Clear(); m_RenderContext->BackToFront(); m_RenderContext->Clear(); } // finalize the loading if (!_FinishLoad()) { return FALSE; } } return TRUE; }
BOOL CTortoiseProcApp::InitInstance() { EnableCrashHandler(); InitializeJumpList(); CheckUpgrade(); CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); CMFCButton::EnableWindowsTheming(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; Gdiplus::GdiplusStartup(&m_gdiplusToken,&gdiplusStartupInput,NULL); if(!CheckMsysGitDir()) { UINT ret = CMessageBox::Show(NULL,_T("MSysGit (http://code.google.com/p/msysgit/) not found."), _T("TortoiseGit"), 3, IDI_HAND, _T("&Set MSysGit path"), _T("&Goto WebSite"), _T("&Abort")); if(ret == 2) { ShellExecute(NULL, NULL, _T("http://code.google.com/p/msysgit/"), NULL, NULL, SW_SHOW); } else if(ret == 1) { // open settings dialog CSettings dlg(IDS_PROC_SETTINGS_TITLE); dlg.SetTreeViewMode(TRUE, TRUE, TRUE); dlg.SetTreeWidth(220); dlg.DoModal(); dlg.HandleRestart(); } return FALSE; } //set the resource dll for the required language CRegDWORD loc = CRegDWORD(_T("Software\\TortoiseGit\\LanguageID"), 1033); long langId = loc; CString langDll; CStringA langpath = CStringA(CPathUtils::GetAppParentDirectory()); langpath += "Languages"; // bindtextdomain("subversion", (LPCSTR)langpath); // bind_textdomain_codeset("subversion", "UTF-8"); HINSTANCE hInst = NULL; do { langDll.Format(_T("..\\Languages\\TortoiseProc%d.dll"), langId); hInst = LoadLibrary(langDll); CString sVer = _T(STRPRODUCTVER); CString sFileVer = CPathUtils::GetVersionFromFile(langDll); if (sFileVer.Compare(sVer)!=0) { FreeLibrary(hInst); hInst = NULL; } if (hInst != NULL) { AfxSetResourceHandle(hInst); } else { DWORD lid = SUBLANGID(langId); lid--; if (lid > 0) { langId = MAKELANGID(PRIMARYLANGID(langId), lid); } else langId = 0; } } while ((hInst == NULL) && (langId != 0)); TCHAR buf[6]; _tcscpy_s(buf, _T("en")); langId = loc; CString sHelppath; sHelppath = this->m_pszHelpFilePath; sHelppath = sHelppath.MakeLower(); // MFC uses a help file with the same name as the application by default, // which means we have to change that default to our language specific help files sHelppath.Replace(_T("tortoiseproc.chm"), _T("TortoiseGit_en.chm")); free((void*)m_pszHelpFilePath); m_pszHelpFilePath=_tcsdup(sHelppath); sHelppath = CPathUtils::GetAppParentDirectory() + _T("Languages\\TortoiseGit_en.chm"); do { CString sLang = _T("_"); if (GetLocaleInfo(MAKELCID(langId, SORT_DEFAULT), LOCALE_SISO639LANGNAME, buf, _countof(buf))) { sLang += buf; sHelppath.Replace(_T("_en"), sLang); if (PathFileExists(sHelppath)) { free((void*)m_pszHelpFilePath); m_pszHelpFilePath=_tcsdup(sHelppath); break; } } sHelppath.Replace(sLang, _T("_en")); if (GetLocaleInfo(MAKELCID(langId, SORT_DEFAULT), LOCALE_SISO3166CTRYNAME, buf, _countof(buf))) { sLang += _T("_"); sLang += buf; sHelppath.Replace(_T("_en"), sLang); if (PathFileExists(sHelppath)) { free((void*)m_pszHelpFilePath); m_pszHelpFilePath=_tcsdup(sHelppath); break; } } sHelppath.Replace(sLang, _T("_en")); DWORD lid = SUBLANGID(langId); lid--; if (lid > 0) { langId = MAKELANGID(PRIMARYLANGID(langId), lid); } else langId = 0; } while (langId); setlocale(LC_ALL, ""); // InitCommonControls() is required on Windows XP if an application // manifest specifies use of ComCtl32.dll version 6 or later to enable // visual styles. Otherwise, any window creation will fail. INITCOMMONCONTROLSEX used = { sizeof(INITCOMMONCONTROLSEX), ICC_ANIMATE_CLASS | ICC_BAR_CLASSES | ICC_COOL_CLASSES | ICC_DATE_CLASSES | ICC_HOTKEY_CLASS | ICC_INTERNET_CLASSES | ICC_LISTVIEW_CLASSES | ICC_NATIVEFNTCTL_CLASS | ICC_PAGESCROLLER_CLASS | ICC_PROGRESS_CLASS | ICC_TAB_CLASSES | ICC_TREEVIEW_CLASSES | ICC_UPDOWN_CLASS | ICC_USEREX_CLASSES | ICC_WIN95_CLASSES }; InitCommonControlsEx(&used); AfxOleInit(); AfxEnableControlContainer(); AfxInitRichEdit2(); CWinAppEx::InitInstance(); SetRegistryKey(_T("TortoiseGit")); CCmdLineParser parser(AfxGetApp()->m_lpCmdLine); // if HKCU\Software\TortoiseGit\Debug is not 0, show our command line // in a message box if (CRegDWORD(_T("Software\\TortoiseGit\\Debug"), FALSE)==TRUE) AfxMessageBox(AfxGetApp()->m_lpCmdLine, MB_OK | MB_ICONINFORMATION); if ( parser.HasKey(_T("path")) && parser.HasKey(_T("pathfile"))) { CMessageBox::Show(NULL, IDS_ERR_INVALIDPATH, IDS_APPNAME, MB_ICONERROR); return FALSE; } CTGitPath cmdLinePath; CTGitPathList pathList; if ( parser.HasKey(_T("pathfile")) ) { CString sPathfileArgument = CPathUtils::GetLongPathname(parser.GetVal(_T("pathfile"))); cmdLinePath.SetFromUnknown(sPathfileArgument); if (pathList.LoadFromFile(cmdLinePath)==false) return FALSE; // no path specified! if ( parser.HasKey(_T("deletepathfile")) ) { // We can delete the temporary path file, now that we've loaded it ::DeleteFile(cmdLinePath.GetWinPath()); } // This was a path to a temporary file - it's got no meaning now, and // anybody who uses it again is in for a problem... cmdLinePath.Reset(); } else { CString sPathArgument = CPathUtils::GetLongPathname(parser.GetVal(_T("path"))); int asterisk = sPathArgument.Find('*'); cmdLinePath.SetFromUnknown(asterisk >= 0 ? sPathArgument.Left(asterisk) : sPathArgument); pathList.LoadFromAsteriskSeparatedString(sPathArgument); } if (pathList.GetCount() == 0) { pathList.AddPath(CTGitPath::CTGitPath(g_Git.m_CurrentDir)); } hWndExplorer = NULL; CString sVal = parser.GetVal(_T("hwnd")); if (!sVal.IsEmpty()) hWndExplorer = (HWND)_ttoi64(sVal); while (GetParent(hWndExplorer)!=NULL) hWndExplorer = GetParent(hWndExplorer); if (!IsWindow(hWndExplorer)) { hWndExplorer = NULL; } // Subversion sometimes writes temp files to the current directory! // Since TSVN doesn't need a specific CWD anyway, we just set it // to the users temp folder: that way, Subversion is guaranteed to // have write access to the CWD { DWORD len = GetCurrentDirectory(0, NULL); if (len) { TCHAR * originalCurrentDirectory = new TCHAR[len]; if (GetCurrentDirectory(len, originalCurrentDirectory)) { //sOrigCWD = originalCurrentDirectory; //sOrigCWD = CPathUtils::GetLongPathname(sOrigCWD); } delete [] originalCurrentDirectory; } TCHAR pathbuf[MAX_PATH]; GetTempPath(MAX_PATH, pathbuf); SetCurrentDirectory(pathbuf); } // check for newer versions if (CRegDWORD(_T("Software\\TortoiseGit\\CheckNewer"), TRUE) != FALSE) { time_t now; struct tm ptm; time(&now); if ((now != 0) && (localtime_s(&ptm, &now)==0)) { int week = 0; // we don't calculate the real 'week of the year' here // because just to decide if we should check for an update // that's not needed. week = ptm.tm_yday / 7; CRegDWORD oldweek = CRegDWORD(_T("Software\\TortoiseGit\\CheckNewerWeek"), (DWORD)-1); if (((DWORD)oldweek) == -1) oldweek = week; // first start of TortoiseProc, no update check needed else { if ((DWORD)week != oldweek) { oldweek = week; TCHAR com[MAX_PATH+100]; GetModuleFileName(NULL, com, MAX_PATH); _tcscat_s(com, MAX_PATH+100, _T(" /command:updatecheck")); CAppUtils::LaunchApplication(com, 0, false); } } } } if (parser.HasVal(_T("configdir"))) { // the user can override the location of the Subversion config directory here CString sConfigDir = parser.GetVal(_T("configdir")); // g_GitGlobal.SetConfigDir(sConfigDir); } // to avoid that SASL will look for and load its plugin dlls all around the // system, we set the path here. // Note that SASL doesn't have to be initialized yet for this to work // sasl_set_path(SASL_PATH_TYPE_PLUGIN, (LPSTR)(LPCSTR)CUnicodeUtils::GetUTF8(CPathUtils::GetAppDirectory().TrimRight('\\'))); HANDLE TSVNMutex = ::CreateMutex(NULL, FALSE, _T("TortoiseGitProc.exe")); if(!g_Git.SetCurrentDir(cmdLinePath.GetWinPathString())) { int i=0; for(i=0;i<pathList.GetCount();i++) if(g_Git.SetCurrentDir(pathList[i].GetWinPath())) break; } if(!g_Git.m_CurrentDir.IsEmpty()) SetCurrentDirectory(g_Git.m_CurrentDir); { CString err; try { // requires CWD to be set CGit::m_LogEncode = CAppUtils::GetLogOutputEncode(); } catch (char* msg) { err = CString(msg); } if (!err.IsEmpty()) { UINT choice = CMessageBox::Show(hWndExplorer, err, _T("TortoiseGit Error"), 1, IDI_ERROR, _T("&Edit .git/config"), _T("Edit &global .gitconfig"), _T("&Abort")); if (choice == 1) { // open the config file with alternative editor CString path = g_Git.m_CurrentDir; path += _T("\\.git\\config"); CAppUtils::LaunchAlternativeEditor(path); } else if (choice == 2) { // open the global config file with alternative editor TCHAR buf[MAX_PATH]; ExpandEnvironmentStrings(_T("%HOMEDRIVE%\\%HOMEPATH%\\.gitconfig"), buf, MAX_PATH); CAppUtils::LaunchAlternativeEditor(buf); } return FALSE; } } // execute the requested command CommandServer server; Command * cmd = server.GetCommand(parser.GetVal(_T("command"))); if (cmd) { cmd->SetExplorerHwnd(hWndExplorer); cmd->SetParser(parser); cmd->SetPaths(pathList, cmdLinePath); retSuccess = cmd->Execute(); delete cmd; } if (TSVNMutex) ::CloseHandle(TSVNMutex); // Look for temporary files left around by TortoiseSVN and // remove them. But only delete 'old' files because some // apps might still be needing the recent ones. { DWORD len = ::GetTempPath(0, NULL); TCHAR * path = new TCHAR[len + 100]; len = ::GetTempPath (len+100, path); if (len != 0) { CSimpleFileFind finder = CSimpleFileFind(path, _T("*svn*.*")); FILETIME systime_; ::GetSystemTimeAsFileTime(&systime_); __int64 systime = (((_int64)systime_.dwHighDateTime)<<32) | ((__int64)systime_.dwLowDateTime); while (finder.FindNextFileNoDirectories()) { CString filepath = finder.GetFilePath(); HANDLE hFile = ::CreateFile(filepath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL); if (hFile != INVALID_HANDLE_VALUE) { FILETIME createtime_; if (::GetFileTime(hFile, &createtime_, NULL, NULL)) { ::CloseHandle(hFile); __int64 createtime = (((_int64)createtime_.dwHighDateTime)<<32) | ((__int64)createtime_.dwLowDateTime); if ((createtime + 864000000000) < systime) //only delete files older than a day { ::SetFileAttributes(filepath, FILE_ATTRIBUTE_NORMAL); ::DeleteFile(filepath); } } else ::CloseHandle(hFile); } } } delete[] path; } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; }