int LuaHostWin32::run(void) { loadProjectConfig(); AllocConsole(); freopen("CONOUT$", "wt", stdout); freopen("CONOUT$", "wt", stderr); // disable close console HWND hwndConsole = GetConsoleWindow(); if (hwndConsole != NULL) { HMENU hMenu = GetSystemMenu(hwndConsole, FALSE); if (hMenu != NULL) DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND); } do { m_exit = TRUE; if (m_project.isShowConsole()) { ShowWindow(hwndConsole, SW_SHOW); BringWindowToTop(hwndConsole); } else { ShowWindow(hwndConsole, SW_HIDE); } // create the application instance m_app = new AppDelegate(); m_app->setStartupScriptFilename(m_project.getScriptFilePath()); // set environments SetCurrentDirectoryA(m_project.getProjectDir().c_str()); vector<string> searchPaths; searchPaths.push_back(m_project.getProjectDir()); CCFileUtils::sharedFileUtils()->setSearchPaths(searchPaths); // create opengl view CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setMenuResource(MAKEINTRESOURCE(IDC_LUAHOSTWIN32)); eglView->setWndProc(WindowProc); eglView->setFrameSize(m_project.getFrameSize().width, m_project.getFrameSize().height); eglView->setFrameZoomFactor(m_project.getFrameScale()); // make window actived m_hwnd = eglView->getHWnd(); BringWindowToTop(m_hwnd); // restore window position const CCPoint windowOffset = m_project.getWindowOffset(); if (windowOffset.x >= 0 || windowOffset.y >= 0) { eglView->moveWindow(windowOffset.x, windowOffset.y); } // set icon HICON icon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_LUAHOSTWIN32)); SendMessage(m_hwnd, WM_SETICON, ICON_BIG, (LPARAM)icon); SendMessage(hwndConsole, WM_SETICON, ICON_BIG, (LPARAM)icon); // run game CCLuaStack *stack = CCLuaEngine::defaultEngine()->getLuaStack(); const vector<string> arr = m_project.getPackagePathArray(); for (vector<string>::const_iterator it = arr.begin(); it != arr.end(); ++it) { stack->addSearchPath(it->c_str()); } m_app->run(); // cleanup CCScriptEngineManager::sharedManager()->removeScriptEngine(); CCScriptEngineManager::purgeSharedManager(); CocosDenshion::SimpleAudioEngine::end(); delete m_app; m_app = NULL; } while (!m_exit); FreeConsole(); return 0; }
int App::run(void) { const char *QUICK_COCOS2D_MINI = getenv("QUICK_COCOS2D_MINI"); SimulatorConfig::sharedDefaults()->setQuickCocos2dxRootPath(QUICK_COCOS2D_MINI); loadProjectConfig(); HWND hwndConsole = NULL; if (m_project.isShowConsole()) { AllocConsole(); freopen("CONOUT$", "wt", stdout); freopen("CONOUT$", "wt", stderr); // disable close console hwndConsole = GetConsoleWindow(); if (hwndConsole != NULL) { HMENU hMenu = GetSystemMenu(hwndConsole, FALSE); if (hMenu != NULL) DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND); ShowWindow(hwndConsole, SW_SHOW); BringWindowToTop(hwndConsole); } } m_project.dump(); if (m_project.isWriteDebugLogToFile()) { const string debugLogFilePath = m_project.getDebugLogFilePath(); m_writeDebugLogFile = fopen(debugLogFilePath.c_str(), "w"); if (!m_writeDebugLogFile) { CCLOG("Cannot create debug log file %s", debugLogFilePath.c_str()); } } do { m_exit = TRUE; // create the application instance m_app = new AppDelegate(); m_app->setProjectConfig(m_project); // set environments SetCurrentDirectoryA(m_project.getProjectDir().c_str()); CCFileUtils::sharedFileUtils()->setSearchRootPath(m_project.getProjectDir().c_str()); CCFileUtils::sharedFileUtils()->setWritablePath(m_project.getWritableRealPath().c_str()); // create opengl view CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setMenuResource(MAKEINTRESOURCE(IDC_LUAHOSTWIN32)); eglView->setWndProc(WindowProc); eglView->setFrameSize(m_project.getFrameSize().width, m_project.getFrameSize().height); eglView->setFrameZoomFactor(m_project.getFrameScale()); // make window actived m_hwnd = eglView->getHWnd(); BringWindowToTop(m_hwnd); SetWindowTextA(m_hwnd, "__PROJECT_PACKAGE_LAST_NAME_L__"); // restore window position const CCPoint windowOffset = m_project.getWindowOffset(); if (windowOffset.x != 0 || windowOffset.y != 0) { eglView->moveWindow(windowOffset.x, windowOffset.y); } // set icon HICON icon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_LUAHOSTWIN32)); SendMessage(m_hwnd, WM_SETICON, ICON_BIG, (LPARAM)icon); if (hwndConsole) { SendMessage(hwndConsole, WM_SETICON, ICON_BIG, (LPARAM)icon); } // update menu createViewMenu(); updateMenu(); // run game CCLuaStack *stack = CCLuaEngine::defaultEngine()->getLuaStack(); const vector<string> arr = m_project.getPackagePathArray(); for (vector<string>::const_iterator it = arr.begin(); it != arr.end(); ++it) { stack->addSearchPath(it->c_str()); } m_app->run(); // cleanup CCScriptEngineManager::sharedManager()->removeScriptEngine(); CCScriptEngineManager::purgeSharedManager(); CocosDenshion::SimpleAudioEngine::end(); delete m_app; m_app = NULL; } while (!m_exit); FreeConsole(); if (m_writeDebugLogFile) fclose(m_writeDebugLogFile); return 0; }
//-------------------------------------------------------------------- int CFKCocos2dxAppWrapper::Run() { bool bRet = 0; // first ,load project config LoadProjectConfig(); // create consle HWND hwndConsole = NULL; if (m_tagAppConfig.IsShowConsole()) { AllocConsole(); freopen("CONOUT$", "wt", stdout); freopen("CONOUT$", "wt", stderr); // disable close console hwndConsole = GetConsoleWindow(); if (hwndConsole != NULL) { HMENU hMenu = GetSystemMenu(hwndConsole, FALSE); if (hMenu != NULL) DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND); ShowWindow(hwndConsole, SW_SHOW); BringWindowToTop(hwndConsole); } } // create log file if (m_tagAppConfig.IsWriteDebugLogToFile()) { const string debugLogFilePath = m_tagAppConfig.GetDebugLogFilePath(); m_pWriteDebugLogFile = fopen(debugLogFilePath.c_str(), "w"); if ( m_pWriteDebugLogFile == NULL ) { FKLOG("Cannot create debug log file %s", debugLogFilePath.c_str()); } } // MainLoop do { m_bIsExit = TRUE; // create app m_pApp = new AppDelegate(); if( m_pApp == NULL ) { bRet = false; break; } // set some environments m_pApp->SetProjectConfig( m_tagAppConfig ); CCFileUtils::sharedFileUtils()->addSearchPath( m_tagAppConfig.GetProjectDir().c_str() ); // create openGL view CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setMenuResource(MAKEINTRESOURCE(IDC_LUAHOSTWIN32)); eglView->setWndProc (WindowProc ); eglView->setFrameSize( m_tagAppConfig.GetFrameSize().width, m_tagAppConfig.GetFrameSize().height ); eglView->setFrameZoomFactor( m_tagAppConfig.GetFrameScale() ); // set window actived m_hWnd = eglView->getHWnd(); BringWindowToTop(m_hWnd); SetWindowTextA(m_hWnd, "FKCocos2dxAppWrapper Project"); // center window position eglView->centerWindow(); // set icon HICON icon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_LUAHOSTWIN32)); SendMessage( m_hWnd, WM_SETICON, ICON_BIG, (LPARAM)icon); if (hwndConsole) { SendMessage(hwndConsole, WM_SETICON, ICON_BIG, (LPARAM)icon); } // set menu CreateViewMenu(); UpdateViewMenu(); // run games m_pApp->run(); // clean up CocosDenshion::SimpleAudioEngine::end(); delete m_pApp; m_pApp = NULL; }while( !m_bIsExit ); // ready exit FreeConsole(); if( m_pWriteDebugLogFile != NULL ) { fclose(m_pWriteDebugLogFile); } return bRet; }