| | |
| | | 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() |
| | | |
| | | |
| | |
| | | void CEquipmentPage2::OnApply() |
| | | { |
| | | __super::OnApply(); |
| | | AfxMessageBox("CEquipmentPage2::OnApply()"); |
| | | } |
| | | |
| | | void CEquipmentPage2::setEquipment(SERVO::CEquipment* pEquipment) |
| | |
| | | { |
| | | CHMPropertyPage::OnInitDialog(); |
| | | |
| | | AfxMessageBox(m_pEquipment->getClassName()); |
| | | |
| | | // 读出列宽 |
| | | 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("时间"), LVCFMT_LEFT, width[3]); |
| | | m_listCtrl.SetColumnWidth(3, LVSCW_AUTOSIZE_USEHEADER); |
| | | |
| | | |
| | | ASSERT(m_pEquipment); |
| | | std::list<SERVO::CGlass*> list; |
| | | m_pEquipment->getGlassList(list); |
| | | for (auto item : list) { |
| | | item->addRef(); |
| | | item->release(); // 释放list中的引用 |
| | | |
| | | SERVO::CGlass* pBuddy = item->getBuddy(); |
| | | int index = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), _T("")); |
| | | m_listCtrl.SetItemData(index, (DWORD_PTR)item); |
| | | m_listCtrl.SetItemText(index, 1, item->getID().c_str()); |
| | | if (pBuddy != nullptr) { |
| | | m_listCtrl.SetItemText(index, 2, 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); |
| | | } |
| | | |
| | | for (int i = 0; i < m_listCtrl.GetItemCount(); i++) { |
| | | SERVO::CGlass* pGlass = (SERVO::CGlass*)m_listCtrl.GetItemData(i); |
| | | pGlass->release(); |
| | | } |
| | | } |
| | | |
| | | 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<LPNMLISTVIEW>(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); |
| | | } |
| | | } |
| | | } |