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

绘图程序

开发平台:

Visual C++

  1. #include <afxtempl.h>
  2. #include "MyDraw.h"
  3. /////////////////////////////////////////////////////////////////////////////////////////////
  4. class CCommandStruct: public CObject
  5. {
  6. public:
  7. int  m_command;         //操作命令ID号
  8. int  m_num;             //操作命令操作的对象数目
  9. int* m_object;          //图形对象代号,操作命令无对象时为NULL       
  10. int* m_index;           //图形对象在其数列中的序号
  11. public:
  12. CCommandStruct(int command, int num, int* object, int* index);
  13. ~CCommandStruct();
  14. };
  15. /////////////////////////////////////////////////////////////////////////////////////////////
  16. //命令类,用于分析绘图、修改命令,并且存储所有发生的命令,以便Undo,Redo命令使用
  17. //命令类只涉及到绘图、修改命令的实现步骤,不能与图形对象类的数据结构相关。
  18. class CHandleCommand: public CObject
  19. {
  20. public:
  21. DECLARE_DYNCREATE(CHandleCommand)
  22. //用于储存命令列表类指针
  23. CObArray m_CommandArray;       
  24. //用于存储图形对象发生改变后先前的信息
  25. CArray<float, float> m_SavedProportion;         
  26. CArray<CPoint, CPoint> m_SavedPosition;         
  27. CArray<int, int> m_SavedLineStyle;         
  28. CArray<int, int> m_SavedColor;       
  29. private:
  30. CScrollView* pScrollView;
  31. int CurrentCommand;     //当前绘图命令 
  32. int LRepeatTimes;       //在当前绘图命令下鼠标左键点击次数
  33. int RRepeatTimes;       //在当前绘图命令下鼠标右键点击次数
  34. public:
  35. COperateObject m_OperateObject;
  36. public:
  37. int CommandPointer;   //命令指针
  38. int ProportionPointer;
  39. int PositionPointer;
  40. int LineStylePointer;
  41. int ColorPointer;
  42. public:
  43. CHandleCommand();
  44. public:
  45. void Intialize( COLORREF pcolor, int lstyle);
  46. void GetView(CScrollView* pView);
  47. void SetCommand(int command);
  48.     int  GetCommand();
  49. void SetPageSize(SIZE size);
  50. void LButtonDown(CDC* pDC, POINT point);
  51. void RButtonDown(CDC* pDC, POINT point);
  52. void MouseMove(CDC* pDC, POINT point);
  53. void ScrollScreen(CDC* pDC);
  54. void Redraw(CDC* pDC);
  55. public:
  56. //增加命令
  57.     void AddCommand(int command, int num, int* object, int* index);
  58. CCommandStruct* GetCommandAt(int index);
  59. //删除序号从index之后的命令
  60.     void DelCommandFrom(int index);
  61.     void AddProportion(int proportion);
  62. void GetProportionAt(int index);
  63.     void DelProportionFrom(int index);
  64. public:
  65. ~CHandleCommand();
  66. };