Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2010, 19:51   #1
Almost
Любитель
Пользователь
 
Аватар для Almost
 
Регистрация: 13.04.2009
Сообщений: 16
По умолчанию Как в С++ сделать часы?

Как в С++ сделать часы, чтобы они обновлялись каждую секунду ( а еще лучше каждую миллисекунду). Какой код за это отвечает? И какие библиотеки подгружать? Спасибо. VS2010.
Almost вне форума Ответить с цитированием
Старый 23.11.2010, 21:02   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Никак. Windows не является системой реального времени, а посему физически невозможно отмерить ровно секунду и тем более миллисекунду.
Ну а так ключевые слова для поиска: WM_TIMER, SetTimer, KillTimer.
pu4koff вне форума Ответить с цитированием
Старый 23.11.2010, 22:26   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Если нужны часы, которые время показывают, то в таком ключе
Код:
while (true)
{
//Узнаем время, распечатываем
}
Время узнать можно с помощью функций GetSystemTime и GetLocalTime (пример внизу страницы)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 24.11.2010, 03:34   #4
Almost
Любитель
Пользователь
 
Аватар для Almost
 
Регистрация: 13.04.2009
Сообщений: 16
По умолчанию

Цитата:
Никак. Windows не является системой реального времени, а посему физически невозможно отмерить ровно секунду и тем более миллисекунду.
Ну а так ключевые слова для поиска: WM_TIMER, SetTimer, KillTimer.
Я физически и не требовал. Мне нужно хотя бы синхронизировать время программы с временем компа, как пример.

Цитата:
Если нужны часы, которые время показывают, то в таком ключе
Код:

Код:
while (true)
{
//Узнаем время, распечатываем
}
Время узнать можно с помощью функций GetSystemTime и GetLocalTime (пример внизу страницы)
А как сделать, чтобы время обновлялось?
Пока вот так:
Код:
#include <stdio.h>
#include <windows.h>
#include <conio.h>


int main()
{
    SYSTEMTIME st, lt;
    
    GetSystemTime(&st);
    GetLocalTime(&lt);
    
    printf("The system time is: %02d:%02d\n", st.wHour, st.wMinute);
    printf(" The local time is: %02d:%02d\n", lt.wHour, lt.wMinute);
	getch();
	return 0;
}
Almost вне форума Ответить с цитированием
Старый 24.11.2010, 07:15   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Если работаешь в Buildere, в нём есть компонент - Timer на вкладке System.
В нём можно задать замер интервалов от 1 миллисекунды.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 24.11.2010, 08:56   #6
Almost
Любитель
Пользователь
 
Аватар для Almost
 
Регистрация: 13.04.2009
Сообщений: 16
По умолчанию

Я вверху написал MVS 2010.
Almost вне форума Ответить с цитированием
Старый 24.11.2010, 11:16   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Almost, я ж говорю - пихаете все в бесконечный таймер и узнаете время.
Код:
#include <stdio.h>
#include <windows.h>
#include <conio.h>


int main()
{
SYSTEMTIME st, lt;
    
while (!kbhit())   //Скажем, в качестве условия завершения - нажатие клавиши
    {
    GetSystemTime(&st);
    GetLocalTime(&lt);

    system("cls");
    printf("The system time is: %02d:%02d\n", st.wHour, st.wMinute);
    printf(" The local time is: %02d:%02d\n", lt.wHour, lt.wMinute);
    }
getch();
return 0;
}
Ну и еще можете проверять каждый раз, изменилось ли время с прошлого раза, и выводить только обновленное.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 09.01.2011, 22:31   #8
master3763
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 78
По умолчанию

А как сделат чтоб менялись только переменные...?
Так весь текст рожит...

Последний раз редактировалось master3763; 09.01.2011 в 22:33.
master3763 вне форума Ответить с цитированием
Старый 10.01.2011, 00:12   #9
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

айяяяй. Надо поставить хотя бы небольшую задержку в цикле Sleep(50) например.
Иначе этот цикл будет постоянно в процессоре.

Последний раз редактировалось NiCola999; 10.01.2011 в 00:16.
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать динамические часы на форме в VBA? v-anna Помощь студентам 1 27.10.2010 03:13
Не могу сделать цифровые часы sid Общие вопросы Delphi 25 16.12.2009 05:06
Как считать часы? tararam Microsoft Office Excel 4 18.09.2009 01:06
Как сделать так чтобы моя программа при включении отображалась в панели задач, как например часы Window ? asked86 Win Api 1 15.12.2008 08:42
как добавить в форму ЧАСЫ samosval Общие вопросы .NET 1 29.12.2007 13:51