drawView.h
上传用户:y440e3
上传日期:2010-03-08
资源大小:200k
文件大小:7k
源码类别:

GIS编程

开发平台:

Visual C++

  1. // DrawView.h : interface of the CDrawView class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_DrawVIEW_H__0EFFC630_8953_11D2_AE7B_444553540000__INCLUDED_)
  5. #define AFX_DrawVIEW_H__0EFFC630_8953_11D2_AE7B_444553540000__INCLUDED_
  6. #if _MSC_VER >= 1000
  7. #pragma once
  8. #endif // _MSC_VER >= 1000
  9. class CDrawCntrItem;
  10. class CText;
  11. class TextWriteDlg;
  12. class CDrawView : public CView
  13. {
  14. protected: // create from serialization only
  15. CDrawView();
  16. DECLARE_DYNCREATE(CDrawView)
  17. protected:
  18.     float xLeft,xRight,yTop,yBottom,xPage,yPage,xWide,yHigh;
  19.     int   nPageX,nPageY;
  20. int m_MapMode;
  21. int m_hScreen1,m_wScreen1; //当前视图的高度和宽度
  22. CWinThread* m_PDrawThread;
  23. int nHScrollMax,nHScrollPos,nVScrollMax,nVScrollPos;
  24. int nXPage,nXLine,nYPage,nYLine,nScrollMin;
  25. float m_xStart,m_yStart,blc; //绘制图形时的起点坐标和比例尺
  26. int m_hScreen,m_wScreen; //当前视图的高度和宽度
  27. // int m_CurrentScreen; //当前屏幕的序号
  28. // int m_MaxScreen; //最多能够有的屏幕数
  29. int m_DrawCurrent; //当前正进行操作的序号
  30. int PushNumb; //记录按下鼠标的次数
  31. ScreenStruct* p_Screen; //记录屏幕参数的结构指针
  32. PointStruct *PointXyz; //记录连续直线顶点坐标的数组指针
  33. CPoint mPointOrign,mPointOrign1,mPointOld;//记录鼠标移动时的鼠标点顶坐标
  34. short m_pColor; //当前画笔颜色的序号
  35. short m_bColor; //当前底色的序号
  36. short m_brColor; //当前画刷颜色的序号
  37. short m_LineWide; //当前直线宽度(像素)
  38. short m_LineType; //当前线型
  39. short m_Layer; //当前层
  40. BOOL b_RunFirst; //是否第一次运行
  41. BOOL DrawArcYes;
  42. //用来存储圆或圆弧的参数
  43. float m_CircleX,m_CircleY,m_CircleR,m_Angle1,m_Angle2;
  44. //用来存储标注文字的参数
  45. float m_FontHeight,m_FontWide,m_FontBetween,m_TextAngle,m_FontAngle;
  46. float m_TextX,m_TextY;
  47. CString m_TextString; //存储标注的文字
  48. // Attributes
  49. CText *m_Text1; //声明一个文字类
  50. CArc m_Arc1; //声明一个圆弧类指针
  51. GraphSelectStruct GraphUndo[4]; //声明一个存储恢复信息的数组
  52. void InitVScroll();  //设定纵向滚动条
  53. void InitHScroll();  //设定横向滚动条
  54. public:
  55. CLinkDataSet* m_pLinkSet;
  56. TextWriteDlg *pTextDlg; //标注文字的对话框的指针
  57. CDrawDoc* GetDocument(); //得到文档类的指针
  58. // TODO: replace this selection mechanism with one appropriate to your app.
  59. CDrawCntrItem* m_pSelection;
  60. public:
  61. void PutTracker(CDrawCntrItem* pItem,CRectTracker* pTracker);
  62. void DPtoVP(float x,float y,int *X,int *Y);
  63. void VPtoDP(int x,int y,float *X,float *Y);
  64. int DLtoVL(float l);
  65. float VLtoDL(int l);
  66. protected:
  67. void DrawBack(CDC* pDC); //用底色绘制屏幕
  68. BOOL jsarc(CPoint p1,CPoint p2,CPoint p3,float *CircleX,float *CircleY,
  69. float *CircleR,float *Angle1,float *Angle2);//由三个点计算圆弧参数
  70. void Delete(CDC* pDC,int Lb,int Index); //删除图形操作
  71. BOOL RectCross(float *x1,float *y1,float *x2,float *y2,float xx1,
  72. float yy1,float xx2,float yy2); //计算两个矩形的交面
  73. void ReDrawRect(float X1,float Y1,float X2,float Y2); //重新绘制视图的区域
  74. // Operations
  75. public:
  76. // UINT Draw(CDC *pDC);
  77. // Overrides
  78. // ClassWizard generated virtual function overrides
  79. //{{AFX_VIRTUAL(CDrawView)
  80. public:
  81. virtual void OnDraw(CDC* pDC);  // overridden to draw this view
  82. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  83. virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
  84. protected:
  85. virtual void OnInitialUpdate(); // called first time after construct
  86. virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
  87. virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
  88. virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
  89. virtual BOOL IsSelected(const CObject* pDocItem) const;// Container support
  90. virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);
  91. virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
  92. //}}AFX_VIRTUAL
  93. // Implementation
  94. public:
  95. LPVOID bmpdata;
  96. HPALETTE hpal;
  97. HBITMAP bhm_ddb;
  98. int nPalate;
  99. void DrawBmp1(CDC* pDC,int x,int y,int wide,int high,UINT idCBitmap,int DrawMode);
  100. void DrawBmp2(CDC* pDC,int x,int y,int wide,int high,char *fName,int DrawMode);
  101. void DrawBmp3(CDC* pDC,int x,int y,int wide,int high,char *fName,int DrawMode);
  102. void DIBtoDDB(HDC hdc);
  103. void make_palette();
  104. virtual ~CDrawView();
  105. #ifdef _DEBUG
  106. virtual void AssertValid() const;
  107. virtual void Dump(CDumpContext& dc) const;
  108. #endif
  109. protected:
  110. // Generated message map functions
  111. protected:
  112. //{{AFX_MSG(CDrawView)
  113. afx_msg void OnDestroy();
  114. afx_msg void OnSetFocus(CWnd* pOldWnd);
  115. afx_msg void OnSize(UINT nType, int cx, int cy);//视图大小改变时调用
  116. afx_msg void OnInsertObject();
  117. afx_msg void OnCancelEditCntr();
  118. afx_msg void OnDrawArc(); //绘制圆弧
  119. afx_msg void OnDrawCircle(); //绘制圆
  120. afx_msg void OnDrawCircle1(); //绘制圆形区域(填充圆)
  121. afx_msg void OnDrawLine(); //绘制直线
  122. afx_msg void OnDrawPline(); //绘制连续直线
  123. afx_msg void OnDrawRgn(); //绘制多边形区域
  124. afx_msg void OnDrawText(); //标注文字
  125. afx_msg void DrawText();//在标注文字对话框中填入文字时被调用在屏幕上写文字
  126. afx_msg void DrawTextOnOk(); //按‘确定'退出标注文字对话框时被调用
  127. afx_msg void DrawTextOnCancel();//按‘放弃'退出标注文字对话框时被调用
  128. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//按下鼠标左键时调用
  129. afx_msg void OnMouseMove(UINT nFlags, CPoint point);  //鼠标移动时调用
  130. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);//按下鼠标右键时调用
  131. afx_msg void OnGraphRedraw(); //图形重画
  132. afx_msg void OnGraphZoom(); //图形放大
  133. afx_msg void OnGraphPan(); //图形移动
  134. afx_msg void OnGraphUp(); //重画上屏图形
  135. afx_msg void OnGraphFirst(); //重画首屏图形
  136. afx_msg void OnGraphAll(); //重画全屏
  137. afx_msg void OnSelectMouse(); //运行鼠标选中图形
  138. afx_msg void OnSelectClear(); //放弃选中图形
  139. afx_msg void OnSelectDelete(); //删除选中图形
  140. afx_msg void OnEditCut(); //裁剪选中图形进裁剪板
  141. afx_msg void OnEditPaste(); //粘贴图形
  142. afx_msg void OnEditUndo(); //逆向放弃操作
  143. afx_msg void OnEditCopy(); //拷贝选中图形进裁剪板
  144. afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  145. afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  146. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  147. afx_msg void OnBitmapCut();
  148. afx_msg void OnBitmapPaste();
  149. afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI);
  150. afx_msg void OnGraphDraw();
  151. afx_msg void OnChangeDlgEdit();
  152. afx_msg void OnChangeDlgCom();
  153. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  154. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  155. afx_msg void OnDataSeacher();
  156. //}}AFX_MSG
  157. DECLARE_MESSAGE_MAP()
  158. };
  159. #ifndef _DEBUG  // debug version in DrawView.cpp
  160. inline CDrawDoc* CDrawView::GetDocument()
  161.    { return (CDrawDoc*)m_pDocument; }
  162. #endif
  163. /////////////////////////////////////////////////////////////////////////////
  164. //{{AFX_INSERT_LOCATION}}
  165. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  166. #endif // !defined(AFX_DrawVIEW_H__0EFFC630_8953_11D2_AE7B_444553540000__INCLUDED_)