mrDarker
2025-06-23 417d3825013cd1b9e8a8dafa72f51c755ee5d897
Merge branch 'clh' into liuyang
已修改4个文件
152 ■■■■ 文件已修改
SourceCode/Bond/Servo/PageRecipe.cpp 148 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/PageRecipe.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.rc 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/resource.h 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/PageRecipe.cpp
@@ -53,8 +53,6 @@
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_LIST_PPID, m_listPPID);
    DDX_Control(pDX, IDC_EDIT_PPID, m_editPPID);
    DDX_Control(pDX, IDC_EDIT_DESC, m_editDesc);
}
@@ -66,6 +64,7 @@
    ON_BN_CLICKED(IDC_BUTTON_DELETE_ALL, &CPageRecipe::OnBnClickedButtonDeleteAll)
    ON_BN_CLICKED(IDC_BUTTON_REFRESH, &CPageRecipe::OnBnClickedButtonRefresh)
    ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_PPID, &CPageRecipe::OnLvnItemChangedListPPID)
    ON_WM_DESTROY()
END_MESSAGE_MAP()
@@ -74,6 +73,16 @@
BOOL CPageRecipe::OnInitDialog()
{
    CDialogEx::OnInitDialog();
    // 读出列宽
    CString strIniFile, strItem;
    strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir);
    int width[8] = { 0, 80, 180, 80, 80, 100, 80, 180 };
    for (int i = 0; i < 8; i++) {
        strItem.Format(_T("Col_%d_Width"), i);
        width[i] = GetPrivateProfileInt("PageRecipeListCtrl", strItem, width[i], strIniFile);
    }
    // TODO:  在此添加额外的初始化
    CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_PPID);
@@ -85,10 +94,10 @@
    HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1);
    ListView_SetImageList(pListCtrl->GetSafeHwnd(), imageList, LVSIL_SMALL);
    pListCtrl->InsertColumn(0, _T(""), LVCFMT_RIGHT, 0); // 隐藏列
    pListCtrl->InsertColumn(1, _T("No."), LVCFMT_LEFT, 80);
    pListCtrl->InsertColumn(2, _T("PPID"), LVCFMT_LEFT, 120);
    pListCtrl->InsertColumn(3, _T("描述"), LVCFMT_LEFT, 180);
    pListCtrl->InsertColumn(4, _T("创建时间"), LVCFMT_LEFT, 160);
    pListCtrl->InsertColumn(1, _T("No."), LVCFMT_LEFT, width[1]);
    pListCtrl->InsertColumn(2, _T("PPID"), LVCFMT_LEFT, width[2]);
    pListCtrl->InsertColumn(3, _T("描述"), LVCFMT_LEFT, width[3]);
    pListCtrl->InsertColumn(4, _T("创建时间"), LVCFMT_LEFT, width[4]);
    pListCtrl->SetColumnWidth(4, LVSCW_AUTOSIZE_USEHEADER);
    // 获取所有数据
