Files

135 lines
3.6 KiB
C++
Raw Permalink Normal View History

2026-10-04 00:04:20 +08:00
#if !defined(__KTCADTEMPOVERRIDES_H__)
2026-09-28 15:28:50 +08:00
#define __KTCADTEMPOVERRIDES_H__
// Description:
2026-10-04 00:04:20 +08:00
// 临时数据或状态自动管理类, 通过在函数需要的位置声明相应管理类的一个临时实例,
// 利于临时实例的释放时, 对类的析构函数的调用来恢复数据或状态.
// 类CKTTempLockDoc用于临时锁定文档,在非模式界面下作交互操作,需要锁定文档
// 类CKTTempSetSysVar用于临时设置系统变量
// 类CKTTempCloseCursor用于临时关闭十字光标
// 类CKTTempUndoGroup用于临时把以后操作作为一组来Undo
// 类CKTTempSetTol用于临时改变计算精度(浮点数,点,向量比较)
// 类CKTTempZoom用于临时缩放图形窗口
2026-09-28 15:28:50 +08:00
// Company: Kingtouch Software Corporation. Copyright 2002-2005
// Author: WangYongguang
// Date: 2002.05.01
#ifdef EARTHWORM_EXPORT
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class DLLIMPEXP CKTTempLockDoc
{
public:
2026-10-04 00:04:20 +08:00
// 构造函数, 默认锁定当前文档
2026-09-28 15:28:50 +08:00
CKTTempLockDoc();
2026-10-04 00:04:20 +08:00
// 构造函数, 锁定指定文档
2026-09-28 15:28:50 +08:00
CKTTempLockDoc(AcApDocument* pDoc);
2026-10-04 00:04:20 +08:00
// 析构函数, 解锁被锁定的文档
2026-09-28 15:28:50 +08:00
virtual ~CKTTempLockDoc();
protected:
2026-10-04 00:04:20 +08:00
// 锁定指定文档, 原先被锁定的文档将解锁
2026-09-28 15:28:50 +08:00
BOOL LockDocument(AcApDocument* pDoc);
2026-10-04 00:04:20 +08:00
// 锁定当前文档, 原先被锁定的文档将解锁
2026-09-28 15:28:50 +08:00
BOOL LockCurrentDocument();
2026-10-04 00:04:20 +08:00
// 解锁被锁定的文档
2026-09-28 15:28:50 +08:00
BOOL UnlockDocument();
AcApDocument* m_pDoc;
};
class DLLIMPEXP CKTTempSetSysVar
{
public:
2026-10-04 00:04:20 +08:00
// 默认构造函数
2026-09-28 15:28:50 +08:00
CKTTempSetSysVar();
2026-10-04 00:04:20 +08:00
// 构造函数, 保存指定的系统变量
2026-09-28 15:28:50 +08:00
CKTTempSetSysVar(LPCTSTR pszVarName);
2026-10-04 00:04:20 +08:00
// 构造函数, 保存指定的系统变量后, 设置新值
2026-09-28 15:28:50 +08:00
CKTTempSetSysVar(LPCTSTR pszVarName, short iVal);
CKTTempSetSysVar(LPCTSTR pszVarName, int iVal);
CKTTempSetSysVar(LPCTSTR pszVarName, long lVal);
CKTTempSetSysVar(LPCTSTR pszVarName, double dVal);
CKTTempSetSysVar(LPCTSTR pszVarName, LPCTSTR pszVal);
CKTTempSetSysVar(LPCTSTR pszVarName, ads_point ptVal);
2026-10-04 00:04:20 +08:00
// 析构函数, 恢复保存的系统变量
2026-09-28 15:28:50 +08:00
virtual ~CKTTempSetSysVar();
2026-10-04 00:04:20 +08:00
// 保存指定的系统变量
2026-09-28 15:28:50 +08:00
BOOL PushSystemVar(LPCTSTR pszVarName);
2026-10-04 00:04:20 +08:00
// 恢复指定的系统变量
2026-09-28 15:28:50 +08:00
BOOL PopSystemVar(LPCTSTR pszVarName);
2026-10-04 00:04:20 +08:00
// 恢复所有的系统变量
2026-09-28 15:28:50 +08:00
BOOL PopAllSystemVar();
2026-10-04 00:04:20 +08:00
// 保存指定的系统变量后, 设置新值
2026-09-28 15:28:50 +08:00
BOOL SetSystemVar(LPCTSTR pszVarName, short iVal);
BOOL SetSystemVar(LPCTSTR pszVarName, int iVal);
BOOL SetSystemVar(LPCTSTR pszVarName, long lVal);
BOOL SetSystemVar(LPCTSTR pszVarName, double dVal);
BOOL SetSystemVar(LPCTSTR pszVarName, LPCTSTR pszVal);
BOOL SetSystemVar(LPCTSTR pszVarName, ads_point ptVal);
protected:
CMapStringToString m_mapText;
CMap<CString, LPCTSTR, long, long> m_mapInt;
CMap<CString, LPCTSTR, double, double> m_mapFloat;
CMap<CString, LPCTSTR, AcGePoint3d, AcGePoint3d&> m_mapPoint;
};
class DLLIMPEXP CKTTempCloseCursor
{
public:
CKTTempCloseCursor();
virtual ~CKTTempCloseCursor();
protected:
AcEdInputPointManager* m_pInputMgr;
};
class DLLIMPEXP CKTTempUndoGroup
{
public:
CKTTempUndoGroup();
virtual ~CKTTempUndoGroup();
protected:
int m_iCmdEcho;
};
class DLLIMPEXP CKTTempSetTol
{
public:
CKTTempSetTol(double dTol);
virtual ~CKTTempSetTol();
protected:
double m_dTol;
AcGeTol m_geTol;
};
class DLLIMPEXP CKTTempZoom
{
public:
CKTTempZoom(BOOL bLockUpdate = TRUE);
CKTTempZoom(const AcGePoint3d& ptMin, const AcGePoint3d& ptMax, BOOL bLockUpdate = TRUE);
virtual ~CKTTempZoom();
protected:
BOOL m_bRestore;
BOOL m_bMyLock;
AcGePoint3d m_ptMin;
AcGePoint3d m_ptMax;
static BOOL m_bLockUpdate;
};
#endif // !defined(__KTCADTEMPOVERRIDES_H__)