Привет всем, я использую структуру 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
функция. Вы можете получить миллисекунды, что ПК работает, и получить его снова и получить прошедшее время, используя вычитание.