|
@@ -37,7 +37,7 @@ extern CMainFrame* g_pMainFrame;
|
|
|
|
|
|
CUpgradeWnd::CUpgradeWnd() noexcept
|
|
|
{
|
|
|
- m_nComboHeight = 0;
|
|
|
+ m_nCtrlHeight = 0;
|
|
|
}
|
|
|
|
|
|
CUpgradeWnd::~CUpgradeWnd()
|
|
@@ -62,6 +62,7 @@ BEGIN_MESSAGE_MAP(CUpgradeWnd, CDockablePane)
|
|
|
ON_WM_PAINT()
|
|
|
|
|
|
ON_WM_CONTEXTMENU()
|
|
|
+ ON_WM_CTLCOLOR()
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
@@ -73,6 +74,51 @@ void CUpgradeWnd::AdjustLayout()
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ const int margin = 6;
|
|
|
+ const int top = 10; // 离顶部距离;
|
|
|
+ const int dr = 3; // 行间距
|
|
|
+ const int dc = 5; // 列间距;
|
|
|
+ int nHeight = top;
|
|
|
+ CRect rcCtrl;
|
|
|
+ CRect rectClient;
|
|
|
+ GetClientRect(rectClient);
|
|
|
+
|
|
|
+ // 1、编辑框;
|
|
|
+ m_text_path.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ m_text_path.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + top, rcCtrl.Width(), rcCtrl.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+
|
|
|
+ m_edit_path.SetWindowPos(nullptr, rcCtrl.right + dr, rectClient.top + top, rectClient.Width() - rcCtrl.Width() - margin*2 - dr, m_nCtrlHeight, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+ nHeight += m_nCtrlHeight + dr;
|
|
|
+
|
|
|
+ // 2、ftp用户;
|
|
|
+ m_text_user.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ m_text_user.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, rcCtrl.Width(), rcCtrl.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+
|
|
|
+ m_ftp_user.SetWindowPos(nullptr, rcCtrl.right + dr, rectClient.top + nHeight, rectClient.Width() - rcCtrl.Width() - margin * 2 - dr, m_nCtrlHeight, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+ nHeight += m_nCtrlHeight + dr;
|
|
|
+
|
|
|
+ // 3、ftp密码;
|
|
|
+ m_text_password.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ m_text_password.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, rcCtrl.Width(), rcCtrl.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+
|
|
|
+ m_ftp_password.SetWindowPos(nullptr, rcCtrl.right + dr, rectClient.top + nHeight, rectClient.Width() - rcCtrl.Width() - margin * 2 - dr, m_nCtrlHeight, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+ nHeight += m_nCtrlHeight + dr;
|
|
|
+
|
|
|
+ // 4、是否记住ftp信息;
|
|
|
+ m_check_remember.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ m_check_remember.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, rcCtrl.Width(), rcCtrl.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+ nHeight += rcCtrl.Height() + dr;
|
|
|
+
|
|
|
+ // 5、升级;
|
|
|
+ m_btnUpgrade.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ m_btnUpgrade.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, rcCtrl.Width(), rcCtrl.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
int CUpgradeWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
@@ -80,12 +126,59 @@ int CUpgradeWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
|
|
|
return -1;
|
|
|
|
|
|
- CRect rectDummy;
|
|
|
- rectDummy.SetRectEmpty();
|
|
|
+ CRect rectDummy(0,0,60,23);
|
|
|
|
|
|
// 创建组合:
|
|
|
const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_BORDER | CBS_SORT | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
|
|
|
|
|
|
+ // 编辑框;
|
|
|
+ m_text_path.Create(_T("路径:"), SS_CENTER | SS_CENTERIMAGE | WS_CHILD | WS_VISIBLE, rectDummy, this, IDC_STATIC);
|
|
|
+ if (!m_edit_path.Create( WS_CHILD | WS_VISIBLE, rectDummy, this, 8))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!m_btnUpgrade.Create(_T("升级"), WS_CHILD | WS_VISIBLE, rectDummy, this, 9))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ m_text_user.Create(_T("FTP账号:"), SS_CENTER | SS_CENTERIMAGE | WS_CHILD | WS_VISIBLE, rectDummy, this, IDC_STATIC);
|
|
|
+ if (!m_ftp_user.Create(WS_CHILD | WS_VISIBLE, rectDummy, this, 10))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ m_text_password.Create(_T("FTP密码:"), SS_CENTER | SS_CENTERIMAGE | WS_CHILD | WS_VISIBLE, rectDummy, this, IDC_STATIC);
|
|
|
+ if (!m_ftp_password.Create(WS_CHILD | WS_VISIBLE, rectDummy, this, 11))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!m_check_remember.Create(_T("记住信息"), WS_CHILD | WS_VISIBLE, rectDummy, this, 12))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ m_check_remember.SetCheck(Global::g_Config.bRememberFTPInfo ? BST_CHECKED : BST_UNCHECKED);
|
|
|
+ m_check_remember.m_bHighlightChecked = TRUE;
|
|
|
+ // CMFCButton只能用图标来显示check;
|
|
|
+ m_check_remember.SetImage(IDB_UNCHECKED);
|
|
|
+ m_check_remember.SetCheckedImage(IDB_CHECKED);
|
|
|
+ m_check_remember.m_bTransparent = FALSE;
|
|
|
+ m_check_remember.m_bDrawFocus = FALSE;
|
|
|
+ m_check_remember.m_nFlatStyle = CMFCButton::BUTTONSTYLE_FLAT;
|
|
|
+ m_check_remember.SizeToContent();
|
|
|
+
|
|
|
+
|
|
|
+ // 以编辑框高度为所有控件高度标准;
|
|
|
+ CRect rcCtrl;
|
|
|
+ m_edit_path.GetClientRect(&rcCtrl);
|
|
|
+ m_nCtrlHeight = rcCtrl.Height();
|
|
|
+
|
|
|
+ // 设置控件样式;
|
|
|
+ SetPropListFont();
|
|
|
+
|
|
|
// 设置最小窗体;
|
|
|
SetMinSize((530, 260));
|
|
|
|
|
@@ -151,7 +244,6 @@ void CUpgradeWnd::OnSetFocus(CWnd* pOldWnd)
|
|
|
void CUpgradeWnd::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
|
|
|
{
|
|
|
CDockablePane::OnSettingChange(uFlags, lpszSection);
|
|
|
- //SetPropListFont();
|
|
|
}
|
|
|
|
|
|
void CUpgradeWnd::SetPropListFont()
|
|
@@ -172,7 +264,10 @@ void CUpgradeWnd::SetPropListFont()
|
|
|
|
|
|
m_fntPropList.CreateFontIndirect(&lf);
|
|
|
|
|
|
- //m_wndObjectCombo.SetFont(&m_fntPropList);
|
|
|
+ m_text_path.SetFont(&m_fntPropList);
|
|
|
+ m_text_user.SetFont(&m_fntPropList);
|
|
|
+ m_text_password.SetFont(&m_fntPropList);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// 如果CDockablePane无控件,改变大小时背景会刷新失败;
|
|
@@ -194,3 +289,23 @@ void CUpgradeWnd::OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/)
|
|
|
{
|
|
|
// TODO: 在此处添加消息处理程序代码
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+HBRUSH CUpgradeWnd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
|
|
+{
|
|
|
+ HBRUSH hbr = CDockablePane::OnCtlColor(pDC, pWnd, nCtlColor);
|
|
|
+
|
|
|
+ // TODO: 在此更改 DC 的任何特性
|
|
|
+ if (nCtlColor == CTLCOLOR_STATIC && pWnd->GetDlgCtrlID() == IDC_STATIC ) //静态文本颜色,并且指定控件ID号
|
|
|
+ {
|
|
|
+ pDC->SetTextColor(RGB(255, 0, 0));
|
|
|
+ //pDC->SetBkColor(RGB(191,219,255)); //静态控件的背景颜色设置,红字蓝底。
|
|
|
+ pDC->SetBkMode(TRANSPARENT); //静态文本框背景设置为透明
|
|
|
+ HBRUSH brush;
|
|
|
+ brush = CreateSolidBrush(0xFFEFD5);//对话框的RGB值
|
|
|
+ hbr = (HBRUSH)brush;
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO: 如果默认的不是所需画笔,则返回另一个画笔
|
|
|
+ return hbr;
|
|
|
+}
|