Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

52 lines
1.8 KiB
C++

#pragma once
#include "dbmain.h"
//----- Note: we don't use __declspec(dllimport) here, because of the
//----- "local vtable" problem with msvc. If you use __declspec(dllimport),
//----- then, when a client dll does a new on the class, the object's
//----- vtable pointer points to a vtable allocated in that client
//----- dll. If the client dll then passes the object to another dll,
//----- and the client dll is then unloaded, the vtable becomes invalid
//----- and any virtual calls on the object will access invalid memory.
//-----
//----- By not using __declspec(dllimport), we guarantee that the
//----- vtable is allocated in the server dll during the ctor and the
//----- client dll does not overwrite the vtable pointer after calling
//----- the ctor. And, since we expect the server dll to remain in
//----- memory indefinitely, there is no problem with vtables unexpectedly
//----- going away.
class AecDrawingStreamRecord;
class AecDbProxyAcGiEntity : public AcDbEntity
{
public:
ACRX_DECLARE_MEMBERS(AecDbProxyAcGiEntity) ;
AecDbProxyAcGiEntity(void);
virtual ~AecDbProxyAcGiEntity(void);
virtual Acad::ErrorStatus dwgOutFields (AcDbDwgFiler *pFiler) const ;
virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler *pFiler) ;
#if ARX<18
virtual Adesk::Boolean worldDraw (AcGiWorldDraw *mode) ;
virtual void viewportDraw(AcGiViewportDraw * mode);
#else
virtual Adesk::Boolean subWorldDraw (AcGiWorldDraw *mode) ;
virtual void subViewportDraw(AcGiViewportDraw * mode);
#endif
void setDrawingStreamRecord(AecDrawingStreamRecord* pRec);
void setSubEntity(AcDbObjectId& id);
void setTransform(AcGeMatrix3d& xform);
void setRegenType(AcGiRegenType eType);
private:
AcGiWorldDraw* m_pUnknownWorldDraw;
AcGiViewportDraw* m_pUnknownViewportDraw;
AcDbObjectId m_idSubObj;
AcGeMatrix3d m_xform;
AcGiRegenType m_eType;
};