// LaiPuLaserView.h : CLaiPuLaserView 类的接口 // #pragma once #include "LaiPuLaserDoc.h" #include "EnumDirection.h" #include "GlobalDefine.h" #if 1//view 缩放 #define VIEW_SCALE1 (0.000097) #define VIEW_SCALE2 (0.000121) #define VIEW_SCALE3 (0.000151) #define VIEW_SCALE4 (0.000189) #define VIEW_SCALE5 (0.000236) #define VIEW_SCALE6 (0.000295) #define VIEW_SCALE7 (0.000369) #define VIEW_SCALE8 (0.000461) #define VIEW_SCALE9 (0.000576) #define VIEW_SCALE10 (0.000721) #define VIEW_SCALE11 (0.000901) #define VIEW_SCALE12 (0.001126) #define VIEW_SCALE13 (0.001407) #define VIEW_SCALE14 (0.001759) #define VIEW_SCALE15 (0.002199) #define VIEW_SCALE16 (0.002749) #define VIEW_SCALE17 (0.003436) #define VIEW_SCALE18 (0.004295) #define VIEW_SCALE19 (0.005369) #define VIEW_SCALE20 (0.006711) #define VIEW_SCALE21 (0.008389) #define VIEW_SCALE22 (0.010486) #define VIEW_SCALE23 (0.013107) #define VIEW_SCALE24 (0.016384) #define VIEW_SCALE25 (0.020480) #define VIEW_SCALE26 (0.025600) #define VIEW_SCALE27 (0.032001) #define VIEW_SCALE28 (0.040001) #define VIEW_SCALE29 (0.050001) #define VIEW_SCALE30 (0.062501) #define VIEW_SCALE31 (0.078126) #define VIEW_SCALE32 (0.097658) #define VIEW_SCALE33 (0.122072) #define VIEW_SCALE34 (0.152590) #define VIEW_SCALE35 (0.190738) #define VIEW_SCALE36 (0.238423) #define VIEW_SCALE37 (0.298028) #define VIEW_SCALE38 (0.372535) #define VIEW_SCALE39 (0.465669) #define VIEW_SCALE40 (0.582086) #define VIEW_SCALE41 (0.727608) #define VIEW_SCALE42 (0.909510) #define VIEW_SCALE43 (1.136887) #define VIEW_SCALE44 (1.421109) #define VIEW_SCALE45 (1.776387) #define VIEW_SCALE46 (2.220483) #define VIEW_SCALE47 (2.775604) #define VIEW_SCALE48 (3.469505) #define DEFAULT_SCALE VIEW_SCALE17 //初始view的缩放比例 #define SCALE_ONE_TIME (1.25) //每次缩放倍数 #define MAX_SCALE (3.0) //最大放大倍数 #define MIN_SCALE VIEW_SCALE1 //最小缩小倍数 #endif class CLaiPuLaserView : public CScrollView { protected: // 仅从序列化创建 CLaiPuLaserView(); DECLARE_DYNCREATE(CLaiPuLaserView) // 重写 public: virtual void OnDraw(CDC* pDC); // 重写以绘制该视图 virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual void OnInitialUpdate(); virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL); void LimitCursor(); void ReleseLimitCursor(); HDC GetHDC(); CDC* GetCDC(); afx_msg BOOL PreTranslateMessage(MSG* pMsg); protected: virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); // 实现 public: virtual ~CLaiPuLaserView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif // 操作 public: CLaiPuLaserDoc* GetDocument() const; int GetCurrScaleVal(int val);//单位是像素 double GetCurrScaleVal(double val);//单位:毫米 void RefreshView(); void OnEscape(); void MoveObjToPtByDir(DIRECTION dir,double Dis); afx_msg BOOL OnMouseWheel(UINT nFlags,short zDelta,CPoint pt); double GetCurZoomScale(){return m_zoomScale;}; afx_msg void OnZoomIn(); afx_msg void OnZoomOut(); void SetCursorStyle(MOUSE_TOOL type); int DoZoomFull(); void RectView(double scale,Dbxy pt = Dbxy(0,0)); void NotEraseBkgndOneTime(){m_bEraseBkgnd = false;}; void MoveSelObjToCenter(); void SetbEraseBkgnd(bool b){m_bEraseBkgnd2 = b;} afx_msg BOOL OnEraseBkgnd(CDC* pDC);//背景颜色 private: void OnArrowDir(DIRECTION dir); void OnSpace(); void OnCtrl(); private: bool m_bFirstIn;//是否第一次进入 bool m_bCtrl;//ctrl 键是否按下 bool m_bEraseBkgnd;//是否重绘背景色(这个标志位每次会自动恢复) bool m_bEraseBkgnd2;//是否重绘背景色(不会自动恢复) private: #if 1//view 缩放用 void SetZoomSizes(SIZE sizeTotal, const SIZE& sizePage = sizeDefault, const SIZE& sizeLine = sizeDefault); void CenterOnLogicalPoint(CPoint ptCenter); CPoint GetLogicalCenterPoint(void); // Zooming functions int DoZoomIn(CPoint CenterPoint); int DoZoomOut(CPoint CenterPoint); // Override this to get notified of zoom scale change virtual void NotifyZoom(void) {}; // Zooming utility functions void ViewDPtoLP (LPPOINT lpPoints, int nCount = 1); void ViewLPtoDP (LPPOINT lpPoints, int nCount = 1); void ClientToDevice(CPoint &point); void NormalizeRect(CRect &rect); void PersistRatio(const CSize &orig, CSize &dest, CPoint &remainder); void CalcBars(void); CRect m_ptDragRect; CSize m_origTotalDev; // Origional total size in device units CSize m_origPageDev; // Origional per page scroll size in device units CSize m_origLineDev; // Origional per line scroll size in device units double m_zoomScale;//当前缩放比例 #endif CPoint GetScreenCenterPoint(); // 生成的消息映射函数 protected: afx_msg void OnFilePrintPreview(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnRButtonUp(UINT nFlags, CPoint point); afx_msg void OnMButtonDown(UINT nFlags, CPoint point); afx_msg void OnMButtonUp(UINT nFlags, CPoint point); afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); afx_msg void OnToolPoint(); afx_msg void OnUndo(); afx_msg void OnArray(); afx_msg void OnCut(); afx_msg void OnReverse(); afx_msg void OnAddNode(); afx_msg void OnDelNode(); afx_msg void OnBreak(); afx_msg void OnChamfer(); afx_msg void OnFillet(); afx_msg void OnExplode(); afx_msg void OnMeasure(); afx_msg void OnJoin(); afx_msg void OnUpdateUndo(CCmdUI* pCmdUI); afx_msg void OnRedo(); afx_msg void OnUpdateRedo(CCmdUI* pCmdUI); afx_msg void OnToolRect(); afx_msg void OnUpdateToolRect(CCmdUI* pCmdUI); afx_msg void OnToolOnePoint(); afx_msg void OnUpdateToolOnePoint(CCmdUI* pCmdUI); afx_msg void OnToolLaserCoord(); afx_msg void OnUpdateToolLaserCoord(CCmdUI* pCmdUI); afx_msg void OnToolPolygon(); afx_msg void OnUpdateToolPolygon(CCmdUI* pCmdUI); afx_msg void OnToolRotato(); afx_msg void OnUpdateObjOperate(CCmdUI* pCmdUI); afx_msg void OnToolCircle(); afx_msg void OnUpdateToolCircle(CCmdUI* pCmdUI); afx_msg void OnToolLine(); afx_msg void OnUpdateToolLine(CCmdUI* pCmdUI); afx_msg void OnToolPline(); afx_msg void OnUpdateToolPline(CCmdUI* pCmdUI); afx_msg void OnSelAllObj(); afx_msg void OnRevSelObj(); afx_msg void OnMoveToCenter(); afx_msg void OnObjFill(); afx_msg void OnDelSelObj(); afx_msg void OnWorkSpaceView() ; afx_msg void OnMirrorH(); afx_msg void OnMirrorV(); afx_msg void OnRotato90L(); afx_msg void OnRotato90R(); afx_msg void OnCopy(); afx_msg void OnMove(); DECLARE_MESSAGE_MAP() }; #ifndef _DEBUG // LaiPuLaserView.cpp 中的调试版本 inline CLaiPuLaserDoc* CLaiPuLaserView::GetDocument() const { return reinterpret_cast(m_pDocument); } #endif extern CLaiPuLaserView* m_pView;