Таймеры в C++
Заранее благодарен.
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();
}
printf("time\n");
}
void main(){
int nTimerID = SetTimer(NULL, 0, 1000, (TIMERPROC)TimerProc);
getch();
}
Но такой код не пашет. :-(
см. MSDN
SetTimer();
KillTimer();
SetTimer();
KillTimer();
Это вобщето APIшная функция, а никак не стандартная для C++ =))
Наверно самому придеться писать.
SetTimer();
KillTimer();
Это вобщето APIшная функция, а никак не стандартная для C++ =))
Наверно самому придеться писать.[/QUOTE]
Ну ващет я в курсе :) и я не грил, что она стандартная.
Он привел код, а я попытался объяснить почему
Цитата:
такой код не пашет. :-(
.
Незнаю для чего тебе нужен таймер, а Sleep() не подойдет??
Sleep остонавливает работу потока на заданное количество милисекунд. Таймер же выполняеться например в отдельном потоке и извещает когда прошло время.
Скорее всего для этого не создается отдельный поток, просто сама ОС извещает с помощью своих механизмов.
Ну я описываю впринципе. Даже если писать таймер самому. да и в разных ОC он может выполняться поразному. Не аморачивался кстати как это происходит в винде, но думаю что вполне вероятно эти самые механизмы ОС выполняються в том же процессе в отдельном потоке )
Вряд ли. Созданием потоков управляет само приложение. По умолчанию - один поток в процессе. Скорее всего это сам виндоус устанавливает и сам отслеживает...
Библиотека time.h. Она, вроде, стандартная.
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");
}
}
//===================================