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

Ваш аккаунт

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

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

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

Таймеры в C++

20K
11 августа 2006 года
Belevern
1 / / 11.08.2006
У меня возникла такая проблемка: пишу я проги на BCB6: там таймер создаётся с помощью VCL... А в консоли - никак. Вот, подскажите мне как создать таймер в C++ с использованием, желательно стандартных библиотек, чтобы туже самую прогу я смог скомпилить под VC и GCC... Очень нужно, пожалуйста помогите...
Заранее благодарен.
P.S.
То есть мне надо чтобы было примерно так:
Цитата:
void CALLBACK _export TimerProc(HWND hwnd, UINT msg, UINT idTimer, DWORD dwTime){
printf("time\n");
}

void main(){
int nTimerID = SetTimer(NULL, 0, 1000, (TIMERPROC)TimerProc);
getch();
}


Но такой код не пашет. :-(

6.9K
11 августа 2006 года
RZ_RZ
53 / / 09.06.2005
Почему у тя NULL первый параметр в SetTimer() и зачем _export ?

см. MSDN
SetTimer();
KillTimer();
240
11 августа 2006 года
aks
2.5K / / 14.07.2006
RZ_RZ,
SetTimer();
KillTimer();
Это вобщето APIшная функция, а никак не стандартная для C++ =))
Наверно самому придеться писать.
6.9K
11 августа 2006 года
RZ_RZ
53 / / 09.06.2005
[QUOTE=aks]RZ_RZ,
SetTimer();
KillTimer();
Это вобщето APIшная функция, а никак не стандартная для C++ =))
Наверно самому придеться писать.[/QUOTE]


Ну ващет я в курсе :) и я не грил, что она стандартная.

Он привел код, а я попытался объяснить почему
Цитата:
такой код не пашет. :-(

.

1.8K
12 августа 2006 года
Death Knight
139 / / 19.02.2006
Незнаю для чего тебе нужен таймер, а Sleep() не подойдет??
240
12 августа 2006 года
aks
2.5K / / 14.07.2006
Sleep остонавливает работу потока на заданное количество милисекунд. Таймер же выполняеться например в отдельном потоке и извещает когда прошло время.
284
12 августа 2006 года
michael_is_98
587 / / 25.02.2005
[QUOTE=aks]Sleep остонавливает работу потока на заданное количество милисекунд. Таймер же выполняеться например в отдельном потоке и извещает когда прошло время.[/QUOTE]
Скорее всего для этого не создается отдельный поток, просто сама ОС извещает с помощью своих механизмов.
240
12 августа 2006 года
aks
2.5K / / 14.07.2006
[QUOTE=michael_is_98]Скорее всего для этого не создается отдельный поток, просто сама ОС извещает с помощью своих механизмов.[/QUOTE]
Ну я описываю впринципе. Даже если писать таймер самому. да и в разных ОC он может выполняться поразному. Не аморачивался кстати как это происходит в винде, но думаю что вполне вероятно эти самые механизмы ОС выполняються в том же процессе в отдельном потоке )
284
13 августа 2006 года
michael_is_98
587 / / 25.02.2005
[QUOTE=aks]Ну я описываю впринципе. Даже если писать таймер самому. да и в разных ОC он может выполняться поразному. Не аморачивался кстати как это происходит в винде, но думаю что вполне вероятно эти самые механизмы ОС выполняються в том же процессе в отдельном потоке )[/QUOTE]
Вряд ли. Созданием потоков управляет само приложение. По умолчанию - один поток в процессе. Скорее всего это сам виндоус устанавливает и сам отслеживает...
8.9K
10 сентября 2006 года
Kap
77 / / 10.09.2006
Библиотека time.h. Она, вроде, стандартная.
18K
11 сентября 2006 года
casey
11 / / 18.07.2006
Таймеры не могут использоваться в консольных приложениях :

SetTimer() was not designed to be used with a console application because
it requires a message loop to dispatch the timer signal to the timer
procedure. In a console application, this behavior can be easily emulated
with a thread that is set to wait on an event.

Как вариант

#pragma hdrstop
#include <windows.h>
#include <stdio.h>
//----------------------------------------------

#pragma argsused
DWORD dwThreadId;
DWORD WINAPI ThreadFunc(LPVOID lpCOM);

//====================================
int main(int argc, char* argv[])
{
CreateThread(NULL,0,ThreadFunc,NULL,0,&dwThreadId);
Sleep(INFINITE);
return 0;
}
//---------------------------------------------
DWORD WINAPI ThreadFunc(LPVOID lpCOM)
{
for( ; ; )
{
Sleep(1000);
printf("time\n");
}
}
//===================================
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог