-1

皆さん、私は構造体 SYSTEMTIME を使用して c++ で算術演算を実行し、カウントダウン タイマーを作成しています。カスタム時間を設定してカウントダウンするにはどうすればよいですか? これは非常に一般的な質問ですが、SYSTEMTIME 構造の経験がある人が私に支援を与えることができれば、非常に感謝しています!

  1. SYSTEMTIME のデフォルト時間を設定したいので、

    SYSTEMTIME tvar;
    GetLocalTime(&tvar); // instead of using this to initiate the clock i'd like to set the time by myself
    

2. また、その時間からこの時計のカウントダウンを行うにはどうすればよいですか?

私はGDIを使用しているため、この構造を使用する必要があり、グループで既に作業したコードはこの構造を使用しているため、すでに実装されているため、変更の余地がないことに注意してください。誰か教えてください私が持っているこれら2つの問題を解決する解決策はありますか?

!!! 編集 !!!ここでこのタイマーを再作成しようとしています http://www.picksourcecode.com/ps/ct/161097.phpカウントダウン形式で、opengl で作成しているアドベンチャー ゲームの爆弾タイマーの時間と分のみを使用します。この標準のカウントダウン デジタル時計を組み込むことができるように、このコードを再プログラムするにはどうすればよいでしょうか。

どんな助けでも大歓迎です、どうもありがとう!

4

2 に答える 2

1

その考えは根本的に間違っています。代わりに FILETIME を使用することをお勧めします。コードは次のようになります。

typedef __int64 TDateTime;  // This is actually an alias to NT FILETIME.

inline TDateTime  CurrDateTime()
{
      TDateTime param;
      GetSystemTimeAsFileTime((FILETIME*)&param);
      return(param);
}

#define   ONE_SECOND    ((__int64)10000000)

TDateTime myFinalTime = CurrDateTime() + 30*ONE_SECOND;
while (CurrDateTime() < myFinalTime )
    Sleep(50);

実際、FILETIME は 64 ビット整数です。機能GetSystemTimeAsFileTime()は安いです。上記のようなコードで完全に機能します。これは何度も使いました。

TDateTime画面に値を表示する場合は、呼び出してから API を呼び出す必要がありFileTimeToLocalFileTime(...)ますFileTimeToSystemTime(...)

于 2014-06-10T08:03:45.040 に答える
0

この目的にはタイマーを使用できGetTickCountます。機能を使用することをお勧めします。PC が実行されているミリ秒を取得して再度取得し、減算を使用して経過時間を取得できます。

于 2014-06-10T20:50:41.620 に答える