int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int /*nCmdShow*/ = SW_SHOWDEFAULT) { // Check window mirroring settings CString sRTL = Utility::GetINIString(_T("Settings"), _T("RTLReading")); if(sRTL.CompareNoCase(_T("1"))==0) { SetProcessDefaultLayout(LAYOUT_RTL); } CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); int nGetCrashInfoThroughPipe = GetCrashInfoThroughPipe(); if(nGetCrashInfoThroughPipe!=0) { ATLASSERT(nGetCrashInfoThroughPipe==0); return 1; } if(dlgMain.Create(NULL) == NULL) { ATLTRACE(_T("Main dialog creation failed!\n")); return 0; } //dlgMain.ShowWindow(nCmdShow); int nRet = theLoop.Run(); _Module.RemoveMessageLoop(); return nRet; }
bool Translations::SetLanguage(LanguageResource languageResource, bool showErrorMsg /*= true*/) { HMODULE hMod = nullptr; bool success = false; // Note that all messages should stay in English in that method! // Try to load the resource dll if any if (languageResource.dllPath) { hMod = LoadLibrary(languageResource.dllPath); if (hMod == nullptr) { // The dll failed to load for some reason if (showErrorMsg) { MessageBox(nullptr, _T("Error loading the chosen language.\n\nPlease reinstall MPC-HC."), _T("MPC-HC"), MB_ICONWARNING | MB_OK); } } else { // Check if the version of the resource dll is correct CString strSatVersion = FileVersionInfo::GetFileVersionStr(languageResource.dllPath); CString strNeededVersion; strNeededVersion.Format(_T("%u.%u.%u.0"), VersionInfo::GetMajorNumber(), VersionInfo::GetMinorNumber(), VersionInfo::GetPatchNumber()); if (strSatVersion == strNeededVersion) { success = true; } else { // The version wasn't correct if (showErrorMsg) { int sel = MessageBox(nullptr, _T("Your language pack will not work with this version.\n\nDo you want to visit the download page to get a full package including the translations?"), _T("MPC-HC"), MB_ICONWARNING | MB_YESNO); if (sel == IDYES) { ShellExecute(nullptr, _T("open"), DOWNLOAD_URL, nullptr, nullptr, SW_SHOWDEFAULT); } } // Free the loaded resource dll FreeLibrary(hMod); hMod = nullptr; } } } // In case no dll was loaded, load the English translation from the executable if (hMod == nullptr) { hMod = AfxGetApp()->m_hInstance; // If a resource dll was supposed to be loaded we had an error success = (languageResource.dllPath == nullptr); } // In case a dll was loaded, check if some special action is needed else if (PRIMARYLANGID(languageResource.localeID) == LANG_ARABIC || PRIMARYLANGID(languageResource.localeID) == LANG_HEBREW) { // Hebrew needs the RTL flag. SetProcessDefaultLayout(LAYOUT_RTL); SetWindowsHookEx(WH_CBT, RTLWindowsLayoutCbtFilterHook, nullptr, GetCurrentThreadId()); } // Free the old resource if it was a dll if (AfxGetResourceHandle() != AfxGetApp()->m_hInstance) { FreeLibrary(AfxGetResourceHandle()); } // Set the new resource AfxSetResourceHandle(hMod); return success; }
int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { MSG msg; HACCEL hAccel; UNREFERENCED_PARAMETER(hPrevInstance); if (ProcessCmdLine(lpCmdLine)) { return 0; } /* Initialize global strings */ LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadStringW(hInstance, IDC_REGEDIT_FRAME, szFrameClass, MAX_LOADSTRING); LoadStringW(hInstance, IDC_REGEDIT, szChildClass, MAX_LOADSTRING); switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } /* Store instance handle in our global variable */ hInst = hInstance; /* Perform application initialization */ if (!InitInstance(hInstance, nCmdShow)) { return 0; } hAccel = LoadAcceleratorsW(hInstance, MAKEINTRESOURCEW(ID_ACCEL)); /* Main message loop */ while (GetMessageW(&msg, NULL, 0, 0)) { if (!TranslateAcceleratorW(hFrameWnd, hAccel, &msg) && !TranslateChildTabMessage(&msg)) { TranslateMessage(&msg); DispatchMessageW(&msg); } } ExitInstance(hInstance); return (int)msg.wParam; }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; HACCEL hAccelTable; UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } /* Initialize global strings */ LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); MyRegisterClass(hInstance); /* Perform application initialization */ if (!InitInstance(hInstance, nCmdShow)) return FALSE; hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MAGNIFIER)); /* Main message loop */ while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(hMainWnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } SelectObject(hdcOffscreen, hbmpOld); DeleteObject (hbmpOffscreen); DeleteDC(hdcOffscreen); return (int) msg.wParam; }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. MSG msg; HACCEL hAccelTable; UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); MyRegisterClass(hInstance); // Perform application initialization: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MAGNIFIER)); // Main message loop: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam; }
BOOL CErrorReportExporter::Init(LPCTSTR szFileMappingName) { m_sErrorMsg = _T("Unspecified error."); // Read crash information from the file mapping object. int nInit = m_CrashInfo.Init(szFileMappingName); if(nInit!=0) { m_sErrorMsg.Format(_T("Error reading crash info: %s"), m_CrashInfo.GetErrorMsg().GetBuffer(0)); return FALSE; } SetProcessDefaultLayout(LAYOUT_RTL); // Start crash info collection work assynchronously DoWorkAssync(COLLECT_CRASH_INFO); // Done. m_sErrorMsg = _T("Success."); return TRUE; }
int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT) { CString sRTL = Utility::GetINIString(_T("Settings"), _T("RTLReading")); if(sRTL.CompareNoCase(_T("1"))==0) { SetProcessDefaultLayout(LAYOUT_RTL); } CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); CMainDlg dlgMain; if(GetCrashInfoThroughPipe( dlgMain.m_sAppName, dlgMain.m_sAppVersion, dlgMain.m_sImageName, dlgMain.m_sEmailSubject, dlgMain.m_sEmailTo, dlgMain.m_sUrl, &dlgMain.m_uPriorities, dlgMain.m_sZipName, dlgMain.m_sPrivacyPolicyURL, dlgMain.m_pUDFiles)!=0) return 1; if(dlgMain.Create(NULL) == NULL) { ATLTRACE(_T("Main dialog creation failed!\n")); return 0; } dlgMain.ShowWindow(nCmdShow); int nRet = theLoop.Run(); _Module.RemoveMessageLoop(); return nRet; }
int WINAPI _tWinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { LPTSTR lpAppName; HWND hMainWnd; MSG Msg; int Ret = 1; INITCOMMONCONTROLSEX icex; switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } hInstance = hThisInstance; ProcessHeap = GetProcessHeap(); icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_BAR_CLASSES | ICC_COOL_CLASSES; InitCommonControlsEx(&icex); if (!AllocAndLoadString(&lpAppName, hInstance, IDS_APPNAME)) { return 1; } if (InitMainWindowImpl()) { hMainWnd = CreateMainWindow(lpAppName, nCmdShow); if (hMainWnd != NULL) { /* pump the message queue */ while( GetMessage( &Msg, NULL, 0, 0 ) ) { //if ( !hProgDlg || !IsWindow(hProgDlg) || !IsDialogMessage(hProgDlg, &Msg) ) //{ TranslateMessage(&Msg); DispatchMessage(&Msg); //} } Ret = 0; } UninitMainWindowImpl(); } LocalFree((HLOCAL)lpAppName); return Ret; }
/****************************************************************************** * SetProcessDefaultLayout [USER.1000] * * Sets the default layout for parentless windows. * Right now, only accepts 0 (left-to-right). * * RETURNS * Success: Nonzero * Failure: Zero */ BOOL16 WINAPI SetProcessDefaultLayout16( DWORD dwDefaultLayout ) { FIXME( "( %08x ): No BiDi16\n", dwDefaultLayout ); return SetProcessDefaultLayout( dwDefaultLayout ); }
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd) { WNDCLASSEXW WndClass = {0}; WCHAR szWindowClass[] = L"ROSAPPMGR"; WCHAR szWindowName[MAX_STR_LEN]; HANDLE hMutex = NULL; HACCEL KeyBrd; MSG Msg; switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } hInst = hInstance; hMutex = CreateMutexW(NULL, FALSE, szWindowClass); if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS)) { /* If already started, it is found its window */ HWND hWindow = FindWindowW(szWindowClass, NULL); /* Activate window */ ShowWindow(hWindow, SW_SHOWNORMAL); SetForegroundWindow(hWindow); return 1; } if (!LoadSettings()) { FillDefaultSettings(&SettingsInfo); } InitLogs(); InitCommonControls(); /* Create the window */ WndClass.cbSize = sizeof(WNDCLASSEXW); WndClass.lpszClassName = szWindowClass; WndClass.lpfnWndProc = MainWindowProc; WndClass.hInstance = hInstance; WndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN)); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); WndClass.lpszMenuName = MAKEINTRESOURCEW(IDR_MAINMENU); if (RegisterClassExW(&WndClass) == (ATOM)0) goto Exit; LoadStringW(hInst, IDS_APPTITLE, szWindowName, _countof(szWindowName)); hMainWnd = CreateWindowExW(WS_EX_WINDOWEDGE, szWindowClass, szWindowName, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, (SettingsInfo.bSaveWndPos ? SettingsInfo.Left : CW_USEDEFAULT), (SettingsInfo.bSaveWndPos ? SettingsInfo.Top : CW_USEDEFAULT), (SettingsInfo.bSaveWndPos ? SettingsInfo.Width : 680), (SettingsInfo.bSaveWndPos ? SettingsInfo.Height : 450), NULL, NULL, hInstance, NULL); if (!hMainWnd) goto Exit; /* Maximize it if we must */ ShowWindow(hMainWnd, (SettingsInfo.bSaveWndPos && SettingsInfo.Maximized ? SW_MAXIMIZE : nShowCmd)); UpdateWindow(hMainWnd); if (SettingsInfo.bUpdateAtStart) UpdateAppsDB(); /* Load the menu hotkeys */ KeyBrd = LoadAccelerators(NULL, MAKEINTRESOURCE(HOTKEYS)); /* Message Loop */ while (GetMessage(&Msg, NULL, 0, 0)) { if (!TranslateAccelerator(hMainWnd, KeyBrd, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } Exit: if (hMutex) CloseHandle(hMutex); return 0; }
static int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT) { checkCommonControls(); CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); CEdit dummy; CWindow splash; CRect rc; rc.bottom = GetSystemMetrics(SM_CYFULLSCREEN); rc.top = (rc.bottom / 2) - 80; rc.right = GetSystemMetrics(SM_CXFULLSCREEN); rc.left = rc.right / 2 - 85; dummy.Create(NULL, rc, _T(APPNAME) _T(" ") _T(VERSIONSTRING), WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | ES_CENTER | ES_READONLY, WS_EX_STATICEDGE); splash.Create(_T("Static"), GetDesktopWindow(), splash.rcDefault, NULL, WS_POPUP | WS_VISIBLE | SS_USERITEM | WS_EX_TOOLWINDOW); splash.SetFont((HFONT)GetStockObject(DEFAULT_GUI_FONT)); HDC dc = splash.GetDC(); rc.right = rc.left + 350; rc.bottom = rc.top + 120; splash.ReleaseDC(dc); splash.HideCaret(); splash.SetWindowPos(NULL, &rc, SWP_SHOWWINDOW); splash.SetWindowLongPtr(GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(&splashCallback)); splash.CenterWindow(); sTitle = _T(VERSIONSTRING) _T(" ") _T(CONFIGURATION_TYPE); splash.SetFocus(); splash.RedrawWindow(); WinUtil::preInit(); startup(callBack, (void*)splash.m_hWnd); if(BOOLSETTING(PASSWD_PROTECT)) { PassDlg dlg; dlg.description = TSTRING(PASSWORD_DESC); dlg.title = TSTRING(PASSWORD_TITLE); dlg.ok = TSTRING(UNLOCK); if(dlg.DoModal(/*m_hWnd*/) == IDOK){ tstring tmp = dlg.line; if (tmp != Text::toT(Util::base64_decode(SETTING(PASSWORD)))) { ExitProcess(1); } } } splash.DestroyWindow(); dummy.DestroyWindow(); if(ResourceManager::getInstance()->isRTL()) { SetProcessDefaultLayout(LAYOUT_RTL); } MainFrame wndMain; rc = wndMain.rcDefault; if( (SETTING(MAIN_WINDOW_POS_X) != CW_USEDEFAULT) && (SETTING(MAIN_WINDOW_POS_Y) != CW_USEDEFAULT) && (SETTING(MAIN_WINDOW_SIZE_X) != CW_USEDEFAULT) && (SETTING(MAIN_WINDOW_SIZE_Y) != CW_USEDEFAULT) ) { rc.left = SETTING(MAIN_WINDOW_POS_X); rc.top = SETTING(MAIN_WINDOW_POS_Y); rc.right = rc.left + SETTING(MAIN_WINDOW_SIZE_X); rc.bottom = rc.top + SETTING(MAIN_WINDOW_SIZE_Y); // Now, let's ensure we have sane values here... if( (rc.left < 0 ) || (rc.top < 0) || (rc.right - rc.left < 10) || ((rc.bottom - rc.top) < 10) ) { rc = wndMain.rcDefault; } } int rtl = ResourceManager::getInstance()->isRTL() ? WS_EX_RTLREADING : 0; if(wndMain.CreateEx(NULL, rc, 0, rtl | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE) == NULL) { ATLTRACE(_T("Main window creation failed!\n")); return 0; } if(BOOLSETTING(MINIMIZE_ON_STARTUP)) { wndMain.ShowWindow(SW_SHOWMINIMIZED); } else { wndMain.ShowWindow(((nCmdShow == SW_SHOWDEFAULT) || (nCmdShow == SW_SHOWNORMAL)) ? SETTING(MAIN_WINDOW_STATE) : nCmdShow); } int nRet = theLoop.Run(); _Module.RemoveMessageLoop(); dummy.Create(NULL, rc, _T(APPNAME) _T(" ") _T(VERSIONSTRING), WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | ES_CENTER | ES_READONLY, WS_EX_STATICEDGE); splash.Create(_T("Static"), GetDesktopWindow(), splash.rcDefault, NULL, WS_POPUP | WS_VISIBLE | SS_USERITEM | WS_EX_TOOLWINDOW); splash.SetFont((HFONT)GetStockObject(DEFAULT_GUI_FONT)); dc = splash.GetDC(); rc.right = rc.left + 350; rc.bottom = rc.top + 120; splash.ReleaseDC(dc); splash.HideCaret(); splash.SetWindowPos(NULL, &rc, SWP_SHOWWINDOW); splash.SetWindowLongPtr(GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(&splashCallback)); splash.CenterWindow(); sTitle = TSTRING(PROCESSING); splash.SetFocus(); splash.RedrawWindow(); shutdown(callBack, (void*)splash.m_hWnd); splash.DestroyWindow(); dummy.DestroyWindow(); return nRet; }
/*********************************************************************** * * WinMain */ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int show) { MSG msg; HACCEL hAccel; WNDCLASSEX wndclass; HMONITOR monitor; MONITORINFO info; INT x, y; static const TCHAR className[] = _T("NPClass"); static const TCHAR winName[] = _T("Notepad"); switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } UNREFERENCED_PARAMETER(prev); aFINDMSGSTRING = (ATOM)RegisterWindowMessage(FINDMSGSTRING); ZeroMemory(&Globals, sizeof(Globals)); Globals.hInstance = hInstance; LoadSettings(); ZeroMemory(&wndclass, sizeof(wndclass)); wndclass.cbSize = sizeof(wndclass); wndclass.lpfnWndProc = NOTEPAD_WndProc; wndclass.hInstance = Globals.hInstance; wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_NPICON)); wndclass.hCursor = LoadCursor(0, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wndclass.lpszMenuName = MAKEINTRESOURCE(MAIN_MENU); wndclass.lpszClassName = className; wndclass.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_NPICON), IMAGE_ICON, 16, 16, 0); if (!RegisterClassEx(&wndclass)) return FALSE; /* Setup windows */ monitor = MonitorFromRect(&Globals.main_rect, MONITOR_DEFAULTTOPRIMARY); info.cbSize = sizeof(info); GetMonitorInfoW(monitor, &info); x = Globals.main_rect.left; y = Globals.main_rect.top; if (Globals.main_rect.left >= info.rcWork.right || Globals.main_rect.top >= info.rcWork.bottom || Globals.main_rect.right < info.rcWork.left || Globals.main_rect.bottom < info.rcWork.top) x = y = CW_USEDEFAULT; Globals.hMainWnd = CreateWindow(className, winName, WS_OVERLAPPEDWINDOW, x, y, Globals.main_rect.right - Globals.main_rect.left, Globals.main_rect.bottom - Globals.main_rect.top, NULL, NULL, Globals.hInstance, NULL); if (!Globals.hMainWnd) { ShowLastError(); ExitProcess(1); } DoCreateEditWindow(); NOTEPAD_InitData(); DIALOG_FileNew(); ShowWindow(Globals.hMainWnd, show); UpdateWindow(Globals.hMainWnd); DragAcceptFiles(Globals.hMainWnd, TRUE); DIALOG_ViewStatusBar(); if (!HandleCommandLine(cmdline)) { return 0; } hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCEL)); while (GetMessage(&msg, 0, 0, 0)) { if (!IsDialogMessage(Globals.hFindReplaceDlg, &msg) && !TranslateAccelerator(Globals.hMainWnd, hAccel, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam; }
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { MSG msg; HACCEL hAccel; HWND hPrevWindow; WNDCLASSEXW wndclass; WCHAR szBuffer[MAX_STRING_LEN]; hPrevWindow = FindWindowW(szClassName, NULL); if (hPrevWindow) { BringWindowToFront(hPrevWindow); return 0; } switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } ZeroMemory(&Globals, sizeof(Globals)); Globals.hInstance = hInstance; ZeroMemory(&wndclass, sizeof(wndclass)); wndclass.cbSize = sizeof(wndclass); wndclass.lpfnWndProc = MainWndProc; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(CLIPBRD_ICON)); wndclass.hCursor = LoadCursorW(0, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wndclass.lpszMenuName = MAKEINTRESOURCEW(MAIN_MENU); wndclass.lpszClassName = szClassName; if (!RegisterClassExW(&wndclass)) { ShowLastWin32Error(NULL); return 0; } ZeroMemory(&Scrollstate, sizeof(Scrollstate)); LoadStringW(hInstance, STRING_CLIPBOARD, szBuffer, ARRAYSIZE(szBuffer)); Globals.hMainWnd = CreateWindowExW(WS_EX_CLIENTEDGE | WS_EX_ACCEPTFILES, szClassName, szBuffer, WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, Globals.hInstance, NULL); if (!Globals.hMainWnd) { ShowLastWin32Error(NULL); return 0; } ShowWindow(Globals.hMainWnd, nCmdShow); UpdateWindow(Globals.hMainWnd); hAccel = LoadAcceleratorsW(Globals.hInstance, MAKEINTRESOURCEW(ID_ACCEL)); if (!hAccel) { ShowLastWin32Error(Globals.hMainWnd); } /* If the user provided a path to a clipboard data file, try to open it */ if (__argc >= 2) LoadClipboardDataFromFile(__wargv[1]); while (GetMessageW(&msg, 0, 0, 0)) { if (!TranslateAcceleratorW(Globals.hMainWnd, hAccel, &msg)) { TranslateMessage(&msg); DispatchMessageW(&msg); } } return (int)msg.wParam; }
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd) { WCHAR szWindowClass[] = L"ROSAPPMGR"; HANDLE hMutex = NULL; HACCEL KeyBrd; MSG Msg; InitializeAtlModule(hInstance, TRUE); switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } hInst = hInstance; hMutex = CreateMutexW(NULL, FALSE, szWindowClass); if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS)) { /* If already started, it is found its window */ HWND hWindow = FindWindowW(szWindowClass, NULL); /* Activate window */ ShowWindow(hWindow, SW_SHOWNORMAL); SetForegroundWindow(hWindow); return 1; } if (!LoadSettings()) { FillDefaultSettings(&SettingsInfo); } InitLogs(); InitCommonControls(); hMainWnd = CreateMainWindow(); if (!hMainWnd) goto Exit; /* Maximize it if we must */ ShowWindow(hMainWnd, (SettingsInfo.bSaveWndPos && SettingsInfo.Maximized ? SW_MAXIMIZE : nShowCmd)); UpdateWindow(hMainWnd); if (SettingsInfo.bUpdateAtStart) UpdateAppsDB(); /* Load the menu hotkeys */ KeyBrd = LoadAccelerators(NULL, MAKEINTRESOURCE(HOTKEYS)); /* Message Loop */ while (GetMessage(&Msg, NULL, 0, 0)) { if (!TranslateAccelerator(hMainWnd, KeyBrd, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } Exit: if (hMutex) CloseHandle(hMutex); InitializeAtlModule(hInstance, FALSE); return 0; }
static int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT) { checkCommonControls(); CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); SplashWindow splash(IDB_SPLASH); class PeersConfiguration : public StartupConfiguration, public FavoriteManagerInitializer { private: FavoriteHubEntry* findHub(FavoriteHubEntry::List& favoriteHubs, const string& server) const { if (!favoriteHubs.empty()) { for (FavoriteHubEntry::Iter i = favoriteHubs.begin(); i != favoriteHubs.end(); ++i) { FavoriteHubEntry* entry = *i; if (Util::stricmp(entry->getServer(), server) == 0) { return entry; } } const string fullServerName = "dchub://" + server; for (FavoriteHubEntry::Iter i = favoriteHubs.begin(); i != favoriteHubs.end(); ++i) { FavoriteHubEntry* entry = *i; if (Util::stricmp(entry->getServer(), fullServerName) == 0) { return entry; } } } return NULL; } void checkHub(FavoriteHubEntry::List& favoriteHubs, const string& server, const tstring& name, const tstring& description, bool forceAutoConnect, int mode) const { FavoriteHubEntry* e = findHub(favoriteHubs, server); if (e == NULL) { e = new FavoriteHubEntry(); e->setName(Text::fromT(name)); e->setConnect(true); e->setDescription(Text::fromT(description)); e->setNick(Util::emptyString); e->setPassword(Util::emptyString); e->setServer(server); e->setUserDescription(Util::emptyString); e->setMode(mode); favoriteHubs.push_back(e); } else if (forceAutoConnect) { #ifndef _DEBUG e->setConnect(true); #endif } } public: virtual void onLoad(int& version, FavoriteHubEntry::List& favoriteHubs) const { checkHub(favoriteHubs, PeersUtils::PEERS_HUB, _T("Пирс"), _T("Файлообменная сеть Электронного города"), true, 0); // Always set mode auto for PEERS_HUB FavoriteHubEntry *peers = findHub(favoriteHubs, PeersUtils::PEERS_HUB); peers->setMode(0); if (version < BUILDID) { version = BUILDID; } } }; PeersConfiguration configuration; configuration.m_clientId = APPNAME " V:" VERSIONSTRING; configuration.m_queueManagerVersion = VERSIONSTRING; configuration.m_settingsManagerVersion = Util::toString(BUILDID); configuration.m_mainHub = PeersUtils::PEERS_HUB; if (!g_DisableSplash) { splash.init(); Application::startup(splash.getCallback(), &configuration); } else { class NOPCallback : public ProgressCallback { public: virtual void showMessage(const tstring&) { } } nop; Application::startup(&nop, &configuration); } PreviewApplication::List lst = FavoriteManager::getInstance()->getPreviewApps(); if (lst.empty()) { FavoriteManager::getInstance()->addPreviewApp("VLC", ".\\VLC\\VLCPortable.exe", "%[file]", "avi;divx;mpg;mpeg"); } else if (lst.size() == 1 && (Util::stricmp(lst[0]->getApplication(),"AVIPreview.exe") == 0 || Util::stricmp(lst[0]->getApplication(),".\\AVIPreview.exe") == 0)) { PreviewApplication fixed(*lst[0]); fixed.setName("VLC"); fixed.setApplication(".\\VLC\\VLCPortable.exe"); FavoriteManager::getInstance()->updatePreviewApp(0, fixed); } if (BOOLSETTING(DOWNLOAD_DIRECTORY_SHORTCUT)) { const string path = SETTING(DOWNLOAD_DIRECTORY); File::ensureDirectory(path); Shortcut::createDesktopShortcut(Text::toT(path), _T("Загрузки Peers")); } /* if (Util::readRegistryBoolean(_T("SiteShortcut"), true)) { TCHAR path[MAX_PATH]; GetModuleFileName(NULL, path, MAX_PATH); int iconIndex = 0; for (int i = 0; i < IDI_SITE_SHORTCUT; ++i) { if (LoadIcon(_Module.GetResourceInstance(), MAKEINTRESOURCE(i)) != NULL) { ++iconIndex; } } Shortcut::createInternetShortcut(_T("http://www.cn.ru/"), _T("Портал cn.ru"), path, iconIndex); } */ ChatBot::newInstance(); // !SMT!-CB if(ResourceManager::getInstance()->isRTL()) { SetProcessDefaultLayout(LAYOUT_RTL); } int nRet; {// !SMT!-fix this will ensure that GUI (wndMain) destroyed before client library shutdown (gui objects may call lib) MainFrame wndMain; CRect rc = wndMain.rcDefault; if( (SETTING(MAIN_WINDOW_POS_X) != CW_USEDEFAULT) && (SETTING(MAIN_WINDOW_POS_Y) != CW_USEDEFAULT) && (SETTING(MAIN_WINDOW_SIZE_X) != CW_USEDEFAULT) && (SETTING(MAIN_WINDOW_SIZE_Y) != CW_USEDEFAULT) ) { rc.left = SETTING(MAIN_WINDOW_POS_X); rc.top = SETTING(MAIN_WINDOW_POS_Y); rc.right = rc.left + SETTING(MAIN_WINDOW_SIZE_X); rc.bottom = rc.top + SETTING(MAIN_WINDOW_SIZE_Y); // Now, let's ensure we have sane values here... if( (rc.left < 0 ) || (rc.top < 0) || (rc.right - rc.left < 10) || ((rc.bottom - rc.top) < 10) ) { rc = wndMain.rcDefault; } } int rtl = ResourceManager::getInstance()->isRTL() ? WS_EX_RTLREADING : 0; if(wndMain.CreateEx(NULL, rc, 0, rtl | WS_EX_APPWINDOW | WS_EX_WINDOWEDGE) == NULL) { ATLTRACE(_T("Main window creation failed!\n")); return 0; } // Backup & Archive Settings at Starup!!! Written by Drakon. if (BOOLSETTING(STARTUP_BACKUP)) { tstring bkcmd = Text::toT(Util::getDataPath()) + _T("BackUp/BackupProfile.bat"); ShellExecute(NULL, NULL, bkcmd.c_str(), NULL, NULL, SW_HIDE); } // End of BackUp... DestroyAndDetachWindow(splash); if(nCmdShow == SW_SHOWMINIMIZED || BOOLSETTING(MINIMIZE_ON_STARTUP)) { wndMain.ShowWindow(SW_SHOWMINIMIZED); } else { wndMain.ShowWindow(((nCmdShow == SW_SHOWDEFAULT) || (nCmdShow == SW_SHOWNORMAL)) ? SETTING(MAIN_WINDOW_STATE) : nCmdShow); } nRet = theLoop.Run(); ChatBot::deleteInstance(); // !SMT!-CB _Module.RemoveMessageLoop(); } // !SMT!-fix Application::shutdown(); return nRet; }
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int argc; WCHAR** argv; WCHAR szFileName[MAX_PATH] = L""; DWORD dwSize; HWND hMainWnd; MSG msg; WNDCLASSEXW wincl; LPCWSTR fileName; switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } g_hInstance = hThisInstance; /* Get unicode command line */ argv = CommandLineToArgvW(GetCommandLineW(), &argc); if (argc < 2) { OPENFILENAMEW fontOpen; WCHAR filter[MAX_PATH], dialogTitle[MAX_PATH]; LoadStringW(NULL, IDS_OPEN, dialogTitle, MAX_PATH); LoadStringW(NULL, IDS_FILTER_LIST, filter, MAX_PATH); /* Clears out any values of fontOpen before we use it */ ZeroMemory(&fontOpen, sizeof(fontOpen)); /* Sets up the open dialog box */ fontOpen.lStructSize = sizeof(fontOpen); fontOpen.hwndOwner = NULL; fontOpen.lpstrFilter = filter; fontOpen.lpstrFile = szFileName; fontOpen.lpstrTitle = dialogTitle; fontOpen.nMaxFile = MAX_PATH; fontOpen.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; fontOpen.lpstrDefExt = L"ttf"; /* Opens up the Open File dialog box in order to chose a font file. */ if(GetOpenFileNameW(&fontOpen)) { fileName = fontOpen.lpstrFile; g_fileName = fileName; } else { /* If the user decides to close out of the open dialog effectively exiting the program altogether */ return 0; } } else { /* Try to add the font resource from command line */ fileName = argv[1]; g_fileName = fileName; } if (!AddFontResourceW(fileName)) { ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName); return -1; } /* Get the font name */ dwSize = sizeof(g_ExtLogFontW.elfFullName); if (!GetFontResourceInfoW(fileName, &dwSize, g_ExtLogFontW.elfFullName, 1)) { ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName); return -1; } dwSize = sizeof(LOGFONTW); if (!GetFontResourceInfoW(fileName, &dwSize, &g_ExtLogFontW.elfLogFont, 2)) { ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName); return -1; } if (!Display_InitClass(hThisInstance)) { ErrorMsgBox(0, IDS_ERROR_NOCLASS); return -1; } /* The main window class */ wincl.cbSize = sizeof (WNDCLASSEXW); wincl.style = CS_DBLCLKS; wincl.lpfnWndProc = MainWndProc; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hInstance = hThisInstance; wincl.hIcon = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT)); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND; wincl.lpszMenuName = NULL; wincl.lpszClassName = g_szFontViewClassName; wincl.hIconSm = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT)); /* Register the window class, and if it fails quit the program */ if (!RegisterClassExW (&wincl)) { ErrorMsgBox(0, IDS_ERROR_NOCLASS); return 0; } /* The class is registered, let's create the main window */ hMainWnd = CreateWindowExW( 0, /* Extended possibilites for variation */ g_szFontViewClassName, /* Classname */ g_ExtLogFontW.elfFullName,/* Title Text */ WS_OVERLAPPEDWINDOW, /* default window */ CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window ends up on the screen */ 544, /* The programs width */ 375, /* and height in pixels */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ ); ShowWindow(hMainWnd, nCmdShow); /* Main message loop */ while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } RemoveFontResourceW(argv[1]); return (int)msg.wParam; }
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd) { WNDCLASSEXW WndClass = {0}; WCHAR szWindowClass[] = L"ROSAPPMGR"; WCHAR szWindowName[MAX_STR_LEN]; WCHAR szErrorText[MAX_STR_LEN]; HANDLE hMutex = NULL; MSG Msg; switch (GetUserDefaultUILanguage()) { case MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT): SetProcessDefaultLayout(LAYOUT_RTL); break; default: break; } hInst = hInstance; if (!IsUserAnAdmin()) { LoadStringW(hInst, IDS_USER_NOT_ADMIN, szErrorText, sizeof(szErrorText) / sizeof(WCHAR)); MessageBox(0, szErrorText, NULL, MB_OK | MB_ICONWARNING); return 1; } hMutex = CreateMutexW(NULL, FALSE, szWindowClass); if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS)) { /* If already started, it is found its window */ HWND hWindow = FindWindowW(szWindowClass, NULL); /* Activate window */ ShowWindow(hWindow, SW_SHOWNORMAL); SetForegroundWindow(hWindow); return 1; } if (!LoadSettings()) { FillDefaultSettings(&SettingsInfo); } InitLogs(); InitCommonControls(); /* Create the window */ WndClass.cbSize = sizeof(WNDCLASSEXW); WndClass.lpszClassName = szWindowClass; WndClass.lpfnWndProc = MainWindowProc; WndClass.hInstance = hInstance; WndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN)); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); WndClass.lpszMenuName = MAKEINTRESOURCEW(IDR_MAINMENU); if (RegisterClassExW(&WndClass) == (ATOM)0) goto Exit; LoadStringW(hInst, IDS_APPTITLE, szWindowName, sizeof(szWindowName) / sizeof(WCHAR)); hMainWnd = CreateWindowExW(WS_EX_WINDOWEDGE, szWindowClass, szWindowName, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, CW_USEDEFAULT, CW_USEDEFAULT, 680, 450, NULL, NULL, hInstance, NULL); if (!hMainWnd) goto Exit; /* Show it */ ShowWindow(hMainWnd, SW_SHOW); UpdateWindow(hMainWnd); /* Message Loop */ while (GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } Exit: if (hMutex) CloseHandle(hMutex); return 0; }
int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int /*nCmdShow*/ = SW_SHOWDEFAULT) { LPCWSTR szCommandLine = GetCommandLineW(); int argc = 0; LPWSTR* argv = CommandLineToArgvW(szCommandLine, &argc); // Read the crash info passed by CrashRpt.dll to CrashSender.exe if(argc!=2) return 1; // No arguments passed // Read crash info CString sFileName = CString(argv[1]); g_CrashInfo.Init(sFileName); // Remove the file containing crash info. Utility::RecycleFile(sFileName, TRUE); if(!g_CrashInfo.m_bSendRecentReports) { // Do the crash info collection work assynchronously g_ErrorReportSender.DoWork(COLLECT_CRASH_INFO); } // Check window mirroring settings CString sRTL = Utility::GetINIString(g_CrashInfo.m_sLangFileName, _T("Settings"), _T("RTLReading")); if(sRTL.CompareNoCase(_T("1"))==0) { SetProcessDefaultLayout(LAYOUT_RTL); } CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); if(!g_CrashInfo.m_bSendRecentReports) { if(dlgErrorReport.Create(NULL) == NULL) { ATLTRACE(_T("Main dialog creation failed!\n")); return 0; } } else { // check if another instance of CrashSender.exe is running ::CreateMutex( NULL, FALSE,_T("Local\\43773530-129a-4298-88f2-20eea3e4a59b")); if (::GetLastError() == ERROR_ALREADY_EXISTS) { // Another CrashSender.exe already tries to resend recent reports; exit. return 0; } if(g_CrashInfo.GetReportCount()==0) return 0; // There are no reports for us to send // Check if it is ok to remind user now if(!g_CrashInfo.IsRemindNowOK()) return 0; if(dlgResend.Create(NULL) == NULL) { ATLTRACE(_T("Resend dialog creation failed!\n")); return 0; } } int nRet = theLoop.Run(); // Wait until the worker thread is exited g_ErrorReportSender.WaitForCompletion(); _Module.RemoveMessageLoop(); return nRet; }