PropertyGridExtItemDate.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #pragma once
  2. /////////////////////////////////////////////////////////////////////////////
  3. // CInplaceDateEdit 内置日期编辑控件
  4. /////////////////////////////////////////////////////////////////////////////
  5. #include "MaskEdit.h"
  6. class CPropertyGridExtItemDate; // 前向引用
  7. class CInplaceDateEdit : public CDateEdit
  8. {
  9. public:
  10. CInplaceDateEdit();
  11. virtual ~CInplaceDateEdit();
  12. void SetValue(CString strValue);
  13. void Create(CPropertyGridExtItemDate* pItem, CRect rect);
  14. void DestroyItem();
  15. protected:
  16. CString m_strValue;
  17. CBrush m_brBack;
  18. COLORREF m_clrBack;
  19. CWnd* m_pGrid;
  20. CPropertyGridExtItemDate* m_pItem;
  21. protected:
  22. //{{AFX_VIRTUAL(CInplaceDateEdit)
  23. //}}AFX_VIRTUAL
  24. //{{AFX_MSG(CInplaceDateEdit)
  25. afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
  26. afx_msg void OnEnKillfocus();
  27. afx_msg void OnEnSetfocus();
  28. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  29. afx_msg UINT OnGetDlgCode();
  30. void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  31. //}}AFX_MSG
  32. DECLARE_MESSAGE_MAP()
  33. friend class CPropertyGridExtItemDate;
  34. };
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CInplaceMonthCal 内置日历控件
  37. /////////////////////////////////////////////////////////////////////////////
  38. class CInplaceMonthCal : public CMonthCalCtrl
  39. {
  40. public:
  41. CInplaceMonthCal();
  42. virtual ~CInplaceMonthCal();
  43. // 创建窗口
  44. void Create(CPropertyGridExtItemDate* pItem);
  45. // 删除窗口
  46. void DestroyItem();
  47. protected:
  48. // 用户选择了一个日期,更新属性项
  49. void Apply();
  50. // 用户取消了操作
  51. void Cancel();
  52. // 日历控件的拥有者
  53. CPropertyGridExtItemDate* m_pItem;
  54. protected:
  55. //{{AFX_VIRTUAL(CInplaceMonthCal)
  56. //}}AFX_VIRTUAL
  57. //{{AFX_MSG(CInplaceMonthCal)
  58. afx_msg void OnSelect(NMHDR* pNMHDR, LRESULT* pResult);
  59. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  60. afx_msg void OnKillFocus(CWnd* pNewWnd);
  61. afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
  62. //}}AFX_MSG
  63. DECLARE_MESSAGE_MAP()
  64. friend class CPropertyGridExtItemDate;
  65. };
  66. /////////////////////////////////////////////////////////////////////////////
  67. // CPropertyGridExtItemDate 该属性表项使用格式化输入控件输入和显示日期
  68. /////////////////////////////////////////////////////////////////////////////
  69. class CPropertyGridExtItemDate : public CPropertyGridItem
  70. {
  71. public:
  72. // 构造函数:
  73. // strCaption -属性名称
  74. // dtDate -初始属性值,缺省为当前日期
  75. CPropertyGridExtItemDate(CString strCaption, COleDateTime dtDate = COleDateTime(time(NULL)));
  76. // 构造函数:
  77. // nID -属性ID
  78. // dtDate -初始属性值,缺省为当前日期
  79. CPropertyGridExtItemDate(UINT nID, COleDateTime dtDate = COleDateTime(time(NULL)));
  80. virtual ~CPropertyGridExtItemDate();
  81. // 设置属性值:
  82. // dtDate-新的属性值
  83. void SetDate(COleDateTime dtDate);
  84. // 获取属性值
  85. COleDateTime GetDate();
  86. // 把一个日期对象绑定到属性项
  87. void BindToDate(COleDateTime* pBindDate);
  88. protected:
  89. COleDateTime m_dtDate; // 属性值
  90. COleDateTime* m_pBindDate; // 绑定到属性项的日期对象
  91. // 当属性值由于用户输入而改变时,调用此函数
  92. virtual void SetValue(CString strValue);
  93. virtual void OnSelect();
  94. virtual void OnValidateEdit();
  95. virtual void SetEditText(CString str);
  96. virtual BOOL OnChar(UINT nChar);
  97. virtual void OnLButtonDblClk();
  98. virtual void OnInplaceButtonDown();
  99. CInplaceDateEdit m_wndDateEdit; // 内置日期编辑控件
  100. CInplaceMonthCal m_wndMonthCal; // 内置日历控件
  101. friend class CInplaceDateEdit;
  102. };