-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,因此我必须使用此结构,并且由于我已经与我的团队合作的代码使用了此结构,我们已经实现了它,因此没有更改的空间,谁能给我解决我遇到的这两个问题的解决方案?

!!!编辑 !!!我正在尝试在这里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在屏幕上显示您需要调用的值FileTimeToLocalFileTime(...),然后是FileTimeToSystemTime(...)API。

于 2014-06-10T08:03:45.040 回答
0

您可以为此目的使用计时器,我建议您使用GetTickCount功能。您可以获取 PC 正在运行的毫秒数,然后再次获取它并使用减法获取经过的时间。

于 2014-06-10T20:50:41.620 回答