Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xlxndr
57 / 9 / 3
Регистрация: 14.06.2013
Сообщений: 115
#1

Как сделать выход по нажатию клавиш - из графического и консольного режима? - C++

09.01.2016, 18:41. Просмотров 635. Ответов 7
Метки нет (Все метки)

Делаю программу, в которой есть меню и есть графики, которые могут выводиться в зависимости от меню.
Требуется сделать так, чтобы график загрывался по нажатию клавиши, например, 'q', и чтобы выход из программы осуществлялся по нажатию клавиши, например, ESC (код клавиши - 27).

Выскакивает Error message "Drawing operation was attempted when there was no current window".
При этом окно, если оно было закрыто, должно открываться по циклу снова...
Что может быть не так???

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
#include <iostream>
#include <graphics.h>
using namespace std;
 
int main()
{
    char q;
    do
    {
        cout << "To close graphic window - push ESC.\n\n";
 
        initwindow(640,480);
        while(1)
        {
            circle(320,240,150);
            if(kbhit()&&getch()=='q') closegraph(); //Выход из графического режима
        }
 
        cout << "To view circle again - push any key,\nTo out program - push ESC.\n\n";
 
     }while(kbhit()&&getch()==27);                  //Выход из программы
 
    return 0;
}
замена во вложенном цикле closegraph() на break или exit(0) не помогает (последний вариант, разумеется, вообще осуществляет завершение программы).
0
Миниатюры
Как сделать выход по нажатию клавиш - из графического и консольного режима?  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2016, 18:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как сделать выход по нажатию клавиш - из графического и консольного режима? (C++):

Инициализация графического режима! - C++
Кто может - помогите!!!! На экране сообщение: ...Device driver file not found (EGAVGA.BGI)... Но в папке BGI он есть. Папка с...

Чтение данных из файла в таблицу графического режима - C++
Здравствуйте! Назрел такой вопрос: как считать данные из уже созданного файла в таблицу, которая была создана в графическом режиме? ...

Нет инициализации графического режима в BorlandC++ под ДОС - C++
Привет всем,проблема такая после относительно долгих вычислений стараюсь инициализировать графический режим,но он выдает ошибку - Not...

Выход по нажатию ESC - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; float sum(); float razn(); float del(); float proizv(); float...

выход из графического режима - Assembler
a 100 ;инициализация mov ah,00 ;графический режим 640*350 mov al,10 int 10 ...

Как сделать выход из программы по нажатию клавиши F9? - Assembler
Привет всем! Подскажите пожалуйста, как сделать выход из программы по нажатию клавиши f9?

7
Mesteriis
374 / 157 / 40
Регистрация: 08.08.2015
Сообщений: 1,121
Завершенные тесты: 1
09.01.2016, 19:03 #2
Цитата Сообщение от xlxndr Посмотреть сообщение
while(kbhit()&&getch()==27
А зачем такие сложности не проще на форма сделать кнопку переключения режимов, и повесить на нее shortcat?
а дальше через сигналы и метод close();
и вообще
Цитата Сообщение от xlxndr Посмотреть сообщение
#include <graphics.h>
Брости вы эту погань и билдер, пишите на Qt
0
xlxndr
57 / 9 / 3
Регистрация: 14.06.2013
Сообщений: 115
09.01.2016, 19:04  [ТС] #3
Где сделать кнопку? В консольном окне? К сожалению, чтобы это сделать, боюсь еще придется переписать код консольного окна windows... да и данная программа вряд ли от этого упростится
Насчет QT - спасибо за совет... когда-то на нем и начинал... но вот обучение приходится проходить на CodeBlocks и Dev-Cpp
0
Mesteriis
374 / 157 / 40
Регистрация: 08.08.2015
Сообщений: 1,121
Завершенные тесты: 1
09.01.2016, 19:14 #4

Не по теме:

xlxndr, А пардон, прочитал название название темы и подумал про GUI



Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от xlxndr Посмотреть сообщение
но вот обучение приходится проходить на CodeBlocks и Dev-Cpp
Сочувствую.

0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 19:35 #5
Dev-C++ не работает с графикой?
0
xlxndr
57 / 9 / 3
Регистрация: 14.06.2013
Сообщений: 115
09.01.2016, 20:28  [ТС] #6
странный вопрос... если вы видели программу и читали тему, то должно быть понятно, что графика работает...

Добавлено через 6 минут
Странное дело... теперь решил освободиться от getch(), которая не хотела работать после срабатывания closegraph() !!!
Сделал так... Но теперь внешний цикл выполняется РОВНО 2 РАЗА! Потом программа закрывается не зависимо от вашего согласия...

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
28
29
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <graphics.h>
using namespace std;
 
int main()
{
    char q;
 
    while(1)
    {
        q = 'n';
        cout << "To close graphic window - push ESC.\n\n";
 
        initwindow(640,480);
        circle(320,240,150);
        while(1)
        if(kbhit()&&getch()==27) break;
        closegraph();
 
        cout << "To view circle again - input"y",\nTo out program - press Enter.\n\n";
 
        q = getchar();
        if(q!='y') break;
     }
 
    return 0;
}
0
Salah_Addin
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:37 #7
В таком случае, почему вам сочувствуют?
0
Mesteriis
374 / 157 / 40
Регистрация: 08.08.2015
Сообщений: 1,121
Завершенные тесты: 1
10.01.2016, 01:52 #8
Salah_Addin, тут дело в другом! graphics вообще мерзкая библиотека и на сколько я помню две последние версии вообще не работают !
0
10.01.2016, 01:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2016, 01:52
Привет! Вот еще темы с ответами:

Как сделать выход из формы по нажатию Esc? - C++ Builder
То есть как запустить функцию выхода по нажатию Esc в программе, срабатывающею при нажатии кнопки выход (то есть мою функцию)?

Как сделать выход из цикла While при нажатии клавиш Tab - C (СИ)
Как сделать выход из цикла While(25-35 строки) при нажатии клавиш Tab и продолжить выполнение программы, за ранее спасибо ...

у меня два вопроса. 1) как сделать выход по нажатию клавии ESC 2) как вывести ответ. - Assembler
вот код ideal model small stack 256 dataseg op1 db 1 op2 db 1 op3 db 1 op4 db 1

Составить программу инициализации графического режима, предварительно выполнив тестирование графического адаптера - Turbo Pascal
Здравствуйте! Вот, попалась не простая(по моему субъективному мнению) задача, которую я совершенно не понимаю как решить. Звучит она...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru