#pragma once ///////////////////////////////////////////////////////////////////////////// // CInplaceTimeEdit 内置时间编辑控件 ///////////////////////////////////////////////////////////////////////////// #include "MaskEdit.h" class CPropertyGridExtItemTime; // 前向引用 class CInplaceTimeEdit : public CTimeEdit { public: // 构造函数: // bHasSecond -表明是否包含“秒” CInplaceTimeEdit(BOOL bHasSecond); virtual ~CInplaceTimeEdit(); void SetValue(CString strValue); void Create(CPropertyGridExtItemTime* pItem, CRect rect); void DestroyItem(); protected: CString m_strValue; CBrush m_brBack; COLORREF m_clrBack; CWnd* m_pGrid; CPropertyGridExtItemTime* m_pItem; protected: //{{AFX_VIRTUAL(CInplaceTimeEdit) //}}AFX_VIRTUAL virtual BOOL SelectConstraint(int nDirection, BOOL bCircle); //{{AFX_MSG(CInplaceTimeEdit) afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); afx_msg void OnEnKillfocus(); afx_msg void OnEnSetfocus(); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg UINT OnGetDlgCode(); void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); //}}AFX_MSG DECLARE_MESSAGE_MAP() friend class CPropertyGridExtItemTime; }; ///////////////////////////////////////////////////////////////////////////// // CPropertyGridExtItemTime 该属性表项使用格式化输入控件输入和显示时间 ///////////////////////////////////////////////////////////////////////////// class CPropertyGridExtItemTime : public CPropertyGridItem { public: // 构造函数: // strCaption -属性名称 // dtTime -初始属性值,缺省为当前时间 // bHasSecond -表明是否包含“秒” CPropertyGridExtItemTime(CString strCaption, COleDateTime dtTime = COleDateTime(time(NULL)), BOOL bHasSecond = FALSE); // 构造函数: // nID -属性ID // dtTime -初始属性值,缺省为当前时间 // bHasSecond -表明是否包含“秒” CPropertyGridExtItemTime(UINT nID, COleDateTime dtTime = COleDateTime(time(NULL)), BOOL bHasSecond = FALSE); virtual ~CPropertyGridExtItemTime(); // 设置属性值: // dtTime-新的属性值 void SetTime(COleDateTime dtTime); // 获取属性值 COleDateTime GetTime(); // 把一个时间对象绑定到属性项 void BindToTime(COleDateTime* pBindTime); protected: COleDateTime m_dtTime; // 属性值 BOOL m_bHasSecond; // 表明是否包含“秒” COleDateTime* m_pBindTime; // 绑定到属性项的时间对象 // 当属性值由于用户输入而改变时,调用此函数 virtual void SetValue(CString strValue); virtual void OnSelect(); virtual void OnValidateEdit(); virtual void SetEditText(CString str); virtual BOOL OnChar(UINT nChar); virtual void OnLButtonDblClk(); CInplaceTimeEdit m_wndTimeEdit; // 内置时间编辑控件 friend class CInplaceTimeEdit; };