chenluhua1980
2025-11-14 22c4fd7bb3ef1d7c6bfc67baf79aed53d22d8636
1.竖排slot格子指示;
已修改3个文件
60 ■■■■■ 文件已修改
SourceCode/Bond/Servo/CPageGraph2.cpp 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/EqsGraphWnd.cpp 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/EqsGraphWnd.h 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPageGraph2.cpp
@@ -302,7 +302,8 @@
    m_pEqsGraphWnd = CEqsGraphWnd::FromHandle(GetDlgItem(IDC_EQSGRAPHWND1)->m_hWnd);
    m_pEqsGraphWnd->SetBkgndColor(m_crBkgnd);
    m_pEqsGraphWnd->SetOnListener(listener);
    m_pEqsGraphWnd->SetIndicatorSize(10);
    m_pEqsGraphWnd->SetIndicatorMargin(0);
    return TRUE;  // return TRUE unless you set the focus to a control
                  // 异常: OCX 属性页应返回 FALSE
SourceCode/Bond/Servo/EqsGraphWnd.cpp
@@ -64,6 +64,8 @@
    m_nMagneticLinHoz = 0;
    m_nMagneticLinVer = 0;
    m_hFontTitle = nullptr;
    m_nIndicatorSize = 10;
    m_nIndicatorMargin = 3;
}
@@ -157,6 +159,20 @@
    m_crItemIdText[0] = CColorTransfer::ApproximateColor(m_crItemNameText[0], -0.3f);
    m_crItemIdText[1] = CColorTransfer::ApproximateColor(m_crItemNameText[1], -0.3f);
}
void CEqsGraphWnd::SetIndicatorSize(int nSize)
{
    if (nSize > 0) {
        m_nIndicatorSize = nSize;
    }
}
void CEqsGraphWnd::SetIndicatorMargin(int nMargin)
{
    if (nMargin >= 0) {
        m_nIndicatorMargin = nMargin;
    }
}
void CEqsGraphWnd::EnableScroll(BOOL bEnable)
@@ -1964,10 +1980,10 @@
            ::DrawText(hMemDC, pItem->text, (int)strlen(pItem->text), &rcItem,
                DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
            // 多个指示灯:左上角,按 4 列 × 2 行排列
            const int indicatorSize = 10;
            const int indicatorMargin = 3;
            const int indicatorsPerRow = 4;
            // indicators vertical column layout
            const int indicatorSize = m_nIndicatorSize;
            const int indicatorMargin = m_nIndicatorMargin;
            const int indicatorX = rcItem.left + 5;
            for (int k = 0; k < EQITEM_INDICATOR_COUNT; ++k) {
                BYTE indicatorState = pItem->nIndicatorState[k];
@@ -1975,17 +1991,12 @@
                    continue;
                }
                int row = k / indicatorsPerRow;
                int col = k % indicatorsPerRow;
                RECT rcIndicator;
                rcIndicator.left = rcItem.left + 5 + col * (indicatorSize + indicatorMargin);
                rcIndicator.top = rcItem.top + 5 + row * (indicatorSize + indicatorMargin);
                rcIndicator.left = indicatorX;
                rcIndicator.top = rcItem.top + 5 + k * (indicatorSize + indicatorMargin);
                rcIndicator.right = rcIndicator.left + indicatorSize;
                rcIndicator.bottom = rcIndicator.top + indicatorSize;
                // 画高亮/灰色方块
                RECT rcInner = rcIndicator;
                ::InflateRect(&rcInner, -1, -1);
                ::FillRect(hMemDC, &rcInner, indicatorState == INDICATOR_STATE_HIGHLIGHT
SourceCode/Bond/Servo/EqsGraphWnd.h
@@ -1,4 +1,4 @@
#pragma once
#pragma once
#include <functional>
@@ -64,7 +64,7 @@
    DWORD_PTR pInPins;
    DWORD_PTR pOutPins;
    int nFlashFlag;
    BYTE nIndicatorState[EQITEM_INDICATOR_COUNT]; // 0=隐藏, 1=高亮, 2=灰色
    BYTE nIndicatorState[EQITEM_INDICATOR_COUNT]; // 0=隐藏, 1=高亮, 2=灰色
} EQITEM;
typedef struct tagPIN
@@ -155,6 +155,8 @@
    void FlashItem(EQITEM* pItem);
    void AnimationItem(EQITEM*pItem);
    void ShowItemIndicator(DWORD_PTR dwItemData, int state, int nIndex = 0);
    void SetIndicatorSize(int nSize);
    void SetIndicatorMargin(int nMargin);
private:
    void Init();
@@ -202,7 +204,7 @@
    EQITEM*        m_pFlashItem;
    EQITEM*        m_pAnimationItem;
    PIN *        m_pCurPin;
    PIN *        m_pSelLineOutPin;        // 选中的连线的两个pin中的out pin
    PIN *        m_pSelLineOutPin;        // 选中的连线的两个pin中的out pin
private:
    HWND        m_hWnd;
@@ -211,12 +213,12 @@
    HFONT        m_hFontTitle;
private:
    BOOL m_bUseGdiPlus;                    // 使用GDI+绘图?
    COLORREF m_crItemBackground[2];        // item的颜色,normal, active
    COLORREF m_crItemFrame[2];            // item的边框,normal, active
    BOOL m_bUseGdiPlus;                    // 使用GDI+绘图?
    COLORREF m_crItemBackground[2];        // item的颜色,normal, active
    COLORREF m_crItemFrame[2];            // item的边框,normal, active
    COLORREF m_crItemNameText[2];
    COLORREF m_crItemIdText[2];
    COLORREF m_crPinBkgnd[3];            // pin的颜色,normal, active, enable connect
    COLORREF m_crPinBkgnd[3];            // pin的颜色,normal, active, enable connect
    int m_nCurSel;
    EqsGraphListener m_listener;
    CPtrArray m_arItem;
@@ -224,18 +226,20 @@
    int m_nItemRound;
private:
    int m_nStageCx;            // 画布大小
    int m_nStageCx;            // 画布大小
    int m_nStageCy;
    int m_nOffsetX;
    int m_nOffsetY;
    int m_nIndicatorSize;
    int m_nIndicatorMargin;
    // 动画
    // 动画
    RECTF m_rcAnimation;
    RECTF m_rcAninationStep;
    int m_nAninationStep;
    int m_nAninationDuration;        // ms
    // 字体
    // 字体
    HFONT m_hFontName;
    HFONT m_hFontId;