MyCommand.h
上传用户:netltd
上传日期:2013-02-12
资源大小:7234k
文件大小:2k
源码类别:

绘图程序

开发平台:

Visual C++

  1. #include <afxtempl.h>
  2. /////////////////////////////////////////////////////////////////////////////////////////////
  3. class CCommandStruct: public CObject
  4. {
  5. public:
  6. int  m_command;         //操作命令ID号
  7. int  m_num;             //操作命令操作的对象数目
  8. int* m_object;          //图形对象代号,操作命令无对象时为NULL       
  9. int* m_index;           //图形对象在其数列中的序号
  10. public:
  11. CCommandStruct(int command, int num, int* object, int* index);
  12. ~CCommandStruct();
  13. };
  14. /////////////////////////////////////////////////////////////////////////////////////////////
  15. //命令类,用于分析绘图、修改命令,并且存储所有发生的命令,以便Undo,Redo命令使用
  16. //命令类只涉及到绘图、修改命令的实现步骤,不能与图形对象类的数据结构相关。
  17. class CCommandStack: public CObject
  18. {
  19. private:
  20. DECLARE_DYNCREATE(CCommandStack)
  21. //用于储存命令列表类指针
  22. CObArray m_CommandArray;       
  23. //用于存储图形对象发生改变后先前的信息
  24. CArray<float, float> m_SavedProportion;         
  25. CArray<CPoint, CPoint> m_SavedPosition;         
  26. CArray<int, int> m_SavedLineStyle;         
  27. CArray<int, int> m_SavedColor;         
  28. private:
  29. int CommandPointer;   //命令指针
  30. public:
  31. CCommandStack();
  32. //增加命令
  33.     void PushCommand(int command, int num, int* object, int* index);
  34. void RemoveAll();  //清空所有命令
  35. CCommandStruct* Undo();
  36. CCommandStruct* Redo();
  37. BOOL CanUndo(); //判断是否可以undo
  38. BOOL CanRedo(); //判断是否可以Redo
  39. private:
  40. //删除序号从index之后的命令
  41.     void DelCommandFrom(int index);
  42.     
  43. public:
  44. ~CCommandStack();
  45. };