📄 drawvw.h
字号:
// drawvw.h : interface of the CDrawView class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1997 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
//**************
#include "DWell.h"
#include "DLayer.h"
#include "ListWell.h"
#include "ListWellPM.h"
#include "QKDYXCFZ.h"
#include "CoolTabCtrl.h"
#include "ADOConn.h"
#include "SideLine.h"
//#include <afxtempl.h>
// Hints for UpdateAllViews/OnUpdate
#include "ADOConn.h" // Added by ClassView
#define HINT_UPDATE_WINDOW 0
#define HINT_UPDATE_DRAWOBJ 1
#define HINT_UPDATE_SELECTION 2
#define HINT_DELETE_SELECTION 3
#define HINT_UPDATE_OLE_ITEMS 4
//连通图定义
#define LINK_WELL_WIDTH 50 //井的宽度
#define LINK_LAYER_SPACE 3 //层间距
#define LINK_LAYER_THICK_UNIT 0.1 //层厚度单位
#define LINK_LAYER_THICK_NUM 1 //层厚度单位高度
//颜色
const COLORREF m_ColorBlack = RGB(0,0,0);
const COLORREF m_ColorRed = RGB(255,0,0); // 油层有效
const COLORREF m_ColorPink = RGB(255,68,68); // 油层砂岩
const COLORREF m_ColorBlue = RGB(0,0,255); // 水砂
//const COLORREF m_ColorYellow = RGB(255,255,0); //
const COLORREF m_ColorGreen = RGB(0,255,0); // 同层有效
const COLORREF m_ColorLightGreen = RGB(0,128,0); // 同层砂岩
const COLORREF m_ColorFault = RGB(100,255,0); //
#define DEFAULT_BITMAP_FILE_EXTENSION _T("bmp")
#define DEFAULT_BITMAP_FILE_NAME _T("My Drawing")
/*
//第一次选择井的坐标范围 及 画布宽度与高度
typedef struct
{
float fLeft; //最小X
float fRight; //最大X
float fTop; //最小Y
float fBottom; //最大Y
int iOldWidth; //初始画布宽
int iOldHeight; //初始画布高
int iNewWidth; //新的宽度
int iNewHeight; //新的高度
int iOffsetX; //X偏移
int iOffsetY; //Y偏移
} tagDrawData;*/
//画图的状态 新画图0、移动图1、添加井到现有图中2
/*enum DrawState
{
newpic,
movepic,
addpic
} ;
*/
class CDrawObj;
//friend class CCoolTabCtrl ;
class CDrawView : public CScrollView
{
protected: // create from serialization only
CDrawView();
DECLARE_DYNCREATE(CDrawView)
// Attributes
public:
CDrawDoc* GetDocument()
{ return (CDrawDoc*)m_pDocument; }
void SetPageSize(CSize size);
CRect GetInitialPosition();
// CBitmap bitmap;
// CString m_FileName;
// Operations
public:
void DocToClient(CRect& rect);
void DocToClient(CPoint& point);
void ClientToDoc(CPoint& point);
void ClientToDoc(CRect& rect);
void Select(CDrawObj* pObj, BOOL bAdd = FALSE);
void SelectWithinRect(CRect rect, BOOL bAdd = FALSE);
void Deselect(CDrawObj* pObj);
void CloneSelection();
void UpdateActiveItem();
void InvalObj(CDrawObj* pObj);
void Remove(CDrawObj* pObj);
void PasteNative(COleDataObject& dataObject);
void PasteEmbedded(COleDataObject& dataObject, CPoint point );
// Implementation
protected:
// added for drop-target functionality
int s_TotalCols,s_TotalRows,s_PageHeight,s_PageWidth;
COleDropTarget m_dropTarget; // for drop target functionality
CPoint m_dragPoint; // current position
CSize m_dragSize; // size of dragged object
CSize m_dragOffset; // offset between pt and drag object corner
/*
int m_CoorLeft; //LeftTop 最小X
int m_CoorRight; //RightBottom 最大X
int m_CoorTop; //LeftTop 最小Y
int m_CoorBottom; //RightBottom 最大Y
*/
DROPEFFECT m_prevDropEffect;
BOOL m_bDragDataAcceptable;
BOOL GetObjectInfo(COleDataObject* pDataObject,
CSize* pSize, CSize* pOffset);
// end of drop-target additions
public:
virtual ~CDrawView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo); // overriden to record time/date
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual void OnActivateView(BOOL bActivate, CView* pActiveView, CView* pDeactiveView);
virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll);
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
void DrawGrid(CDC* pDC);
// added for drop-target functionality
virtual BOOL OnDrop(COleDataObject* pDataObject,
DROPEFFECT dropEffect, CPoint point);
virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject,
DWORD grfKeyState, CPoint point);
virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject,
DWORD grfKeyState, CPoint point);
virtual void OnDragLeave();
static CLIPFORMAT m_cfObjectDescriptor;
// end of drop-target additions
static CLIPFORMAT m_cfDraw; // custom clipboard format
CDrawObjList m_selection;
BOOL m_bGrid;
COLORREF m_gridColor;
BOOL m_bActive; // is the view active?
protected:
virtual void OnInitialUpdate(); // called first time after construct
// Printing support
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// OLE Container support
public:
BOOL DrawFreeWellLayer(CSize psize,CDWell *pCWell);
BOOL DrawFreeWellLink(char pType);
void SetupArrayWell();
void ReSetCanvas();
BOOL DrawWell2(const int pX,const int pY,const int pTag,CDWell *pCWell);
BOOL DrawLink2(CString pLink2xch,CRect pRect,COLORREF pColor,const CString pParentNO,const CString pWellNO,const CString pXch);
BOOL DrawWell2(const int pTag, CDWell *pCWell);
void RemoveAllObject(const char pDestory='N');
void DestoryObject(CDrawObj *pObj);
BOOL RemoveWellLayerArray(CDrawObj *pObj,const char pFlag);
BOOL DrawFault(CDWell *pCWell);
void SetupWellLink(CString pWellNO,const char pFirstLink = 'N');
void UpdateWellLayerColor(CDrawObj* pObj,COLORREF pColor);
BOOL DrawWell(const int pTag,CDWell *pCWell);
BOOL DrawMoveWell(const CRect rect,CString pWellNO);
BOOL UpdateWellLayerInfo(CDWell* pCWell);
BOOL DrawLink(CString pLink2xch,CRect pRect,COLORREF pColor,const CString pParentNO,const CString pWellNO,const CString pXch);
BOOL DrawWellLink(const char pType);
BOOL DrawWell(const int pX,const int pY,const int pTag,CDWell *pCWell);
BOOL SetWellArray(_bstr_t pJH,_bstr_t pMainJH,_bstr_t pIndex/*,CStringArray *pJoins*/);
CPtrArray m_ArrayWell;
// CStringArray m_CArrWells;
//CPtrArray pArrCenterWLayer;
// CListWellPM* m_pDlgSWS;
CListWell* m_pDlg;
CQKDYXCFZ* m_pDlgSB;
UINT m_nWellDistance;
long m_CanvasWidth; //定义【画布】大小 宽 与 高
long m_CanvasHeight ; //
float m_MapLeft; //LeftTop 数据库中最小X
float m_MapRight; //RightBottom 数据库中最大X
float m_MapTop; //LeftTop 数据库中最小Y
float m_MapBottom; //RightBottom 数据库中最大Y
int m_NewWidth; //新的宽度
int m_NewHeight; //新的高度
int m_OffsetX; //X偏移
int m_OffsetY; //Y偏移
CRect m_CanvasRect;
CRect m_NewRect;
COLORREF m_ColorOil; //三种 油层--红 油水同层--黄 水层--兰色
COLORREF m_ColorOWSame;
COLORREF m_ColorWater;
CTypedPtrList<CObList,CSideLine*> m_SideLineList;
virtual BOOL IsSelected(const CObject* pDocItem) const;
// Generated message map functions
protected:
BOOL ArrayRemove(const CString pWellNO);
void ArrayDestory();
//{{AFX_MSG(CDrawView)
afx_msg void OnInsertObject();
afx_msg void OnCancelEdit();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnDrawSelect();
afx_msg void OnDrawRoundRect();
afx_msg void OnDrawRect();
afx_msg void OnDrawLine();
afx_msg void OnDrawEllipse();
afx_msg void OnUpdateDrawEllipse(CCmdUI* pCmdUI);
afx_msg void OnUpdateDrawLine(CCmdUI* pCmdUI);
afx_msg void OnUpdateDrawRect(CCmdUI* pCmdUI);
afx_msg void OnUpdateDrawRoundRect(CCmdUI* pCmdUI);
afx_msg void OnUpdateDrawSelect(CCmdUI* pCmdUI);
afx_msg void OnUpdateSingleSelect(CCmdUI* pCmdUI);
afx_msg void OnEditSelectAll();
afx_msg void OnEditClear();
afx_msg void OnUpdateAnySelect(CCmdUI* pCmdUI);
afx_msg void OnDrawPolygon();
afx_msg void OnUpdateDrawPolygon(CCmdUI* pCmdUI);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnViewGrid();
afx_msg void OnUpdateViewGrid(CCmdUI* pCmdUI);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnObjectFillColor();
afx_msg void OnObjectLineColor();
afx_msg void OnObjectMoveBack();
afx_msg void OnObjectMoveForward();
afx_msg void OnObjectMoveToBack();
afx_msg void OnObjectMoveToFront();
afx_msg void OnEditCopy();
afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI);
afx_msg void OnEditCut();
afx_msg void OnUpdateEditCut(CCmdUI* pCmdUI);
afx_msg void OnEditPaste();
afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI);
afx_msg void OnFilePrint();
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnViewShowObjects();
afx_msg void OnUpdateViewShowObjects(CCmdUI* pCmdUI);
afx_msg void OnEditProperties();
afx_msg void OnUpdateEditProperties(CCmdUI* pCmdUI);
afx_msg void OnDestroy();
afx_msg void OnUpdateEditSelectAll(CCmdUI* pCmdUI);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
afx_msg void CmdMenuWell1();
afx_msg void CmdMenuLinkstruct();
afx_msg void CmdMenuDispSubLink();
afx_msg void OnUpdateMenuSublink(CCmdUI* pCmdUI);
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
afx_msg void CmdMenuJoinlayer();
afx_msg void OnUpdateMenuJoinlayer(CCmdUI* pCmdUI);
afx_msg void OnSelectZoomed();
afx_msg void OnFileSaveasBmp();
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnDrawPolyline();
afx_msg void OnUpdateDrawPolyline(CCmdUI* pCmdUI);
afx_msg void OnUpdateMenuLinkstruct(CCmdUI* pCmdUI);
afx_msg void CmdMenuFreestruct();
afx_msg void OnUpdateMenuFreestruct(CCmdUI* pCmdUI);
afx_msg void CmdMenuRemovewell();
afx_msg void OnUpdateMenuRemovewell(CCmdUI* pCmdUI);
afx_msg void CmdMenuWellsort();
afx_msg void OnUpdateMenuWellsort(CCmdUI* pCmdUI);
afx_msg void CmdMenuRemovelayer();
afx_msg void OnUpdateMenuRemovelayer(CCmdUI* pCmdUI);
afx_msg void OnFileSaveasEmf();
afx_msg void CmdMenuSandbody();
afx_msg void OnUpdateMenuSandbody(CCmdUI* pCmdUI);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
BOOL BuildSideLine();
BOOL CheckSideLine(UINT pSerialNO);
CSideLine* FindSideLine(const int pSerialNO,const CString pTag);
// BOOL CalcDWellDot(CDWell *pCWell, CDLayer* pCLayer);
// BOOL CalcDWellDot(CDWell *pCWell,CString pXCH);
// BOOL FindDWellDot(CString pWellNO,CString pXCH,CPoint* retPts);
CDLayer* FindDLayer(CPoint *ptAll,CDWell *pCWell,int *pSerialNO,CString pLayerNO);
CDWell* FindDWell(CString pWellNO);
BOOL DrawSBSideLine();
void RemoveLinkObject(const char pDestory);
BOOL ArrayLayerRemove(CString pXCH,CDWell* pCWell);
void OutMetas(CDC *pDC);
CString RetrievalFaultInfo(CString pWhere);
CString RetrievalSingleInfo(CString pWellNO);
BOOL RemoveLayerLink2NO(CDWell* pCWell,CString pLinkNO);
BOOL DrawFreeOnlyLinkOW();
BOOL DrawJoinlayer(CString strWellNO1,CString strWellNO2,CString strXCH1,CString strXCH2,CDWell* pCWell);
BOOL DrawFreeMove(CDWell* pCWell);
BOOL DrawFaultLine(int pCnt,float xy[][2]);
BOOL DrawFreeWFault();
BOOL DrawFreeWLLink();
CSize GeoToViewFree(float pX, float pY);
void SetFreeMapRange(CString pQKDY);
BOOL SetWellLayerArray(CString pQKDY,CString pXCFZMC);
BOOL SetWellBaseArray(CString pQKDY);
BOOL SetWellFaultArray(CString pQKDY);
BOOL GetDLayerLinkXCH(_bstr_t pJH,CStringArray pArrDBJH,CPtrArray *retArray);
int CheckParentRelation(_bstr_t pJH1, _bstr_t pJH2);
BOOL CheckExistInArray(CString pWellNO);
// CRect GeoToView(CRect pRect,float pOldZoom);
int SaveBitmapToFile(HBITMAP hBitmap, LPSTR lpFileName);
BOOL ResetWellLayerArray();
void SetWellFault(_bstr_t pJH);
CPoint CalcuScrollToView(float pX,float pY);
BOOL CheckEditSubWell(_bstr_t pJH,_bstr_t pMainJH);
void ReSizeDraw(float pRate);
CString m_sQKDY;
CSize GeoToView(float pX,float pY);
void SetMapRange(CString pWhere,const char pFirstLink);
ADOConn m_AdoConn;
BOOL GetDLayer(_bstr_t pJH,_bstr_t pMainJH,CPtrArray * retArray);
// BITMAPINFOHEADER BMIH;
// BYTE* m_pDrawingSurfaceBits;
// BOOL m_bSaveToBmp;
// float m_fFRangeX;
// float m_fFRangeY;
//CBitmap m_bi;
};
/////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -