Форум программистов, компьютерный форум CyberForum.ru

Как использовать таймер - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 17:01     Как использовать таймер #1
Здравствуйте, господа.

Можно ли каким-либо образом использовать таймер в программе вообще?

Увидел описание таймера, однако не нашёл timer.h.

Мне необходимо, чтобы программа в том случае, если пользователь ничего не делает опр. промежуток времени в течение getch (), выдавала сообщение.

Заранее благодарю за возможные ответы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.12.2010, 17:24     Как использовать таймер #2
где хочешь использовать таймер? на форме или в консоле?
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 17:26  [ТС]     Как использовать таймер #3
Если есть такая возможность, то в консоли.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 17:37     Как использовать таймер #4
YourLastSong, любые ф-ции ввода ждут ввода, таким образом посчитать сколько длится ожидание невозможно (правда я не знаю о каком таймере вы говорите, может какая-то левая библиотека умеет это делать). Могу предложить низкоуровневые API ввода\вывода. Через них можно даже нажатие и отпускание клавиши перехватить)

Не по теме:

ща тему найду, когда с АПИ разбирался, как раз что-то похожее спрашивал.

YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 17:40  [ТС]     Как использовать таймер #5
Да, точно, про это я не подумал как-то.

Постарайтесь поискать, если не сложно, однако надо именно для консоли.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 17:42     Как использовать таймер #6
вот, там есть пример кода - к нему можно хоть таймер прикрутить, хоть вывод строки, если клавиша не нажата.

Добавлено через 20 секунд
Цитата Сообщение от YourLastSong Посмотреть сообщение
надо именно для консоли
оно самое)

Добавлено через 46 секунд
в 5-ом посте рабочий вариант кода.
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.12.2010, 17:45     Как использовать таймер #7
тут была тема, найти не могу, короче там отсчет начинается сразу после пуска программы(обращаясь к системному), далее если небыло использование никакой функции, после определенного времени, например 10 минут, срабатывает функция exit(0);

жестко, но работало....

может и не в этом форуме... чет найти не могу...
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 17:50  [ТС]     Как использовать таймер #8
Выдаётся вот такое сообщение:

Код
'c' : undeclared identifier
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 17:59     Как использовать таймер #9
Вот то, что вам нужно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream> 
#include <windows.h>
using namespace std;
void MyGetch();
const int C=20;
int main() {
   cout<<"Press any key..."<<endl;
   MyGetch();
   system("pause");
   return 0;
}
void MyGetch(){
    HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD IR[C];
     DWORD read;
     while(PeekConsoleInputA(hstd,IR,C,&read)){
             Sleep(1000);//здесь можно задавать время
             bool F=false;
             for(int i=0;i<read;i++){
                 if(IR[i].EventType==KEY_EVENT){
                     F=true;
                     break;}        
             }
             if(F)break;
             else cout<<"Don't be stupid!"<<endl;
     }
}
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 19:14  [ТС]     Как использовать таймер #10
А как сделать проверку на нажатие клавиши 'a' или 'b' в EventType==KEY_EVENT, не подскажете?

Понял только, как для пробела сделать, но мне необходимо использовать нажатие клавиш 'a' или 'b' сейчас.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 19:27     Как использовать таймер #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void MyGetch(){
    HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD IR[C];
     DWORD read;
     while(PeekConsoleInputA(hstd,IR,C,&read)){
             Sleep(1000);
             bool F=false;
             for(int i=0;i<read;i++){
                 if(IR[i].EventType==KEY_EVENT){
                    if(IR[i].Event.KeyEvent.wVirtualKeyCode==0x41)
                     cout<<"You press a";
                    if(IR[i].Event.KeyEvent.wVirtualKeyCode==0x42)
                     cout<<"You press b";
                     F=true;
                     break;}        
             }
             if(F)break;
             else cout<<"Don't be stupied!"<<endl;
     }
}
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
21.12.2010, 19:53  [ТС]     Как использовать таймер #12
Код
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>

using namespace std;

int x;
const int C=20;
char c;

void main()
{
	cout << "a - start" << endl << "b - quit";
	HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD IR[C];
     DWORD read;
     while(PeekConsoleInputA(hstd,IR,C,&read)){
			 a1:
             Sleep(1);
			 x++;
             bool F=false;
             for(int i=0;i<read;i++){
                 if(IR[i].EventType==KEY_EVENT){
				 if(IR[i].Event.KeyEvent.wVirtualKeyCode==0x41)
                     system("cls");
                    if(IR[i].Event.KeyEvent.wVirtualKeyCode==0x42)
                     exit (EXIT_SUCCESS);
                     break;}        
             }
			 if (x > 8000)
			 {
			 cout << endl << endl << "You need to choose one of this menu points" << endl;
			 getch ();
			 x = 0;
			 goto a1;
			 }
     }
Большое спасибо.

Однако в том случае, если нажать любой другой символ, те символы распознаваться уже не будут вообще. Как это можно исправить?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 20:06     Как использовать таймер #13
можно сделать отдельную ф-цию (как у меня в коде), и там сделать так, чтоб ф-ция возвращала прочитанный символ.
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
22.12.2010, 22:22  [ТС]     Как использовать таймер #14
Попробовал, не получилось почему-то.

Сможете показать у меня на примре, как это можно сделать, пожалуйста?

Добавлено через 14 часов 48 минут
Так сможет кто-нибудь помочь исправить, пожалуйста?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
23.12.2010, 15:14     Как использовать таймер #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <Windows.h>
char MyGetch();
int main(){
    char a;
    a=MyGetch();
    std::cout<<"Function \"MyGetch()\" return "<<a<<std::endl;
    return 0;
}
char MyGetch(){
    const int C=20;
    HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD IR[C];
    DWORD read;
     while(PeekConsoleInputA(hstd,IR,C,&read)){
             for(int i=0;i<read;i++)
                 if(IR[i].EventType==KEY_EVENT&&isprint(int(IR[i].Event.KeyEvent.wVirtualKeyCode)))
                    return IR[i].Event.KeyEvent.wVirtualKeyCode;  
            Sleep(1000);     
            std::cout<<"Don't be stupied!"<<std::endl;
     }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 12:20     Как использовать таймер
Еще ссылки по теме:

как сделать таймер? C++
C++ Как правильно использовать классы? Как вывести значение класса на экран?
C++ Как реализовать таймер в консольном приложении?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
18.12.2012, 12:20     Как использовать таймер #16
deleted

Не по теме:

вообще в другую тему писал

Yandex
Объявления
18.12.2012, 12:20     Как использовать таймер
Ответ Создать тему
Опции темы

Текущее время: 10:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru