嘿大家我正在使用SYSTEMTIME结构用c ++执行arithematic来创建一个倒数计时器。我如何设置自定义时间并使其倒计时?这是一个非常通用的问题,但如果有任何具有SYSTEMTIME结构经验的人能够给我一些非常感谢的帮助!
我想为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制作冒险游戏的炸弹计时器。我如何重新编程这段代码,以便我可以加入这个标准的倒计时数字时钟?
非常感谢任何帮助,非常感谢!
答案 0 :(得分:1)
这个想法从根本上说是错误的。我建议改用FILETIME。代码应如下所示:
typedef __int64 TDateTime; // This is actually an alias to NT FILETIME.
inline TDateTime CurrDateTime()
{
TDateTime param;
GetSystemTimeAsFileTime((FILETIME*)¶m);
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。
答案 1 :(得分:0)
您可以将计时器用于此目的,我建议您使用GetTickCount
功能。您可以获得PC运行的毫秒数并再次获取它并使用减法获得传递的时间。