You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
3.3 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD>: CItem<65><6D><EFBFBD><EFBFBD>չ
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2006-12-07
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "itemBase.h"
#include "cursor.h"
#include "DrawOperator\memdc.h"
namespace NDrawView
{
#define ITEM_VIEW_DEFAULT 0
#define ITEM_VIEW_PRINT 1
class CItemView :
public CItemBase
{
public:
CItemView(void);
CItemView(CSigmaDoc * ppDoc);
virtual ~CItemView(void);
void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
void OnLButtonUp(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
int OnMouseMove(CDC *pDC, UINT nFlags, CPoint point) override;
void OnRButtonDblClk(UINT nFlags, CPoint point) override;
void OnRButtonDown(UINT nFlags, CPoint point) override;
BOOL OnRButtonUp(UINT nFlags, CPoint point) override;
BOOL OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) override;
BOOL OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) override;
BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) override;
//<<3C><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ӡԤ<D3A1><D4A4>>
void SetScreenRect(CRect rect);
virtual void OnLButtonDownForPreviewPrint(UINT nFlags, CPoint point);
virtual void OnLButtonUpForPreviewPrint(UINT nFlags, CPoint point);
virtual void OnMouseMoveForPreviewPrint(UINT nFlags, CPoint point);
void ScreenToPrint(CPoint & point);
void GetViewFactors(double & offsetXOut, double & offsetYOut, double & zoomFactorOut);
void SetViewFactors(double offsetX, double offsetY, double zoomFactor);
void SetViewScreenFactors(double offsetX, double offsetY, double zoomFactor);
// <20><EFBFBD><E4BBBB>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
double TransfromX(double x);
double TransfromY(double y);
CRect TransfromRect(CRect rtSource);
double DeTransfromX(double x);
double DeTransfromY(double y);
// ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBBB><EFBFBD><EFBFBD>
CRect DeTransfromRect(CRect rtSource);
//</<2F><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ӡԤ<D3A1><D4A4>>
void SetMemDC(CMemoryDC* pMemViewDC) {
m_pMemViewDC = pMemViewDC;
}
CDC * GetMemDC(void) { return m_pMemViewDC; }
virtual CRect GetClientRect(void);
virtual void setClientRect(CRect rect);
virtual int GetPanMode(void);
virtual BOOL GetViewRange(CRect8& rect); //<2F><><EFBFBD><EFBFBD>Ҫȫͼ<C8AB><CDBC>ʾ<EFBFBD>ķ<EFBFBD>Χ
eCursorSelectStruct GetCursor(void);
int IsViewState(void);
void Extend(int mode);
void Enlarge(void);
void Reduce(void);
void Reduce(double factor);
/**
* <EFBFBD>Ŵ󻭲<EFBFBD>
*
* \param point <EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
* \param factor <EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>СҲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD> 1 ʱΪ<EFBFBD><EFBFBD>С
*/
void Reduce(CPoint2D point, double factor);
void ReduceForScreenPoint();
void PanTo(CPoint2D point); //<2F>ƶ<EFBFBD><C6B6><EFBFBD>point,<2C><>pointΪ<74><CEAA><EFBFBD><EFBFBD>
void EnableOldMode(BOOL bEnable);
BOOL IsOldMode(void);
public:
CView* GetActiveView(void);
BOOL IsCaptureCursor(void);
void SetDisplayRange(void);
int zoomMode;
protected:
CPoint m_ptLeft;
CRect8 m_rect;
CRect8 m_rectForPrint;
CRect m_scressRect;
CRect m_clientRect;
BOOL bCaptureCursor;
// CMemoryDC m_MemDC;
BOOL m_bRButtonDown;
BOOL m_bEnableCaptureCursor;
BOOL m_bOldViewMode;
//int m_type;
CMemoryDC* m_pMemViewDC;
double m_offsetX;
double m_offsetY;
double m_zoomFactor;
double m_offsetScreenX;
double m_offsetScreenY;
double m_screenFactor;
void LButtonDownPan(CPoint point);
void MouseMovePan(CPoint point);
void MouseMovePanForPreviewPrint(CPoint point);
void LButtonUpPan(CPoint point);
void RectangleSolid(CXyDC* pDC, CRect8* pRect);
};
};