QSelObjManager.h
上传用户:oybseng
上传日期:2015-04-27
资源大小:7831k
文件大小:3k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. // QSelObjManager.h: interface for the CQSelObjManager class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_QSELOBJMANAGER_H__43EEE075_39EE_45D4_937B_7765DD35CDC9__INCLUDED_)
  5. #define AFX_QSELOBJMANAGER_H__43EEE075_39EE_45D4_937B_7765DD35CDC9__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. class CQBaseObj;
  10. class CQCoordSys;
  11. class CBoundaryRect;
  12. //////////////////////////////////////////
  13. ///***************CQGIS****************///
  14. ///类    名:CQSelObjManager
  15. ///基    型:CObList
  16. ///说    明:用于管理选中的图元对象
  17. ///***************CQGIS****************///
  18. //////////////////////////////////////////
  19. class AFX_EXT_CLASS CQSelObjManager : public CObList  // 派生字自对象列表
  20. {
  21. public:
  22. static CQSelObjManager * Create();        //创建选中对象管理器对象
  23. static void Release(CQSelObjManager *  p);//释放选中对象管理器对象
  24. public:
  25. void AddSelObj(CQBaseObj * pObj);         //添加图元到选中对象管理器
  26. void RemoveSelObj(CQBaseObj * pObj);      //除去指定的对象
  27. inline int GetSelObjCount();              //获得选中的图元对象个数
  28. void RemoveAllSelObj();                   //将列表清空
  29. void DisplaySelObjs(CQCoordSys * pSys,CDC * pDC); //显示图元选中列表中的图元对象
  30. void ResetSelObj(CQBaseObj * pObj);       //重置指定的图元对象
  31. void SetCurSelObj(CQBaseObj * pObj);      //设置当前的选中对象
  32. CQBaseObj * GetCurSelObj();               //获取当前的选中对象
  33. int FindSelObjIndex(CQBaseObj * pObj);    //获取选中对象的索引
  34. //以下三个函数用于闪烁显示选中的图元对象
  35. //UINT uTime千分之一秒为单位
  36. //创建一个TIMER,
  37. //CWnd *pWnd为创建TIMER的窗口指针
  38. //UINT_PTR uEventID为事件ID
  39. //UINT uTime为TIMER的时间间隔
  40. void BeginFlash(CWnd *pWnd,UINT_PTR uEventID,UINT uTime);
  41. //使选中的对象按照UINT uTime为TIMER的时间间隔闪烁显示选中的图元
  42. void FlashObj(CQCoordSys *pCoorSys,CWnd *pWnd);
  43. //结束图元的闪烁显示,删除选中对象
  44. void EndFlash(CWnd * pWnd,UINT_PTR uEventID);
  45. // 停止图元的闪烁显示,不删除选中对象
  46. void StopFlash(CWnd * pWnd,UINT_PTR uEventID);
  47. void BeginFlash(HWND pWnd,UINT_PTR uEventID,UINT uTime);
  48. //使选中的对象按照UINT uTime为TIMER的时间间隔闪烁显示选中的图元
  49. void FlashObj(CQCoordSys *pCoorSys,HWND pWnd);
  50. //结束图元的闪烁显示
  51. void EndFlash(HWND pWnd,UINT_PTR uEventID);
  52. void GetFlashColor(COLORREF cr[2]);
  53. COLORREF GetFlashColor(int nFlashColorIndex);
  54. COLORREF GetFlashColor();
  55. void SetFlashColor(COLORREF crArr[2]);
  56. inline POSITION GetHeadPosition();
  57. inline CQBaseObj * GetNext(POSITION & pos);
  58. inline CQBaseObj * GetHead() ;
  59. inline CQBaseObj * GetTail() ;
  60. inline POSITION FindIndex(int lIndex);
  61. inline CQBaseObj * GetAt(POSITION & pos);
  62. inline void RemoveAt(POSITION & pos);
  63. inline int GetCount() const ;
  64. inline void Copy(CObList * pList);
  65. void GetBoundingRect(CBoundaryRect & bRect);
  66. void GetScreenRect(CQCoordSys *pCoorSys,CRect &rect);
  67. CQSelObjManager();
  68. virtual ~CQSelObjManager();
  69. protected:
  70. int m_nSelPointNum;         // 选中的点数
  71. int m_nSelLineNum;          // 选中的线条数
  72. int m_nSelLabelNum;
  73. CQBaseObj * m_pCurObj;      // 选中的当前对象
  74. COLORREF m_crFlashColor[2]; // 图元闪烁的颜色
  75. int m_nFlashColorIndex;     // 图元闪烁的颜色索引
  76. };
  77. #endif // !defined(AFX_QSELOBJMANAGER_H__43EEE075_39EE_45D4_937B_7765DD35CDC9__INCLUDED_)