#include "stdafx.h" #include "LaiPuLaser.h" #include "afxdialogex.h" #include "DlgGraphEdit.h" #include "PropertieMgr.h" #include "ModuleDeviceMgr.h" #include "ModuleDrawMgr.h" #include "GlobalFunction.h" #include "ObjSortMgr.h" #include "AuthorityMgr.h" #include "GlobalDrawMgr.h" #include "LogMgr.h" #include "WorkFileMgr.h" #include "MsgBox.h" #include "DlgChildRecipe.h" #include "LanguageMgr.h" #include "DlgDeviceMain.h" #include "Layer.h" #include "DlgMapHistory.h" #define OPEN_MAIN_DLG_TIMER 1 #define OPEN_MAIN_DLG_TIMER_DELAY 300 IMPLEMENT_DYNAMIC(CDlgGraphEdit, CMyDlgView) BEGIN_MESSAGE_MAP(CDlgGraphEdit, CMyDlgView) ON_WM_TIMER() ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED,OnPropertyChanged) ON_BN_CLICKED(IDC_PER_OBJ, OnBnClickedPerObjBtn) ON_BN_CLICKED(IDC_NEXT_OBJ,OnBnClickedNextObjBtn) ON_BN_CLICKED(IDC_FRIST_OBJ,OnBnClickedFristObjBtn) ON_BN_CLICKED(IDC_SHOW_OBJ_IDX,OnBnClickedShowObjIdx) ON_BN_CLICKED(IDC_INSERT,OnBnClickedInsertBtn) ON_BN_CLICKED(IDC_REVERSE_ORDER,OnBnClickedReverseOrderBtn) ON_BN_CLICKED(IDC_OBJ_SORT_BTN,OnBnClickedObjSortBtn) ON_BN_CLICKED(ID_OPEN_OBJ_BTN, OnBnClickedOpenObjBtn) ON_BN_CLICKED(ID_SAVE_OBJ_BTN, OnBnClickedSaveObjBtn) ON_BN_CLICKED(NEW_ZOOM_FULL_BTN, &CDlgGraphEdit::OnBnClickedZoomFullBtn) ON_BN_CLICKED(NEW_ZOOM_IN_BTN, &CDlgGraphEdit::OnBnClickedZoomInBtn) ON_BN_CLICKED(NEW_ZOOM_OUT_BTN, &CDlgGraphEdit::OnBnClickedZoomOutBtn) ON_STN_CLICKED(NEW_OPEN_MAIN_DLG_BTN, &CDlgGraphEdit::OnStnClickedOpenMainDlg) ON_BN_CLICKED(IDC_CREAT_AREA_BTN, &CDlgGraphEdit::OnBnClickedCreatAreaBtn) ON_BN_CLICKED(ID_OPEN_TXT_BTN, &CDlgGraphEdit::OnBnClickedOpenTxtBtn) ON_BN_CLICKED(ID_SAVE_TXT_BTN, &CDlgGraphEdit::OnBnClickedSaveTxtBtn) ON_BN_CLICKED(IDC_SHOW_OBJ_PT_COORD, &CDlgGraphEdit::OnBnClickedShowObjPtCoord) ON_BN_CLICKED(NEW_OPEN_MAP_HISTORY_BTN, &CDlgGraphEdit::OnBnClickedOpenMapHistoryBtn) END_MESSAGE_MAP() CDlgGraphEdit::CDlgGraphEdit(CWnd* pParent /*=NULL*/) : CMyDlgView(CDlgGraphEdit::IDD, pParent) { m_InsertIdx = 1;//插入位置的索引值 m_AreaCrossPtRange = 10;//用于创建扫描区域的交叉点范围 m_CreatAreaGap = 2;//生成区域的间隔mm } CDlgGraphEdit::~CDlgGraphEdit() { } void CDlgGraphEdit::DoDataExchange(CDataExchange* pDX) { CMyDlgView::DoDataExchange(pDX); DDX_Control(pDX, IDC_SCAN_DIR_COMBO2, m_ObjSortDirComb); DDX_Control(pDX, IDC_PROPERTY_OBJ, m_ObjPropList); DDX_Text(pDX, IDC_INSERT_IDX, m_InsertIdx); DDX_Text(pDX, IDC_CROSS_PT_RANGE, m_AreaCrossPtRange); DDX_Text(pDX, IDC_CREAT_AREA_GAP, m_CreatAreaGap); } BOOL CDlgGraphEdit::OnInitDialog() { CMyDlgView::OnInitDialog(); //设置字体 ::DeleteObject(m_fntPropList.Detach()); LOGFONT lf; afxGlobalData.fontRegular.GetLogFont(&lf); NONCLIENTMETRICS info; info.cbSize = sizeof(info); afxGlobalData.GetNonClientMetrics(info); lf.lfHeight = info.lfMenuFont.lfHeight; lf.lfWeight = info.lfMenuFont.lfWeight; lf.lfItalic = info.lfMenuFont.lfItalic; m_fntPropList.CreateFontIndirect(&lf); InitObjSortDirComb(); InitPropList(m_ObjPropList); ((CButton *)GetDlgItem(IDC_SHOW_OBJ_PT_COORD))->SetCheck(TRUE); SetTimer(OPEN_MAIN_DLG_TIMER,OPEN_MAIN_DLG_TIMER_DELAY,NULL); UpdateData(FALSE); return TRUE; } void CDlgGraphEdit::OnTimer(UINT nIDEvent) { if(nIDEvent == OPEN_MAIN_DLG_TIMER) { KillTimer(OPEN_MAIN_DLG_TIMER); OnStnClickedOpenMainDlg(); } CDialog::OnTimer(nIDEvent); } void CDlgGraphEdit::ShowAllItem() { GetDlgItem(ID_OPEN_OBJ_BTN)->ShowWindow(SW_SHOW); GetDlgItem(ID_SAVE_OBJ_BTN)->ShowWindow(SW_SHOW); GetDlgItem(IDC_SHOW_OBJ_IDX)->ShowWindow(SW_SHOW); GetDlgItem(IDC_FRIST_OBJ)->ShowWindow(SW_SHOW); GetDlgItem(IDC_PER_OBJ)->ShowWindow(SW_SHOW); GetDlgItem(IDC_NEXT_OBJ)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC_INSERT_IDX)->ShowWindow(SW_SHOW); GetDlgItem(IDC_INSERT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_REVERSE_ORDER)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC_SORT_DIR)->ShowWindow(SW_SHOW); GetDlgItem(IDC_OBJ_SORT_BTN)->ShowWindow(SW_SHOW); GetDlgItem(NEW_ZOOM_IN_BTN)->ShowWindow(SW_SHOW); GetDlgItem(NEW_ZOOM_OUT_BTN)->ShowWindow(SW_SHOW); GetDlgItem(NEW_ZOOM_FULL_BTN)->ShowWindow(SW_SHOW); GetDlgItem(NEW_OPEN_MAIN_DLG_BTN)->ShowWindow(SW_SHOW); GetDlgItem(IDC_PROPERTY_OBJ)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC_OBJ_PAR)->ShowWindow(SW_SHOW); GetDlgItem(IDC_GROUP_S_SORT)->ShowWindow(SW_SHOW); GetDlgItem(IDC_SCAN_DIR_COMBO2)->ShowWindow(SW_SHOW); GetDlgItem(IDC_INSERT_IDX)->ShowWindow(SW_SHOW); GetDlgItem(IDC_GROUP_SORT_ADJUST)->ShowWindow(SW_SHOW); gDraw->SetbObjEditMode(true); } void CDlgGraphEdit::UpdateLanguageTxt() { } #if 1 void CDlgGraphEdit::InitPropList(CMFCPropertyGridCtrl &PropertyGridCtrl) { PropertyGridCtrl.SetFont(&m_fntPropList); PropertyGridCtrl.SetVSDotNetLook(); HDITEM item; item.cxy=220;//第一列的宽度 item.mask=HDI_WIDTH; PropertyGridCtrl.GetHeaderCtrl().SetItem(0, new HDITEM(item)); } //属性改变的消息响应 LRESULT CDlgGraphEdit::OnPropertyChanged(WPARAM,LPARAM lParam) { gDrawPropertieMgr.OnPropertyChanged(lParam); return 0; } //更新图形属性列表 void CDlgGraphEdit::UpdateObjPropList() { m_ObjPropList.RemoveAll(); gDrawPropertieMgr.DelAllPropertie(); gModuleDrawMgr.InsertModuleGridProperty(0,m_ObjPropList); //重新调整布局 m_ObjPropList.AdjustLayout(); } #endif #if 1 void CDlgGraphEdit::InitObjSortDirComb() { int idx = 0; m_ObjSortDirComb.InsertString(idx++,"从左到右"); m_ObjSortDirComb.InsertString(idx++,"从右到左"); m_ObjSortDirComb.InsertString(idx++,"从上到下"); m_ObjSortDirComb.InsertString(idx++,"从下到上"); m_ObjSortDirComb.SetCurSel(0); } //选择第一个obj void CDlgGraphEdit::OnBnClickedFristObjBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedFristObjBtn"); CLayer &layer = gLayer; layer.SelFirstObj(); } void CDlgGraphEdit::OnBnClickedPerObjBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedPerObjBtn"); CLayer &layer = gLayer; layer.SelborderObj(false); } void CDlgGraphEdit::OnBnClickedNextObjBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedNextObjBtn"); CLayer &layer = gLayer; layer.SelborderObj(true); } //是否显示对象顺序 void CDlgGraphEdit::OnBnClickedShowObjIdx() { gLayer.SetbShowObjIdx(((CButton*)GetDlgItem(IDC_SHOW_OBJ_IDX))->GetCheck()); GetCurViewPtr()->RefreshView(); } //插入到位置 void CDlgGraphEdit::OnBnClickedInsertBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedInsertBtn"); if(!UpdateData(TRUE)) return; CLayer &layer = gLayer; CObjContainer &ObjContainer = layer.GetObjContainer(); int SelObjCnt = ObjContainer.GetSelObjCnt(); layer.SelectedObjInsertToIdx(m_InsertIdx); m_InsertIdx += SelObjCnt; UpdateData(FALSE); } //逆序 void CDlgGraphEdit::OnBnClickedReverseOrderBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedReverseOrderBtn"); CLayer &layer = gLayer; layer.ReverseSelObj(); } //S 形排序 void CDlgGraphEdit::OnBnClickedObjSortBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedObjSortBtn"); int SortDirIdx = m_ObjSortDirComb.GetCurSel();//扫描方向 DIRECTION SortDir; switch(SortDirIdx) { case 0://从左到右 SortDir = _DIR_R; break; case 1://从右到左 SortDir = _DIR_L; break; case 2://从上到下 SortDir = _DIR_D; break; case 3://从下到上 SortDir = _DIR_U; break; default: return; } CObjSortMgr ObjSortMgr; ObjSortMgr.SortObjByDir(SortDir); GetCurViewPtr()->RefreshView(); } #endif #if 1 void CDlgGraphEdit::OnBnClickedOpenObjBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedOpenObjBtn"); CWorkFileMgr WorkFileMgr; WorkFileMgr.OpenObjFile(); } void CDlgGraphEdit::OnBnClickedSaveObjBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedSaveObjBtn"); CWorkFileMgr WorkFileMgr; WorkFileMgr.SaveObjFile(); } void CDlgGraphEdit::OnBnClickedOpenTxtBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedOpenTxtBtn"); CWorkFileMgr WorkFileMgr; WorkFileMgr.OpenObjTxtFile(); } void CDlgGraphEdit::OnBnClickedSaveTxtBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedSaveTxtBtn"); CWorkFileMgr WorkFileMgr; WorkFileMgr.SaveObjTxtFile(); } #endif #if 1 void CDlgGraphEdit::OnBnClickedZoomFullBtn() { m_pView->DoZoomFull(); } void CDlgGraphEdit::OnBnClickedZoomInBtn() { m_pView->OnZoomIn(); } void CDlgGraphEdit::OnBnClickedZoomOutBtn() { m_pView->OnZoomOut(); } #endif #define MAIN_DLG_SIZE_Y 1050 void CDlgGraphEdit::OnStnClickedOpenMainDlg() { if(gDlgDeviceMain) { gDraw->SetbObjEditMode(false);//关闭编辑模式 gDlgDeviceMain->ShowWindow(SW_SHOW); //全屏显示(会影响弹出对话框的位置) gDlgDeviceMain->MoveWindow(CRect(0,0,1950,MAIN_DLG_SIZE_Y)); } } void CDlgGraphEdit::OnBnClickedCreatAreaBtn() { gLogMgr->WriteDebugLog("Func---->OnBnClickedCreatAreaBtn"); UpdateData(TRUE); if(m_AreaCrossPtRange<1) { CMsgBox MsgBox; MsgBox.Show("识别范围不能小于1"); return; } gLayer.SetAreaCrossPtRange(m_AreaCrossPtRange); gLayer.QuickCreatScanArea(m_CreatAreaGap); } void CDlgGraphEdit::OnBnClickedShowObjPtCoord() { gLayer.SetbShowObjPtCoord(((CButton*)GetDlgItem(IDC_SHOW_OBJ_PT_COORD))->GetCheck()); GetCurViewPtr()->RefreshView(); } void CDlgGraphEdit::OnBnClickedOpenMapHistoryBtn() { CDlgMapHistory dlg; dlg.DoModal(); }