Domanda

For a winapi wrapper I want to use chrono for a duration given to the call. The code example:

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

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

dwDuration has to be in milliseconds.

First question: How do to the magic.

Second question: Is the parameter declaration okay?

È stato utile?

Soluzione

The name of the type is std::chrono::milliseconds, and it has a member function count() that returns the number of those milliseconds:

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

online demo: http://coliru.stacked-crooked.com/a/03f29d41e9bd260c

If you want to be ultra-pedantic, the return type of count() is std::chrono::milliseconds::rep

If you want to deal with fractional milliseconds, then the type would be std::chrono::duration<double, std::milli> (and the return type of count() is then double)

Altri suggerimenti

You can use the following code:

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

auto timeMillis = chrono::duration_cast<chrono::milliseconds>(now.time_since_epoch()).count();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top