一、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加以映射。