You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
4.0 KiB
C++

#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<LPNMITEMACTIVATE>(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<NMLVCUSTOMDRAW*>( 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);
}