Другие языки программирования и технологии
можно ли в Winapi создать несколько таймеров, если программа работает без окна?
в функции SetTimer если аргумент hwnd - NULL, то указывать идентификатор таймеру бессмысленно (то есть нельзя создать 2 таймера в проге без окна), может кто нибудь знает как создать несколько таймеров, помогите пож.
может лучше нормальный таймер использовать?
double countsPerSecond = 0.0;
__int64 CounterStart = 0;
void StartTimer(){
LARGE_INTEGER frequencyCount;
QueryPerformanceFrequency(&frequencyCount);
countsPerSecond = double(frequencyCount.QuadPart);
QueryPerformanceCounter(&frequencyCount);
CounterStart = frequencyCount.QuadPart;
}
float GetTime(){
LARGE_INTEGER currentTime;
QueryPerformanceCounter(¤tTime);
return double(currentTime.QuadPart - CounterStart) / countsPerSecond;
}
/////////// применение
StartTimer();
while(true)
if (GetTime() > 1.f)//если 1 секунда достигнута
{
//что-то делать
StartTimer();//сброс таймера
}
с использованием include chrono
auto t1 = chrono::system_clock::now();
unsigned int calculating_simulation { 0 };
while ( true ) {
auto t2 = chrono::system_clock::now();
if( chrono::duration_cast< chrono::milliseconds >( t2 - t1 ).count() > 250 ){
cout << '.';
++calculating_simulation;
t1 = chrono::system_clock::now();
}
if( calculating_simulation > 9 ){
cout << endl;
break;
}
}
//=========== или так
inline _int64 rdtsc_time( void ){
_asm{
rdtsc
}
}
double get_CPU_speed( void ){
auto a = rdtsc_time();
Sleep( 1000 );
return static_cast((rdtsc_time() - a));
}
////////////
double cpuspeed = get_CPU_speed();
cout << "CPUSPEED: " << cpuspeed << "Hz\n";
_int64 _t1 = rdtsc_time();
while( true ){
//какое то вычисление
if( что-то ) break;
}
_int64 _t2 = rdtsc_time();
cout << "Затраченное время: " << (_t2 - _t1)/cpuspeed << '\n';
double countsPerSecond = 0.0;
__int64 CounterStart = 0;
void StartTimer(){
LARGE_INTEGER frequencyCount;
QueryPerformanceFrequency(&frequencyCount);
countsPerSecond = double(frequencyCount.QuadPart);
QueryPerformanceCounter(&frequencyCount);
CounterStart = frequencyCount.QuadPart;
}
float GetTime(){
LARGE_INTEGER currentTime;
QueryPerformanceCounter(¤tTime);
return double(currentTime.QuadPart - CounterStart) / countsPerSecond;
}
/////////// применение
StartTimer();
while(true)
if (GetTime() > 1.f)//если 1 секунда достигнута
{
//что-то делать
StartTimer();//сброс таймера
}
с использованием include chrono
auto t1 = chrono::system_clock::now();
unsigned int calculating_simulation { 0 };
while ( true ) {
auto t2 = chrono::system_clock::now();
if( chrono::duration_cast< chrono::milliseconds >( t2 - t1 ).count() > 250 ){
cout << '.';
++calculating_simulation;
t1 = chrono::system_clock::now();
}
if( calculating_simulation > 9 ){
cout << endl;
break;
}
}
//=========== или так
inline _int64 rdtsc_time( void ){
_asm{
rdtsc
}
}
double get_CPU_speed( void ){
auto a = rdtsc_time();
Sleep( 1000 );
return static_cast((rdtsc_time() - a));
}
////////////
double cpuspeed = get_CPU_speed();
cout << "CPUSPEED: " << cpuspeed << "Hz\n";
_int64 _t1 = rdtsc_time();
while( true ){
//какое то вычисление
if( что-то ) break;
}
_int64 _t2 = rdtsc_time();
cout << "Затраченное время: " << (_t2 - _t1)/cpuspeed << '\n';
Азамат Есенгалиев
Кода много, а микросекундная точность далеко не всегда требуется
В MSDN не русским по белому написано:
If the function succeeds and the hWnd parameter is NULL, the return value is an integer identifying the new timer. An application can pass this value to the KillTimer function to destroy the timer.
Т. е. с нулевым hwnd функцией SetTimer возвращается уникальный идентификатор для каждого таймера, никаких ограничений на количество нет.
If the function succeeds and the hWnd parameter is NULL, the return value is an integer identifying the new timer. An application can pass this value to the KillTimer function to destroy the timer.
Т. е. с нулевым hwnd функцией SetTimer возвращается уникальный идентификатор для каждого таймера, никаких ограничений на количество нет.
> в функции SetTimer если аргумент hwnd - NULL, то указывать идентификатор таймеру бессмысленно (то есть нельзя создать 2 таймера в проге без окна)
Прочитал описание функции SetTimer (https://msdn.microsoft.com/en-us/library/ms644906(v=vs.85).aspx). Никакого запрета не нашёл.
Прочитал описание функции SetTimer (https://msdn.microsoft.com/en-us/library/ms644906(v=vs.85).aspx). Никакого запрета не нашёл.
Похожие вопросы
- Как создать флеш-игру или программу. С помощью чего?
- Почему программа работает некорректно при вводе цифры "0"?
- Зачем в Window возможность создать несколько администраторов?
- Для чего нужна программа турбо паскаль? как ей программировать? и еще: как ее создали, с помощью каких программ?
- Чтобы запускать программы нужна программа работающая уже, а что за это программа загрузчик?
- если программа (С++) без окна, т. е. не видно, но висит в процессах, она все равно перехватывает нажатия клавиш?
- Как создать вирус,какие существуют программы для создания вирусов?
- Как создать хоррор игру? Какой программой?
- Скажите как создать сайт и какие программы знать надо, и языки? И из чего начать вопше или дайте ссылку на статью. спасибо
- Как возможно перевести программу работающую в Linux для работы в Windows? Как вкратце происходит этот процесс?