Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ЛЮДИ ВНИМАНИЕ ВОПРОС!

3.8K
24 ноября 2004 года
hex
58 / / 31.10.2004
Кароче как задать промежуток времени в секундах от 59 до 0? и вівести єто дело в статус бар при том что в той ячейке куді нуно вівести уже есть надпись Время: ? Я думал через СTimeSpan но там насколько я понял только получать можно промежуток с системного времени а мне нуно чтобы оно отсчитывало посекундно от 59 до 0 и при етом чтобы кажную секунду выводило тоесть обновляло ну тикало кароче вы меня поняли ! :D помогите плиз! подарю цветочек! :D
319
24 ноября 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by hex
Кароче как задать промежуток времени в секундах от 59 до 0? и вівести єто дело в статус бар при том что в той ячейке куді нуно вівести уже есть надпись Время: ? Я думал через СTimeSpan но там насколько я понял только получать можно промежуток с системного времени а мне нуно чтобы оно отсчитывало посекундно от 59 до 0 и при етом чтобы кажную секунду выводило тоесть обновляло ну тикало кароче вы меня поняли ! :D помогите плиз! подарю цветочек! :D


c использованием высокоточного таймера:

Код:
//Variable pour le timer
    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);
    };

отсчитывает паузу в одну секунду, как остальное реализовать - надеюсь, проблем нет
262
24 ноября 2004 года
Iktomy
1.2K / / 11.10.2004
Цитата:
Originally posted by hex
Кароче как задать промежуток времени в секундах от 59 до 0? и вівести єто дело в статус бар при том что в той ячейке куді нуно вівести уже есть надпись Время: ? Я думал через СTimeSpan но там насколько я понял только получать можно промежуток с системного времени а мне нуно чтобы оно отсчитывало посекундно от 59 до 0 и при етом чтобы кажную секунду выводило тоесть обновляло ну тикало кароче вы меня поняли ! :D помогите плиз! подарю цветочек! :D



А вот тебе еще мелкософтовский примерчик. Не совсем то, но как показывать результат в статусбаре научит. А если хочешь поместить прогрессбар в статусбар - то поройся на sources.ru, та вроде в одном факе по MFC я такое видел.

З.Ы. Цветы-конфеты тут не пьют!:P

3.8K
24 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by xelos

c использованием высокоточного таймера:

Код:
//Variable pour le timer
    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);
    };

отсчитывает паузу в одну секунду, как остальное реализовать - надеюсь, проблем нет

я шось в єтом коде ваше ниче не пойму растолкуй пожалуйта! :)

319
24 ноября 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by hex
я шось в єтом коде ваше ниче не пойму растолкуй пожалуйта! :)


почитай описание высокоточного таймера, хелп по функциям посмотри - QueryPerformanceCounter и QueryPerformanceFrequency

3.8K
24 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by xelos

почитай описание высокоточного таймера, хелп по функциям посмотри - QueryPerformanceCounter и QueryPerformanceFrequency

а незя как нить попроще? ну там через таймері или как то так там к примеру SetTimer и всё такое? расскажите пожалуйста :)

319
25 ноября 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by hex
а незя как нить попроще? ну там через таймері или как то так там к примеру SetTimer и всё такое? расскажите пожалуйста :)


можно и через таймер:

 
Код:
// Set the timer.
 
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 раза).
3.8K
25 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by xelos

можно и через таймер:
 
Код:
// Set the timer.
 
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 с точностью до секунды... помогите а тоя уже нанаю чо делать :'(

10
25 ноября 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by hex
люди кому не лень пожалуйста помогите! напишите нормальный таймер или как это назвать еще ну чтобы в строке состояния в ячейке каждую секунду менялись цыферки от 59 до 0 с точностью до секунды...


А зачем вообще таймер? Если надо только выводить время в строке состояния, достаточно написать обработчик Idle.

3.8K
25 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by smartsoft

А зачем вообще таймер? Если надо только выводить время в строке состояния, достаточно написать обработчик Idle.

ну я типа игру пишу она пошаговая сетевая в виде проги под МФС и кароче такое дело вот допустим наступает время хода и если в течении минуті пользователь не сделает ход то всё типа он пролетает... дык вот что типа нужно:

1.) Отбавлять от 59 каждую (физическую) секунду 1.
2.) Выводить каждое изменении во времени в статус баре.
3.) По истемении времени выполнить какието действия...

10
25 ноября 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by hex
1.) Отбавлять от 59 каждую (физическую) секунду 1.
2.) Выводить каждое изменении во времени в статус баре.
3.) По истемении времени выполнить какието действия...


Ну, и чем тебе не подходит Idle? В начале отсчета запоминаешь:
int tick_count = GetTickCount();

Потом в Idle проверяешь каждый раз, не увеличилось ли значение, возвращаемое GetTickCount(), на 100 (проверь по MSDN, кажется там в миллисекундах). Если изменилось, рисуешь новое значение в статусе.

Когда значение вырастет до требуемого, издеваешься над игроком, как задумывал.

3.8K
25 ноября 2004 года
hex
58 / / 31.10.2004
Цитата:
Originally posted by smartsoft

Ну, и чем тебе не подходит Idle? В начале отсчета запоминаешь:
int tick_count = GetTickCount();

Потом в Idle проверяешь каждый раз, не увеличилось ли значение, возвращаемое GetTickCount(), на 100 (проверь по MSDN, кажется там в миллисекундах). Если изменилось, рисуешь новое значение в статусе.

Когда значение вырастет до требуемого, издеваешься над игроком, как задумывал.

эх... просто понимаешь не все такие умные... :( можешь код написать если не трудно?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог