#include "stdafx.h" #include "DlgMarkPar.h" #include "afxdialogex.h" #include "MarkParMgr.h" #include "GlobalFunction.h" #include "MsgBox.h" #include "AuthorityMgr.h" #include "MarkCtrl.h" #include "LaipuVbDllMgr.h" IMPLEMENT_DYNAMIC(CDlgMarkPar, CDialogEx) CDlgMarkPar::CDlgMarkPar(CWnd* pParent /*=NULL*/) { m_CurPen = 0;//当前笔号 } CDlgMarkPar::~CDlgMarkPar() { } void CDlgMarkPar::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_PAR_LIST, m_PenList); DDX_Text(pDX, IDC_CUR_PEN, m_CurPen); DDX_Text(pDX, IDC_MS, m_CurPar.ms); DDX_Text(pDX, IDC_MMS, m_CurPar.mms); DDX_Text(pDX, IDC_TOF, m_CurPar.tof); DDX_Text(pDX, IDC_TOH, m_CurPar.toh); DDX_Text(pDX, IDC_TCF, m_CurPar.tcf); DDX_Text(pDX, IDC_TCH, m_CurPar.tch); DDX_Text(pDX, IDC_DR, m_CurPar.dr_time); DDX_Text(pDX, IDC_LASER_FRE, m_CurPar.laserfre); DDX_Text(pDX, IDC_LASER_POWER, m_CurPar.laserpower); } BEGIN_MESSAGE_MAP(CDlgMarkPar, CDialogEx) ON_NOTIFY(NM_CLICK, IDC_PAR_LIST, &CDlgMarkPar::OnNMClickParList) ON_NOTIFY(NM_CUSTOMDRAW, IDC_PAR_LIST, OnCustomdrawMyList) ON_BN_CLICKED(IDC_COMMIT, &CDlgMarkPar::OnBnClickedCommit) END_MESSAGE_MAP() // CDlgStdMarkCtr 消息处理程序 BOOL CDlgMarkPar::OnInitDialog() { CDialogEx::OnInitDialog(); IniPenList(); UpdatePenList(); gMarkParMgr->SaveOrLoad(false);//从文件读取参数 gMarkParMgr->SetCurPenNum(m_CurPen); UpdatePar(); UpdateData(FALSE); return TRUE; } #if 1 void CDlgMarkPar::IniPenList() { //设置风格 m_PenList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); //设置列 int idx = 0; m_PenList.InsertColumn(idx,"笔号",LVCFMT_CENTER,50,-1); idx++; m_PenList.InsertColumn(idx,"颜色",LVCFMT_CENTER,90,-1); } void CDlgMarkPar::UpdatePenList() { m_PenList.DeleteAllItems(); gMarkParMgr->InsertToList(m_PenList); } void CDlgMarkPar::UpdatePar() { m_CurPar = gMarkParMgr->GetPen(m_CurPen); UpdateData(FALSE); } void CDlgMarkPar::OnNMClickParList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); *pResult = 0; if(gAuthorityMgr->CheckAuthority(_FACTORY)) { UpdateData(TRUE); m_CurPen=GetCurListIdx(m_PenList); gMarkParMgr->SetCurPenNum(m_CurPen); m_CurPar = gMarkParMgr->GetPen(m_CurPen); UpdateData(FALSE); } } //获取list 当前选择的行号 int CDlgMarkPar::GetCurListIdx(CListCtrl &list) { POSITION pos = list.GetFirstSelectedItemPosition(); if (pos == NULL) { return -1; } else { while (pos) { int nItem = list.GetNextSelectedItem(pos); return nItem; } } return -1; } //设置笔号对应的颜色 void CDlgMarkPar::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult ) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR ); *pResult = CDRF_DODEFAULT; if( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage ) { *pResult = CDRF_NOTIFYITEMDRAW; } else if( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage ) { *pResult = CDRF_NOTIFYSUBITEMDRAW; } else if((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage ) { COLORREF crText, crBkgnd; if(1 == pLVCD->iSubItem) { crText = RGB_BLACK; crBkgnd = gMarkParMgr->GetPenColor(pLVCD->nmcd.dwItemSpec); } else { crText = RGB_BLACK; crBkgnd = RGB_WHITE; } pLVCD->clrText = crText; pLVCD->clrTextBk = crBkgnd; *pResult = CDRF_DODEFAULT; } } #endif //保存当前笔的参数 void CDlgMarkPar::OnBnClickedCommit() { if(gAuthorityMgr->CheckAuthority(_FACTORY,true)==false) return; UpdateData(TRUE); gMarkParMgr->SaveCurPen(m_CurPen,m_CurPar); CMsgBox MsgBox; MsgBox.Show("已保存",false); }