LAPTOP-SNT8I5JK\Boounion
2025-01-13 b6e370081c3692bdfcdede5106d42734d2c6ef2f
1.增加输入框超范围时的黄色提示;
已修改6个文件
115 ■■■■■ 文件已修改
SourceCode/Bond/BoounionPLC/AxisSettingsDlg.cpp 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BoounionPLC/AxisSettingsDlg.h 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BoounionPLC/BoounionPLC.rc 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BoounionPLC/CBaseDlg.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BoounionPLC/CBaseDlg.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BoounionPLC/Resource.h 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BoounionPLC/AxisSettingsDlg.cpp
@@ -16,6 +16,7 @@
#define TIMER_INIT                    1
#define TIMER_READ_PLC_DATA            2
#define TIMER_HIDE_TIP                3
#define ID_MSG_UPDATA_DATA_TO_UI    WM_USER + 101
@@ -62,6 +63,10 @@
    
    m_nBtnsFlashState6 = 0;
    m_nBtnsFlashState8 = 0;
    m_crTipBack = RGB(255, 127, 39);
    m_crTipText = RGB(228, 228, 228);
    m_hbrTip = CreateSolidBrush(m_crTipBack);
    m_hTipFont = nullptr;
}
CAxisSettingsDlg::~CAxisSettingsDlg()
@@ -82,6 +87,18 @@
        delete m_pAxisManager;
        m_pAxisManager = nullptr;
    }
    ::DeleteObject(m_hbrTip);
    if (m_hTipFont != nullptr) {
        ::DeleteObject(m_hTipFont);
    }
}
BOOL CAxisSettingsDlg::PreAdjustControl(CWnd* pWnd)
{
    int nCtrlID = pWnd->GetDlgCtrlID();
    if (nCtrlID == IDC_LABEL_TIP) return FALSE;
    return TRUE;
}
void CAxisSettingsDlg::DoDataExchange(CDataExchange* pDX)
@@ -759,6 +776,8 @@
    ON_WM_SIZE()
    ON_WM_TIMER()
    ON_WM_CLOSE()
    ON_WM_CTLCOLOR()
    ON_EN_KILLFOCUS(IDC_EDIT_AXIS_MODITFY_MICROMENTUM, &CAxisSettingsDlg::OnEnKillfocusEditAxisModitfyMicromentum)
END_MESSAGE_MAP()
@@ -1011,8 +1030,17 @@
void CAxisSettingsDlg::OnSize(UINT nType, int cx, int cy)
{
    CBaseDlg::OnSize(nType, cx, cy);
    if (GetDlgItem(IDC_LABEL_TIP) == nullptr) return;
    // TODO: 在此处添加消息处理程序代码
    CWnd* pItem;
    CRect rcClient;
    GetClientRect(&rcClient);
    pItem = GetDlgItem(IDC_LABEL_TIP);
    pItem->MoveWindow(0, 0, rcClient.Width(), 36);
    // 动态调整各个 CBLLabel 的字体大小
    for (auto pLabel : m_pBlLabels) {
        AdjustLabelFont(*pLabel);
@@ -1061,13 +1089,11 @@
void CAxisSettingsDlg::OnBnClickedButtonAxisAnchorPointGroup2()
{
    // TODO: 在此添加控件通知处理程序代码
    SwitchToPage(2);
}
void CAxisSettingsDlg::OnBnClickedButtonAxisAnchorPointGroup3()
{
    // TODO: 在此添加控件通知处理程序代码
    SwitchToPage(3);
}
@@ -1370,6 +1396,10 @@
        ReadPLCDataToUI(nAxisId);
    }    
    else if (TIMER_HIDE_TIP == nIDEvent) {
        KillTimer(TIMER_HIDE_TIP);
        HideTip();
    }
    CBaseDlg::OnTimer(nIDEvent);
}
@@ -1381,3 +1411,55 @@
    CBaseDlg::OnClose();
}
HBRUSH CAxisSettingsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CBaseDlg::OnCtlColor(pDC, pWnd, nCtlColor);
    int nCtrlID = pWnd->GetDlgCtrlID();
    if (nCtrlID == IDC_LABEL_TIP) {
        pDC->SetTextColor(m_crTipText);
        pDC->SetBkColor(m_crTipBack);
        if (m_hTipFont == nullptr) {
            HFONT hFontDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
            CFont* pFont = CFont::FromHandle(hFontDefault);
            LOGFONT lf;
            pFont->GetLogFont(&lf);
            lf.lfHeight -= 8;
            m_hTipFont = ::CreateFontIndirect(&lf);
            ::SelectObject(pDC->m_hDC, m_hTipFont);
        }
        return m_hbrTip;
    }
    return hbr;
}
void CAxisSettingsDlg::ShowTipText(const char* pszText, float sec)
{
    CString strText;
    strText.Format(_T(" * %s"), pszText);
    SetDlgItemText(IDC_LABEL_TIP, strText);
    GetDlgItem(IDC_LABEL_TIP)->ShowWindow(SW_SHOW);
    SetTimer(TIMER_HIDE_TIP, (int)(sec * 1000.0), nullptr);
}
void CAxisSettingsDlg::HideTip()
{
    GetDlgItem(IDC_LABEL_TIP)->ShowWindow(SW_HIDE);
}
void CAxisSettingsDlg::OnEnKillfocusEditAxisModitfyMicromentum()
{
    CString strText;
    GetDlgItemText(IDC_EDIT_AXIS_MODITFY_MICROMENTUM, strText);
    double value = atof(strText);
    if (value < 0.0 || value > 0.1) {
        ShowTipText("微动量值必须在0.0 ~ 0.1之间", 5);
    }
}
SourceCode/Bond/BoounionPLC/AxisSettingsDlg.h
@@ -72,6 +72,11 @@
    CAxisSettingsDlg(CWnd* pParent = nullptr);   // 标准构造函数
    virtual ~CAxisSettingsDlg();
