如何在cppwinrt中设置Duration的TimeSpan属性?

时间:2017-12-24 02:36:24

标签: c++-winrt

根据cppwinrt的主文档,迁移C ++ ...,"设置Windows运行时属性值的等效C ++ / WinRT源代码调用与Windows运行时属性同名的方法,新值的参数:

record.UserState(newValue); // Set the UserState property

但是在尝试设置Duration对象的TimeSpan属性时,这似乎不起作用:

TimeSpan ts = TimeSpan(6000000);
Duration duration = Duration();
duration.TimeSpan(ts);

第三行在" duration":"在没有适当的操作符或转换函数的情况下调用类类型的对象到指针到函数类型时产生智能感知错误。"同一行的构建错误是" Term不评估为带有1个参数的函数。"我应该补充说,Duration的构造函数似乎有一个参数,一个TimeSpan,但是也不接受。如何在使用cppwinrt时设置持续时间的TimeSpan属性?

2 个答案:

答案 0 :(得分:2)

请记住,在C ++ / WinRT中Windows::Foundation::TimeSpan只是std::chrono::duration的typedef,因此您可以使用std :: chrono的有用功能。

直接初始化:

Duration duration{ std::chrono::milliseconds{ 100 }, DurationType::Automatic };

单独设置:

Duration duration{ }; duration.TimeSpan = std::chrono::milliseconds{ 100 };

答案 1 :(得分:0)

好的,我想我可以回答我自己的问题。虽然它在MSDN .NET文档中被称为Duration的“属性”,但在此cppwinrt环境中,TimeSpan不是Duration的属性,而是Duration结构的数据值。因此,不要使用上述设置属性的方法进行设置;你这样设置:

TimeSpan ts = TimeSpan(6000000);
Duration duration = Duration();
duration.TimeSpan = ts;

希望能帮助处于类似情况的其他人......