有C ++ / CX项目时,是否可以为CalendarDatePicker设置默认日期?

时间:2019-07-08 18:56:14

标签: c++ xaml uwp c++-cx

我有一个C ++ / CX UWP项目,希望用户从我使用Windows.UI.Xaml.Controls创建的CalendarDatePicker中选择一个日期。但是,在初始化时,我希望将CalendarDatePicker选择为一个特定的日期(当前未选择任何日期,而只是说“选择日期”)。 我知道这在C#中很容易实现,而且我很确定C ++也有办法,但是我还没有找到解决方案。

有人对如何做到这一点有想法吗?

2 个答案:

答案 0 :(得分:0)

您可以将特定日期传递到 datePicker-> Date 。以下是完整的步骤。 document解释了C ++ / CX中DateTime的相关用法。因此,我们可以通过 SYSTEMTIME-> FILETIME-> _ ULARGE_INTEGER-> DateTime 获取DateTime。首先,我们使用 COleDateTime < / strong>类以解析特定的日期字符串(使用前包括 ATLComTime.h ),然后进行转换。

#include <ATLComTime.h>

//parse date string
COleDateTime coDT;
coDT.ParseDateTime(L"2012-11-10", 0, 0); 

//get system time struct​
SYSTEMTIME st;​
coDT.GetAsSystemTime(st);​
​
//COleDateTime is in local timezone, DateTime is in UTC, so we need to convert​
SYSTEMTIME st_utc;​
TzSpecificLocalTimeToSystemTime(nullptr, &st, &st_utc);​
​
//get filetime struct to get a time format compatible with DateTime​
FILETIME fileTime;​
SystemTimeToFileTime(&st_utc, &ft);​
​
//use _ULARGE_INTEGER to get a int64 to set the DateTime struct to​
_ULARGE_INTEGER ulint = { fileTime.dwLowDateTime, fileTime.dwHighDateTime };​
​
Windows::Foundation::DateTime myDateTime;​
wfdt.UniversalTime = ulint.QuadPart;​

//set date
MyDatePicker->Date = myDateTime;

答案 1 :(得分:0)

我终于有更多的时间对此进行调查。

解决此问题的更简单方法是使用以下代码:

Windows::Globalization::Calendar calendar;
Myguidatepicker->Date = calendar.GetDateTime();