|
|
#pragma once
|
|
|
|
|
|
#include "../SigmaView.h"
|
|
|
#include "CPlusCallBack.h"
|
|
|
//#include "DrawView.h"
|
|
|
// WellPoleView 视图
|
|
|
/* 接口函数对应CView函数:
|
|
|
SetViewRect() -> CWnd::OnSize()
|
|
|
DrawImg() -> CView::OnDraw();
|
|
|
|
|
|
CSigmaView::SetScrollBar(); //C#窗口变化时引发的这个操作
|
|
|
CSigmaView::Scroll(int orientation, double offset) //滚动条拖动引发
|
|
|
|
|
|
|
|
|
*/
|
|
|
class CWellPole;
|
|
|
class CWellPoleView : public CSigmaView
|
|
|
{
|
|
|
public:
|
|
|
CWellPoleView(); // 动态创建所使用的受保护的构造函数
|
|
|
virtual ~CWellPoleView();
|
|
|
CWellPoleView(CXy* pXy);
|
|
|
void Initialize();
|
|
|
public:
|
|
|
//virtual void OnDraw(CDC* pDC); // 重写以绘制该视图
|
|
|
//#ifdef _DEBUG
|
|
|
// virtual void AssertValid() const;
|
|
|
//#ifndef _WIN32_WCE
|
|
|
// virtual void Dump(CDumpContext& dc) const;
|
|
|
//#endif
|
|
|
//#endif
|
|
|
//
|
|
|
//public:
|
|
|
// virtual void OnInitialUpdate();
|
|
|
virtual void SetLastRightButtonPoint(const CPoint& point);
|
|
|
public:
|
|
|
CWellPoleDoc* GetDocument() const;
|
|
|
public:
|
|
|
virtual void OnSize(UINT nType, int cx, int cy);
|
|
|
|
|
|
// int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
|
|
// void OnSetFocus(CWnd* pOldWnd);
|
|
|
//virtual void OnLButtonDblClkOther(UINT nFlags, CPoint point);
|
|
|
virtual void OnLButtonDownOther(int mouseX, int mouseY, HDC hdc, int vk);
|
|
|
//virtual void OnLButtonUpOther(UINT nFlags, CPoint point);
|
|
|
//virtual void OnRButtonDblClkOther(UINT nFlags, CPoint point);
|
|
|
//virtual void OnRButtonDownOther(UINT nFlags, CPoint point);
|
|
|
//virtual void OnRButtonUpOther(UINT nFlags, CPoint point);
|
|
|
//virtual void OnMouseMoveOther(UINT nFlags, CPoint point);
|
|
|
virtual void OnMouseWheelOther(UINT nFlags, short zDelta, CPoint pt);
|
|
|
|
|
|
virtual void OnLButtonDown(int mouseX, int mouseY, HDC hdc, int vk);
|
|
|
//virtual void OnLButtonUp(int mouseX, int mouseY, HDC hdc, int vk);
|
|
|
virtual void ViewMouseUp(UINT nFlags, CPoint point);
|
|
|
virtual int OnMouseMove(HDC hMemDC, int mouseX, int mouseY, int buttonStatus);
|
|
|
|
|
|
//void OnContextMenu(CWnd* pWnd, CPoint point);
|
|
|
void OnAddWellTrack();
|
|
|
// void OnUpdateAddWellTrack(CCmdUI *pCmdUI);
|
|
|
void OnEditDelete();
|
|
|
//void OnUpdateEditDelete(CCmdUI *pCmdUI);
|
|
|
void OnTrackLeftGroup();
|
|
|
void OnTrackRightGroup();
|
|
|
//void OnUpdateSelectedTrack(CCmdUI *pCmdUI);
|
|
|
////在选中的道后面添加图道
|
|
|
void OnAddTrackAfterSelected();
|
|
|
void OnViewTrackData();
|
|
|
void OnViewExtend();
|
|
|
void OnViewExtendCenter();
|
|
|
void OnViewExtendHeight();
|
|
|
void OnViewExtendWidth();
|
|
|
//void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
|
|
|
//void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
|
|
|
BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
|
|
|
void OnViewPan();
|
|
|
// void OnUpdateViewPan(CCmdUI *pCmdUI);
|
|
|
void OnLockWellHead();
|
|
|
void OnUpdateLockWellHead(CCmdUI* pCmdUI);
|
|
|
void OnViewEnlarge();
|
|
|
void OnViewReduce();
|
|
|
//void OnRButtonDown(UINT nFlags, CPoint point);
|
|
|
void OnMouseLeave();
|
|
|
|
|
|
virtual void SetClient(int l, int t, int r, int b); //用来代替 OnSize()函数
|
|
|
virtual void Scroll(int orientation, double offset);
|
|
|
|
|
|
BOOL IsViewState();
|
|
|
void InitWellPosition(int lrEdge); //初始化井的位置,参数是左右边距(以屏幕像素计算)。
|
|
|
void SetLockWellHead(bool block);
|
|
|
public:
|
|
|
//void OnDrawAllBefore(CXyDC& dc);
|
|
|
void OnDrawAllAfter(CXyDC& dc);
|
|
|
void WriteCusorPos(CPoint2D& point);
|
|
|
CMenu* ExtendPopupMenu(CItem* pItem, CMenu* pMenu);
|
|
|
CPositionList* GetSelection(void);
|
|
|
|
|
|
int FindMenuItem(CMenu* Menu, LPCTSTR MenuString);
|
|
|
int FindMenuItem(CMenu* Menu, UINT nID);
|
|
|
|
|
|
CWellPole *m_pWell;
|
|
|
|
|
|
void MoveWellTopToScreenTop();
|
|
|
void MoveWellToHorizCenter();
|
|
|
void ExtendViewForNewWell(CWellPole* pWell);
|
|
|
virtual void SetScrollBarRange(void);
|
|
|
void SetScrollBarRangeLockHead();
|
|
|
BOOL MouseWheelH(UINT nFlags, short zDelta, CPoint pt);
|
|
|
BOOL MouseWheelV(UINT nFlags, short zDelta, CPoint pt);
|
|
|
virtual BOOL MouseWheel(UINT nFlags, short zDelta, CPoint pt);
|
|
|
|
|
|
typedef struct _LockWellHead {
|
|
|
//double screenRealWellHeight; //屏幕上井柱体空间能包含的井柱长度,逻辑单位
|
|
|
double screenDepth; //屏幕上井柱体空间能包含的井柱长度,深度单位
|
|
|
double screenHeight; //屏幕上井柱体空间的逻辑单位
|
|
|
double screenWellBodyLength; //井柱顶底深所对应的逻辑单位
|
|
|
} LOCKWELLHEAD;
|
|
|
BOOL m_bLockWellHead;
|
|
|
LOCKWELLHEAD m_LockWellHeadStruct;
|
|
|
void LockWellHead();
|
|
|
void UnlockWellHead();
|
|
|
BOOL MouseWheelVLockHead(UINT nFlags, short zDelta, CPoint pt);
|
|
|
void ReComputeLockWellHead();
|
|
|
void ViewExtendCenter();
|
|
|
void ViewExtendWidth();
|
|
|
int ViewSetItemForSelectedElement(int mouseX, int mouseY);
|
|
|
void SetWellPoleViewPan();
|
|
|
void SetViewPanInvalidate();
|
|
|
void ScrollVForLockWellHead(int nFlags, int scrollValue, int pageSize, int lineSize, int scrollMin, int scrollMax);
|
|
|
void SetScrollBarVRangeForLockWellHead(int& vrange,int & page, int &value);
|
|
|
|
|
|
BOOL GetSelectWellObject(int& type, int& ttype, ULONGLONG& objHandle);
|
|
|
BOOL AddTrackAfterSelectedWellObject(int trackType[], int trackNum , ULONGLONG*& pTrackHandle,int*& pTrackType, int& newTrackNum);
|
|
|
BOOL DeleteSelectedWellObject();
|
|
|
BOOL CombineLeftTrack();
|
|
|
BOOL CombineRightTrack();
|
|
|
BOOL GetSelectedWell( ULONGLONG& objHandle);
|
|
|
BOOL GetWellTrackDataJson(ULONGLONG& objHandle, CString& strJson);
|
|
|
BOOL SetWellTrackDataJson(ULONGLONG& objHandle, LPCTSTR strJson);
|
|
|
BOOL SetPictureInWellTrack(ULONGLONG pictureObjHandle, LPCSTR filePath);
|
|
|
BOOL GetWellAllCurveNames(ULONGLONG& wellHandle, CStringArray& strArr);
|
|
|
BOOL GetWellAllDiscreteNames(ULONGLONG& wellHandle, CStringArray& strArr);
|
|
|
BOOL SaveWellPoleTemplateFile(LPCTSTR filePathName);
|
|
|
BOOL ApplyingWellPoleTemplateFile( LPCTSTR filePathName);
|
|
|
|
|
|
void OnAddFaultPoint();
|
|
|
void SaveUndoRedoAction();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void ComputeLockWellHeadInfo(LOCKWELLHEAD& LockWellHeadStruct);
|
|
|
void VScrollLockWellHead(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
|
|
|
|
|
|
protected:
|
|
|
CBitmap m_SelectBmp, *m_pSelectBmp;
|
|
|
BOOL m_bSelectCreateDC;
|
|
|
int m_ViewSelW;
|
|
|
int m_ViewSelH;
|
|
|
CDC m_SelectDC; //用于当有井对象被选中时绘制各种选中状态
|
|
|
void InitSelectBmpDC();
|
|
|
|
|
|
void DeleteSelectBmpDC();
|
|
|
void CreateSelectBmpDC(CDC *pDC,int ww, int hh);
|
|
|
BOOL m_bTracking;//监测鼠标是否离开本窗体
|
|
|
BOOL m_bFirstSize;
|
|
|
public:
|
|
|
void CreateSelectBmpDC(CDC* pDC);
|
|
|
void BeginSelectBmpDC();
|
|
|
void EndSelectBmpDC(CDC *pDC);
|
|
|
CDC& GetSelectDC() { return m_SelectDC; }
|
|
|
virtual void EndItemSelectBmpDC(CDC *pDC = NULL); //最后将在井类别item中绘制的内容贴到最终dc上
|
|
|
|
|
|
virtual void DrawCrossLine(CDC* pDC, CPoint point);
|
|
|
void DrawOneCrossLine(CPoint currentPoint); //绘制一次
|
|
|
|
|
|
CPoint m_PrevPointXY;
|
|
|
|
|
|
InvalidateWndCallback m_pWndCallBack;
|
|
|
};
|
|
|
|
|
|
extern void WellExtentObjMoveToPoint(CXyDC* pDC, double ptx, double pty, std::vector<COne*>& wellExtendObjs);
|
|
|
|