⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawvw.h

📁 连接oracle
💻 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 + -