ЛЮДИ ВНИМАНИЕ ВОПРОС!
Кароче как задать промежуток времени в секундах от 59 до 0? и вівести єто дело в статус бар при том что в той ячейке куді нуно вівести уже есть надпись Время: ? Я думал через СTimeSpan но там насколько я понял только получать можно промежуток с системного времени а мне нуно чтобы оно отсчитывало посекундно от 59 до 0 и при етом чтобы кажную секунду выводило тоесть обновляло ну тикало кароче вы меня поняли ! :D помогите плиз! подарю цветочек! :D
c использованием высокоточного таймера:
LARGE_INTEGER freq;
double dfreq; //diviseur du timeur
QueryPerformanceFrequency(&freq);
dfreq=(double)(freq.QuadPart);
dfreq=dfreq/1000;
LARGE_INTEGER t1,t2,t3;
double td1, td2;
//memoriser l'heure
QueryPerformanceCounter(&t1);
td1=(double)(t1.QuadPart);
t2=t1;
//attendre jusqu'a la fin de la note
t3.QuadPart=0;
td2=td1;
while (td2-td1 < dfreq*1000){
QueryPerformanceCounter(&t2);
td2=(double)(t2.QuadPart);
};
отсчитывает паузу в одну секунду, как остальное реализовать - надеюсь, проблем нет
Кароче как задать промежуток времени в секундах от 59 до 0? и вівести єто дело в статус бар при том что в той ячейке куді нуно вівести уже есть надпись Время: ? Я думал через СTimeSpan но там насколько я понял только получать можно промежуток с системного времени а мне нуно чтобы оно отсчитывало посекундно от 59 до 0 и при етом чтобы кажную секунду выводило тоесть обновляло ну тикало кароче вы меня поняли ! :D помогите плиз! подарю цветочек! :D
А вот тебе еще мелкософтовский примерчик. Не совсем то, но как показывать результат в статусбаре научит. А если хочешь поместить прогрессбар в статусбар - то поройся на sources.ru, та вроде в одном факе по MFC я такое видел.
З.Ы. Цветы-конфеты тут не пьют!:P
c использованием высокоточного таймера:
LARGE_INTEGER freq;
double dfreq; //diviseur du timeur
QueryPerformanceFrequency(&freq);
dfreq=(double)(freq.QuadPart);
dfreq=dfreq/1000;
LARGE_INTEGER t1,t2,t3;
double td1, td2;
//memoriser l'heure
QueryPerformanceCounter(&t1);
td1=(double)(t1.QuadPart);
t2=t1;
//attendre jusqu'a la fin de la note
t3.QuadPart=0;
td2=td1;
while (td2-td1 < dfreq*1000){
QueryPerformanceCounter(&t2);
td2=(double)(t2.QuadPart);
};
отсчитывает паузу в одну секунду, как остальное реализовать - надеюсь, проблем нет
я шось в єтом коде ваше ниче не пойму растолкуй пожалуйта! :)
я шось в єтом коде ваше ниче не пойму растолкуй пожалуйта! :)
почитай описание высокоточного таймера, хелп по функциям посмотри - QueryPerformanceCounter и QueryPerformanceFrequency
почитай описание высокоточного таймера, хелп по функциям посмотри - QueryPerformanceCounter и QueryPerformanceFrequency
а незя как нить попроще? ну там через таймері или как то так там к примеру SetTimer и всё такое? расскажите пожалуйста :)
а незя как нить попроще? ну там через таймері или как то так там к примеру SetTimer и всё такое? расскажите пожалуйста :)
можно и через таймер:
SetTimer(hwnd, // handle to main window
IDT_TIMER1, // timer identifier
5000, // 5-second interval
(TIMERPROC) MyTimerProc); // timer callback
IDT_TIMER1 - идентификатор, целое
hwnd - окно, которому будет посылаться WM_TIMER
5000 - пкриод в милисекундах,
MyTimerProc - процедура, вызываемая по WM_TIMER.
соответственно при создании таймера назначаешь какое-нить целое, равное 0, каждый раз при входе в MyTimerProc увеличиваешь его на 1, при 60 сбрасываешь, в этой же процедуре рчуешь статус бар.
Проблема: при большой загруженности системы, MyTimerProc будет вызываться с периодами большими, чем ты задаешь (ингда больше в 2 раза).
можно и через таймер:
SetTimer(hwnd, // handle to main window
IDT_TIMER1, // timer identifier
5000, // 5-second interval
(TIMERPROC) MyTimerProc); // timer callback
IDT_TIMER1 - идентификатор, целое
hwnd - окно, которому будет посылаться WM_TIMER
5000 - пкриод в милисекундах,
MyTimerProc - процедура, вызываемая по WM_TIMER.
соответственно при создании таймера назначаешь какое-нить целое, равное 0, каждый раз при входе в MyTimerProc увеличиваешь его на 1, при 60 сбрасываешь, в этой же процедуре рчуешь статус бар.
Проблема: при большой загруженности системы, MyTimerProc будет вызываться с периодами большими, чем ты задаешь (ингда больше в 2 раза).
блин вабще засада! люди кому не лень пожалуйста помогите! напишите нормальный таймер или как это назвать еще ну чтобы в строке состояния в ячейке каждую секунду менялись цыферки от 59 до 0 с точностью до секунды... помогите а тоя уже нанаю чо делать :'(
люди кому не лень пожалуйста помогите! напишите нормальный таймер или как это назвать еще ну чтобы в строке состояния в ячейке каждую секунду менялись цыферки от 59 до 0 с точностью до секунды...
А зачем вообще таймер? Если надо только выводить время в строке состояния, достаточно написать обработчик Idle.
А зачем вообще таймер? Если надо только выводить время в строке состояния, достаточно написать обработчик Idle.
ну я типа игру пишу она пошаговая сетевая в виде проги под МФС и кароче такое дело вот допустим наступает время хода и если в течении минуті пользователь не сделает ход то всё типа он пролетает... дык вот что типа нужно:
1.) Отбавлять от 59 каждую (физическую) секунду 1.
2.) Выводить каждое изменении во времени в статус баре.
3.) По истемении времени выполнить какието действия...
1.) Отбавлять от 59 каждую (физическую) секунду 1.
2.) Выводить каждое изменении во времени в статус баре.
3.) По истемении времени выполнить какието действия...
Ну, и чем тебе не подходит Idle? В начале отсчета запоминаешь:
int tick_count = GetTickCount();
Потом в Idle проверяешь каждый раз, не увеличилось ли значение, возвращаемое GetTickCount(), на 100 (проверь по MSDN, кажется там в миллисекундах). Если изменилось, рисуешь новое значение в статусе.
Когда значение вырастет до требуемого, издеваешься над игроком, как задумывал.
Ну, и чем тебе не подходит Idle? В начале отсчета запоминаешь:
int tick_count = GetTickCount();
Потом в Idle проверяешь каждый раз, не увеличилось ли значение, возвращаемое GetTickCount(), на 100 (проверь по MSDN, кажется там в миллисекундах). Если изменилось, рисуешь новое значение в статусе.
Когда значение вырастет до требуемого, издеваешься над игроком, как задумывал.
эх... просто понимаешь не все такие умные... :( можешь код написать если не трудно?