天天看點

DateTimePicker

一、DTP控件和月曆控件的風格及其設定

    (1)DTP控件

    DTP控件的風格分别如下:

DTS_APPCANPARSE

允許使用者對輸入消息進行必要的處理。

DTS_LONGDATEFORMAT

用長格式顯示日期,如"1999年6月22日"。

DTS_RIGHTALIGN

下拉月曆右對齊控件。

DTS_SHOWNONE

在控件中可能沒有目前日期。使用此風格時,控件顯示一個複選框,當使用者選中時,方可鍵入或選擇一個日期。DTS_SHORTDATEFORMAT用短格式顯示日期,如“99-6-22"。

DTS_TIMEFORMAT

在控件内顯示時間。

DTS_UPDOWN

在控件的右邊出現一個旋轉按鈕用來調整日期。若此風格沒指定,則控件的右邊是一個下拉按鈕用來彈出月曆。

    這些風格可在CDateTimeCtrl::Create函數中加以設定,也可通過DTP控件的Styles屬

性對話框進行設定(如圖6.9所示),相關屬性說明如下:

.Format

DTP控件的格式有:ShortDate(短格式)、LongDate(長格式)、Time(顯示 時 間 ) 。 分别與DTS_SHORTDATEFORMAT 、DTS_LONGDATEFORMAT、DTS_TIMEFORMAT相同。

.Right Align

同DTS_RIGHTALIGN。

.Use Spin Control

同DTS_UPDOWN。

.Show None

同DTS_SHOWNONE。

.Allow Edit

DTP控件允許編輯。

    (2)月曆控件

    月曆控件的風格有:

MCS_DAYSTATE

此風格将某一天的顯示變成粗體。

MCS_MULTISELECT

允許使用者在控件中選擇日期範圍。預設時,最大的範圍為一周。

MCS_NOTODAY 

在控件的下邊不再顯示今天的日期。

MCS_NOTODAYCIRCLE

不圈定今天的日期。

MCS_WEEKNUMBERS

在控件的每行左邊顯示周數(1-52)。

    這些風格可在CMonthCalCtrl::Create函數中加以設定,也可通過月曆控件的Styles屬性

對話框進行設定,相關屬性說明如下:

.Day States

同MCS—DAYSTATE。

.Multi Select

同MCS臼MULTISELECT。

.No Today Circle

同MCS—NOTODAYCIRCLE。

.No Today

同MCS_NOTODAY。

.Week Numbers

同MCS_WEEKNUMBERS。

    二、基本操作

    (1)DTP控件

    字型、顔色的操作DTP控件可改變月曆對話框的字型,成員函數CDateTimeCtrl::SetMonthCalFont

可實作此操作,其函數原型如下:

    void SetMonthCalFont(HFONT hFont,BOOL bRedraw=TRUE);

    參數:

hFont

要設定的字型句柄.

bRedraw

當字型設定後,是否立即重畫。

    與此函數相對應的是獲得字型的成員函數CDateTimeCtrl::GetMonthCalFont.改變DTP控件

中的月曆顔色可用成員函數CDateTimeCtrl::SetMonthCalColor,其原型如下:

    COlORREF SetMonthCalColor(int iColor,COLORREF ref);

    此函數成功時将傳回月曆先前的顔色,否則傳回-1。

    參數:

iColor

指定月曆控件中要設定顔色的部位,它可以是下列值之一

MCSC_BACKGROUND

設定在月份之間的背景色。

MCSC_MONTHBK

設定月份中的背景色。

MCSC_TEXT

設定月份中的文本色。

MCSC_TITLEBK

設定月曆題頭背景色。

MCSC_TITLETEXT

設定月曆題頭文本色。

MCSC_TRAILINGTEXT

設定當月份向前後翻頁時,與今日相同的日期的顔色。

ref

指定的顔色。

    與其相對應的成員函數CDateTimeCtrl::GetMonthCalColor可用來獲得相關顔色。在DTP控件

中還可調用成員函數CDateTimeCtrl::GetMonthCalCtrl來獲得下拉月曆指針。

    設定顯示的格式

    成員函數CDateTimeCtrl::SetFormat是用來設定DTP控件的顯示格式,其原型如下:

    BOOL SetFormat(LPCTSTR pstrFormat);

    參數pstrFormat是用來指定顯示格式,若為NULL則使用預設的格式。該參數可包含下列格式字元:

"d"

1或2位日期。

"dd"

兩位日期,日期為1位數字時,在前加0.

"ddd"

星期縮寫成三個字元。

"dddd"

星期全名。

"h"

在12小時格式中,顯示1位或2位。

"hh"

12小時格式的兩位數顯,不足時前補0。

"H"

24小時格式的1位或2位數顯。

"HH"

24小時格式的兩位數顯,不足時前補0。

"m"

分鐘的1位或2位數顯。

"mm"

分鐘的兩位數顯,不足時前補0。

"M"

月份的1位或2位數顯。

"MM"

月份的兩位數顯,不足時前補0.

"MMM"

月份縮寫成三個字元.

"MMMM"

月份全名。

"t"

AM/PM縮寫成一個字元如AM縮寫成"A"。

"tt"

AM/PM。

"y"

年号的最後1位數,顯如1999年顯示為9.

"yy"

年号的最後2位數顯。

"yyy"

整個年号,如1999。

    設定或擷取時間

    成員函數CDateTimeCtrl::SetTime和CDateTimeCtrl::GetTime分别用來設定和擷取DTP

控件中的時間。其函數原型如下:

     BOOL SetTime(const COIeDateTime& timeNew);

     BOOL SetTime(const CTime* pTimeNew);

     BOOL SetTime(LPSYSTEMTIME pTimeNew=NULL);

   函數第三個形式中的參數pTimeNew是指向SYSTEMTIME結構的指針,其結構如下:

   typedef struct_SYSTEMTIME{ //st

      WORD wYear; //年

      WORD wMonth; //月,0=1月,以此類推

      WORD wDayOfWeek; //一周的某一天,0=星期天,以此類推

      WORD wDay; //天數

      WORD wHour; //小時

      WORD wMinute; //分針

      WORD wSecond; //秒

      WORD wMilliseconds; //百萬分之一秒

   } SYSTEMTIME;

    BOOL GetTime(COIeDateTime& timeDest)const;

    DWORD GetTime(CTime& timeDest)const;

    DWORD GetTime(LPSYSTEMTIME pTimeDest)const;

    (2)月曆控件

    顔色的設定

    在CMonthCalCtrl中,成員函數GetColor和SetColor是用來擷取或設定月曆控件的有關顔色的,

其定義同DTP控件的同名函數。

    設定或擷取今天的日期

    在CMonthCalCtrl中,成員函數GetToday和SetToday是用來擷取或設定月曆控件的今

天日期的。其函數原型如下:

    BOOL GetToday(COleDateTime& refDateTime)const;

    BOOL GetToday(CTime& refDateTime)const;

    BOOL GetToday(LPSYSTEMTIME pDateTime)const;

    void SetToday(const COleDateTime& refDateTime);

    void SetToday(const LPSYSTEMTIME pDateTime);

    設定或擷取目前選擇項

    在CMonthCalCtrl中,成員函數GetCurSel和SetCurSel是用來擷取或設定月曆控件當

前選擇項的。其函數原型如下:

    BOOL GetCurSel(COleDateTime& refDateTime)const;

    BOOL GetCurSel(CTime& refDateTime)const;

    BOOL GetCurSel(LPSYSTEMTIME pDateTime)const;

    BOOL SetCurSel(const COleDateTime& refDateTime);

    BOOL GetCurSel(const CTime& refDateTime);

    BOOL GetCurSel(const LPSYSTEMTIME pDateTime);

    三、通知消息

    DTP控件的通知消息有:

DTN_DROPDOWN

DTP控件中的月曆控件将要顯示。

DTN_CLOSEUP

DTP控件中的月曆控件将要關閉。

DTN_DATETIMECHANGEDTP

控件中的内容已發生改變。

DTN_FORMAT

文本需要顯示在回調域中。

DTN_FORMATQUERY

文本顯示所需最大尺寸。

DTN_USERSTRING

使用者已完成DTP控件的編輯。

DTN_WMKEYDOWN

使用者單擊回調域。

    月曆控件的通知消息有:

MCN_GETDAYSTATE

獲得日期的定制風格。

MCN_SELCHANGE

目前選擇項已被改變。

MCN_SELECT

在月曆控件中選擇一個日期。

NM_RELEASEDCAPTURE

釋放滑鼠的捕獲消息。

    以上這些消息均可用ClassWizard加以映射。