#include "stdafx.h" #include "LaiPuLaser.h" #include "DlgObjComponentArr.h" #include "afxdialogex.h" #include "GlobalFunction.h" IMPLEMENT_DYNAMIC(CDlgObjComponentArr, CDialogEx) BEGIN_MESSAGE_MAP(CDlgObjComponentArr, CDialogEx) ON_BN_CLICKED(ID_OK, &CDlgObjComponentArr::OnBnClickedOk) ON_BN_CLICKED(IDC_ZOOM_IN, &CDlgObjComponentArr::OnBnClickedZoomIn) ON_BN_CLICKED(IDC_ZOOM_OUT, &CDlgObjComponentArr::OnBnClickedZoomOut) ON_BN_CLICKED(IDC_USE_AREA, &CDlgObjComponentArr::OnBnClickedUseArea) ON_BN_CLICKED(IDC_RECT, &CDlgObjComponentArr::OnBnClickedRect) ON_BN_CLICKED(IDC_CIRCLE, &CDlgObjComponentArr::OnBnClickedCircle) ON_BN_CLICKED(IDCANCEL, &CDlgObjComponentArr::OnBnClickedCancel) ON_BN_CLICKED(IDC_RADIO_ARRAY, &CDlgObjComponentArr::OnBnClickedRadioArray) ON_BN_CLICKED(IDC_RADIO_AUTO_ARRAY, &CDlgObjComponentArr::OnBnClickedRadioAutoArray) END_MESSAGE_MAP() CDlgObjComponentArr::CDlgObjComponentArr(CObjComponentMgr &Mgr,CWnd* pParent /*=NULL*/) : CDialogEx(CDlgObjComponentArr::IDD, pParent),m_ObjComponentMgr(Mgr) { m_AutoArrOffset = 0; } CDlgObjComponentArr::~CDlgObjComponentArr() { GetCurViewPtr()->RefreshView(); } void CDlgObjComponentArr::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_OFFSET_X, m_OffsetX); DDX_Text(pDX, IDC_OFFSET_Y, m_OffsetY); DDX_Text(pDX, IDC_AREA_CENTER_X, m_AreaBasePt.x); DDX_Text(pDX, IDC_AREA_CENTER_Y, m_AreaBasePt.y); DDX_Text(pDX, IDC_AREA_WIDTH, m_AreaSize.w); DDX_Text(pDX, IDC_AREA_HEIGHT, m_AreaSize.h); DDX_Text(pDX, IDC_AREA_DIA, m_AreaRadius); DDX_Control(pDX, IDC_USE_AREA, m_UseArea); DDX_Text(pDX, IDC_CNT_X_Z, m_ArrayXcntZ); DDX_Text(pDX, IDC_CNT_X_F, m_ArrayXcntF); DDX_Text(pDX, IDC_CNT_Y_Z, m_ArrayYcntZ); DDX_Text(pDX, IDC_CNT_Y_F, m_ArrayYcntF); DDX_Text(pDX, IDC_AUTO_ARR_OFFSET, m_AutoArrOffset); } BOOL CDlgObjComponentArr::OnInitDialog() { CDialogEx::OnInitDialog(); m_ObjComponentMgrBak = m_ObjComponentMgr;//备份修改之前的信息 m_ArrayXcntZ = m_ObjComponentMgr.m_ArrayXcntZ;//X 正方向阵列数量 m_ArrayXcntF = m_ObjComponentMgr.m_ArrayXcntF;//X 负方向阵列数量 m_ArrayYcntZ = m_ObjComponentMgr.m_ArrayYcntZ;//Y 正方向阵列数量 m_ArrayYcntF = m_ObjComponentMgr.m_ArrayYcntF;//Y 负方向阵列数量 m_OffsetX = m_ObjComponentMgr.m_OffsetX;//X 方向间隔 m_OffsetY = m_ObjComponentMgr.m_OffsetY;//Y 方向间隔 //限定元件的范围 m_bUseArea = m_ObjComponentMgr.m_bUseArea;//是否使用限定范围 m_UseArea.SetCheck(m_bUseArea); m_bRectArea = m_ObjComponentMgr.m_bRectArea;//true 为矩形范围,false 为圆形范围 m_bAutoArr = m_ObjComponentMgr.m_bAutoArray; m_AutoArrOffset = m_ObjComponentMgr.m_AutoArrayGap; //设置控件状态 SetCtrlState(); if(m_bRectArea) { ((CButton *)GetDlgItem(IDC_RECT))->SetCheck(TRUE); } else { ((CButton *)GetDlgItem(IDC_CIRCLE))->SetCheck(TRUE); } if(m_bAutoArr) { ((CButton *)GetDlgItem(IDC_RADIO_AUTO_ARRAY))->SetCheck(TRUE); } else { ((CButton *)GetDlgItem(IDC_RADIO_ARRAY))->SetCheck(TRUE); } m_AreaBasePt = m_ObjComponentMgr.m_AreaBasePt;//范围的基准点 m_AreaSize = m_ObjComponentMgr.m_AreaSize;//矩形范围的尺寸 m_AreaRadius = m_ObjComponentMgr.m_AreaRadius;//圆形范围的直径 UpdateData(FALSE); return TRUE; } #if 1//观察 void CDlgObjComponentArr::OnBnClickedZoomOut() { GetCurViewPtr()->OnZoomOut(); } void CDlgObjComponentArr::OnBnClickedZoomIn() { GetCurViewPtr()->OnZoomIn(); } #endif #if 1 void CDlgObjComponentArr::OnBnClickedUseArea() { UpdateData(TRUE); m_bUseArea = m_UseArea.GetCheck(); } //设置控件状态 void CDlgObjComponentArr::SetCtrlState() { GetDlgItem(IDC_AREA_WIDTH)->EnableWindow(true); GetDlgItem(IDC_AREA_HEIGHT)->EnableWindow(true); GetDlgItem(IDC_AREA_DIA)->EnableWindow(true); if(m_bRectArea) { GetDlgItem(IDC_AREA_DIA)->EnableWindow(false); } else { GetDlgItem(IDC_AREA_WIDTH)->EnableWindow(false); GetDlgItem(IDC_AREA_HEIGHT)->EnableWindow(false); } GetDlgItem(IDC_OFFSET_X)->EnableWindow(true); GetDlgItem(IDC_OFFSET_Y)->EnableWindow(true); GetDlgItem(IDC_AUTO_ARR_OFFSET)->EnableWindow(true); if(m_bAutoArr) { GetDlgItem(IDC_OFFSET_X)->EnableWindow(false); GetDlgItem(IDC_OFFSET_Y)->EnableWindow(false); } else { GetDlgItem(IDC_AUTO_ARR_OFFSET)->EnableWindow(false); } } void CDlgObjComponentArr::OnBnClickedRect() { m_bRectArea = true; //设置控件状态 SetCtrlState(); } void CDlgObjComponentArr::OnBnClickedCircle() { m_bRectArea = false; //设置控件状态 SetCtrlState(); } void CDlgObjComponentArr::OnBnClickedRadioArray() { m_bAutoArr = false; SetCtrlState(); } void CDlgObjComponentArr::OnBnClickedRadioAutoArray() { m_bAutoArr = true; SetCtrlState(); } #endif #if 1 void CDlgObjComponentArr::OnBnClickedOk() { UpdateData(TRUE); m_ObjComponentMgr.m_ArrayXcntZ = m_ArrayXcntZ;//X 正方向阵列数量 m_ObjComponentMgr.m_ArrayXcntF = m_ArrayXcntF;//X 负方向阵列数量 m_ObjComponentMgr.m_ArrayYcntZ = m_ArrayYcntZ;//Y 正方向阵列数量 m_ObjComponentMgr.m_ArrayYcntF = m_ArrayYcntF;//Y 负方向阵列数量 m_ObjComponentMgr.m_OffsetX = m_OffsetX;//X 方向间隔 m_ObjComponentMgr.m_OffsetY = m_OffsetY;//Y 方向间隔 //限定元件的范围 m_ObjComponentMgr.m_bUseArea = m_bUseArea;//是否使用限定范围 m_ObjComponentMgr.m_bRectArea = m_bRectArea;//true 为矩形范围,false 为圆形范围 m_ObjComponentMgr.m_bAutoArray = m_bAutoArr; m_ObjComponentMgr.m_AutoArrayGap = m_AutoArrOffset; m_ObjComponentMgr.m_AreaBasePt = m_AreaBasePt;//范围的基准点 m_ObjComponentMgr.m_AreaSize = m_AreaSize;//矩形范围的尺寸 m_ObjComponentMgr.m_AreaRadius = m_AreaRadius;//圆形范围的直径 //阵列元件 m_ObjComponentMgr.Array(); GetCurViewPtr()->RefreshView(); OnOK(); } void CDlgObjComponentArr::OnBnClickedCancel() { m_ObjComponentMgr = m_ObjComponentMgrBak;//恢复 CDialogEx::OnCancel(); } #endif