CDateTimePickerCtrl.GetSystemTime() - Datum vorgeben
-
Ich will die Werte, die in einem CDateTimePickerCtrl (WTL Element) eingetragen sind, ändern. Es gibt die Methode:
BOOL SetSystemTime(DWORD dwFlags, LPSYSTEMTIME lpSysTime)mit dem diese Zuweisung gelingen sollte. Ich versuche es so:
SYSTEMTIME *date = new SYSTEMTIME; date->wYear = 2008; date->wMonth = 10; date->wDay = 18; m_MyCDateTimePickerCtrl.SetSystemTime(0, date);allerdings ändert sich dann an dem Steuerelement nichts! Woran kann das liegen??
Vielleicht kann mir ja hier jemand weiterhelfen!

-
Vielleicht nutze ich die falsche Operation?
Das sind alle Infos, die ich für das Steuerlement habe:
CDateTimePickerCtrl
Basics
Characteristic Value/description
Inherits from CWindow (see CMDIWindow)
Usage mode Client
Usage NotesTo implement a window based on a DateTimePicker control, do this:
class CMyDateTimePickerCtrl : CWindowImpl<CMyDateTimePickerCtrl, CDateTimePickerCtrl>
{
public:
BEGIN_MSG_MAP(CMyDateTimePickerCtrl)
// put your message handler entries here
END_MSG_MAP()
};Methods
public:
CDateTimePickerCtrl(HWND hWnd = NULL)
CDateTimePickerCtrl& operator=(HWND hWnd)
HWND Create(HWND hWndParent, _U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
DWORD dwStyle = 0, DWORD dwExStyle = 0,
_U_MENUorID MenuOrID = 0U, LPVOID lpCreateParam = NULL)Operations
static LPCTSTR GetWndClassName()
BOOL SetFormat(LPTSTR lpszFormat)
COLORREF GetMonthCalColor(int nColorType) const
COLORREF SetMonthCalColor(int nColorType, COLORREF clr)
DWORD GetRange(LPSYSTEMTIME lpSysTimeArray) const
BOOL SetRange(DWORD dwFlags, LPSYSTEMTIME lpSysTimeArray)
DWORD GetSystemTime(LPSYSTEMTIME lpSysTime) const
BOOL SetSystemTime(DWORD dwFlags, LPSYSTEMTIME lpSysTime)
CMonthCalendarCtrl GetMonthCal() const
CFontHandle GetMonthCalFont() const
void SetMonthCalFont(HFONT hFont, BOOL bRedraw = TRUE)Data Members
(none)
-
Würde mich freuen, wenn mir jemand helfen kann. Ich konnte das Problem noch nicht lösen :(.
Ich habe folgender Quelltext (auch zum Testen von GetSystemTime):
SYSTEMTIME *date = new SYSTEMTIME; SYSTEMTIME *date2 = new SYSTEMTIME; date->wYear = 2008; date->wMonth = 12; date->wDay = 12; date->wDayOfWeek = 1; date->wHour = 1; date->wMinute = 1; date->wSecond = 1; date->wMilliseconds = 1; m_DatumEnde.GetSystemTime(date2); bool res = m_DatumEnde.SetSystemTime(GDT_NONE, date2);In date2 steht dann nachher wirklich das aktuelle Datum! (Defaulteinstellung bei SYSTEMTIME)
Aber dieses SetSystemTime will nicht funktionieren!
Noch jemand ne Idee?
-
In CodeProject.com konnte ich folgendes Beispiel dazu finden. Dort wird immer vor dem SetSystemTime ja immer Attach aufgerufen! Verstehe aber nicht genau was da vor sich geht und was ich da machen müsste! Ist hier ein Experte der mir weiterhelfen kann?
void SetCombinedDateTime ( HWND hwnd, UINT idcDatePicker, UINT idcTimePicker, const FILETIME* pFiletime ) { SYSTEMTIME st; FILETIME ftLocal; ::FileTimeToLocalFileTime (pFiletime, &ftLocal); ::FileTimeToSystemTime (&ftLocal, &st); CDateTimePickerCtrl dtControl; dtControl.Attach(::GetDlgItem(hwnd, idcDatePicker)); dtControl.SetSystemTime(GDT_VALID, &st); if (idcTimePicker != 0) { dtControl.Attach(::GetDlgItem(hwnd, idcTimePicker)); dtControl.SetSystemTime(GDT_VALID, &st); } dtControl.Detach(); }
-
Tut mir leid, ich kenne nur CDateTimeCtrl - da könnte ich dir weiterhelfen.

-
Trotzdem danke fürs lesen
