MyCommand.h
上传用户:netltd
上传日期:2013-02-12
资源大小:7234k
文件大小:2k
- #include <afxtempl.h>
- /////////////////////////////////////////////////////////////////////////////////////////////
- class CCommandStruct: public CObject
- {
- public:
- int m_command; //操作命令ID号
- int m_num; //操作命令操作的对象数目
- int* m_object; //图形对象代号,操作命令无对象时为NULL
- int* m_index; //图形对象在其数列中的序号
- public:
- CCommandStruct(int command, int num, int* object, int* index);
- ~CCommandStruct();
- };
- /////////////////////////////////////////////////////////////////////////////////////////////
- //命令类,用于分析绘图、修改命令,并且存储所有发生的命令,以便Undo,Redo命令使用
- //命令类只涉及到绘图、修改命令的实现步骤,不能与图形对象类的数据结构相关。
- class CCommandStack: public CObject
- {
- private:
- DECLARE_DYNCREATE(CCommandStack)
- //用于储存命令列表类指针
- CObArray m_CommandArray;
- //用于存储图形对象发生改变后先前的信息
- CArray<float, float> m_SavedProportion;
- CArray<CPoint, CPoint> m_SavedPosition;
- CArray<int, int> m_SavedLineStyle;
- CArray<int, int> m_SavedColor;
-
- private:
- int CommandPointer; //命令指针
-
- public:
- CCommandStack();
- //增加命令
- void PushCommand(int command, int num, int* object, int* index);
- void RemoveAll(); //清空所有命令
- CCommandStruct* Undo();
- CCommandStruct* Redo();
- BOOL CanUndo(); //判断是否可以undo
- BOOL CanRedo(); //判断是否可以Redo
- private:
- //删除序号从index之后的命令
- void DelCommandFrom(int index);
-
- public:
- ~CCommandStack();
- };