如何初始化 cppwinrt TimeSpan 结构?

use*_*210 2 c++-winrt

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

record.UserState(newValue); // Set the UserState property
Run Code Online (Sandbox Code Playgroud)

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

TimeSpan ts = TimeSpan(6000000);
Duration duration = Duration();
duration.TimeSpan(ts);
Run Code Online (Sandbox Code Playgroud)

第三行在“duration”上产生一个智能感知错误:“调用类类型的对象,而没有适当的运算符或将函数转换为指针函数类型。” 同一行的构建错误是“Term 不计算为采用 1 个参数的函数”。我应该补充一点,Duration 的构造函数似乎有一个参数,即 TimeSpan,但这也不被接受。使用 cppwinrt 时如何设置 Duration 的 TimeSpan 属性?

Rya*_*erd 6

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

直接初始化:

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

单独设置:

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