X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed5317e538f5d3d7b2731b1e4248137f014139a6..1dde66dda68a3d712d2f4de0388c4bb3a3375b36:/src/msw/ole/automtn.cpp diff --git a/src/msw/ole/automtn.cpp b/src/msw/ole/automtn.cpp index 063f4c4c7e..095c6e0119 100644 --- a/src/msw/ole/automtn.cpp +++ b/src/msw/ole/automtn.cpp @@ -28,18 +28,28 @@ #define _FORCENAMELESSUNION #include "wx/log.h" +#include "wx/msw/private.h" #include "wx/msw/ole/oleutils.h" #include "wx/msw/ole/automtn.h" -#include "wx/msw/private.h" #include + +#ifdef __WXWINCE__ +#include "wx/msw/wince/time.h" +#else #include +#endif #include #include + #include #define _huge + +#ifndef __WXWINCE__ #include +#endif + #include // Verifies will fail if the needed buffer size is too large @@ -54,7 +64,9 @@ static int rgMonthDays[13] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; -#if wxUSE_TIMEDATE +#if wxUSE_DATETIME +#include "wx/datetime.h" + static BOOL OleDateFromTm(WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute, WORD wSecond, DATE& dtDest); static BOOL TmFromOleDate(DATE dtSrc, struct tm& tmDest); @@ -600,7 +612,8 @@ bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant) oleVariant.bstrVal = wxConvertStringToOle(str); } // For some reason, Watcom C++ can't link variant.cpp with time/date classes compiled -#if wxUSE_TIMEDATE && !defined(__WATCOMC__) +// Now obsolete +#if 0 // wxUSE_TIMEDATE && !defined(__WATCOMC__) else if (type == wxT("date")) { wxDate date( variant.GetDate() ); @@ -619,6 +632,17 @@ bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant) time.GetHour(), time.GetMinute(), time.GetSecond(), oleVariant.date)) return FALSE; } +#endif +#if wxUSE_DATETIME + else if (type == wxT("datetime")) + { + wxDateTime date( variant.GetDateTime() ); + oleVariant.vt = VT_DATE; + + if (!OleDateFromTm(date.GetYear(), date.GetMonth(), date.GetDay(), + date.GetHour(), date.GetMinute(), date.GetSecond(), oleVariant.date)) + return FALSE; + } #endif else if (type == wxT("void*")) { @@ -695,15 +719,14 @@ bool wxConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant) } case VT_DATE: { -#if wxUSE_TIMEDATE +#if wxUSE_DATETIME struct tm tmTemp; if (!TmFromOleDate(oleVariant.date, tmTemp)) return FALSE; - wxDate date(tmTemp.tm_yday, tmTemp.tm_mon, tmTemp.tm_year); - wxTime time(date, tmTemp.tm_hour, tmTemp.tm_min, tmTemp.tm_sec); + wxDateTime date(tmTemp.tm_yday, (wxDateTime::Month) tmTemp.tm_mon, tmTemp.tm_year, tmTemp.tm_hour, tmTemp.tm_min, tmTemp.tm_sec); - variant = time; + variant = date; #endif break;