| SourceCode/Bond/BondEq/BondEq.rc | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/BondEq.vcxproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/Resource.h | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/View/AxisSettingsDlg.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/View/LoginDlg.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/View/LoginDlg.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/View/SystemLogManagerDlg.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/View/SystemLogManagerDlg.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/View/UserManagerDlg.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| SourceCode/Bond/BondEq/View/UserManagerDlg.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
SourceCode/Bond/BondEq/BondEq.rcBinary files differ
SourceCode/Bond/BondEq/BondEq.vcxproj
@@ -196,7 +196,6 @@ <ClInclude Include="Alarm.h" /> <ClInclude Include="AlarmMonitor.h" /> <ClInclude Include="ApredTreeCtrl.h" /> <ClInclude Include="AxisSettingsDlg.h" /> <ClInclude Include="BaseSetPage.h" /> <ClInclude Include="BlButton.h" /> <ClInclude Include="BondEq.h" /> @@ -245,6 +244,7 @@ <ClInclude Include="ToolUnits.h" /> <ClInclude Include="TopToolbar.h" /> <ClInclude Include="VerticalLine.h" /> <ClInclude Include="View\AxisSettingsDlg.h" /> <ClInclude Include="View\ChangePasswordDlg.h" /> <ClInclude Include="View\LoginDlg.h" /> <ClInclude Include="View\SystemLogManagerDlg.h" /> @@ -256,7 +256,6 @@ <ClCompile Include="Alarm.cpp" /> <ClCompile Include="AlarmMonitor.cpp" /> <ClCompile Include="ApredTreeCtrl.cpp" /> <ClCompile Include="AxisSettingsDlg.cpp" /> <ClCompile Include="BaseSetPage.cpp" /> <ClCompile Include="BlButton.cpp" /> <ClCompile Include="BondEq.cpp" /> @@ -307,6 +306,7 @@ <ClCompile Include="ToolUnits.cpp" /> <ClCompile Include="TopToolbar.cpp" /> <ClCompile Include="VerticalLine.cpp" /> <ClCompile Include="View\AxisSettingsDlg.cpp" /> <ClCompile Include="View\ChangePasswordDlg.cpp" /> <ClCompile Include="View\LoginDlg.cpp" /> <ClCompile Include="View\SystemLogManagerDlg.cpp" /> SourceCode/Bond/BondEq/Resource.hBinary files differ
SourceCode/Bond/BondEq/View/AxisSettingsDlg.cpp
ÎļþÃû´Ó SourceCode/Bond/BondEq/AxisSettingsDlg.cpp ÐÞ¸Ä @@ -34,25 +34,27 @@ CDialogEx::DoDataExchange(pDX); } CFont* CAxisSettingsDlg::GetOrCreateFont(int nFontSize) { auto it = m_mapFonts.find(nFontSize); if (it != m_mapFonts.end()) { return it->second; } CFont* font = new CFont(); LOGFONT logFont = { 0 }; _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); logFont.lfHeight = -nFontSize; logFont.lfQuality = CLEARTYPE_QUALITY; font->CreateFontIndirect(&logFont); m_mapFonts[nFontSize] = font; return font; } void CAxisSettingsDlg::SetDefaultFont() { CFont* defaultFont = nullptr; // 妿åä½ç®¡ç容å¨ä¸æé»è®¤å¤§å°ï¼å¦ 12ï¼çåä½ï¼ç´æ¥ä½¿ç¨ auto it = m_mapFonts.find(12); if (it != m_mapFonts.end()) { defaultFont = it->second; } else { // å建é»è®¤åä½ defaultFont = new CFont(); LOGFONT logFont = { 0 }; _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); logFont.lfHeight = -12; logFont.lfQuality = CLEARTYPE_QUALITY; defaultFont->CreateFontIndirect(&logFont); m_mapFonts[12] = defaultFont; // åå¨å°åä½ç®¡çå®¹å¨ } CFont* defaultFont = GetOrCreateFont(12); // éåæææ§ä»¶ï¼åºç¨é»è®¤åä½ CWnd* pWnd = GetWindow(GW_CHILD); @@ -62,34 +64,31 @@ } } void CAxisSettingsDlg::AdjustControls(int nWidth, int nHeight) void CAxisSettingsDlg::AdjustControls(float dScaleX, float dScaleY) { CWnd* pWnd = GetWindow(GW_CHILD); while (pWnd) { UINT nCtrlID = pWnd->GetDlgCtrlID(); int nCtrlID = pWnd->GetDlgCtrlID(); if (nCtrlID != -1 && m_mapCtrlLayouts.find(nCtrlID) != m_mapCtrlLayouts.end()) { CRect originalRect = m_mapCtrlLayouts[nCtrlID]; CRect newRect( static_cast<int>(originalRect.left * dScaleX), static_cast<int>(originalRect.top * dScaleY), static_cast<int>(originalRect.right * dScaleX), static_cast<int>(originalRect.bottom * dScaleY)); CRect ctrlRect; pWnd->GetWindowRect(&ctrlRect); ScreenToClient(&ctrlRect); TCHAR szClassName[256]; GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); // è®¡ç®æ§ä»¶çæ°ä½ç½®å大å°ï¼ææ¯ä¾è°æ´ int newX = (int)(ctrlRect.left * (nWidth / (float)m_nInitialWidth)); int newY = (int)(ctrlRect.top * (nHeight / (float)m_nInitialHeight)); int newWidth = (int)(ctrlRect.Width() * (nWidth / (float)m_nInitialWidth)); int newHeight = (int)(ctrlRect.Height() * (nHeight / (float)m_nInitialHeight)); if (_tcsicmp(szClassName, _T("ComboBox")) == 0) { CComboBox* pComboBox = (CComboBox*)pWnd; pComboBox->SetItemHeight(-1, newRect.Height()); // -1 表示ææé¡¹çé«åº¦ } TCHAR szClassName[256]; GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); if (_tcsicmp(szClassName, _T("ComboBox")) == 0) { CComboBox* pComboBox = (CComboBox*)pWnd; pComboBox->SetItemHeight(-1, nHeight); // -1 表示ææé¡¹çé«åº¦ pWnd->MoveWindow(&newRect); AdjustControlFont(pWnd, newRect.Width(), newRect.Height()); } pWnd->MoveWindow(newX, newY, newWidth, newHeight); AdjustControlFont(pWnd, newWidth, newHeight); // è·åä¸ä¸ä¸ªæ§ä»¶ pWnd = pWnd->GetNextWindow(); } } @@ -100,23 +99,10 @@ int fontSize = nHeight / 2; if (fontSize < 8) fontSize = 8; // æ£æ¥å使¯å¦å·²ç»åå¨ auto it = m_mapFonts.find(fontSize); if (it == m_mapFonts.end()) { // 卿å建æ°åä½ CFont* newFont = new CFont(); LOGFONT logFont = { 0 }; _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); logFont.lfHeight = -fontSize; logFont.lfQuality = CLEARTYPE_QUALITY; // å¯ç¨ ClearType æé¯é½¿ newFont->CreateFontIndirect(&logFont); // è·åæå建åä½ CFont* pFont = GetOrCreateFont(fontSize); // åå¨å°åä½ç®¡ç容å¨ä¸ m_mapFonts[fontSize] = newFont; it = m_mapFonts.find(fontSize); } pWnd->SetFont(it->second); pWnd->SetFont(pFont); pWnd->Invalidate(); // å·æ°æ§ä»¶æ¾ç¤º } @@ -152,16 +138,31 @@ CDialogEx::OnInitDialog(); // TODO: 卿¤æ·»å é¢å¤çåå§å //ModifyStyle(0, WS_THICKFRAME | WS_SIZEBOX); // 设置é»è®¤åä½ SetDefaultFont(); CRect screenRect, dlgRect, clientRect; GetClientRect(&clientRect); m_nInitialWidth = clientRect.Width(); m_nInitialHeight = clientRect.Height(); // åå§åé»è®¤åä½ CFont* pDefaultFont = GetOrCreateFont(12); // éåææåæ§ä»¶ï¼è®°å½åå§ä½ç½®å¹¶è®¾ç½®é»è®¤åä½ CWnd* pWnd = GetWindow(GW_CHILD); while (pWnd) { int nCtrlID = pWnd->GetDlgCtrlID(); if (nCtrlID != -1) { // è®°å½æ§ä»¶åå§å¸å± CRect ctrlRect; pWnd->GetWindowRect(&ctrlRect); ScreenToClient(&ctrlRect); m_mapCtrlLayouts[nCtrlID] = ctrlRect; // 设置é»è®¤åä½ pWnd->SetFont(pDefaultFont); } pWnd = pWnd->GetNextWindow(); } GetWindowRect(&dlgRect); int dlgWidth = dlgRect.Width() * 2; int dlgHeight = dlgRect.Height() * 2; SourceCode/Bond/BondEq/View/AxisSettingsDlg.h
ÎļþÃû´Ó SourceCode/Bond/BondEq/AxisSettingsDlg.h ÐÞ¸Ä @@ -18,14 +18,16 @@ #endif private: CFont* GetOrCreateFont(int nFontSize); void SetDefaultFont(); void AdjustControls(int nWidth, int nHeight); void AdjustControls(float dScaleX, float dScaleY); void AdjustControlFont(CWnd* pWnd, int nWidth, int nHeight); private: int m_nInitialWidth; int m_nInitialHeight; std::map<int, CFont*> m_mapFonts; // 管çåä½ç容å¨ï¼é®ä¸ºåä½å¤§å° std::map<int, CRect> m_mapCtrlLayouts; std::map<int, CFont*> m_mapFonts; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ SourceCode/Bond/BondEq/View/LoginDlg.cpp
@@ -23,11 +23,11 @@ void CLoginDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT_USERNAME, m_editUsername); DDX_Control(pDX, IDC_EDIT_PASSWORD, m_editPassword); DDX_Control(pDX, IDC_COMBO_ROLE, m_comboRole); DDX_Control(pDX, IDC_CHECK_REMEMBER_PASSWORD, m_checkRememberPassword); CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_IMAGE, m_staticImage); DDX_Control(pDX, IDC_EDIT_USERNAME, m_editUsername); DDX_Control(pDX, IDC_EDIT_PASSWORD, m_editPassword); DDX_Control(pDX, IDC_CHECK_REMEMBER_PASSWORD, m_checkRememberPassword); } @@ -46,10 +46,24 @@ // 设置çªå£æ é¢ååå§å¼ SetWindowText(_T("ç»å½")); m_comboRole.AddString(_T("管çå")); m_comboRole.AddString(_T("å·¥ç¨å¸")); m_comboRole.AddString(_T("æä½å")); m_comboRole.SetCurSel(0); CString strIconPath; strIconPath.Format(_T("%s\\Res\\Operator_High_32.ico"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir); // å è½½å¾æ HICON hIcon = (HICON)::LoadImage( nullptr, strIconPath, IMAGE_ICON, 32, // 徿 宽度 32, // 徿 é«åº¦ LR_LOADFROMFILE); if (hIcon) { // 设置 CStatic æ§ä»¶ä¸ºå¾æ æ ·å¼ m_staticImage.ModifyStyle(0xF, SS_ICON); m_staticImage.SetIcon(hIcon); } // æ·»å SS_NOTIFYæ ·å¼ CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_CHANGE_PASSWORD); @@ -59,11 +73,6 @@ UserManager& userManager = UserManager::getInstance(); if (userManager.isLoggedIn()) { int nRole = (int)userManager.getCurrentUserRole(); if (nRole <= m_comboRole.GetCount()) { m_comboRole.SetCurSel(nRole); } if (userManager.isRememberMe()) { m_checkRememberPassword.SetCheck(BST_CHECKED); } @@ -81,7 +90,6 @@ CString username, password, role; m_editUsername.GetWindowText(username); m_editPassword.GetWindowText(password); m_comboRole.GetLBText(m_comboRole.GetCurSel(), role); if (username.IsEmpty() || password.IsEmpty()) { AfxMessageBox(_T("请è¾å ¥ç¨æ·ååå¯ç ã")); SourceCode/Bond/BondEq/View/LoginDlg.h
@@ -17,16 +17,16 @@ enum { IDD = IDD_DIALOG_LOGIN }; #endif private: CStatic m_staticImage; CEdit m_editUsername; CEdit m_editPassword; CButton m_checkRememberPassword; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ virtual BOOL OnInitDialog(); afx_msg void OnBnClickedLogin(); afx_msg void OnBnClickedChangePassword(); DECLARE_MESSAGE_MAP() private: CEdit m_editUsername; CEdit m_editPassword; CComboBox m_comboRole; CButton m_checkRememberPassword; }; SourceCode/Bond/BondEq/View/SystemLogManagerDlg.cpp
@@ -14,7 +14,8 @@ CSystemLogManagerDlg::CSystemLogManagerDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DIALOG_SYSTEM_LOG_MANAGER, pParent) { m_nInitialWidth = 0; m_nInitialHeight = 0; } CSystemLogManagerDlg::~CSystemLogManagerDlg() @@ -70,11 +71,11 @@ m_listLogs.SetItemText(nRowIdx, nColIdx++, _T("No.")); m_listLogs.SetColumnWidth(nColIdx, 10); m_listLogs.SetItemText(nRowIdx, nColIdx++, _T("ç±»å")); m_listLogs.SetColumnWidth(nColIdx, 200); m_listLogs.SetColumnWidth(nColIdx, 100); m_listLogs.SetItemText(nRowIdx, nColIdx++, _T("äºä»¶")); m_listLogs.SetColumnWidth(nColIdx, 30); m_listLogs.SetItemText(nRowIdx, nColIdx++, _T("ç¨æ·")); m_listLogs.SetColumnWidth(nColIdx, 70); m_listLogs.SetColumnWidth(nColIdx, 50); m_listLogs.SetItemText(nRowIdx, nColIdx++, _T("æ¶é´")); // å建 20 è¡ç©ºç½æ°æ®è¡ @@ -152,11 +153,30 @@ } } m_listLogs.Invalidate(); m_listLogs.UpdateWindow(); m_listLogs.ExpandColumnsToFit(FALSE); m_listLogs.ExpandLastColumn(); m_listLogs.Invalidate(); m_listLogs.UpdateWindow(); UpdatePageInfo(); } CFont* CSystemLogManagerDlg::GetOrCreateFont(int nFontSize) { auto it = m_mapFonts.find(nFontSize); if (it != m_mapFonts.end()) { return it->second; } CFont* font = new CFont(); LOGFONT logFont = { 0 }; _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); logFont.lfHeight = -nFontSize; logFont.lfQuality = CLEARTYPE_QUALITY; font->CreateFontIndirect(&logFont); m_mapFonts[nFontSize] = font; return font; } void CSystemLogManagerDlg::UpdatePageInfo() @@ -169,23 +189,7 @@ void CSystemLogManagerDlg::SetDefaultFont() { CFont* defaultFont = nullptr; // 妿åä½ç®¡ç容å¨ä¸æé»è®¤å¤§å°ï¼å¦ 12ï¼çåä½ï¼ç´æ¥ä½¿ç¨ auto it = m_mapFonts.find(12); if (it != m_mapFonts.end()) { defaultFont = it->second; } else { // å建é»è®¤åä½ defaultFont = new CFont(); LOGFONT logFont = { 0 }; _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); logFont.lfHeight = -12; logFont.lfQuality = CLEARTYPE_QUALITY; defaultFont->CreateFontIndirect(&logFont); m_mapFonts[12] = defaultFont; // åå¨å°åä½ç®¡çå®¹å¨ } CFont* defaultFont = GetOrCreateFont(12); // éåæææ§ä»¶ï¼åºç¨é»è®¤åä½ CWnd* pWnd = GetWindow(GW_CHILD); @@ -203,41 +207,40 @@ } } void CSystemLogManagerDlg::AdjustControls(int nWidth, int nHeight) void CSystemLogManagerDlg::AdjustControls(float dScaleX, float dScaleY) { CWnd* pWnd = GetWindow(GW_CHILD); while (pWnd) { UINT nCtrlID = pWnd->GetDlgCtrlID(); int nCtrlID = pWnd->GetDlgCtrlID(); if (nCtrlID != -1 && m_mapCtrlLayouts.find(nCtrlID) != m_mapCtrlLayouts.end()) { CRect originalRect = m_mapCtrlLayouts[nCtrlID]; CRect newRect( static_cast<int>(originalRect.left * dScaleX), static_cast<int>(originalRect.top * dScaleY), static_cast<int>(originalRect.right * dScaleX), static_cast<int>(originalRect.bottom * dScaleY)); CRect ctrlRect; pWnd->GetWindowRect(&ctrlRect); ScreenToClient(&ctrlRect); TCHAR szClassName[256]; GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); // è®¡ç®æ§ä»¶çæ°ä½ç½®å大å°ï¼ææ¯ä¾è°æ´ int newX = (int)(ctrlRect.left * (nWidth / (float)m_nInitialWidth)); int newY = (int)(ctrlRect.top * (nHeight / (float)m_nInitialHeight)); int newWidth = (int)(ctrlRect.Width() * (nWidth / (float)m_nInitialWidth)); int newHeight = (int)(ctrlRect.Height() * (nHeight / (float)m_nInitialHeight)); if (_tcsicmp(szClassName, _T("ComboBox")) == 0) { CComboBox* pComboBox = (CComboBox*)pWnd; pComboBox->SetItemHeight(-1, newRect.Height()); // -1 表示ææé¡¹çé«åº¦ } TCHAR szClassName[256]; GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); if (_tcsicmp(szClassName, _T("MFCGridCtrl")) == 0) { CGridCtrl* pGridCtrl = (CGridCtrl*)pWnd; pGridCtrl->SetDefCellHeight(newRect.Height() / 21); pGridCtrl->ExpandColumnsToFit(TRUE); pGridCtrl->ExpandLastColumn(); pGridCtrl->Invalidate(); pGridCtrl->UpdateWindow(); } if (_tcsicmp(szClassName, _T("ComboBox")) == 0) { CComboBox* pComboBox = (CComboBox*)pWnd; pComboBox->SetItemHeight(-1, nHeight); // -1 表示ææé¡¹çé«åº¦ pWnd->MoveWindow(&newRect); AdjustControlFont(pWnd, newRect.Width(), newRect.Height()); } if (_tcsicmp(szClassName, _T("MFCGridCtrl")) == 0) { CGridCtrl* pGridCtrl = (CGridCtrl*)pWnd; pGridCtrl->SetDefCellHeight(newHeight / 21); pGridCtrl->ExpandColumnsToFit(TRUE); pGridCtrl->Invalidate(); } pWnd->MoveWindow(newX, newY, newWidth, newHeight); AdjustControlFont(pWnd, newWidth, newHeight); // è·åä¸ä¸ä¸ªæ§ä»¶ pWnd = pWnd->GetNextWindow(); } } @@ -256,23 +259,10 @@ int fontSize = nHeight / 2; if (fontSize < 8) fontSize = 8; // æ£æ¥å使¯å¦å·²ç»åå¨ auto it = m_mapFonts.find(fontSize); if (it == m_mapFonts.end()) { // 卿å建æ°åä½ CFont* newFont = new CFont(); LOGFONT logFont = { 0 }; _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); logFont.lfHeight = -fontSize; logFont.lfQuality = CLEARTYPE_QUALITY; // å¯ç¨ ClearType æé¯é½¿ newFont->CreateFontIndirect(&logFont); // è·åæå建åä½ CFont* pFont = GetOrCreateFont(fontSize); // åå¨å°åä½ç®¡ç容å¨ä¸ m_mapFonts[fontSize] = newFont; it = m_mapFonts.find(fontSize); } pWnd->SetFont(it->second); pWnd->SetFont(pFont); pWnd->Invalidate(); // å·æ°æ§ä»¶æ¾ç¤º } @@ -302,6 +292,7 @@ ON_CBN_SELCHANGE(IDC_COMBO_TYPE, &CSystemLogManagerDlg::OnSelchangeComboType) ON_CBN_SELCHANGE(IDC_COMBO_USER, &CSystemLogManagerDlg::OnSelchangeComboUser) ON_WM_SIZE() ON_WM_GETMINMAXINFO() END_MESSAGE_MAP() @@ -314,9 +305,6 @@ // TODO: 卿¤æ·»å é¢å¤çåå§å SetWindowText(_T("ç³»ç»è¿è¡æ¥å¿")); // 设置é»è®¤åä½ SetDefaultFont(); m_nCurrentPage = 1; // ä»ç¬¬ä¸é¡µå¼å§ m_nTotalPages = 1; // é»è®¤æ»é¡µæ°ä¸º 1 @@ -347,6 +335,34 @@ m_nInitialWidth = clientRect.Width(); m_nInitialHeight = clientRect.Height(); // åå§åé»è®¤åä½ CFont* pDefaultFont = GetOrCreateFont(12); // éåææåæ§ä»¶ï¼è®°å½åå§ä½ç½®å¹¶è®¾ç½®é»è®¤åä½ CWnd* pWnd = GetWindow(GW_CHILD); while (pWnd) { int nCtrlID = pWnd->GetDlgCtrlID(); if (nCtrlID != -1) { // è®°å½æ§ä»¶åå§å¸å± CRect ctrlRect; pWnd->GetWindowRect(&ctrlRect); ScreenToClient(&ctrlRect); m_mapCtrlLayouts[nCtrlID] = ctrlRect; // è·³è¿ç¹æ®æ§ä»¶ï¼å¦ MFCGridCtrlï¼ TCHAR szClassName[256]; GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); if (_tcsicmp(szClassName, _T("MFCGridCtrl")) == 0) { pWnd = pWnd->GetNextWindow(); continue; } // 设置é»è®¤åä½ pWnd->SetFont(pDefaultFont); } pWnd = pWnd->GetNextWindow(); } GetWindowRect(&dlgRect); int dlgWidth = dlgRect.Width() * 2; int dlgHeight = dlgRect.Height() * 2; @@ -375,11 +391,25 @@ CDialogEx::OnSize(nType, cx, cy); // TODO: 卿¤å¤æ·»å æ¶æ¯å¤çç¨åºä»£ç CRect rect; GetClientRect(&rect); if (nType == SIZE_MINIMIZED || m_mapCtrlLayouts.empty()) { return; } float dScaleX = static_cast<float>(cx) / m_nInitialWidth; float dScaleY = static_cast<float>(cy) / m_nInitialHeight; // éåå¯¹è¯æ¡ä¸çæææ§ä»¶ AdjustControls(rect.Width(), rect.Height()); AdjustControls(dScaleX, dScaleY); } void CSystemLogManagerDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { // TODO: 卿¤æ·»å æ¶æ¯å¤çç¨åºä»£ç å/æè°ç¨é»è®¤å¼ lpMMI->ptMinTrackSize.x = 400; // æå°å®½åº¦ lpMMI->ptMinTrackSize.y = 300; // æå°é«åº¦ CDialogEx::OnGetMinMaxInfo(lpMMI); } SourceCode/Bond/BondEq/View/SystemLogManagerDlg.h
@@ -20,9 +20,10 @@ private: void InitSystemLogManager(); void FillSystemLogManager(); CFont* GetOrCreateFont(int nFontSize); void UpdatePageInfo(); void SetDefaultFont(); void AdjustControls(int nWidth, int nHeight); void AdjustControls(float dScaleX, float dScaleY); void AdjustControlFont(CWnd* pWnd, int nWidth, int nHeight); void AdjustComboBoxStyle(CComboBox& comboBox); void AdjustDateTimeCtrlStyle(CDateTimeCtrl& dateTimeCtrl); @@ -32,7 +33,8 @@ int m_nInitialHeight; // åå§é«åº¦ int m_nCurrentPage; // å½å页ç int m_nTotalPages; // æ»é¡µæ° std::map<int, CFont*> m_mapFonts; // 管çåä½ç容å¨ï¼é®ä¸ºåä½å¤§å° std::map<int, CRect> m_mapCtrlLayouts; // å卿§ä»¶çåå§å¸å±ä¿¡æ¯ std::map<int, CFont*> m_mapFonts; // 管çåä½ç容å¨ï¼é®ä¸ºåä½å¤§å° private: CComboBox m_comboType; @@ -50,6 +52,7 @@ public: virtual BOOL OnInitDialog(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI); afx_msg void OnBnClickedButtonSearch(); afx_msg void OnBnClickedButtonPrevPage(); afx_msg void OnBnClickedButtonNextPage(); SourceCode/Bond/BondEq/View/UserManagerDlg.cpp
@@ -20,7 +20,8 @@ CUserManagerDlg::CUserManagerDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DIALOG_USER_MANAGER, pParent) { m_nInitialWidth = 0; m_nInitialHeight = 0; } CUserManagerDlg::~CUserManagerDlg() @@ -349,25 +350,27 @@ return false; } CFont* CUserManagerDlg::GetOrCreateFont(int nFontSize) { auto it = m_mapFonts.find(nFontSize); if (it != m_mapFonts.end()) { return it->second; } CFont* font = new CFont(); LOGFONT logFont = { 0 }; _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); logFont.lfHeight = -nFontSize; logFont.lfQuality = CLEARTYPE_QUALITY; font->CreateFontIndirect(&logFont); m_mapFonts[nFontSize] = font; return font; } void CUserManagerDlg::SetDefaultFont() { CFont* defaultFont = nullptr; // 妿åä½ç®¡ç容å¨ä¸æé»è®¤å¤§å°ï¼å¦ 12ï¼çåä½ï¼ç´æ¥ä½¿ç¨ auto it = m_mapFonts.find(12); if (it != m_mapFonts.end()) { defaultFont = it->second; } else { // å建é»è®¤åä½ defaultFont = new CFont(); LOGFONT logFont = { 0 }; _tcscpy_s(logFont.lfFaceName, _T("Segoe UI")); logFont.lfHeight = -12; logFont.lfQuality = CLEARTYPE_QUALITY; defaultFont->CreateFontIndirect(&logFont); m_mapFonts[12] = defaultFont; // åå¨å°åä½ç®¡çå®¹å¨ } CFont* defaultFont = GetOrCreateFont(12); // éåæææ§ä»¶ï¼åºç¨é»è®¤åä½ CWnd* pWnd = GetWindow(GW_CHILD); @@ -385,41 +388,40 @@ } } void CUserManagerDlg::AdjustControls(int nWidth, int nHeight) void CUserManagerDlg::AdjustControls(float dScaleX, float dScaleY) { CWnd* pWnd = GetWindow(GW_CHILD); while (pWnd) { UINT nCtrlID = pWnd->GetDlgCtrlID(); int nCtrlID = pWnd->GetDlgCtrlID(); if (nCtrlID != -1 && m_mapCtrlLayouts.find(nCtrlID) != m_mapCtrlLayouts.end()) { CRect originalRect = m_mapCtrlLayouts[nCtrlID]; CRect newRect( static_cast<int>(originalRect.left * dScaleX), static_cast<int>(originalRect.top * dScaleY), static_cast<int>(originalRect.right * dScaleX), static_cast<int>(originalRect.bottom * dScaleY)); CRect ctrlRect; pWnd->GetWindowRect(&ctrlRect); ScreenToClient(&ctrlRect); TCHAR szClassName[256]; GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); // è®¡ç®æ§ä»¶çæ°ä½ç½®å大å°ï¼ææ¯ä¾è°æ´ int newX = (int)(ctrlRect.left * (nWidth / (float)m_nInitialWidth)); int newY = (int)(ctrlRect.top * (nHeight / (float)m_nInitialHeight)); int newWidth = (int)(ctrlRect.Width() * (nWidth / (float)m_nInitialWidth)); int newHeight = (int)(ctrlRect.Height() * (nHeight / (float)m_nInitialHeight)); if (_tcsicmp(szClassName, _T("ComboBox")) == 0) { CComboBox* pComboBox = (CComboBox*)pWnd; pComboBox->SetItemHeight(-1, newRect.Height()); // -1 表示ææé¡¹çé«åº¦ } TCHAR szClassName[256]; GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); if (_tcsicmp(szClassName, _T("MFCGridCtrl")) == 0) { CGridCtrl* pGridCtrl = (CGridCtrl*)pWnd; pGridCtrl->SetDefCellHeight(newRect.Height() / 21); pGridCtrl->ExpandColumnsToFit(TRUE); pGridCtrl->ExpandLastColumn(); pGridCtrl->Invalidate(); pGridCtrl->UpdateWindow(); } if (_tcsicmp(szClassName, _T("ComboBox")) == 0) { CComboBox* pComboBox = (CComboBox*)pWnd; pComboBox->SetItemHeight(-1, nHeight); // -1 表示ææé¡¹çé«åº¦ pWnd->MoveWindow(&newRect); AdjustControlFont(pWnd, newRect.Width(), newRect.Height()); } if (_tcsicmp(szClassName, _T("MFCGridCtrl")) == 0) { CGridCtrl* pGridCtrl = (CGridCtrl*)pWnd; pGridCtrl->SetDefCellHeight(newHeight / 21); pGridCtrl->ExpandColumnsToFit(TRUE); pGridCtrl->Invalidate(); } pWnd->MoveWindow(newX, newY, newWidth, newHeight); AdjustControlFont(pWnd, newWidth, newHeight); // è·åä¸ä¸ä¸ªæ§ä»¶ pWnd = pWnd->GetNextWindow(); } } @@ -465,6 +467,7 @@ ON_BN_CLICKED(IDC_BUTTON_DEL, &CUserManagerDlg::OnBnClickedButtonDel) ON_BN_CLICKED(IDOK, &CUserManagerDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_BUTTON_INSERT, &CUserManagerDlg::OnBnClickedButtonInsert) ON_WM_GETMINMAXINFO() END_MESSAGE_MAP() @@ -480,12 +483,37 @@ SetWindowText(_T("ç¨æ·ç®¡ç")); SystemParametersInfo(SPI_GETWORKAREA, 0, &screenRect, 0); // 设置é»è®¤åä½ SetDefaultFont(); GetClientRect(&clientRect); m_nInitialWidth = clientRect.Width(); m_nInitialHeight = clientRect.Height(); // åå§åé»è®¤åä½ CFont* pDefaultFont = GetOrCreateFont(12); // éåææåæ§ä»¶ï¼è®°å½åå§ä½ç½®å¹¶è®¾ç½®é»è®¤åä½ CWnd* pWnd = GetWindow(GW_CHILD); while (pWnd) { int nCtrlID = pWnd->GetDlgCtrlID(); if (nCtrlID != -1) { // è®°å½æ§ä»¶åå§å¸å± CRect ctrlRect; pWnd->GetWindowRect(&ctrlRect); ScreenToClient(&ctrlRect); m_mapCtrlLayouts[nCtrlID] = ctrlRect; // è·³è¿ç¹æ®æ§ä»¶ï¼å¦ MFCGridCtrlï¼ TCHAR szClassName[256]; GetClassName(pWnd->m_hWnd, szClassName, sizeof(szClassName)); if (_tcsicmp(szClassName, _T("MFCGridCtrl")) == 0) { pWnd = pWnd->GetNextWindow(); continue; } // 设置é»è®¤åä½ pWnd->SetFont(pDefaultFont); } pWnd = pWnd->GetNextWindow(); } GetWindowRect(&dlgRect); int dlgWidth = dlgRect.Width() * 3; @@ -509,17 +537,33 @@ // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE } void CUserManagerDlg::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); // TODO: 卿¤å¤æ·»å æ¶æ¯å¤çç¨åºä»£ç CRect rect; GetClientRect(&rect); if (nType == SIZE_MINIMIZED || m_mapCtrlLayouts.empty()) { return; } float dScaleX = static_cast<float>(cx) / m_nInitialWidth; float dScaleY = static_cast<float>(cy) / m_nInitialHeight; // éåå¯¹è¯æ¡ä¸çæææ§ä»¶ AdjustControls(rect.Width(), rect.Height()); AdjustControls(dScaleX, dScaleY); } void CUserManagerDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { // TODO: 卿¤æ·»å æ¶æ¯å¤çç¨åºä»£ç å/æè°ç¨é»è®¤å¼ lpMMI->ptMinTrackSize.x = 400; // æå°å®½åº¦ lpMMI->ptMinTrackSize.y = 300; // æå°é«åº¦ CDialogEx::OnGetMinMaxInfo(lpMMI); } void CUserManagerDlg::OnGridComboSelChange(NMHDR* pNMHDR, LRESULT* pResult) { @@ -550,11 +594,13 @@ *pResult = 0; } void CUserManagerDlg::OnBnClickedButtonAdd() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç AddRow(&m_gridUserManager); } void CUserManagerDlg::OnBnClickedButtonInsert() { @@ -619,12 +665,14 @@ m_gridUserManager.UpdateWindow(); } void CUserManagerDlg::OnBnClickedButtonDel() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç DeleteSelectedRow(&m_gridUserManager); } void CUserManagerDlg::OnBnClickedOk() { // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç SourceCode/Bond/BondEq/View/UserManagerDlg.h
@@ -23,13 +23,15 @@ void AddRow(CGridCtrl* pGridCtrl); void DeleteSelectedRow(CGridCtrl* pGridCtrl); bool IsUsernameDuplicate(const CString& username); CFont* GetOrCreateFont(int nFontSize); void SetDefaultFont(); void AdjustControls(int nWidth, int nHeight); void AdjustControls(float dScaleX, float dScaleY); void AdjustControlFont(CWnd* pWnd, int nWidth, int nHeight); private: int m_nInitialWidth; int m_nInitialHeight; std::map<int, CRect> m_mapCtrlLayouts; std::map<int, CFont*> m_mapFonts; std::map<CString, CString> m_mapRoleDescriptions; @@ -43,6 +45,7 @@ public: virtual BOOL OnInitDialog(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI); afx_msg void OnGridComboSelChange(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnBnClickedButtonAdd(); afx_msg void OnBnClickedButtonInsert();