#pragma once #include "actionitem.h" namespace NAction { class CActionAddItem : public CActionItem { public: CActionAddItem(); CActionAddItem(CSigmaDoc * ppDoc, UINT actionType, const CPositionList& list); CActionAddItem(CSigmaDoc * ppDoc, UINT actionType, COne* pOne); virtual ~CActionAddItem(void); std::string GetActionName() const override { return typeid(*this).name(); } bool IsOwnCOnes() const override { return true; } virtual void Undo(void); virtual void Redo(void); virtual void Finish(); void accept(CActionVisitor& visitor) override; // FIXME: 这是一种丑陋的访问成员变量的方式,不过暂时想不到更好的办法 friend class BlobSerializer; protected: std::vector m_pos; bool m_bAdded; virtual void PerformOperation(); void AddOperation(void); void RemoveOperation(void); int CreatePos(void); //为了在REDO时可以正确插入到合适位置 }; };