21

对于 winapi 包装器,我想在给定调用的持续时间内使用 chrono。代码示例:

bool setTimer(std::chrono::duration<std::chrono::milliseconds> duration)
{
    unsigned int dwDuration = Do some chrono magic here

    SetTimer(m_hWnd,1,dwDuration,0);
}

dwDuration 必须以毫秒为单位。

第一个问题:魔法怎么办。

第二个问题:参数声明可以吗?

4

2 回答 2

33

类型的名称是std::chrono::milliseconds,它有一个count()返回毫秒数的成员函数:

bool setTimer(std::chrono::milliseconds duration)
{
    unsigned int dwDuration = duration.count();
    return std::cout << "dwDuration = " << dwDuration << '\n';
}

在线演示:http ://coliru.stacked-crooked.com/a/03f29d41e9bd260c

如果你想超迂腐,count() 的返回类型是std::chrono::milliseconds::rep

如果你想处理小数毫秒,那么类型将是std::chrono::duration<double, std::milli>(并且 count() 的返回类型是双精度)

于 2013-12-26T13:33:33.297 回答
4

您可以使用以下代码:

auto now = chrono::high_resolution_clock::now();

auto timeMillis = chrono::duration_cast<chrono::milliseconds>(now.time_since_epoch()).count();
于 2013-12-26T13:29:19.110 回答