58 lines
1.7 KiB
C++
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 |