BOOL CMechanism_HW01App::InitInstance() { // 假如應用程式資訊清單指定使用 ComCtl32.dll 6 (含) 以後版本, // 來啟動視覺化樣式,在 Windows XP 上,則需要 InitCommonControls()。 // 否則任何視窗的建立都將失敗。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 設定要包含所有您想要用於應用程式中的 // 通用控制項類別。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); // 初始化 OLE 程式庫 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); EnableTaskbarInteraction(FALSE); // 需要有 AfxInitRichEdit2() 才能使用 RichEdit 控制項 // AfxInitRichEdit2(); // 標準初始設定 // 如果您不使用這些功能並且想減少 // 最後完成的可執行檔大小,您可以 // 從下列程式碼移除不需要的初始化常式, // 變更儲存設定值的登錄機碼 // TODO: 您應該適度修改此字串 // (例如,公司名稱或組織名稱) SetRegistryKey(_T("本機 AppWizard 所產生的應用程式")); LoadStdProfileSettings(4); // 載入標準 INI 檔選項 (包含 MRU) // 登錄應用程式的文件範本。文件範本負責在文件、 // 框架視窗與檢視間進行連接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMechanism_HW01Doc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架視窗 RUNTIME_CLASS(CMechanism_HW01View)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 剖析標準 Shell 命令、DDE、檔案開啟舊檔的命令列 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 在命令列中指定的分派命令。如果已使用 // /RegServer、/Register、/Unregserver 或 /Unregister 啟動應用程式,將傳回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; // 僅初始化一個視窗,所以顯示並更新該視窗 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->SetWindowText("高等機構 - 作業二"); m_pMainWnd->UpdateWindow(); // 只有在 SDI 應用程式中有後置字元時,才呼叫 DragAcceptFiles // 這會發生於 ProcessShellCommand 之後 return TRUE; }
BOOL CMServerManagerApp::InitInstance() { // 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을 // 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControlsEx()가 필요합니다. // InitCommonControlsEx()를 사용하지 않으면 창을 만들 수 없습니다. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 응용 프로그램에서 사용할 모든 공용 컨트롤 클래스를 포함하도록 // 이 항목을 설정하십시오. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } // OLE 라이브러리를 초기화합니다. if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); // 표준 초기화 // 이들 기능을 사용하지 않고 최종 실행 파일의 크기를 줄이려면 // 아래에서 필요 없는 특정 초기화 // 루틴을 제거해야 합니다. // 해당 설정이 저장된 레지스트리 키를 변경하십시오. // TODO: 이 문자열을 회사 또는 조직의 이름과 같은 // 적절한 내용으로 수정해야 합니다. SetRegistryKey(_T("로컬 응용 프로그램 마법사에서 생성된 응용 프로그램")); LoadStdProfileSettings(4); // MRU를 포함하여 표준 INI 파일 옵션을 로드합니다. InitContextMenuManager(); InitKeyboardManager(); InitTooltipManager(); CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); // 응용 프로그램의 문서 템플릿을 등록합니다. 문서 템플릿은 // 문서, 프레임 창 및 뷰 사이의 연결 역할을 합니다. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMServerManagerDoc), RUNTIME_CLASS(CMainFrame), // 주 SDI 프레임 창입니다. RUNTIME_CLASS(CMServerManagerView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 표준 셸 명령, DDE, 파일 열기에 대한 명령줄을 구문 분석합니다. CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 명령줄에 지정된 명령을 디스패치합니다. // 응용 프로그램이 /RegServer, /Register, /Unregserver 또는 /Unregister로 시작된 경우 FALSE를 반환합니다. if (!ProcessShellCommand(cmdInfo)) return FALSE; // 창 하나만 초기화되었으므로 이를 표시하고 업데이트합니다. m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // 접미사가 있을 경우에만 DragAcceptFiles를 호출합니다. // SDI 응용 프로그램에서는 ProcessShellCommand 후에 이러한 호출이 발생해야 합니다. m_pMainWnd->SetWindowText("M-Server Manager"); return TRUE; }
int Run(LPTSTR lpstrCmdLine = NULL, int nCmdShow = SW_SHOWDEFAULT) { CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); wstring strConfigFile(L""); wstring strWindowTitle(L""); vector<wstring> startupTabs; vector<wstring> startupDirs; vector<wstring> startupCmds; int nMultiStartSleep = 0; wstring strDbgCmdLine(L""); ParseCommandLine( lpstrCmdLine, strConfigFile, strWindowTitle, startupTabs, startupDirs, startupCmds, nMultiStartSleep, strDbgCmdLine); if (strConfigFile.length() == 0) { strConfigFile = wstring(L"console.xml"); // strConfigFile = Helpers::GetModulePath(NULL) + wstring(L"console.xml"); // strConfigFile = wstring(::_wgetenv(L"APPDATA")) + wstring(L"\\Console\\console.xml"); } if (!g_settingsHandler->LoadSettings(Helpers::ExpandEnvironmentStrings(strConfigFile))) { //TODO: error handling return 1; } // create main window NoTaskbarParent noTaskbarParent; MainFrame wndMain(strWindowTitle, startupTabs, startupDirs, startupCmds, nMultiStartSleep, strDbgCmdLine); if (!g_settingsHandler->GetAppearanceSettings().stylesSettings.bTaskbarButton) { noTaskbarParent.Create(NULL); } if(wndMain.CreateEx(noTaskbarParent.m_hWnd) == NULL) { ATLTRACE(_T("Main window creation failed!\n")); return 1; } wndMain.ShowWindow(nCmdShow); int nRet = theLoop.Run(); if (noTaskbarParent.m_hWnd != NULL) noTaskbarParent.DestroyWindow(); _Module.RemoveMessageLoop(); return nRet; }
BOOL CLegoApp::InitInstance() { // 假如應用程式資訊清單指定使用 ComCtl32.dll 6 (含) 以後版本, // 來啟動視覺化樣式,在 Windows XP 上,則需要 InitCommonControls()。 // 否則任何視窗的建立都將失敗。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 設定要包含所有您想要用於應用程式中的 // 通用控制項類別。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); // 初始化 OLE 程式庫 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); EnableTaskbarInteraction(); // 需要有 AfxInitRichEdit2() 才能使用 RichEdit 控制項 // AfxInitRichEdit2(); // 標準初始設定 // 如果您不使用這些功能並且想減少 // 最後完成的可執行檔大小,您可以 // 從下列程式碼移除不需要的初始化常式, // 變更儲存設定值的登錄機碼 // TODO: 您應該適度修改此字串 // (例如,公司名稱或組織名稱) SetRegistryKey(_T("本機 AppWizard 所產生的應用程式")); LoadStdProfileSettings(4); // 載入標準 INI 檔選項 (包含 MRU) InitContextMenuManager(); InitKeyboardManager(); InitTooltipManager(); CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); // 登錄應用程式的文件範本。文件範本負責在文件、 // 框架視窗與檢視間進行連接 CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate(IDR_LegoTYPE, RUNTIME_CLASS(CLegoDoc), RUNTIME_CLASS(CChildFrame), // 自訂 MDI 子框架 RUNTIME_CLASS(CLegoView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 建立主 MDI 框架視窗 CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME)) { delete pMainFrame; return FALSE; } m_pMainWnd = pMainFrame; // 只有在 MDI 應用程式中有後置字元時,才呼叫 DragAcceptFiles // 這會立即發生在設定 m_pMainWnd 之後 // 剖析標準 Shell 命令、DDE、檔案開啟舊檔的命令列 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // phlin // DON'T display a new MDI child window during startup!!! cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; // 在命令列中指定的分派命令。如果已使用 // /RegServer、/Register、/Unregserver 或 /Unregister 啟動應用程式,將傳回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; // 已經初始設定主視窗,所以顯示並更新該視窗 pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); return TRUE; }
BOOL CRoundAnalyseApp::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(); // Initialize OLE libraries if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); EnableTaskbarInteraction(); // 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_RoundAnalyseTYPE, RUNTIME_CLASS(CRoundAnalyseDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CRoundAnalyseView)); 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; // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 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 CMy601DemoClientApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); // 初始化 OLE 库 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); EnableTaskbarInteraction(FALSE); // 使用 RichEdit 控件需要 AfxInitRichEdit2() // AfxInitRichEdit2(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); LoadStdProfileSettings(4); // 加载标准 INI 文件选项(包括 MRU) InitContextMenuManager(); InitKeyboardManager(); InitTooltipManager(); CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); if (!GetConfigFromIni()) // 配置文件中的配置信息不完整时才弹出配置对话框 { CConnectionSetDlg dlg; dlg.m_strServerPort = m_strServerPort; dlg.m_strServerIp = m_strServerIp ; dlg.m_strLocalPort = m_strLocalServicePort; dlg.m_strServerDomain = m_strServerDomain; if (dlg.DoModal()!=IDOK) return FALSE; m_bUseIp = dlg.m_iUseIp==0 ? TRUE:FALSE; if (m_bUseIp) m_strServerIp = dlg.m_strServerIp; else m_strServerDomain = dlg.m_strServerDomain; m_strServerPort = dlg.m_strServerPort; m_strLocalServicePort = dlg.m_strLocalPort; WriteSettingToIni(); } // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MENU_MAIN_CLIENT, RUNTIME_CLASS(CMy601DemoClientDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CMy601DemoClientView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 分析标准 shell 命令、DDE、打开文件操作的命令行 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 调度在命令行中指定的命令。如果 // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // 仅当具有后缀时才调用 DragAcceptFiles // 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生 return TRUE; }
BOOL CHRSApp::InitInstance() { // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, youbb should remove from the following // the specific initialization routines you do not need. m_BTHand = AfxGetApp()->LoadCursor(IDC_CURSOR_HAND); #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif // 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(); // 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_CUSTOMERTYPE, RUNTIME_CLASS(CCUSTOMERDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CCUSTOMERView)); AddDocTemplate(pDocTemplate); pDocTemplate = new CMultiDocTemplate( IDR_BOXTYPE, RUNTIME_CLASS(CAreaDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CAreaView)); AddDocTemplate(pDocTemplate); pDocTemplate = new CMultiDocTemplate( IDR_SALETYPE, RUNTIME_CLASS(CSaleDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CSaleView)); AddDocTemplate(pDocTemplate); pDocTemplate = new CMultiDocTemplate( IDR_ITEMTYPE, RUNTIME_CLASS(CItemDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CItemView)); AddDocTemplate(pDocTemplate); pDocTemplate = new CMultiDocTemplate( IDR_USERTYPE, RUNTIME_CLASS(CUserDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CUserView)); AddDocTemplate(pDocTemplate); pDocTemplate = new CMultiDocTemplate( IDR_COSTTYPE, RUNTIME_CLASS(CMoneyDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CMoneyView)); AddDocTemplate(pDocTemplate); // create main MDI Frame window CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) return FALSE; m_pMainWnd = pMainFrame; // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; ParseCommandLine(cmdInfo); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; // The main window has been initialized, so show and update it. m_nCmdShow = SW_MAXIMIZE; pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); CDbManger::OpenConnection(); pMainFrame->OnCmdMsg(ID_MENU_LOGIN,0,0,0); return TRUE; }
BOOL CMFC_CampusNavigationApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。 否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); // 初始化 OLE 库 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); EnableTaskbarInteraction(FALSE); // 使用 RichEdit 控件需要 AfxInitRichEdit2() // AfxInitRichEdit2(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); LoadStdProfileSettings(4); // 加载标准 INI 文件选项(包括 MRU) // 注册应用程序的文档模板。 文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMFC_CampusNavigationDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CMFC_CampusNavigationView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 分析标准 shell 命令、DDE、打开文件操作的命令行 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 调度在命令行中指定的命令。 如果 // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE; }
BOOL Osmo4::InitInstance() { CCommandLineInfo cmdInfo; afxAmbientActCtx = FALSE; m_logs = NULL; m_term = NULL; memset(&m_user, 0, sizeof(GF_User)); /*get Osmo4.exe path*/ strcpy((char *) szApplicationPath, AfxGetApp()->m_pszHelpFilePath); while (szApplicationPath[strlen((char *) szApplicationPath)-1] != '\\') szApplicationPath[strlen((char *) szApplicationPath)-1] = 0; if (szApplicationPath[strlen((char *) szApplicationPath)-1] != '\\') strcat(szApplicationPath, "\\"); gf_sys_init(GF_FALSE); /*setup user*/ memset(&m_user, 0, sizeof(GF_User)); Bool first_launch = GF_FALSE; /*init config and modules*/ m_user.config = gf_cfg_init(NULL, &first_launch); if (!m_user.config) { MessageBox(NULL, "Configuration file not found", "Fatal Error", MB_OK); m_pMainWnd->PostMessage(WM_CLOSE); } char *name = gf_cfg_get_filename(m_user.config); char *sep = strrchr(name, '\\'); if (sep) sep[0] = 0; strcpy(szUserPath, name); if (sep) sep[0] = '\\'; gf_free(name); const char *opt = gf_cfg_get_key(m_user.config, "General", "SingleInstance"); m_SingleInstance = (opt && !stricmp(opt, "yes")) ? GF_TRUE : GF_FALSE; m_hMutex = NULL; if (m_SingleInstance) { m_hMutex = CreateMutex(NULL, FALSE, "Osmo4_GPAC_INSTANCE"); if ( GetLastError() == ERROR_ALREADY_EXISTS ) { char szDIR[1024]; if (m_hMutex) CloseHandle(m_hMutex); m_hMutex = NULL; if (!static_gpac_hwnd || !IsWindow(static_gpac_hwnd) ) { ::MessageBox(NULL, "Osmo4 ghost process detected", "Error at last shutdown" , MB_OK); } else { ::SetForegroundWindow(static_gpac_hwnd); if (m_lpCmdLine && strlen(m_lpCmdLine)) { DWORD_PTR res; size_t len; char *the_url, *cmd; GetCurrentDirectory(1024, szDIR); if (szDIR[strlen(szDIR)-1] != '\\') strcat(szDIR, "\\"); cmd = (char *)(const char *) m_lpCmdLine; strcpy(static_szCmdLine, ""); if (cmd[0]=='"') cmd+=1; if (!strnicmp(cmd, "-queue ", 7)) { strcat(static_szCmdLine, "-queue "); cmd += 7; } the_url = gf_url_concatenate(szDIR, cmd); if (!the_url) { strcat(static_szCmdLine, cmd); } else { strcat(static_szCmdLine, the_url); gf_free(the_url); } while ( (len = strlen(static_szCmdLine)) ) { char s = static_szCmdLine[len-1]; if ((s==' ') || (s=='"')) static_szCmdLine[len-1]=0; else break; } ::SendMessageTimeout(static_gpac_hwnd, WM_NEWINSTANCE, 0, 0, 0, 1000, &res); } } return FALSE; } } #if 0 // Standard initialization #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif #endif SetRegistryKey(_T("GPAC")); CMainFrame* pFrame = new CMainFrame; m_pMainWnd = pFrame; pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL); pFrame->LoadAccelTable( MAKEINTRESOURCE(IDR_MAINACCEL)); m_pMainWnd->DragAcceptFiles(); if (m_SingleInstance) static_gpac_hwnd = m_pMainWnd->m_hWnd; m_user.modules = gf_modules_new(NULL, m_user.config); if (!m_user.modules || ! gf_modules_get_count(m_user.modules) ) { MessageBox(NULL, "No modules currently available. Contact [email protected] for assistance.", "Fatal Error", MB_OK); m_pMainWnd->PostMessage(WM_CLOSE); } else if (first_launch) { /*first launch, register all files ext*/ u32 i; for (i=0; i<gf_modules_get_count(m_user.modules); i++) { GF_InputService *ifce = (GF_InputService *) gf_modules_load_interface(m_user.modules, i, GF_NET_CLIENT_INTERFACE); if (!ifce) continue; if (ifce) { ifce->CanHandleURL(ifce, "test.test"); gf_modules_close_interface((GF_BaseInterface *)ifce); } } /*set some shortcuts*/ gf_cfg_set_key(m_user.config, "Shortcuts", "VolumeUp", "ctrl+Up"); gf_cfg_set_key(m_user.config, "Shortcuts", "VolumeDown", "ctrl+Down"); gf_cfg_set_key(m_user.config, "Shortcuts", "FastRewind", "ctrl+Left"); gf_cfg_set_key(m_user.config, "Shortcuts", "FastForward", "ctrl+Right"); gf_cfg_set_key(m_user.config, "Shortcuts", "Play", "ctrl+ "); } /*check log file*/ const char *str = gf_cfg_get_key(m_user.config, "General", "LogFile"); if (str) { m_logs = gf_f64_open(str, "wt"); gf_log_set_callback(m_logs, osmo4_do_log); } else m_logs = NULL; /*set log level*/ if (gf_log_set_tools_levels(gf_cfg_get_key(m_user.config, "General", "Logs")) != GF_OK) fprintf(stdout, "osmo4: invalid log level specified\n"); m_user.opaque = this; m_user.os_window_handler = pFrame->m_pWndView->m_hWnd; m_user.EventProc = Osmo4_EventProc; m_reset = GF_FALSE; orig_width = 320; orig_height = 240; gf_set_progress_callback(this, Osmo4_progress_cbk); m_term = gf_term_new(&m_user); if (! m_term) { MessageBox(NULL, "Cannot load Bevara Access. Contact [email protected] for assistance.", "Fatal Error", MB_OK); m_pMainWnd->PostMessage(WM_CLOSE); return TRUE; } SetOptions(); UpdateRenderSwitch(); pFrame->SendMessage(WM_SETSIZE, orig_width, orig_height); //pFrame->m_Address.ReloadURLs(); pFrame->m_Sliders.SetVolume(); m_reconnect_time = 0; ParseCommandLine(cmdInfo); start_mode = 0; if (! cmdInfo.m_strFileName.IsEmpty()) { pFrame->m_pPlayList->QueueURL(cmdInfo.m_strFileName); pFrame->m_pPlayList->RefreshList(); pFrame->m_pPlayList->PlayNext(); } else { char sPL[MAX_PATH]; strcpy((char *) sPL, szUserPath); strcat(sPL, "gpac_pl.m3u"); pFrame->m_pPlayList->OpenPlayList(sPL); const char *sOpt = gf_cfg_get_key(GetApp()->m_user.config, "General", "PLEntry"); if (sOpt) { s32 count = (s32)gf_list_count(pFrame->m_pPlayList->m_entries); pFrame->m_pPlayList->m_cur_entry = atoi(sOpt); if (pFrame->m_pPlayList->m_cur_entry>=count) pFrame->m_pPlayList->m_cur_entry = count-1; } else { pFrame->m_pPlayList->m_cur_entry = -1; } #if 0 if (pFrame->m_pPlayList->m_cur_entry>=0) { start_mode = 1; pFrame->m_pPlayList->Play(); } #endif sOpt = gf_cfg_get_key(m_user.config, "General", "StartupFile"); if (sOpt && !strstr(sOpt, "gui") ) gf_term_connect(m_term, sOpt); sOpt = gf_cfg_get_key(m_user.config, "General", "PlaylistLoop"); m_Loop = (sOpt && !strcmp(sOpt, "yes")) ? GF_TRUE : GF_FALSE; } pFrame->SetFocus(); pFrame->SetForegroundWindow(); return TRUE; }
BOOL Cese599_project2App::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(); // 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) // 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(Cese599_project2Doc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(Cese599_project2View)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 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 one and only window has been initialized, so show and update it 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(); return TRUE; }
BOOL CInstallApp::InitInstance() { HWND oldHWnd = NULL; EnumWindows(EnumWndProc,(LPARAM)&oldHWnd); //枚举所有运行的窗口 if(oldHWnd != NULL) { ::ShowWindow(oldHWnd,SW_SHOWNORMAL); //激活找到的前一个程序 ::SetForegroundWindow(oldHWnd); //把它设为前景窗口 return false; //退出本次运行 } // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } // 初始化 OLE 库 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("BCGSoft\\BCGControlBarPro\\Samples")); // LoadStdProfileSettings(); // 加载标准 INI 文件选项(包括 MRU) SetRegistryBase (_T("Settings")); InitContextMenuManager(); InitKeyboardManager(); InitParam(); // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CInstallDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CInstallView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 分析标准外壳命令、DDE、打开文件操作的命令行 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 调度在命令行中指定的命令。如果 // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; LoadCustomState (); // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // 仅当具有后缀时才调用 DragAcceptFiles // 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生 return TRUE; }
int main(int argc, char** argv) { NcError error(NcError::verbose_nonfatal); try { // Input file std::string strInputFile; // Input file list std::string strInputFileList; // Input file format std::string strInputFormat; // NetCDF file containing latitude and longitude arrays std::string strLatLonFile; // Output file (NetCDF) std::string strOutputFile; // Output variable name std::string strOutputVariable; // Column in which the longitude index appears int iLonIxCol; // Column in which the latitude index appears int iLatIxCol; // Begin latitude double dLatBegin; // End latitude double dLatEnd; // Begin longitude double dLonBegin; // End longitude double dLonEnd; // Number of latitudes in output int nLat; // Number of longitudes in output int nLon; // Parse the command line BeginCommandLine() CommandLineString(strInputFile, "in", ""); CommandLineString(strInputFileList, "inlist", ""); CommandLineStringD(strInputFormat, "in_format", "std", "(std|visit)"); CommandLineString(strOutputFile, "out", ""); CommandLineString(strOutputVariable, "outvar", "density"); CommandLineInt(iLonIxCol, "iloncol", 8); CommandLineInt(iLatIxCol, "ilatcol", 9); CommandLineDouble(dLatBegin, "lat_begin", -90.0); CommandLineDouble(dLatEnd, "lat_end", 90.0); CommandLineDouble(dLonBegin, "lon_begin", 0.0); CommandLineDouble(dLonEnd, "lon_end", 360.0); CommandLineInt(nLat, "nlat", 180); CommandLineInt(nLon, "nlon", 360); ParseCommandLine(argc, argv); EndCommandLine(argv) AnnounceBanner(); // Check input if ((strInputFile == "") && (strInputFileList == "")) { _EXCEPTIONT("No input file (--in) or (--inlist) specified"); } if ((strInputFile != "") && (strInputFileList != "")) { _EXCEPTIONT("Only one input file (--in) or (--inlist) allowed"); } if (strInputFormat != "std") { _EXCEPTIONT("UNIMPLEMENTED: Only \"--in_format std\" supported"); } // Check output if (strOutputFile == "") { _EXCEPTIONT("No output file (--out) specified"); } // Check output variable if (strOutputVariable == "") { _EXCEPTIONT("No output variable name (--outvar) specified"); } // Number of latitudes and longitudes if (nLat == 0) { _EXCEPTIONT("UNIMPLEMENTED: --nlat must be specified currently"); } if (nLon == 0) { _EXCEPTIONT("UNIMPLEMENTED: --nlon must be specified currently"); } // Input file list std::vector<std::string> vecInputFiles; if (strInputFile != "") { vecInputFiles.push_back(strInputFile); } if (strInputFileList != "") { GetInputFileList(strInputFileList, vecInputFiles); } int nFiles = vecInputFiles.size(); // Density DataMatrix<int> nCounts; nCounts.Initialize(nLat, nLon); // Loop through all files in list AnnounceStartBlock("Processing files"); std::string strBuffer; strBuffer.reserve(1024); for (int f = 0; f < nFiles; f++) { Announce("File \"%s\"", vecInputFiles[f].c_str()); FILE * fp = fopen(vecInputFiles[f].c_str(), "r"); if (fp == NULL) { _EXCEPTION1("Unable to open input file \"%s\"", vecInputFiles[f].c_str()); } for (;;) { // Read in the next line fgets(&(strBuffer[0]), 1024, fp); int nLength = strlen(&(strBuffer[0])); // Check for end of file if (feof(fp)) { break; } // Check for comment line if (strBuffer[0] == '#') { continue; } // Check for new storm if (strncmp(&(strBuffer[0]), "start", 5) == 0) { continue; } // Parse line double dLon; double dLat; int iCol = 0; int iLast = 0; bool fWhitespace = true; for (int i = 0; i <= nLength; i++) { if ((strBuffer[i] == ' ') || (strBuffer[i] == ',') || (strBuffer[i] == '\t') || (strBuffer[i] == '\0') ) { if (!fWhitespace) { if (iCol == iLonIxCol) { strBuffer[i] = '\0'; dLon = atof(&(strBuffer[iLast])); } if (iCol == iLatIxCol) { strBuffer[i] = '\0'; dLat = atof(&(strBuffer[iLast])); } } fWhitespace = true; } else { if (fWhitespace) { iLast = i; iCol++; } fWhitespace = false; } } // Latitude and longitude index int iLon = static_cast<int>(static_cast<double>(nLon) * (dLon - dLonBegin) / (dLonEnd - dLonBegin)); int iLat = static_cast<int>(static_cast<double>(nLat) * (dLat - dLatBegin) / (dLatEnd - dLatBegin)); if (iLon == (-1)) { iLon = 0; } if (iLon == nLon) { iLon = nLon - 1; } if (iLat == (-1)) { iLat = 0; } if (iLat == nLat) { iLat = nLat - 1; } if ((iLat < 0) || (iLat >= nLat)) { _EXCEPTION1("Latitude index (%i) out of range", iLat); } if ((iLon < 0) || (iLon >= nLon)) { _EXCEPTION1("Longitude index (%i) out of range", iLon); } nCounts[iLat][iLon]++; } fclose(fp); } AnnounceEndBlock("Done"); // Output results AnnounceStartBlock("Output results"); // Load the netcdf output file NcFile ncOutput(strOutputFile.c_str(), NcFile::Replace); if (!ncOutput.is_valid()) { _EXCEPTION1("Unable to open output file \"%s\"", strOutputFile.c_str()); } // Create output NcDim * dimLat = ncOutput.add_dim("lat", nLat); NcDim * dimLon = ncOutput.add_dim("lon", nLon); NcVar * varLat = ncOutput.add_var("lat", ncDouble, dimLat); NcVar * varLon = ncOutput.add_var("lon", ncDouble, dimLon); varLat->add_att("units", "degrees_north"); varLon->add_att("units", "degrees_east"); DataVector<double> dLat(nLat); DataVector<double> dLon(nLon); for (int j = 0; j < nLat; j++) { dLat[j] = dLatBegin + (dLatEnd - dLatBegin) * (static_cast<double>(j) + 0.5) / static_cast<double>(nLat); } for (int i = 0; i < nLon; i++) { dLon[i] = dLonBegin + (dLonEnd - dLonBegin) * (static_cast<double>(i) + 0.5) / static_cast<double>(nLon); } varLat->put(&(dLat[0]), nLat); varLon->put(&(dLon[0]), nLon); // Output counts NcVar * varCount = ncOutput.add_var( strOutputVariable.c_str(), ncInt, dimLat, dimLon); varCount->put(&(nCounts[0][0]), nLat, nLon); ncOutput.close(); AnnounceEndBlock("Done"); AnnounceBanner(); } catch(Exception & e) { Announce(e.ToString().c_str()); } }
BOOL CMy20120619_2App::InitInstance() { { // BLOCK: doc template registration // Register the document template. Document templates serve // as the connection between documents, frame windows and views. // Attach this form to another document or frame window by changing // the document or frame class in the constructor below. CSingleDocTemplate* pNewDocTemplate = new CSingleDocTemplate( IDR_KILLMOMO_TMPL, RUNTIME_CLASS(CMy20120619_2Doc), // document class RUNTIME_CLASS(CMainFrame), // frame class RUNTIME_CLASS(KillMomo)); // view class AddDocTemplate(pNewDocTemplate); } 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. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif // 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(); // 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. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMy20120619_2Doc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CMy20120619_2View)); AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; // The one and only window has been initialized, so show and update it. m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE; }
BOOL InitApplication (HINSTANCE hInst, LPTSTR pszCmdLine, int nCmdShow) { TaLocale_LoadCorrespondingModule (hInst); memset (&g, 0x00, sizeof(g)); g.hInst = hInst; g.hAccel = TaLocale_LoadAccelerators (ACCEL_MAIN); HWND hPrevious; TCHAR szTitle[ cchRESOURCE ]; GetString (szTitle, IDS_APP_TITLE); if ((hPrevious = FindWindow (TEXT("AFSManagerClass"), szTitle)) != NULL) { SetFocus (hPrevious); SendMessage (hPrevious, WM_SHOW_YOURSELF, 0, 0); return FALSE; } AfsAppLib_SetAppName(szTitle); AfsAppLib_SetPumpRoutine(PumpMessage); TASKQUEUE_PARAMS tqp; memset (&tqp, 0x00, sizeof(tqp)); tqp.nThreadsMax = 10; tqp.fnCreateTaskPacket = CreateTaskPacket; tqp.fnPerformTask = PerformTask; tqp.fnFreeTaskPacket = FreeTaskPacket; AfsAppLib_InitTaskQueue (&tqp); Main_ConfigureHelp(); // Determine how the app is supposed to look--that is, remember what it // looked like last time, and if there was no "last time", pick some // decent defaults. // if (!RestoreSettings (REGSTR_SETTINGS_BASE, REGSTR_SETTINGS_PATH, REGVAL_SETTINGS, &gr, sizeof(gr), wVerGLOBALS_RESTORED)) { memset (&gr, 0x00, sizeof(gr)); SetRectEmpty (&gr.rMain); SetRectEmpty (&gr.rMainPreview); SetRectEmpty (&gr.rServerLast); SetRectEmpty (&gr.rViewLog); SetRectEmpty (&gr.rActions); gr.fPreview = TRUE; gr.fVert = TRUE; gr.fActions = FALSE; gr.tabLast = tabFILESETS; Server_SetDefaultView_Horz (&gr.diHorz.viewSvr); Server_SetDefaultView_Vert (&gr.diVert.viewSvr); Services_SetDefaultView (&gr.viewSvc); Aggregates_SetDefaultView (&gr.viewAgg); Filesets_SetDefaultView (&gr.viewSet); Replicas_SetDefaultView (&gr.viewRep); Action_SetDefaultView (&gr.viewAct); Server_Key_SetDefaultView (&gr.viewKey); gr.diHorz.cSplitter = -100; gr.diVert.cSplitter = -89; gr.cbQuotaUnits = cb1KB; gr.fOpenMonitors = TRUE; gr.fCloseUnmonitors = TRUE; gr.fServerLongNames = FALSE; gr.fDoubleClickOpens = 2; gr.fWarnBadCreds = TRUE; gr.ivSvr = ivSTATUS; gr.ivAgg = ivSTATUS; gr.ivSet = ivSTATUS; gr.ivSvc = ivSTATUS; } ULONG status; if (!AfsClass_Initialize (&status)) { if (status == ADMCLIENTCANTINITAFSLOCATION) ImmediateErrorDialog (status, IDS_ERROR_CANT_INIT_AFSCLASS_INSTALL); else ImmediateErrorDialog (status, IDS_ERROR_CANT_INIT_AFSCLASS_UNKNOWN); return FALSE; } AfsClass_RequestLongServerNames (gr.fServerLongNames); AfsClass_SpecifyRefreshDomain (AFSCLASS_WANT_VOLUMES); // Create a notification object for the AFSClass library, so that it can // let us know when anything changes. The notification handler we'll // install will take requests from the rest of the SVRMGR package and // forward notifications around to whichever windows are actually // interested. // CreateNotificationDispatch(); // Create a few variations on WC_DIALOG, so we get appropriate icons on // our windows. // WNDCLASS wc; GetClassInfo (THIS_HINST, MAKEINTRESOURCE( WC_DIALOG ), &wc); wc.hInstance = THIS_HINST; wc.hIcon = TaLocale_LoadIcon (IDI_MAIN); wc.lpszClassName = TEXT("AFSManagerClass"); wc.style |= CS_GLOBALCLASS; RegisterClass (&wc); GetClassInfo (THIS_HINST, MAKEINTRESOURCE( WC_DIALOG ), &wc); wc.hInstance = THIS_HINST; wc.hIcon = TaLocale_LoadIcon (IDI_SERVER); wc.lpszClassName = TEXT("ServerWindowClass"); wc.style |= CS_GLOBALCLASS; RegisterClass (&wc); // Okay, the big step: create the main window (ie, the servers list). // Note that it doesn't get shown yet! // CMDLINEOP op = ParseCommandLine (pszCmdLine); if (op == opCLOSEAPP) return FALSE; if (op == opLOOKUPERRORCODE) { Help_FindError(); return FALSE; } g.hMain = ModelessDialog (IDD_MAIN, NULL, (DLGPROC)Main_DialogProc); if (g.hMain == NULL) return FALSE; if (op != opNOCELLDIALOG) { if (OpenCellDialog() != IDOK) return FALSE; } return TRUE; }
int main(int argc, char** argv) { // Initialize MPI TempestInitialize(&argc, &argv); try { // Model height cap. double dZtop; // Model scaling parameter double dEarthScaling; // Rotation rate of the Earth with X = 1. double dOmega; // Reference temperature. double dT0; // Temperature lapse rate. double dGamma; // Longitude of Schar-type mountain centerpoint. double dLonM; // Latitude of Schar-type mountain centerpoint. double dLatM; // Maximum Schar-type mountain height. double dH0; // Schar-type mountain radius (radians). double dRM; // Schar-type mountain oscillation half-width (radians). double dZetaM; // Parse the command line BeginTempestCommandLine("StationaryMountainFlowTest"); SetDefaultResolution(30); SetDefaultLevels(30); SetDefaultOutputDeltaT("1d"); SetDefaultDeltaT("300s"); SetDefaultEndTime("6d"); SetDefaultHorizontalOrder(4); SetDefaultVerticalOrder(1); CommandLineDouble(dZtop, "ztop", 30000.0); CommandLineDouble(dEarthScaling, "X", 1.0); CommandLineDouble(dOmega, "omega", 0.0); CommandLineDouble(dT0, "T0", 300.0); CommandLineDouble(dGamma, "Gamma", 0.0065); CommandLineDouble(dLonM, "lonm", 270.0); CommandLineDouble(dLatM, "latm", 0.0); CommandLineDouble(dH0, "h0", 2000.0); CommandLineDouble(dRM, "rm", 135.0); CommandLineDouble(dZetaM, "zetam", 11.25); ParseCommandLine(argc, argv); EndTempestCommandLine(argv) // Setup the Model AnnounceBanner("MODEL SETUP"); Model model(EquationSet::PrimitiveNonhydrostaticEquations); TempestSetupCubedSphereModel(model); // Set the test case for the model AnnounceStartBlock("Initializing test case"); model.SetTestCase( new StationaryMountainFlowTest( dZtop, dEarthScaling, dOmega, dT0, dGamma, dLonM, dLatM, dH0, dRM, dZetaM)); AnnounceEndBlock("Done"); // Set the reference length model.GetGrid()->SetReferenceLength(0.5 * M_PI / 30.0 * dEarthScaling); // Begin execution AnnounceBanner("SIMULATION"); model.Go(); // Compute error norms AnnounceBanner("RESULTS"); model.ComputeErrorNorms(); AnnounceBanner(); } catch(Exception & e) { std::cout << e.ToString() << std::endl; } // Deinitialize Tempest TempestDeinitialize(); }
BOOL CLogCCApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); // 初始化 OLE 库 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); EnableTaskbarInteraction(); // 使用 RichEdit 控件需要 AfxInitRichEdit2() // AfxInitRichEdit2(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); LoadStdProfileSettings(10); // 加载标准 INI 文件选项(包括 MRU) InitContextMenuManager(); InitKeyboardManager(); InitTooltipManager(); CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate(IDR_LogCCTYPE, RUNTIME_CLASS(CLogCCDoc), RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架 RUNTIME_CLASS(CLogMainView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 创建主 MDI 框架窗口 CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME)) { delete pMainFrame; return FALSE; } m_pMainWnd = pMainFrame; // 仅当具有后缀时才调用 DragAcceptFiles // 在 MDI 应用程序中,这应在设置 m_pMainWnd 之后立即发生 // 启用拖/放 m_pMainWnd->DragAcceptFiles(); // 分析标准 shell 命令、DDE、打开文件操作的命令行 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 启用“DDE 执行” EnableShellOpen(); RegisterShellFileTypes(TRUE); // 默认不新建文档 cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; // 调度在命令行中指定的命令。如果 // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; // 主窗口已初始化,因此显示它并对其进行更新 pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); return TRUE; }
//---------------------------------------------------------------------- // // WMain // // Engine. Just get command line switches and fire off a format. This // could also be done in a GUI like Explorer does when you select a // drive and run a check on it. // // We do this in UNICODE because the chkdsk command expects PWCHAR // arguments. // //---------------------------------------------------------------------- int wmain(int argc, WCHAR *argv[]) { int badArg; DWORD media = FMIFS_HARDDISK; DWORD driveType; WCHAR fileSystem[1024]; WCHAR volumeName[1024]; WCHAR input[1024]; DWORD serialNumber; DWORD flags, maxComponent; ULARGE_INTEGER freeBytesAvailableToCaller, totalNumberOfBytes, totalNumberOfFreeBytes; WCHAR szMsg[RC_STRING_MAX_SIZE]; wprintf(L"\n" L"Formatx v1.0 by Mark Russinovich\n" L"Systems Internals - http://www.sysinternals.com\n" L"ReactOS adaptation 1999 by Emanuele Aliberti\n\n"); #ifndef FMIFS_IMPORT_DLL // // Get function pointers // if (!LoadFMIFSEntryPoints()) { PrintResourceString(STRING_FMIFS_FAIL); return -1; } #endif // // Parse command line // badArg = ParseCommandLine(argc, argv); if (badArg) { PrintResourceString(STRING_UNKNOW_ARG, argv[badArg]); Usage(argv[0]); return -1; } // // Get the drive's format // if (!Drive) { PrintResourceString(STRING_DRIVE_PARM); Usage(argv[0]); return -1; } else { wcscpy(RootDirectory, Drive); } RootDirectory[2] = L'\\'; RootDirectory[3] = L'\0'; // // See if the drive is removable or not // driveType = GetDriveTypeW(RootDirectory); switch (driveType) { case DRIVE_UNKNOWN : LoadStringW(GetModuleHandle(NULL), STRING_ERROR_DRIVE_TYPE, szMsg, ARRAYSIZE(szMsg)); PrintWin32Error(szMsg, GetLastError()); return -1; case DRIVE_REMOTE: case DRIVE_CDROM: PrintResourceString(STRING_NO_SUPPORT); return -1; case DRIVE_NO_ROOT_DIR: LoadStringW(GetModuleHandle(NULL), STRING_NO_VOLUME, szMsg, ARRAYSIZE(szMsg)); PrintWin32Error(szMsg, GetLastError()); return -1; case DRIVE_REMOVABLE: PrintResourceString(STRING_INSERT_DISK, RootDirectory[0]); fgetws(input, ARRAYSIZE(input), stdin); media = FMIFS_FLOPPY; break; case DRIVE_FIXED: case DRIVE_RAMDISK: media = FMIFS_HARDDISK; break; } // Reject attempts to format the system drive { WCHAR path[MAX_PATH + 1]; UINT rc; rc = GetWindowsDirectoryW(path, MAX_PATH); if (rc == 0 || rc > MAX_PATH) // todo: Report "Unable to query system directory" return -1; if (towlower(path[0]) == towlower(Drive[0])) { // todo: report "Cannot format system drive" PrintResourceString(STRING_NO_SUPPORT); return -1; } } // // Determine the drive's file system format // if (!GetVolumeInformationW(RootDirectory, volumeName, ARRAYSIZE(volumeName), &serialNumber, &maxComponent, &flags, fileSystem, ARRAYSIZE(fileSystem))) { LoadStringW(GetModuleHandle(NULL), STRING_NO_VOLUME, szMsg, ARRAYSIZE(szMsg)); PrintWin32Error(szMsg, GetLastError()); return -1; } if (!GetDiskFreeSpaceExW(RootDirectory, &freeBytesAvailableToCaller, &totalNumberOfBytes, &totalNumberOfFreeBytes)) { LoadStringW(GetModuleHandle(NULL), STRING_NO_VOLUME_SIZE, szMsg, ARRAYSIZE(szMsg)); PrintWin32Error(szMsg, GetLastError()); return -1; } PrintResourceString(STRING_FILESYSTEM, fileSystem); // // Make sure they want to do this // if (driveType == DRIVE_FIXED) { if (volumeName[0]) { while (TRUE) { PrintResourceString(STRING_LABEL_NAME_EDIT, RootDirectory[0]); fgetws(input, ARRAYSIZE(input), stdin); input[wcslen(input) - 1] = 0; if (!wcsicmp(input, volumeName)) break; PrintResourceString(STRING_ERROR_LABEL); } } PrintResourceString(STRING_YN_FORMAT, RootDirectory[0]); LoadStringW(GetModuleHandle(NULL), STRING_YES_NO_FAQ, szMsg, ARRAYSIZE(szMsg)); while (TRUE) { fgetws(input, ARRAYSIZE(input), stdin); if (_wcsnicmp(&input[0], &szMsg[0], 1) == 0) break; if (_wcsnicmp(&input[0], &szMsg[1], 1) == 0) { wprintf(L"\n"); return 0; } } } // // Tell the user we're doing a long format if appropriate // if (!QuickFormat) { LoadStringW(GetModuleHandle(NULL), STRING_VERIFYING, szMsg, ARRAYSIZE(szMsg)); if (totalNumberOfBytes.QuadPart > 1024*1024*10) { PrintString(L"%s %luM\n", szMsg, (DWORD)(totalNumberOfBytes.QuadPart/(1024*1024))); } else { PrintString(L"%s %.1fM\n", szMsg, ((float)(LONGLONG)totalNumberOfBytes.QuadPart)/(float)(1024.0*1024.0)); } } else { LoadStringW(GetModuleHandle(NULL), STRING_FAST_FMT, szMsg, ARRAYSIZE(szMsg)); if (totalNumberOfBytes.QuadPart > 1024*1024*10) { PrintString(L"%s %luM\n", szMsg, (DWORD)(totalNumberOfBytes.QuadPart/(1024*1024))); } else { PrintString(L"%s %.2fM\n", szMsg, ((float)(LONGLONG)totalNumberOfBytes.QuadPart)/(float)(1024.0*1024.0)); } PrintResourceString(STRING_CREATE_FSYS); } // // Format away! // FormatEx(RootDirectory, media, FileSystem, Label, QuickFormat, ClusterSize, FormatExCallback); if (Error) return -1; PrintResourceString(STRING_FMT_COMPLETE); // // Enable compression if desired // if (CompressDrive) { if (!EnableVolumeCompression(RootDirectory, TRUE)) PrintResourceString(STRING_VOL_COMPRESS); } // // Get the label if we don't have it // if (!GotALabel) { PrintResourceString(STRING_ENTER_LABEL); fgetws(input, ARRAYSIZE(LabelString), stdin); input[wcslen(input) - 1] = 0; if (!SetVolumeLabelW(RootDirectory, input)) { LoadStringW(GetModuleHandle(NULL), STRING_NO_LABEL, szMsg, ARRAYSIZE(szMsg)); PrintWin32Error(szMsg, GetLastError()); return -1; } } if (!GetVolumeInformationW(RootDirectory, volumeName, ARRAYSIZE(volumeName), &serialNumber, &maxComponent, &flags, fileSystem, ARRAYSIZE(fileSystem))) { LoadStringW(GetModuleHandle(NULL), STRING_NO_VOLUME, szMsg, ARRAYSIZE(szMsg)); PrintWin32Error(szMsg, GetLastError()); return -1; } // // Print out some stuff including the formatted size // if (!GetDiskFreeSpaceExW(RootDirectory, &freeBytesAvailableToCaller, &totalNumberOfBytes, &totalNumberOfFreeBytes)) { LoadStringW(GetModuleHandle(NULL), STRING_NO_VOLUME_SIZE, szMsg, ARRAYSIZE(szMsg)); PrintWin32Error(szMsg, GetLastError()); return -1; } PrintResourceString(STRING_FREE_SPACE, totalNumberOfBytes.QuadPart, totalNumberOfFreeBytes.QuadPart); // // Get the drive's serial number // if (!GetVolumeInformationW(RootDirectory, volumeName, ARRAYSIZE(volumeName), &serialNumber, &maxComponent, &flags, fileSystem, ARRAYSIZE(fileSystem))) { LoadStringW(GetModuleHandle(NULL), STRING_NO_VOLUME, szMsg, ARRAYSIZE(szMsg)); PrintWin32Error(szMsg, GetLastError()); return -1; } PrintResourceString(STRING_SERIAL_NUMBER, (unsigned int)(serialNumber >> 16), (unsigned int)(serialNumber & 0xFFFF)); return 0; }
BOOL CGISDataShowApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL); // 初始化 OLE 库 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); LoadStdProfileSettings(4); // 加载标准 INI 文件选项(包括 MRU) // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CGISDataShowDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CGISDataShowView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 分析标准外壳命令、DDE、打开文件操作的命令行 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 调度在命令行中指定的命令。如果 // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->ShowWindow(SW_NORMAL);//SW_SHOWMAXIMIZED m_pMainWnd->UpdateWindow(); // 仅当具有后缀时才调用 DragAcceptFiles // 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生 m_pMainWnd->CenterWindow(); return TRUE; }
void M_FindResponseFile (void) { const int limit = 100; // avoid infinite recursion int added_stuff = 0; int i = 1; while (i < Args->NumArgs()) { if (Args->GetArg(i)[0] != '@') { i++; } else { char **argv; char *file = NULL; int argc = 0; FILE *handle; int size; long argsize = 0; int index; // Any more response files after the limit will be removed from the // command line. if (added_stuff < limit) { // READ THE RESPONSE FILE INTO MEMORY handle = fopen (Args->GetArg(i) + 1,"rb"); if (!handle) { // [RH] Make this a warning, not an error. Printf ("No such response file (%s)!\n", Args->GetArg(i) + 1); } else { Printf ("Found response file %s!\n", Args->GetArg(i) + 1); fseek (handle, 0, SEEK_END); size = ftell (handle); fseek (handle, 0, SEEK_SET); file = new char[size+1]; fread (file, size, 1, handle); file[size] = 0; fclose (handle); argsize = ParseCommandLine (file, &argc, NULL); } } else { Printf ("Ignored response file %s.\n", Args->GetArg(i) + 1); } if (argc != 0) { argv = (char **)M_Malloc (argc*sizeof(char *) + argsize); argv[0] = (char *)argv + argc*sizeof(char *); ParseCommandLine (file, NULL, argv); // Create a new argument vector DArgs *newargs = new DArgs; // Copy parameters before response file. for (index = 0; index < i; ++index) newargs->AppendArg(Args->GetArg(index)); // Copy parameters from response file. for (index = 0; index < argc; ++index) newargs->AppendArg(argv[index]); // Copy parameters after response file. for (index = i + 1; index < Args->NumArgs(); ++index) newargs->AppendArg(Args->GetArg(index)); // Use the new argument vector as the global Args object. Args = newargs; if (++added_stuff == limit) { Printf("Response file limit of %d hit.\n", limit); } } else { // Remove the response file from the Args object Args->RemoveArg(i); } if (file != NULL) { delete[] file; } } } if (added_stuff > 0) { // DISPLAY ARGS Printf ("Added %d response file%s, now have %d command-line args:\n", added_stuff, added_stuff > 1 ? "s" : "", Args->NumArgs ()); for (int k = 1; k < Args->NumArgs (); k++) Printf ("%s\n", Args->GetArg (k)); } }
int main(int argc, char** argv) { // Initialize Tempest TempestInitialize(&argc, &argv); try { // Uniform +X flow field. double dU0; // Brunt-Vaisala frequency double dNbar; // Reference potential temperature double dTheta0; // Parameter reference height for temperature disturbance double dhC; // Parameter reference length a for temperature disturbance double daC; // Parameter reference length for mountain profile double dxC; // Parameter Archimede's Constant (essentially Pi but to some digits) double dpiC; // No Rayleigh friction bool fNoRayleighFriction; // Parse the command line BeginTempestCommandLine("NonHydrostaticMountainCartesianTest"); SetDefaultResolutionX(40); SetDefaultResolutionY(1); SetDefaultLevels(48); SetDefaultOutputDeltaT("10m"); SetDefaultDeltaT("1s"); SetDefaultEndTime("5h"); SetDefaultHorizontalOrder(4); SetDefaultVerticalOrder(4); CommandLineDouble(dU0, "u0", 10.0); CommandLineDouble(dNbar, "Nbar", 0.01); CommandLineDouble(dTheta0, "Theta0", 280.0); CommandLineDouble(dhC, "hC", 1.0); CommandLineDouble(daC, "aC", 1000.0); CommandLineDouble(dxC, "xC", 7.2E+4); CommandLineDouble(dpiC, "piC", 3.14159265); CommandLineBool(fNoRayleighFriction, "norayleigh"); ParseCommandLine(argc, argv); EndCommandLine(argv) // Create a new instance of the test NonHydrostaticMountainCartesianTest * test = new NonHydrostaticMountainCartesianTest( dU0, dNbar, dTheta0, dhC, dxC, daC, dpiC, fNoRayleighFriction); // Setup the Model AnnounceBanner("MODEL SETUP"); Model model(EquationSet::PrimitiveNonhydrostaticEquations); // Setup the cartesian model with dimensions and reference latitude TempestSetupCartesianModel(model, test->m_dGDim, 0.0, test->m_iLatBC, true); // Set the reference length to reduce diffusion relative to global scale const double XL = std::abs(test->m_dGDim[1] - test->m_dGDim[0]); const double oneDegScale = 110000.0; if (XL < oneDegScale) { model.GetGrid()->SetReferenceLength(XL); } else { model.GetGrid()->SetReferenceLength(oneDegScale); } // Set the test case for the model AnnounceStartBlock("Initializing test case"); model.SetTestCase(test); AnnounceEndBlock("Done"); // Begin execution AnnounceBanner("SIMULATION"); model.Go(); // Compute error norms AnnounceBanner("RESULTS"); model.ComputeErrorNorms(); AnnounceBanner(); } catch(Exception & e) { std::cout << e.ToString() << std::endl; } // Deinitialize Tempest TempestDeinitialize(); }
BOOL CWorkSpaceToolBarApp::InitInstance() { // Initialize OLE libraries if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } 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("Microsoft\\MFC\\Samples")); LoadStdProfileSettings(); // Load standard INI file options (including MRU) SetRegistryBase (_T("Settings")); // Initialize all Managers for usage. They are automatically constructed // if not yet present InitContextMenuManager(); InitKeyboardManager(); // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views. CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_WORKSPTYPE, RUNTIME_CLASS(CWorkSpaceToolBarDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CWorkSpaceToolBarView)); AddDocTemplate(pDocTemplate); // create main MDI Frame window CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) return FALSE; m_pMainWnd = pMainFrame; // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Dispatch commands specified on the command line 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 CColorEyeIApp::InitInstance() { // Initialize OLE libraries if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } 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. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif // 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(); // 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. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CColorEyeIDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CColorEyeIView)); AddDocTemplate(pDocTemplate); // Connect the COleTemplateServer to the document template. // The COleTemplateServer creates new documents on behalf // of requesting OLE containers by using information // specified in the document template. m_server.ConnectTemplate(clsid, pDocTemplate, TRUE); // Note: SDI applications register server objects only if /Embedding // or /Automation is present on the command line. // Enable DDE Execute open EnableShellOpen(); RegisterShellFileTypes(TRUE); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Check to see if launched as OLE server if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated) { // Register all OLE server (factories) as running. This enables the // OLE libraries to create objects from other applications. COleTemplateServer::RegisterAll(); // Application was run with /Embedding or /Automation. Don't show the // main window in this case. return TRUE; } // When a server application is launched stand-alone, it is a good idea // to update the system registry in case it has been damaged. m_server.UpdateRegistry(OAT_DISPATCH_OBJECT); COleObjectFactory::UpdateRegistryAll(); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; // The one and only window has been initialized, so show and update it. m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // Enable drag/drop open m_pMainWnd->DragAcceptFiles(); // Get App PathName GetModuleFileName(NULL, m_strPathName.GetBuffer(MAX_PATH+1), MAX_PATH); //抓應用程式所在的目錄+檔名+副檔名 m_strPathName.ReleaseBuffer(); //要加這一行,才可以處理該字串 // Get Desktop Path // CString szPath; // SHGetSpecialFolderPath(NULL, szPath, CSIDL_DESKTOP, 0);//取得桌面路徑 // BCFandODFPath.Format("%s",szPath); SHGetSpecialFolderPath(0, m_desktopPath.GetBuffer(MAX_PATH+1), CSIDL_DESKTOPDIRECTORY,0); m_desktopPath.ReleaseBuffer(); return TRUE; }
BOOL Cv3App::InitInstance() { CWinAppEx::InitInstance(); // 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 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(Cv3Doc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CPieWeatherView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 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 one and only window has been initialized, so show and update it 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 return TRUE; }
int Run(LPTSTR lpstrCmdLine = NULL, int nCmdShow = SW_SHOWDEFAULT) { // vds: >> HANDLE hOneInstanceMutex = CreateMutex(NULL, FALSE, _T("ConsoleOnInstanceMutex")); DWORD oneInstanceResult = GetLastError(); bool bOneInstance = oneInstanceResult == ERROR_ALREADY_EXISTS; // vds: HWND hPrevConsole = FindWindow(MainFrame::GetWndClassInfo().m_wc.lpszClassName, NULL); // vds: << CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); wstring strConfigFile(L""); wstring strWindowTitle(L""); vector<wstring> startupTabs; vector<wstring> startupDirs; vector<wstring> startupCmds; vector<wstring> postedCmds; // vds: posted commands vector<bool> reusePreviousTabs; // vds: sessions int nMultiStartSleep = 0; wstring strDbgCmdLine(L""); WORD iFlags = 0; // vds ParseCommandLine( lpstrCmdLine, strConfigFile, strWindowTitle, startupTabs, startupDirs, startupCmds, postedCmds, nMultiStartSleep, strDbgCmdLine, iFlags); // vds if (strConfigFile.length() == 0) { strConfigFile = wstring(L"console.xml"); // vds // strConfigFile = wstring(L"%APPDATA%\Console\console.xml"); // strConfigFile = Helpers::GetModulePath(NULL) + wstring(L"console.xml"); // strConfigFile = wstring(::_wgetenv(L"APPDATA")) + wstring(L"\\Console\\console.xml"); // vds } if (!g_settingsHandler->LoadSettings(Helpers::ExpandEnvironmentStrings(strConfigFile))) { //TODO: error handling return -1; } // vds: >> if (g_settingsHandler->GetBehaviorSettings().oneInstanceSettings.bAllowMultipleInstances && !(iFlags & CLF_REUSE_PREV_INSTANCE)) bOneInstance = false; if (iFlags & CLF_FORCE_NEW_INSTANCE) bOneInstance = false; // vds: << // vds: sessions >> bool reuseTab = g_settingsHandler->GetBehaviorSettings().oneInstanceSettings.bReuseTab; while (reusePreviousTabs.size() < startupTabs.size()) { reusePreviousTabs.push_back(reuseTab); } // vds: sessions << // vds: sessions >> if (!bOneInstance) { SessionsSettings& sessionsSettings = g_settingsHandler->GetSessionsSettings(); if (sessionsSettings.bRestoreTabs) { for (unsigned int j = 0; j < sessionsSettings.sessionDataVector.size(); ++j) { shared_ptr<SessionData> sessionData = sessionsSettings.sessionDataVector[j]; startupTabs.insert(startupTabs.begin() + j, sessionData->strTabTitle); startupDirs.insert(startupDirs.begin() + j, sessionData->strWorkingDir); startupCmds.insert(startupCmds.begin() + j, L""); postedCmds.insert(postedCmds.begin() + j, L""); reusePreviousTabs.insert(reusePreviousTabs.begin() + j, false); } } } // vds: sessions << // create main window NoTaskbarParent noTaskbarParent; MainFrame wndMain(strWindowTitle, startupTabs, startupDirs, startupCmds, postedCmds, reusePreviousTabs, nMultiStartSleep, bOneInstance, strDbgCmdLine); // vds: if (!g_settingsHandler->GetAppearanceSettings().stylesSettings.bTaskbarButton && !bOneInstance) // vds: { noTaskbarParent.Create(NULL); } if (wndMain.CreateEx(noTaskbarParent.m_hWnd) == NULL) { ATLTRACE(_T("Main window creation failed!\n")); return 1; } // vds: >> // vds: This variable has to be in the scope of the theLoop.Run() call otherwise the message is destroyed before it arrive to destination. wstring rebuildCommandLine; if (!bOneInstance) { wndMain.ShowWindow(nCmdShow); } else { // Give 3 seconds to exchange the DDE messages. wndMain.SetTimer(TIMER_TIMEOUT, 3000, NULL); rebuildCommandLine = BuildCommandLine( strConfigFile, strWindowTitle, startupTabs, startupDirs, startupCmds, postedCmds, nMultiStartSleep, strDbgCmdLine, iFlags); #ifdef USE_COPYDATA_MSG // Search for running instance of console if (hPrevConsole) { COPYDATASTRUCT stCopyData; stCopyData.dwData = eEC_NewTab; stCopyData.cbData = (rebuildCommandLine.size() + 1) * sizeof(wchar_t); stCopyData.lpData = reinterpret_cast<void*>(const_cast<wchar_t*>(rebuildCommandLine.c_str())); SendMessage(hPrevConsole, WM_COPYDATA, 0, (LPARAM)(LPVOID)&stCopyData); } #else ::PostMessage(wndMain.m_hWnd, WM_SEND_DDE_COMMAND, reinterpret_cast<WPARAM>(hPrevConsole), reinterpret_cast<LPARAM>(rebuildCommandLine.c_str())); #endif } // vds: << int nRet = theLoop.Run(); if (noTaskbarParent.m_hWnd != NULL) noTaskbarParent.DestroyWindow(); _Module.RemoveMessageLoop(); // vds: >> if (hOneInstanceMutex) { CloseHandle(hOneInstanceMutex); hOneInstanceMutex = NULL; } // vds: << return nRet; }
int Bench(int argc,char **argv) { REF(Module) moduleH; REF(any) r; char moduleName[40]; // ProcessStats totalTime; // ServerStats totalSrvTime; //char* purgeVar; char resultText[200]; // buffer to hold result of operation for // printing outside of timing region. char *configfile; int opIndex = 2; int repeatCount = 1; BenchmarkOp whichOp = Trav1; bool manyXACTS = 0; w_rc_t rc; #ifdef PARSETS LOID objtype; int NumNodes; //reinitialize some globals. nextAtomicId=0; nextCompositeId=0; nextComplexAssemblyId=0; nextBaseAssemblyId=0; nextModuleId = TotalModules; initParSets(argc, argv); if (argc < 6){ fprintf(stderr, "Usage: %s %s\n", argv[0], usage1); fprintf(stderr, "%s\n", usage3); fprintf(stderr, "%s\n", usage4); exit(1); } sscanf(argv[5], "%d", &NumNodes); printf("NUMNODES = %d\n", NumNodes); for (int j=0; j< NumNodes; j++) CompNodes.Add(j+1); #endif rc = initialize(argc, argv, usage1); if(rc) { return 1; } rc = Shore::begin_transaction(3); if(rc){ cerr << "can't begin transaction: " << rc << endl; return 1; } // initialize parameters for benchmark. ParseCommandLine(argc, argv, opIndex, repeatCount, whichOp, manyXACTS, &configfile); #ifdef PARSETS SetParams(argv[1], slArgs); #else SetParams(configfile); #endif rc = InitGlobals(); if(rc){ cerr << "Error in InitGlobals: " << rc << endl; exit(1); } nextAtomicId = TotalAtomicParts + 1; nextCompositeId = TotalCompParts + 1; rc = Shore::commit_transaction(); if(rc){ cerr << "can't commit transaction: " << rc << endl; return 1; } #ifdef PARSETS SlaveRPC(CompNodes, (char *) slaveGenInit, (char *)&slArgs, sizeof(SlaveArgs)); SlaveRPC(CompNodes, (char *)slaveOpenPools, NULL, -1); #ifdef NEWCOMMUNICATION myParSetServer->CreateParSet("oo7db", "CompositePart", ParSet::kPrimary, objtype,(char *)createCompositePart, 4, CompNodes, ParSet::kUserDef, (char *)declusterCompositeParts); #else CreateParSet("oo7db", "CompositePart", ParSet::kPrimary, objtype, 4, (char *)createCompositePart, CompNodes, ParSet::kUserDef, (char *)declusterCompositeParts); #endif compositeParSet = new PrimaryParSet <REF(CompositePart)>("oo7db", "CompositePart"); #endif // Compute structural info needed by the update operations, // since these operations need to know which id's should // be used next. int baseCnt = NumAssmPerAssm; int complexCnt = 1; for (int i = 1; i < NumAssmLevels-1; i++) { baseCnt = baseCnt * NumAssmPerAssm; complexCnt += complexCnt * NumAssmPerAssm; } nextBaseAssemblyId = TotalModules*baseCnt + 1; nextComplexAssemblyId = TotalModules*complexCnt + 1; nextAtomicId = TotalAtomicParts + 1; nextCompositeId = TotalCompParts + 1; // needed for insert and delete tests shared_cp = new BAIdList[TotalCompParts+NumNewCompParts+1]; private_cp = new BAIdList[TotalCompParts+NumNewCompParts+1]; // See if debug mode is desired, see which operation to run, // and how many times to run it. // totalTime.Start(); // totalSrvTime.Start(); enum {do_commit, do_chain, do_nothing, do_begin } choice=do_begin; // Actually run the darn thing. for (int iter = 0; iter < repeatCount; iter++) { ////////////////////////////////////////////////////////////////// // Run an OO7 Benchmark Operation // ////////////////////////////////////////////////////////////////// printf("RUNNING OO7 BENCHMARK OPERATION %s, iteration = %d.\n", argv[opIndex], iter); // get wall clock time gettimeofday(&startWallTime, IGNOREZONE &ignoreTimeZone); // get starting usage values. getrusage(RUSAGE_SELF, &startUsage); // Start a new transaction if either this is the first iteration // of a multioperation transaction or we we are running each // operate as a separate transaction #ifdef PARSETS if(choice == do_begin) { W_COERCE(Shore::begin_transaction(3)); SlaveRPC(CompNodes, (char *)slaveBeginTransaction, NULL, -1); } #else if(choice == do_begin) { // E_BeginTransaction(); W_COERCE(Shore::begin_transaction(3)); } #endif // set random seed so "hot" runs are truly hot srandom(1); // Use random module for the operation // int moduleId = (int) (random() % TotalModules) + 1; for (int moduleId = 1 ; moduleId <= TotalModules; moduleId++){ #ifdef USE_MODULE_INDEX sprintf(moduleName, "Module %08d", moduleId); // printf("moduleName=%s\n",moduleName); moduleH = tbl->ModuleIdx.find(moduleName); #else sprintf(moduleName,"Module%d", moduleId); rc = REF(Module)::lookup(moduleName, moduleH); if(rc){ cerr << "Can't find module " << moduleName << ": " << rc << endl; return 1; } #endif printf("Traversing Module= %s\n", moduleName); if (moduleH == NULL) { fprintf(stderr, "ERROR: Unable to access %s.\n", moduleName); // E_AbortTransaction(); W_COERCE(Shore::abort_transaction()); exit(1); } // Perform the requested operation on the chosen module long count = 0; int docCount = 0; int charCount = 0; int replaceCount = 0; switch (whichOp) { case Trav1: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 1 DFS visited %d atomic parts.\n", count); break; case Trav1WW: RealWork = 1; whichOp = Trav1; // so traverse methods don't complain count = moduleH->traverse(whichOp); whichOp = Trav1WW; // for next (hot) traversal sprintf(resultText, "Traversal 1WW DFS visited %d atomic parts.\n", count); break; case Trav2a: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 2A swapped %d pairs of (X,Y) coordinates.\n", count); break; case Trav2b: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 2B swapped %d pairs of (X,Y) coordinates.\n", count); break; case Trav2c: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 2C swapped %d pairs of (X,Y) coordinates.\n", count); break; case Trav3a: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 3A toggled %d dates.\n", count); break; case Trav3b: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 3B toggled %d dates.\n", count); break; case Trav3c: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 3C toggled %d dates.\n", count); break; case Trav4: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 4: %d instances of the character found\n", count); break; case Trav5do: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 5(DO): %d string replacements performed\n", count); break; case Trav5undo: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 5(UNDO): %d string replacements performed\n", count); break; case Trav6: count = moduleH->traverse(whichOp); sprintf(resultText, "Traversal 6: visited %d atomic part roots.\n", count); break; case Trav7: count = traverse7(); sprintf(resultText, "Traversal 7: found %d assemblies using rand om atomic part.\n", count); break; case Trav8: count = moduleH->scanManual(); sprintf(resultText, "Traversal 8: found %d occurrences of character in manual.\n", count); break; case Trav9: count = moduleH->firstLast(); sprintf(resultText, "Traversal 9: match was %d.\n", count); break; case Trav10: // run traversal #1 on every module. count = 0; whichOp = Trav1; // so object methods don't complain for (moduleId = 1; moduleId <= TotalModules; moduleId++) { sprintf(moduleName, "Module %08d", moduleId); bool found; shrc rc =tbl->ModuleIdx.find(moduleName,moduleH,found); if (rc || !found ||moduleH == NULL) { fprintf(stderr, "ERROR: t10 Unable to access %s.\n", moduleName); W_COERCE(Shore::abort_transaction()); exit(1); } count += moduleH->traverse(whichOp); } sprintf(resultText, "Traversal 10 visited %d atomic parts in %d modules.\\n", count, TotalModules); whichOp = Trav10; // for next time around break; case Query1: count = query1(); sprintf(resultText, "Query one retrieved %d atomic parts.\n", count); break; case Query2: count = query2(); sprintf(resultText, "Query two retrieved %d qualifying atomic parts.\n", count); break; case Query3: count = query3(); sprintf(resultText, "Query three retrieved %d qualifying atomic parts.\n", count); break; case Query4: count = query4(); sprintf(resultText, "Query four retrieved %d (document, base assembly) pairs.\n", count); break; case Query5: count = query5(); sprintf(resultText, "Query five retrieved %d out-of-date base assemblies.\n", count); break; case Query6: count = query6(); sprintf(resultText, "Query six retrieved %d out-of-date assemblies.\n", count); break; case Query7: count = query7(); sprintf(resultText, "Query seven iterated through %d atomic part s.\n", count); break; case Query8: count = query8(); sprintf(resultText, "Query eight found %d atomic part/document m atches.\n", count); break; case Insert: insert1(); sprintf(resultText, "Inserted %d composite parts (a total of %d atomic parts.)\n", NumNewCompParts, NumNewCompParts*NumAtomicPerComp); break; case Delete: delete1(); sprintf(resultText, "Deleted %d composite parts (a total of %d atomic parts.)\n", NumNewCompParts, NumNewCompParts*NumAtomicPerComp); break; case Reorg1: count = reorg1(); sprintf(resultText, "Reorg1 replaced %d atomic parts.\n", count); break; case Reorg2: count = reorg2(); sprintf(resultText, "Reorg2 replaced %d atomic parts.\n", count); break; // NEW case WarmUpdate: // first do the t1 traversal to warm the cache count = moduleH->traverse(Trav1); // then call T2 to do the update count = moduleH->traverse(Trav2a); sprintf(resultText, "Warm update swapped %d pairs of (X,Y) coordinates.\n", count); break; default: fprintf(stderr, "Sorry, that operation isn't available yet.\n"); // E_AbortTransaction(); W_COERCE(Shore::abort_transaction()); exit(1); } printf("Visited=%d\n", count); } { #ifdef PARSETS if ((iter == repeatCount-1) || manyXACTS){ printf("Calling commit transaction\n"); SlaveRPC(CompNodes, (char *)slaveCommitTransaction, NULL, -1); choice = do_commit; } #else // Commit the current transaction if // we are running the last iteration // or running a multitransaction test and not chaining // Chain the tx if we are chaining and not on // the last iteration if (iter == repeatCount-1) { choice=do_commit; // commit } else if(manyXACTS) { // not last iteration, multi tx test if(chain_tx) { choice=do_chain; } else { choice=do_commit; } } else choice=do_nothing; #endif if(choice==do_commit) { //E_CommitTransaction(); W_COERCE(Shore::commit_transaction()); choice = do_begin; } else if (choice==do_chain) { W_COERCE(Shore::chain_transaction()); choice = do_nothing; } } // compute and report wall clock time gettimeofday(&endWallTime, IGNOREZONE &ignoreTimeZone); printf("SHORE, operation= %s, iteration= %d, elapsedTime= %f seconds\n", argv[opIndex], iter, ComputeWallClockTime(&startWallTime, &endWallTime)); if (iter == 1) startWarmTime = startWallTime; // Compute and report CPU time. getrusage(RUSAGE_SELF, &endUsage); fprintf(stdout, resultText); fprintf(stdout, "CPU time: %f seconds.\n", ComputeUserTime(&startUsage, &endUsage) + ComputeSystemTime(&startUsage, &endUsage)); fprintf(stdout, "(%f seconds user, %f seconds system.)\n", ComputeUserTime(&startUsage, &endUsage), ComputeSystemTime(&startUsage, &endUsage)); if ((repeatCount > 2) && (iter == repeatCount-2)) { // compute average hot time for 2nd through n-1 th iterations printf("SHORE, operation=%s, average hot elapsedTime=%f seconds\n", argv[opIndex], ComputeWallClockTime(&startWarmTime, &endWallTime)/(repeatCount-2)); } } ////////////////////////////////////////////////////////////////// // // Shutdown // ////////////////////////////////////////////////////////////////// #ifdef PARSETS cleanupParSets(); #endif // totalTime.Stop(); // totalSrvTime.Stop(); // fprintf(stdout, "Total stats (client,server):\n"); // totalTime.PrintStatsHeader(stdout); // totalTime.PrintStats(stdout, "TotalCli"); // totalSrvTime.PrintStats(stdout, "TotalSrv"); // Exit W_COERCE(Shore::exit()); return(0); }
int Run(LPTSTR lpstrCmdLine = NULL, int nCmdShow = SW_SHOWDEFAULT) { try { CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); wstring strConfigFile(L""); bool bReuse = false; wstring strSyncName; ParseCommandLine( lpstrCmdLine, strConfigFile, bReuse, strSyncName); if (strConfigFile.length() == 0) { strConfigFile = wstring(L"console.xml"); } if (!g_settingsHandler->LoadSettings(Helpers::ExpandEnvironmentStrings(strConfigFile))) { throw std::exception("enable to load settings!"); } if (!bReuse) { bReuse = !g_settingsHandler->GetBehaviorSettings2().instanceSettings.bAllowMultipleInstances; } if (!strSyncName.empty()) { wstring strWindowTitle; vector<wstring> startupTabs; vector<wstring> startupDirs; vector<wstring> startupCmds; int nMultiStartSleep = 0; wstring strWorkingDir; MainFrame::ParseCommandLine ( lpstrCmdLine, strWindowTitle, startupTabs, startupDirs, startupCmds, nMultiStartSleep, strWorkingDir ); TabSettings& tabSettings = g_settingsHandler->GetTabSettings(); // find tab with corresponding name... for (auto tabData = tabSettings.tabDataVector.begin(); tabData != tabSettings.tabDataVector.end(); ++tabData) { if (tabData->get()->strTitle == startupTabs[0]) { wstring strInitialDir(g_settingsHandler->GetConsoleSettings().strInitialDir); if (startupDirs.size() > 0 && startupDirs[0].length() > 0) { strInitialDir = startupDirs[0]; } else if (tabData->get()->strInitialDir.length() > 0) { strInitialDir = tabData->get()->strInitialDir; } wstring strShell(g_settingsHandler->GetConsoleSettings().strShell); if (tabData->get()->strShell.length() > 0) { strShell = tabData->get()->strShell; } wstring strInitialCmd = strWorkingDir; if (startupCmds.size() > 0 && startupCmds[0].length() > 0) { strInitialCmd = startupCmds[0]; } try { ConsoleHandler ConsoleHandler; ConsoleHandler.StartShellProcessAsAdministrator ( strSyncName, strShell, strInitialDir, strInitialCmd ); } catch(Win32Exception&) { } } } return 0; } if (bReuse && HandleReuse(lpstrCmdLine)) return 0; // create main window NoTaskbarParent noTaskbarParent; MainFrame wndMain(lpstrCmdLine); if (!g_settingsHandler->GetAppearanceSettings().stylesSettings.bTaskbarButton) { noTaskbarParent.Create(NULL); } if(wndMain.CreateEx(noTaskbarParent.m_hWnd) == NULL) { ATLTRACE(_T("Main window creation failed!\n")); return 1; } #ifdef _USE_AERO // restore the drop files message in elevated console ::ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD); ::ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD); ::ChangeWindowMessageFilter(0x0049, MSGFLT_ADD); #endif wndMain.ShowWindow(nCmdShow); SharedMemory<HWND> sharedInstance; if (bReuse) { sharedInstance.Create(L"ConsoleZ", 1, syncObjNone, _T("")); sharedInstance = wndMain.m_hWnd; } WallPaperThread wallPaperThread(wndMain); if (Helpers::CheckOSVersion(6, 1)) { // Win7 or more, we use the wallpaper slideshow monitoring wallPaperThread.Start(); } TranslateMessageEx = (_t_TranslateMessageEx)::GetProcAddress(::GetModuleHandle(L"user32.dll"), "TranslateMessageEx"); if( !TranslateMessageEx ) Win32Exception::ThrowFromLastError("TranslateMessageEx"); int nRet = theLoop.Run(); if (noTaskbarParent.m_hWnd != NULL) noTaskbarParent.DestroyWindow(); _Module.RemoveMessageLoop(); return nRet; } catch(std::exception& e) { ::MessageBoxA(0, e.what(), "exception", MB_OK); return 1; } }
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; int time, oldtime, newtime; char *cddir; /* previous instances do not exist in Win32 */ if (hPrevInstance) return 0; global_hInstance = hInstance; ParseCommandLine (lpCmdLine); // if we find the CD, add a +set cddir xxx command line cddir = Sys_ScanForCD (); if (cddir && argc < MAX_NUM_ARGVS - 3) { int i; // don't override a cddir on the command line for (i=0 ; i<argc ; i++) if (!strcmp(argv[i], "cddir")) break; if (i == argc) { argv[argc++] = "+set"; argv[argc++] = "cddir"; argv[argc++] = cddir; } } Qcommon_Init (argc, argv); oldtime = Sys_Milliseconds (); /* main window message loop */ while (1) { // if at a full screen console, don't update unless needed if (Minimized || (dedicated && dedicated->value) ) { Sleep (1); } while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE)) { if (!GetMessage (&msg, NULL, 0, 0)) Com_Quit (); sys_msg_time = msg.time; TranslateMessage (&msg); DispatchMessage (&msg); } do { newtime = Sys_Milliseconds (); time = newtime - oldtime; } while (time < 1); // Con_Printf ("time:%5.2f - %5.2f = %5.2f\n", newtime, oldtime, time); // _controlfp( ~( _EM_ZERODIVIDE /*| _EM_INVALID*/ ), _MCW_EM ); _controlfp( _PC_24, _MCW_PC ); Qcommon_Frame (time); oldtime = newtime; } // never gets here return TRUE; }
BOOL CEditorApplication::InitInstance() { srand((unsigned int) time(NULL)); #if 0 && defined(CRTDBG_MAP_ALLOC) _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); _CrtSetBreakAlloc(0); #endif // look for another instance m_Instances = new CInstanceRepository(); if (m_Instances) { m_Instances->lock(); if (!m_Instances->isEmpty()) { CEditorPrestartCommandLineInfo cli(m_Instances->getFirstInstanceWnd()); ParseCommandLine(cli); if (cli.mayInstanceExit()) { m_Instances->unlock(); delete m_Instances; m_Instances = NULL; return FALSE; } } } // set the configuration directory char config_directory[MAX_PATH] = {0}; GetModuleFileName(m_hInstance, config_directory, MAX_PATH); if (strrchr(config_directory, '\\')) { *strrchr(config_directory, '\\') = 0; } std::string editor_config = std::string(config_directory) + "\\editor.ini"; std::string engine_config = std::string(config_directory) + "\\engine.ini"; Configuration::ConfigurationFile = editor_config; SetCurrentDirectory(config_directory); s_SphereDirectory = config_directory; SetLanguage(Configuration::Get(KEY_LANGUAGE).c_str()); // create the main window CMainWindow* main_window = new CMainWindow(); if (!main_window) return FALSE; main_window->Create(); m_pMainWnd = main_window; g_MainWindow = main_window; if (m_Instances) { // register this instance m_Instances->registerInstance(main_window->m_hWnd); m_Instances->unlock(); } SPHERECONFIG sphere_config; LoadSphereConfig(&sphere_config, engine_config.c_str()); // parse the command line CEditorCommandLineInfo cli(main_window); ParseCommandLine(cli); return TRUE; }
BOOL CMyCommApp::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. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif // 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(10); // 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. //App dir GetModuleFileName(NULL,m_AppDir.GetBufferSetLength (MAX_PATH+1),MAX_PATH); m_AppDir.ReleaseBuffer (); int nPos = 0; nPos = m_AppDir.ReverseFind('\\'); CString str = m_AppDir.Right(m_AppDir.GetLength()-nPos-1); // 不含路径的升级文件名 m_AppDir = m_AppDir.Left (nPos); //============================================================================= //1.3 2008-2-16 // 增加发送文件功能。 // // // m_AppVersion = "1.3"; //============================================================================= m_downfileexefilename = ""; CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMyCommDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CMyCommView)); AddDocTemplate(pDocTemplate); // Enable DDE Execute open EnableShellOpen(); RegisterShellFileTypes(TRUE); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; //App Params m_SendkeyType = SendKeyStyle(GetProfileInt("Other","SendKeyType",0)); // The one and only window has been initialized, so show and update it. m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // Enable drag/drop open m_pMainWnd->DragAcceptFiles(); return TRUE; }
BOOL CDiplomaApp::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(); // for test purposes std::wstring command_line_args(m_lpCmdLine); auto result = command_line_args.find(_T("-t")); if (result != std::wstring::npos) { UnitTest::RunAllTests(); return FALSE; // stop father initialization } // 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 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CDiplomaDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CDiploma2DView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 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 one and only window has been initialized, so show and update it m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); m_pMainWnd->UpdateWindow(); // call DragAcceptFiles only if there's a suffix // In an SDI app, this should occur after ProcessShellCommand return TRUE; }