首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cppwinrt中设置Duration的TimeSpan属性?

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

Stack Overflow用户
提问于 2017-12-24 10:36:24
回答 2查看 910关注 0票数 1

根据cppwinrt的主文档,Migrating WinRT...,“为C++属性设置值的等效C++/WinRT源代码调用一个与Windows Runtime属性同名的方法和一个新值的参数:

代码语言:javascript
复制
record.UserState(newValue); // Set the UserState property

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

代码语言:javascript
复制
TimeSpan ts = TimeSpan(6000000);
Duration duration = Duration();
duration.TimeSpan(ts);

第三行在“duration”上产生了一个intellisense错误:“调用一个类类型的对象,但没有适当的运算符或将函数转换为指向函数类型的指针。”同一行的构建错误是"Term不会计算出一个带1个参数的函数“。我应该补充的是,Duration的构造函数似乎只有一个参数,一个TimeSpan,但它也不被接受。在使用cppwinrt时,如何设置持续时间的TimeSpan属性?

EN

回答 2

Stack Overflow用户

发布于 2018-04-22 16:41:56

记住,在C++/WinRT中,Windows::Foundation::TimeSpan只是std::chrono::duration的一个类型定义,所以你可以使用std::chrono的有用功能。

直接初始化:

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

单独设置:

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

票数 5
EN

Stack Overflow用户

发布于 2017-12-25 05:36:44

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

代码语言:javascript
复制
TimeSpan ts = TimeSpan(6000000);
Duration duration = Duration();
duration.TimeSpan = ts;

希望这能帮助其他遇到类似情况的人……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47957648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档