更新 : 2007 年 11 月
現在選択されている時刻を日時指定コントロールから取得し、指定された SYSTEMTIME 構造体に格納します。
BOOL GetTime(
COleDateTime& timeDest
) const;
DWORD GetTime(
CTime& timeDest
) const;
DWORD GetTime(
LPSYSTEMTIME pTimeDest
) const;
パラメータ
timeDest
最初の形式では、システム時刻情報を受け取る COleDateTime オブジェクトへの参照。2 番目の形式では、システム時刻情報を受け取る CTime オブジェクトへの参照。pTimeDest
システム時刻情報を受け取る SYSTEMTIME 構造体へのポインタ。NULL は使用できません。
戻り値
最初の形式では、COleDateTime オブジェクトへの時刻が正常に書き込まれると 0 以外を返します。それ以外の場合は 0 を返します。2 番目と 3 番目の形式では、NMDATETIMECHANGE 構造体に設定されている dwFlag メンバと等価な DWORD 値を返します。詳細については、「解説」を参照してください。
解説
このメンバ関数は、Windows SDK に記述されている Win32 メッセージ DTM_GETSYSTEMTIME の動作を実装します。MFC の実装では、時刻情報を格納するのに COleDateTime クラス、CTime クラス、または SYSTEMTIME 構造体を使用できます。
2 番目と 3 番目の形式の戻り値 DWORD は、日時指定コントロールのステータスが "日付なし" に設定されているかどうかを示します。この値は、NMDATETIMECHANGE 構造体のメンバ dwFlags の内容と等価です。戻り値が GDT_NONE に等しい場合は、コントロールのステータスは "日付なし" であり、DTS_SHOWNONE スタイルが使用されます。戻り値が GDT_VALID に等しい場合は、システム時刻が指定位置に正常に格納されています。
使用例
void CDateTimeDlg::OnBnClickedTimebutton()
{
// get as a CTime
CTime timeTime;
DWORD dwResult = m_DateTimeCtrl.GetTime(timeTime);
if (dwResult == GDT_VALID)
{
// the user checked the box and specified data
CString str;
// is it a time-only control, or a date-only control?
if ((m_DateTimeCtrl.GetStyle() & DTS_TIMEFORMAT) == DTS_TIMEFORMAT)
str = timeTime.Format(_T("%X"));
else
str = timeTime.Format(_T("%x"));
AfxMessageBox(str);
}
else
{
// the user unmarked the "none" box
AfxMessageBox(_T("Time not set!"));
}
// Calling as SYSTIME is much the same, but calling for a COleDateTime
// has us test the state of the COleDateTime object for validity to
// see if the user did or didn't check the "none" box.
}
必要条件
ヘッダー : afxdtctl.h