Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
1

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

09.01.2016, 18:41. Просмотров 1672. Ответов 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
Миниатюры
Как сделать выход по нажатию клавиш - из графического и консольного режима?  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2016, 18:41
Ответы с готовыми решениями:

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

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

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

Как сделать выход из консоли по нажатию Esc?
как сделать выход из консоли по нажатию Esc?

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

Не по теме:

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



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

Не по теме:

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

0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 19:35 5
Dev-C++ не работает с графикой?
0
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
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
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
09.01.2016, 20:37 7
В таком случае, почему вам сочувствуют?
0
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
10.01.2016, 01:52 8
Salah_Addin, тут дело в другом! graphics вообще мерзкая библиотека и на сколько я помню две последние версии вообще не работают !
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2016, 01:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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

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

Подскажите как сделать, чтобы по нажатию горячих клавиш курсор мыши возвращался в центр экрана
Нужно чтобы после нажатия нескольких клавиш курсор возвращался в центр экрана.


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

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

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