private:
    virtual BOOL PreAdjustControl(CWnd* pWnd);
// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_DIALOG_AXIS_SETTINGS };
@@ -98,9 +103,15 @@
    void WriteAxisDataToPLC(int nAxisId);
    void HandleAxisOperation(AxisOperationType eOpType, bool bPressed);
    void ReadPLCDataToUI(int nAxisId);
    void ShowTipText(const char* pszText, float sec);
    void HideTip();
private:
    CPLC* m_pPLC;
    HBRUSH m_hbrTip;
    HFONT m_hTipFont;
    COLORREF m_crTipBack;
    COLORREF m_crTipText;
    // 当前选中的定位页面索引
    int m_currentPage;
@@ -161,4 +172,7 @@
    afx_msg void OnTimer(UINT_PTR nIDEvent);
    afx_msg void OnClose();
    DECLARE_MESSAGE_MAP()
public:
    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    afx_msg void OnEnKillfocusEditAxisModitfyMicromentum();
};
SourceCode/Bond/BoounionPLC/BoounionPLC.rc
Binary files differ
SourceCode/Bond/BoounionPLC/CBaseDlg.cpp
@@ -34,6 +34,11 @@
    DeleteObject(m_hBrush);
}
BOOL CBaseDlg::PreAdjustControl(CWnd* pWnd)
{
    return TRUE;
}
void CBaseDlg::SwitchTheme(ThemeType enThemeType)
{
    // 使用 map 来根据 themeType 查找主题
@@ -176,6 +181,10 @@
    m_bResizing = true;
    CWnd* pWnd = GetWindow(GW_CHILD);
    while (pWnd) {
        if (!PreAdjustControl(pWnd)) {
            pWnd = pWnd->GetNextWindow();
            continue;
        }
        int nCtrlID = pWnd->GetDlgCtrlID();
        if (nCtrlID != -1 && m_mapCtrlLayouts.find(nCtrlID) != m_mapCtrlLayouts.end()) {
            CRect originalRect = m_mapCtrlLayouts[nCtrlID];
SourceCode/Bond/BoounionPLC/CBaseDlg.h
@@ -23,6 +23,10 @@
    CBaseDlg(UINT nID, CWnd* pPage);            // 标准构造函数
    virtual ~CBaseDlg();                        // 析构函数
public:
    virtual BOOL PreAdjustControl(CWnd* pWnd);
    // 主题管理
    void SwitchTheme(ThemeType enThemeType);            // 切换主题
SourceCode/Bond/BoounionPLC/Resource.h
Binary files differ