Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/VPOperate.h
T
2026-09-28 15:28:50 +08:00

58 lines
1.7 KiB
C++

#ifndef __VIEWPORTRESIZE_H
#define __VIEWPORTRESIZE_H
#define HV_ONSIDE 0x01 //在边上或在顶点上
#define HV_ONEXTEND 0x02 //在延长线上
#define VP_RESIZE_EX 1 //包括延长线命中的目标进行拖曳
#define VP_RESIZE 2 //只有边界命中的目标进行拖曳
#define VP_COPY 3 //只有边界命中的目标进行复制
#define VP_MOVE 4 //只有边界命中的目标进行移动
class TUTIL_IMPEXP THitViewport { //命中视窗的信息
public:
TViewportInfo m_id;
Adesk::UInt8 m_nHitFlag;
//顶点或边的序号: 1--底边,2--右边,3--上边,4--左边
// 1--左下,2--右下,3--右上,4--左上
Adesk::UInt8 m_nHitPosition;
public:
THitViewport():m_nHitFlag(0), m_nHitPosition(0) {
}
CRect GetRectOnHitPos(int nMethod, CPoint ptHitFirst, CPoint ptNew) const;
};
class TUTIL_IMPEXP TViewportResize {
public:
static int m_nApplyMethod;
static CPoint m_ptOld;
static CPoint m_ptFirstHit;
static BOOL m_bApplied; //是否已经执行了生效
//static BOOL m_bApplyExtend; //是否对延长线命中的目标也生效
static BOOL m_bTracking;
static DList<THitViewport> m_lstHitObjects; //所有命中的目标
public:
TViewportResize();
static int GetApplyMethod(int nFlags);
static void StartTracking();
static void StopTracking(BOOL bAccept, BOOL bApplyExtend);
static BOOL ApplyChange();
static BOOL OnCaptureChanged(CWnd *pWnd) ;
static BOOL OnMouseMove(UINT nFlags, CPoint point);
static BOOL OnLButtonDown(UINT nFlags, CPoint point);
static BOOL OnLButtonUp(UINT nFlags, CPoint point);
static BOOL OnEscape();
static const TCHAR *HitTest(int nMethod, CPoint point, DList<THitViewport> &m_lstHitObjcts);
};
//读取视口信息
TUTIL_IMPEXP void ReadVports(DList<TViewportInfo> &vpInfo);
#endif