int APIENTRY WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd ) { if (-1 == Init()) { return 0; } CPaintManagerUI::SetInstance(hInstance); TCHAR strCurPath[256]; memset(strCurPath, 0, 256); GetCurrentDirectory(256, strCurPath); char strPath[300]; memset(strPath, 0, 300); TcharToChar(strCurPath, strPath); strcat_s(strPath, "\\UIFile"); CAppConfig::UI_FILE_PATH = strPath; TCHAR tstrPath[300]; CharToTchar(strPath, tstrPath); CPaintManagerUI::SetResourcePath( tstrPath); CDuiString p = CPaintManagerUI::GetResourcePath(); HICON hIcon = ::LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON2)); HRESULT hr = ::CoInitialize(NULL); if (FAILED(hr)) return 0; CLoginWnd* pLoginWnd = new CLoginWnd; if (pLoginWnd == NULL) return 0; pLoginWnd->Create(NULL, _T("Login Window"), UI_WNDSTYLE_DIALOG/*UI_WNDSTYLE_FRAME*/, WS_EX_WINDOWEDGE); ::SendMessage(pLoginWnd->GetHWND(),STM_SETICON,IMAGE_ICON,(LPARAM)(UINT)hIcon); pLoginWnd->CenterWindow(); //pLoginWnd->ShowWindow(); pLoginWnd->ShowModal(); CPaintManagerUI::MessageLoop(); delete pLoginWnd; pLoginWnd = NULL; ::CoUninitialize(); return 0; }
BOOL CClientApp::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(); //MessageBox(0, 0, 0, 0); // 进程锁,防止多个主窗口创建 // m_hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, MAIN_MUTEX_NAME); // if (GetLastError() == ERROR_FILE_NOT_FOUND) // { // m_hMutex = CreateMutex(NULL, TRUE, MAIN_MUTEX_NAME); // } // else // { // HWND hMainWnd = FindWindow(_T("MyEchoLoginWnd"), NULL); // if (hMainWnd == NULL) // hMainWnd = FindWindow(_T("MyEchoMainFrame"), NULL); // if (hMainWnd) // { // ::ShowWindow(hMainWnd, IsIconic(hMainWnd) ? SW_RESTORE : SW_SHOW); // ::SetForegroundWindow(hMainWnd); // } // return FALSE; // } CrashHandler::getInstance()->handleUncaughtException(TRUE); if (!config_init()) return FALSE; Dulib_Init(); TCHAR tzAppPath[MAX_PATH] = { 0 }; ::GetModuleFileName(GetModuleHandle(NULL), tzAppPath, _countof(tzAppPath)); ::PathRemoveFileSpec(tzAppPath); #ifdef _DEBUG ::PathAppend(tzAppPath, _T("\\..\\skin\\config.xml")); m_pWinManager = LoadStyle(tzAppPath); #else //::PathAppend(tzAppPath, _T("skin.skn")); m_pWinManager = LoadStyleZipMemory(g_rsrcData, g_dataLen); #endif if (!m_pWinManager) return FALSE; CLoginWnd pLoginWnd; pLoginWnd.DoModal(); // 试图加载共享 MDI 菜单和快捷键表 //TODO: 添加附加成员变量,并加载对 // 应用程序可能需要的附加菜单类型的调用 HINSTANCE hInst = AfxGetResourceHandle(); m_hMDIAccel = ::LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_ClientTYPE)); return TRUE; }
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow) { m_cefApp = new ClientApp(); if (!(m_cefApp->Init(hInstance) < 0)) return FALSE; CWndShadow::Initialize(hInstance); wstring strFileName = ZYM::CPath::GetAppPath() + _T("ImageOleCtrl.dll"); BOOL bRet = DllRegisterServer(strFileName.c_str()); // 注册COM组件 if (!bRet) { ::MessageBox(NULL, _T("COM组件注册失败,应用程序无法完成初始化操作!"), _T("提示"), MB_OK); return 0; } HRESULT hr = ::OleInitialize(NULL); if (FAILED(hr)) return 0; GdiplusStartup(&g_gdiplusToken, &g_gdiplusStartupInput, NULL); // 初始化GDI+ HMODULE hRichEditDll = ::LoadLibrary(_T("Riched20.dll")); // 加载RichEdit控件DLL CPaintManagerUI::SetInstance(hInstance); CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath() + _T("SkinRes")); HRESULT Hr = ::CoInitialize(NULL); if (FAILED(Hr)) return 0; CLoginWnd* pLoginFrame = new CLoginWnd(); CMainFrame *pWndFrame = new CMainFrame(pLoginFrame->m_manager); pLoginFrame->Create(NULL, _T(""), UI_WNDSTYLE_DIALOG, 0, 0, 0, 0, 0, NULL); pLoginFrame->CenterWindow(); pWndFrame->SetHandler(); int result = pLoginFrame->ShowModal(); if (result == 1) { pWndFrame->Create(NULL, _T(""), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE | WS_EX_ACCEPTFILES); pWndFrame->CenterWindow(); pWndFrame->ShowModal(); } else { //登录失败 } CPaintManagerUI::MessageLoop(); ::CoUninitialize(); if (hRichEditDll != NULL) // 卸载RichEdit控件DLL ::FreeLibrary(hRichEditDll); Gdiplus::GdiplusShutdown(g_gdiplusToken); // 反初始化GDI+ ::OleUninitialize(); m_cefApp->Exit(); m_cefApp = NULL; if (_globalSetting.m_logoutState == 1) { CDuiString path = GetCurrentPathW(); path += L"\\YunKa.exe"; ShellExecute(NULL, L"open", path.GetData(), NULL, NULL, SW_SHOWNOACTIVATE); } return 0; }