#include "CFrameWnd.h" #pragma region 初始化 void CFrameWnd::InitHomeControls() { } LRESULT CFrameWnd::HomeMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { LRESULT lRes = 0; BOOL bHandled1 = TRUE; if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes)) return lRes; return CWindowWnd::HandleMessage(uMsg, wParam, lParam); } #pragma endregion /// /// 主页控件绑定事件 /// void CFrameWnd::NotifyHome(TNotifyUI& msg) { CDuiString control = msg.pSender->GetName(); if (msg.sType == _T("click")) { //打开路径选择 if (control == UI_BtnTextSelectFolder || control == UI_BtnIconSelectFolder) { SetSelectedFolder(); } if (control == UI_BtnTermsService) { GoToLink(TermsOfServiceLink); } if (control == UI_BtnPrivacyPolicy) { GoToLink(PrivacyPolicyLink); } //点击安装按钮 if (control == UI_BtnInstall) { Install_Click(); } //显示隐藏自定义安装路径区域 if (control == UI_CheckInstallSetting || control == UI_Lbicon) { { if (control == UI_Lbicon) { m_InstallationPage->CheckInstallSetting->SetCheck(!m_InstallationPage->CheckInstallSetting->IsSelected()); } CustomInstallWndSize(m_InstallationPage->CheckInstallSetting->IsSelected()); } } } } /// /// 用户隐私协议等链接 /// void CFrameWnd::GoToLink(std::wstring linkStr) { const TCHAR szOperation[] = _T("open"); HINSTANCE hRslt = ShellExecute(NULL, szOperation,linkStr.c_str(), NULL, NULL, SW_SHOWNORMAL); assert(hRslt > (HINSTANCE)HINSTANCE_ERROR); } //点击安装按钮 void CFrameWnd::Install_Click() { //收起自定义安装的布局 if (ischeckCustom) CustomInstallWndSize(!ischeckCustom); BOOL m_bOnline = NetWorkState::IsNetWorking(); if (m_bOnline) { //磁盘是否有足够的空间 if (DiskCore::IsEnoughDisk(PathCore::smPath_Install) == false) { MessageBoxWnd::Show(m_hWnd, MessageContentType::DiskNoSpace); return; } //获取本机版本号和网络版本号进行判断,返回是否需要安装产品,true为要安装 m_isCanInstall = GetVersionState(); if (m_isCanInstall) { SelectLayout(LayoutType::Installing); //进度条左下角的文案,包括安装中和断网的提示文案 m_InstallingPage->installNotWork->SetText(CLanguage::GetDuiText(TextType::Text_Installing)); m_InstallingPage->NetWorkUI(m_bOnline); KillAllTimer(); StartTimer(Timer_Banner_ID); StartTimer(Timer_Installing_ID); thread installingThread(Thread_Installing, m_threadData); installingThread.detach(); } } else { WaitForNetwork(); m_InstallingPage->NetWorkUI(m_bOnline); SelectLayout(LayoutType::Installing); } } /// /// 选择安装路径 /// void CFrameWnd::SetSelectedFolder() { wstring sFolder = FolderCore::FolderBrowser(m_hWnd); if (sFolder.empty() != true && sFolder != L"") { if (FolderCore::IsRootDirectoryW(sFolder) == true) { sFolder = FolderCore::AddSubFolderFromRootDirW(sFolder, Product::smName_Product); } m_InstalledPage->RefreshInstalledPath(sFolder); PathCore::smPath_Install = sFolder; m_InstallationPage->EdFilepath->SetText(sFolder.c_str()); } } void CFrameWnd::Thread_GetVerstion(ThreadData threadData) { threadData.pFrame->m_isCanInstall = threadData.pFrame->GetVersionState(); } bool CFrameWnd::GetVersionState() { ComparVersion comparVersion; VertionResultType state = comparVersion.GetProductInfo(Product::smName_Product, Product::URI_AppXml); m_State.m_NetFrameworkType = comparVersion.NetFramework; m_State.m_VcPlusPlusType = comparVersion.VcPlusPlus; int stateBtn; bool result = false; switch (state) { case VertionResultType::None: result = true; break; case VertionResultType::Low: stateBtn = MessageBoxWnd::Show(m_hWnd, MessageContentType::LowVersion); result = (stateBtn == IDOK ? true : false); break; case VertionResultType::Same: MessageBoxWnd::Show(m_hWnd, MessageContentType::SameVersion); result = false; break; case VertionResultType::Hight: MessageBoxWnd::Show(m_hWnd, MessageContentType::HighVertion); result = false; break; default: break; } return result; }