// CEquipmentPage2.cpp: 实现文件 // #include "stdafx.h" #include "Servo.h" #include "CEquipmentPage2.h" #include "afxdialogex.h" // CEquipmentPage2 对话框 IMPLEMENT_DYNAMIC(CEquipmentPage2, CHMPropertyPage) CEquipmentPage2::CEquipmentPage2(CWnd* pParent /*=nullptr*/) : CHMPropertyPage(IDD_PAGE_EQUIPMENT2, pParent) { m_pEquipment = nullptr; } CEquipmentPage2::~CEquipmentPage2() { } void CEquipmentPage2::DoDataExchange(CDataExchange* pDX) { CHMPropertyPage::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, m_listCtrl); } BEGIN_MESSAGE_MAP(CEquipmentPage2, CHMPropertyPage) ON_WM_CTLCOLOR() ON_WM_DESTROY() ON_WM_SIZE() ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &CEquipmentPage2::OnLvnItemchangedList1) ON_BN_CLICKED(IDC_BUTTON_REMOVE, &CEquipmentPage2::OnBnClickedButtonRemove) END_MESSAGE_MAP() // CEquipmentPage2 消息处理程序 void CEquipmentPage2::OnApply() { __super::OnApply(); } void CEquipmentPage2::setEquipment(SERVO::CEquipment* pEquipment) { m_pEquipment = pEquipment; } BOOL CEquipmentPage2::OnInitDialog() { CHMPropertyPage::OnInitDialog(); // 读出列宽 CString strIniFile, strItem; strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir); int width[8] = { 0, 218, 180, 180, 180, 180, 180, 180 }; for (int i = 0; i < 8; i++) { strItem.Format(_T("Col_%d_Width"), i); width[i] = GetPrivateProfileInt("EquipmentPage2ListCtrl", strItem, width[i], strIniFile); } // 报表控件 DWORD dwStyle = m_listCtrl.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT; dwStyle |= LVS_EX_GRIDLINES; m_listCtrl.SetExtendedStyle(dwStyle); HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1); ListView_SetImageList(m_listCtrl.GetSafeHwnd(), imageList, LVSIL_SMALL); m_listCtrl.InsertColumn(0, _T(""), LVCFMT_RIGHT, width[0]); m_listCtrl.InsertColumn(1, _T("ID"), LVCFMT_LEFT, width[1]); m_listCtrl.InsertColumn(2, _T("名称"), LVCFMT_LEFT, width[2]); m_listCtrl.InsertColumn(3, _T("Glass ID"), LVCFMT_LEFT, width[3]); m_listCtrl.InsertColumn(4, _T("贴合Glass ID"), LVCFMT_LEFT, width[4]); m_listCtrl.InsertColumn(5, _T("时间"), LVCFMT_LEFT, width[5]); m_listCtrl.SetColumnWidth(5, LVSCW_AUTOSIZE_USEHEADER); ASSERT(m_pEquipment); for (int i = 0; i < SLOT_MAX; i++) { SERVO::CSlot* pSlot = m_pEquipment->getSlot(i); if (pSlot != nullptr && pSlot->isEnable()) { int index = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), _T("")); m_listCtrl.SetItemData(index, (DWORD_PTR)pSlot); m_listCtrl.SetItemText(index, 1, std::to_string(pSlot->getNo()).c_str()); m_listCtrl.SetItemText(index, 2, pSlot->getName().c_str()); SERVO::CGlass* pGlass = (SERVO::CGlass*)pSlot->getContext(); if (pGlass != nullptr) { m_listCtrl.SetItemText(index, 3, pGlass->getID().c_str()); SERVO::CGlass* pBuddy = pGlass->getBuddy(); if (pBuddy != nullptr) { m_listCtrl.SetItemText(index, 4, pBuddy->getID().c_str()); } } } } return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } HBRUSH CEquipmentPage2::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CHMPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; } void CEquipmentPage2::OnDestroy() { CHMPropertyPage::OnDestroy(); // 保存列宽 CString strIniFile, strItem, strTemp; strIniFile.Format(_T("%s\\configuration.ini"), (LPTSTR)(LPCTSTR)theApp.m_strAppDir); CHeaderCtrl* pHeader = m_listCtrl.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("EquipmentPage2ListCtrl", strItem, strTemp, strIniFile); } } void CEquipmentPage2::OnSize(UINT nType, int cx, int cy) { CHMPropertyPage::OnSize(nType, cx, cy); if (GetDlgItem(IDC_LIST1) == nullptr) return; CWnd* pItem; CRect rcClient, rcItem; GetClientRect(&rcClient); int x = 12; int y2 = rcClient.bottom - 12; pItem = GetDlgItem(IDC_BUTTON_REMOVE); pItem->GetWindowRect(&rcItem); pItem->MoveWindow(x, y2 - rcItem.Height(), rcItem.Width(), rcItem.Height()); y2 -= rcItem.Height(); y2 -= 8; m_listCtrl.MoveWindow(x, 58, rcClient.Width() - 24, y2 - 58); } void CEquipmentPage2::OnLvnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); if (LVIF_STATE == pNMLV->uChanged) { int nItem = pNMLV->iItem; GetDlgItem(IDC_BUTTON_REMOVE)->EnableWindow(GetSelectedItemIndex() >= 0); } *pResult = 0; } int CEquipmentPage2::GetSelectedItemIndex() { POSITION pos = m_listCtrl.GetFirstSelectedItemPosition(); return m_listCtrl.GetNextSelectedItem(pos); } void CEquipmentPage2::OnBnClickedButtonRemove() { /* int index = GetSelectedItemIndex(); if (index >= 0) { SERVO::CGlass* pGlass = (SERVO::CGlass*)m_listCtrl.GetItemData(index); ASSERT(m_pEquipment); BOOL bRet = m_pEquipment->removeClass(pGlass); if (bRet) { pGlass->release(); m_listCtrl.DeleteItem(index); } } */ }