|
|
/**************************************************************************************
|
|
|
文 件 名:ItemBend.h
|
|
|
操作各类多井剖面中元素或完成一定的功能
|
|
|
主要函数列表:
|
|
|
1 virtual BOOL InitPropertyGrid(CXTPPropertyGrid& grid); 初始化属性窗口
|
|
|
2 virtual void OnLButtonDown(UINT nFlags, CPoint point); 鼠标操作
|
|
|
3 virtual void OnLButtonUp(UINT nFlags, CPoint point);
|
|
|
4 virtual void OnMouseMove(UINT nFlags, CPoint point);
|
|
|
5 virtual void OnDraw(CXyDC* pXyDC); 绘制辅助手柄
|
|
|
6 virtual BOOL OnGridItemChangeValue(CXTPPropertyGridItem* pItem); 响应属性框改变消息的函数
|
|
|
修改历史:
|
|
|
1 virtual void SetSelectMode(CPoint2D pt); 根据点位置判断选中连层的那个部分(上层位线、下层位线、岩性尖灭线、连层本身)
|
|
|
2 virtual void AddControlPoints(); 添加上下层位或者岩性尖灭线控制点
|
|
|
3 virtual void ComputeControls(CPointArr &ptArr,double fSlope);计算添加控制点后新控制点数组各控制点的坐标
|
|
|
**************************************************************************************/
|
|
|
#pragma once
|
|
|
#include "item.h"
|
|
|
#include "../ItemWellBase.h"
|
|
|
#include "ItemWellSection.h"
|
|
|
#include "MultiWellSectionLib\BendObj.h"
|
|
|
|
|
|
namespace NItem
|
|
|
{
|
|
|
|
|
|
class CItemBend :
|
|
|
public CItemWellBase
|
|
|
{
|
|
|
public:
|
|
|
CItemBend(CSigmaDoc* pDoc);
|
|
|
~CItemBend(void);
|
|
|
|
|
|
enum CurveType
|
|
|
{
|
|
|
CurveTopLine, //上层位线
|
|
|
CurveBotLine, //下层位线
|
|
|
CurveBreakLithoLine, //岩性尖灭线
|
|
|
CurveBend, //连层
|
|
|
CurveNone
|
|
|
};
|
|
|
CurveType m_SelectCurveMode;////当前选中的对象(上、下层位线,岩性尖灭折线)
|
|
|
|
|
|
virtual void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk);
|
|
|
virtual void OnLButtonUp(CDC *pDC, UINT nFlags, CPoint point, int vk = 0);
|
|
|
virtual int OnMouseMove(CDC *pDC, UINT nFlags, CPoint point);
|
|
|
//virtual void OnRButtonDown(UINT nFlags, CPoint point);
|
|
|
virtual void OnLButtonDblClk(UINT nFlags, CPoint point);
|
|
|
virtual BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
|
|
|
|
|
virtual BOOL OnSetCursor(CPoint pt, int& handle);
|
|
|
|
|
|
virtual int GetSubMenu();
|
|
|
|
|
|
/** @brief 绘制辅助手柄 */
|
|
|
virtual void OnDraw(CXyDC* pXyDC);
|
|
|
virtual void OnDraw(CXyDC* pXyDC,CDC *pDC);
|
|
|
|
|
|
void SetSelectCurveMode(CurveType type) { m_SelectCurveMode = type; };
|
|
|
//得到剖面对象
|
|
|
CBendObj *GetBendObject();
|
|
|
//void SetBendObject(CBendObj* pBend);
|
|
|
virtual void SetDrawObj(CWellBaseObj* pObj) { m_pBend = (CBendObj*)pObj; }//= 0;
|
|
|
//virtual void SetItemWell(CItem* pItem) {}//= 0;
|
|
|
//剖面Item赋值
|
|
|
virtual void SetItemSection(CItem* pItem) {m_pItemWellSection = (CItemWellSection*)pItem;}//= 0;
|
|
|
virtual CWellBaseObj* GetDrawObj() { return m_pBend; }
|
|
|
virtual int DeleteSelection(void);
|
|
|
///// 根据点位置判断选中连层的那个部分(上层位线、下层位线、岩性尖灭线、连层本身)
|
|
|
virtual int HitTestMode(CPoint2D pt );
|
|
|
virtual int HitTestMode_Resform(CPoint2D pt);
|
|
|
|
|
|
//添加上下层位或者岩性尖灭线控制点
|
|
|
virtual void AddControlPoints();
|
|
|
//计算添加控制点后新控制点数组各控制点的坐标
|
|
|
virtual void ComputeControls(CPointArr &ptArr,double fSlope);
|
|
|
|
|
|
//添加单个控制点
|
|
|
virtual void AddControlPoint(dfPoint dp);
|
|
|
|
|
|
//改变尖灭样式
|
|
|
virtual void SetBendBreakStyle(CString strBreak);
|
|
|
|
|
|
void AddBendLayerPoint();
|
|
|
void DeleteBendLayerPoint();
|
|
|
void OnLButtonDownAfterHitTest(UINT nFlags, CPoint point, int tnDragHandle,CDC* pDC);
|
|
|
protected:
|
|
|
CBendObj* m_pBend; //当前交换的bend
|
|
|
CItemWellSection* m_pItemWellSection;//剖面Item
|
|
|
BOOL m_bChangeAll; //改变层位线画笔开关变量
|
|
|
BOOL m_bOnLine; //鼠标在连层线上
|
|
|
|
|
|
void OnDraw_DFPCG(CXyDC* pXyDC,CBendObj* pBend,CDC *pDC);
|
|
|
void OnDraw_Resform(CXyDC* pXyDC, CBendObj* pBend , CDC *pDC);
|
|
|
void DrawLayerLine(CXyDC* pXyDC, CPointArr& linePtArr, int nHandleSize, CDC *pDC);
|
|
|
void DrawDragLayerLinePt(CXyDC* pXyDC, CPointArr& linePtArr, int nHandleSize, int nHandle, CPoint ptNow, CDC *pDC);
|
|
|
void DrawLayerLineSelectHandle(CXyDC* pXyDC, CurveType selectType, int nHandleSize, CDC* pDC);
|
|
|
|
|
|
int m_SelectHandle; //记录上下层边线被选中的handle
|
|
|
|
|
|
protected:
|
|
|
void HitTestBend(CPoint2D pt);
|
|
|
};
|
|
|
|
|
|
}; |