win32 -如何使用SYSTEMTIME结构作为倒计时时钟
win32 - How to use SYSTEMTIME structure as a countdown clock
大家好,我正在使用结构SYSTEMTIME来执行算术与c++创建一个倒计时计时器。如何设置自定义时间并使其倒计时?这是一个非常普遍的问题,但如果有人有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制作冒险游戏的炸弹计时器。我该如何重新编程这段代码,使我可以纳入这个标准的倒计时数字时钟?
任何帮助都是感激的,非常感谢!
这个想法根本就是错误的。我建议使用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。
您可以为此目的使用定时器,我建议您使用GetTickCount
函数。你可以得到PC正在运行的毫秒数,然后再得到它,然后用减法得到经过的时间。
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- 从文本文件中读取时钟时间和事件时间并进行处理
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 用时钟测量程序的运行时间
- 如何在C++中为高分辨率时钟声明变量?
- 如何制作每秒从 30 乘 1 倒计时的计时器?
- 如何在 C++17 中检索 std::filesystem::file_time_type 的时钟类型
- 我的时钟函数在 c++ 函数中不起作用
- 不同机器之间的标准时钟性能差异显著
- C++ 循环屏障中的倒计时使用原子变量出错[请无锁的解决方案]
- 计时库中的时钟和琐碎时钟概念
- 如何使用 CTIME/Chrono Libarey 将开始时间与系统时钟进行比较
- 如何在给定时钟偏移的情况下正确获取时间
- 使用时钟"storing"特定时间
- 时钟功能返回零时差
- 开发简单的时钟和日期类时遇到问题
- 标准::计时::时钟、硬件时钟和周期计数
- C++ 和 C# 中的等效系统时钟毫秒?
- 如何在c++和FLTK中实现一个倒计时时钟
- win32 -如何使用SYSTEMTIME结构作为倒计时时钟