#pragma once ///////////////////////////////////////////////////////////////////////////// // CInplaceDateEdit 内置日期编辑控件 ///////////////////////////////////////////////////////////////////////////// #include "MaskEdit.h" class CPropertyGridExtItemDate; // 前向引用 class CInplaceDateEdit : public CDateEdit { public: CInplaceDateEdit(); virtual ~CInplaceDateEdit(); void SetValue(CString strValue); void Create(CPropertyGridExtItemDate* pItem, CRect rect); void DestroyItem(); protected: CString m_strValue; CBrush m_brBack; COLORREF m_clrBack; CWnd* m_pGrid; CPropertyGridExtItemDate* m_pItem; protected: //{{AFX_VIRTUAL(CInplaceDateEdit) //}}AFX_VIRTUAL //{{AFX_MSG(CInplaceDateEdit) afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); afx_msg void OnEnKillfocus(); afx_msg void OnEnSetfocus(); 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 CPropertyGridExtItemDate; }; ///////////////////////////////////////////////////////////////////////////// // CInplaceMonthCal 内置日历控件 ///////////////////////////////////////////////////////////////////////////// class CInplaceMonthCal : public CMonthCalCtrl { public: CInplaceMonthCal(); virtual ~CInplaceMonthCal(); // 创建窗口 void Create(CPropertyGridExtItemDate* pItem); // 删除窗口 void DestroyItem(); protected: // 用户选择了一个日期,更新属性项 void Apply(); // 用户取消了操作 void Cancel(); // 日历控件的拥有者 CPropertyGridExtItemDate* m_pItem; protected: //{{AFX_VIRTUAL(CInplaceMonthCal) //}}AFX_VIRTUAL //{{AFX_MSG(CInplaceMonthCal) afx_msg void OnSelect(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnKillFocus(CWnd* pNewWnd); afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message); //}}AFX_MSG DECLARE_MESSAGE_MAP() friend class CPropertyGridExtItemDate; }; ///////////////////////////////////////////////////////////////////////////// // CPropertyGridExtItemDate 该属性表项使用格式化输入控件输入和显示日期 ///////////////////////////////////////////////////////////////////////////// class CPropertyGridExtItemDate : public CPropertyGridItem { public: // 构造函数: // strCaption -属性名称 // dtDate -初始属性值,缺省为当前日期 CPropertyGridExtItemDate(CString strCaption, COleDateTime dtDate = COleDateTime(time(NULL))); // 构造函数: // nID -属性ID // dtDate -初始属性值,缺省为当前日期 CPropertyGridExtItemDate(UINT nID, COleDateTime dtDate = COleDateTime(time(NULL))); virtual ~CPropertyGridExtItemDate(); // 设置属性值: // dtDate-新的属性值 void SetDate(COleDateTime dtDate); // 获取属性值 COleDateTime GetDate(); // 把一个日期对象绑定到属性项 void BindToDate(COleDateTime* pBindDate); protected: COleDateTime m_dtDate; // 属性值 COleDateTime* m_pBindDate; // 绑定到属性项的日期对象 // 当属性值由于用户输入而改变时,调用此函数 virtual void SetValue(CString strValue); virtual void OnSelect(); virtual void OnValidateEdit(); virtual void SetEditText(CString str); virtual BOOL OnChar(UINT nChar); virtual void OnLButtonDblClk(); virtual void OnInplaceButtonDown(); CInplaceDateEdit m_wndDateEdit; // 内置日期编辑控件 CInplaceMonthCal m_wndMonthCal; // 内置日历控件 friend class CInplaceDateEdit; };