@@ -103,85 +112,58 @@
{
    CDialogEx::OnSize(nType, cx, cy);
    if (m_listPPID.GetSafeHwnd()) {
        // 左侧列表宽高自适应
        int margin = 10;
        int buttonWidth = 80;
        int buttonHeight = 30;
        int buttonSpacing = 10;
    if (!m_listPPID.GetSafeHwnd())
        return;
        CRect rect;
        GetClientRect(&rect);
        int listWidth = rect.Width() - buttonWidth - 3 * margin;
        int listHeight = rect.Height() - 2 * margin;
    // 左侧列表宽高自适应
    int margin = 12;
    int buttonWidth = 80;
    int buttonHeight = 30;
    int buttonSpacing = 10;
        m_listPPID.MoveWindow(margin, margin + 80, listWidth, listHeight - 80);
    CWnd* pItem;
    CRect rect, rcItem;
    GetClientRect(&rect);
        // 编辑框调整位置:右边对齐列表,左边固定起始
        int labelWidth = 60;
        int rightEdge = rect.right - buttonWidth - 2 * margin;
    pItem = GetDlgItem(IDC_EDIT_KEYWORD);
    ASSERT(pItem);
    pItem->GetWindowRect(rcItem);
    ScreenToClient(&rcItem);
        if (m_editPPID.GetSafeHwnd()) {
            m_editPPID.MoveWindow(labelWidth, margin, rightEdge - labelWidth, 25);
    int y = rcItem.bottom;
    y += 12;
    int listWidth = rect.Width() - buttonWidth - 3 * margin;
    m_listPPID.MoveWindow(margin, y, listWidth, rect.bottom - 12 - y);
    // 按钮竖直排列在右侧
    CWnd* buttons[] = {
        GetDlgItem(IDC_BUTTON_MODIFY),
        GetDlgItem(IDC_BUTTON_DELETE),
        GetDlgItem(IDC_BUTTON_DELETE_ALL),
        GetDlgItem(IDC_BUTTON_REFRESH)
    };
    for (auto pBtn : buttons) {
        if (pBtn && pBtn->GetSafeHwnd()) {
            pBtn->MoveWindow(rect.right - buttonWidth - margin, y, buttonWidth, buttonHeight);
            y += buttonHeight + buttonSpacing;
        }
        if (m_editDesc.GetSafeHwnd()) {
            m_editDesc.MoveWindow(labelWidth, margin + 35, rightEdge - labelWidth, 25);
        }
        // 按钮竖直排列在右侧
        CWnd* buttons[] = {
            GetDlgItem(IDC_BUTTON_SEARCH),
            GetDlgItem(IDC_BUTTON_MODIFY),
            GetDlgItem(IDC_BUTTON_DELETE),
            GetDlgItem(IDC_BUTTON_DELETE_ALL),
            GetDlgItem(IDC_BUTTON_REFRESH)
        };
        int y = margin;
        for (auto pBtn : buttons) {
            if (pBtn && pBtn->GetSafeHwnd()) {
                pBtn->MoveWindow(rect.right - buttonWidth - margin, y, buttonWidth, buttonHeight);
                y += buttonHeight + buttonSpacing;
            }
        }
        // 列宽重设
        int col0 = 50;  // No.
        int col1 = 120; // PPID
        int col3 = 160; // 创建时间自动填充
        int col2 = listWidth - col0 - col1 - col3 - 2;  // 描述自动填充
        if (col2 < 80) {
            col2 = 80;
        }
        m_listPPID.SetColumnWidth(1, col0);
        m_listPPID.SetColumnWidth(2, col1);
        m_listPPID.SetColumnWidth(3, col2);
        m_listPPID.SetColumnWidth(4, col3);
    }
}
void CPageRecipe::OnBnClickedButtonSearch()
{
    // TODO: 在此添加控件通知处理程序代码
    CString strInput;
    m_editPPID.GetWindowText(strInput);
    int nCount = m_listPPID.GetItemCount();
    for (int i = 0; i < nCount; ++i) {
        CString strItemText = m_listPPID.GetItemText(i, 2); // 第2列为PPID
        if (strItemText == strInput) {
            m_listPPID.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
            m_listPPID.EnsureVisible(i, FALSE);
            break;
        }
    }
    CString strKeyword;
    GetDlgItemText(IDC_EDIT_KEYWORD, strKeyword);
    AfxMessageBox(strKeyword);
}
void CPageRecipe::OnBnClickedButtonModify()
{
    // TODO: 在此添加控件通知处理程序代码
    /*
    POSITION pos = m_listPPID.GetFirstSelectedItemPosition();
    if (!pos) {
        AfxMessageBox(_T("请选择要修改的配方"));
@@ -238,6 +220,7 @@
            AfxMessageBox(_T("描述更新失败"));
        }
    }
    */
}
void CPageRecipe::OnBnClickedButtonDelete()
@@ -299,14 +282,25 @@
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    *pResult = 0;
    if ((pNMLV->uChanged & LVIF_STATE) &&
        (pNMLV->uNewState & LVIS_SELECTED)) {
    int selectedCount = ListView_GetSelectedCount(m_listPPID.GetSafeHwnd());
    GetDlgItem(IDC_BUTTON_MODIFY)->EnableWindow(selectedCount > 0);
    GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow(selectedCount > 0);
    GetDlgItem(IDC_BUTTON_DELETE_ALL)->EnableWindow(selectedCount > 0);
}
        int nItem = pNMLV->iItem;
        CString strPPID = m_listPPID.GetItemText(nItem, 2);
        m_editPPID.SetWindowText(strPPID);
void CPageRecipe::OnDestroy()
{
    CDialogEx::OnDestroy();
        CString strDesc = m_listPPID.GetItemText(nItem, 3);
        m_editDesc.SetWindowText(strDesc);
    // 保存列宽
    CString strIniFile, strItem, strTemp;
    strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir);
    CHeaderCtrl* pHeader = m_listPPID.GetHeaderCtrl();
    for (int i = 0; i < pHeader->GetItemCount(); i++) {
        RECT rect;
        pHeader->GetItemRect(i, &rect);
        strItem.Format(_T("Col_%d_Width"), i);
        strTemp.Format(_T("%d"), rect.right - rect.left);
        WritePrivateProfileString("PageRecipeListCtrl", strItem, strTemp, strIniFile);
    }
}
}
SourceCode/Bond/Servo/PageRecipe.h
@@ -34,6 +34,6 @@
private:
    CListCtrl m_listPPID;
    CEdit m_editPPID;
    CEdit m_editDesc;
public:
    afx_msg void OnDestroy();
};
SourceCode/Bond/Servo/Servo.rc
Binary files differ
SourceCode/Bond/Servo/resource.h
Binary files differ