21

winapi ラッパーの場合、呼び出しに指定された期間、クロノを使用したいと考えています。コード例:

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

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

dwDuration はミリ秒単位である必要があります。

最初の質問: 魔法をどうするか。

2 番目の質問: パラメータの宣言は大丈夫ですか?

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() の戻り値の型は double になります)。

于 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 に答える