Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
#1

Создание текстового окна

11.01.2016, 13:57. Просмотров 881. Ответов 25

Добрый день.

Пробую создать текствое окно на плюсах. Среда разработки - Qt Creator, компилятор - MinGW. Код следующий:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    window(10,10,60,40);
    gotoxy(2,3);
    cout << "Hello world";
    return 0;
}
Но компилятор почему-то выдаёт ошибки:
Код
'window' was not declared in this scope.
'gotoxy' was not declared in this scope.
Не пойму в чём причина. Когда требовалась очистка экрана пробовал использовать clrscr() - с тем же результатом, что и выше. Пришлось заменить на system('cls').

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2016, 13:57
Ответы с готовыми решениями:

Создание текстового файла
Создать файл и записать в него n целых чисел. Из исходного файла сформировать...

Создание текстового файла
Пожалуйста помоги. Нужно написать программу, которая создает текстовый файл и...

Создание копии текстового файла
Всем привет :) Мне нужно написать программу, которая создаёт копию содержимого...

Создание словаря текстового файла.
Здравствуй!! Помогите пожалуйста начинающему программисту. Задача такая: есть...

Создание и удаление текстового файла
Люди добрые помогите пожалуйста. делаю курсовую задание &quot;Создание и удаление...

25
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,077
Записей в блоге: 3
Завершенные тесты: 1
11.01.2016, 14:01 #2
Цитата Сообщение от inviter42 Посмотреть сообщение
Не пойму в чём причина.
В старом учебнике и в отсутствии TurboC++?
0
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
11.01.2016, 14:06  [ТС] #3
Croessmah, в чём принципиальное отличие TurboC++ от Qt в рамках обработки <conio.h>? Делаю не по учебнику, а по методичке, которую выдали в универе. Но раз вы говорите, что информация там старая, я ничего против не имею. Я всего лишь хочу получись несколько более внятный ответ в плане развёрнутости. И если данная конкструкция по какой-то причине не работает\не актуальна для использования, то чем её заменить.
0
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,077
Записей в блоге: 3
Завершенные тесты: 1
11.01.2016, 14:18 #4
Лучший ответ Сообщение было отмечено inviter42 как решение

Решение

Цитата Сообщение от inviter42 Посмотреть сообщение
Я всего лишь хочу получись несколько более внятный ответ в плане развёрнутости. И если данная конкструкция по какой-то причине не работает\не актуальна для использования, то чем её заменить.
Да даже в википедии написано
Сonio.h (от англ. console input-output — консольный ввод-вывод) — заголовочный файл, используемый в старых компиляторах, работающих в операционных системах MS-DOS, для создания текстового интерфейса пользователя. Тем не менее, он не является частью языка программирования Си, стандартной библиотеки языка Си, ISO C или требуемой стандартом POSIX.

Этот заголовочный файл объявляет несколько библиотечных функций для работы с «консольным вводом и выводом» программы. Большинство компиляторов языка Си, предназначенных для DOS, Windows 3.x, Phar Lap, DOSX, OS/2 или Win32 имели этот файл и обеспечивали сопутствующие библиотечные функции в библиотеке Си по умолчанию. Большинство компиляторов языка Си, предназначенных для UNIX и Linux, не имеют этого файла и не обеспечивают сопутствующих библиотечных функций.

Библиотечные функции, объявленные в conio.h, весьма различались в зависимости от компилятора. Первоначально реализованные в Microsoft Visual C++ различные функции привязывались напрямую к нескольким первым функциям DOS, связанным с прерыванием 21h. Но библиотека, поставляемая с Turbo C++ и Borland C++, не использует DOS API, а вместо этого напрямую обращается к видеопамяти для вывода информации и использования сигналов прерывания BIOS.

Компиляторы, предназначенные для операционных систем отличных от DOS, таких как Linux, Windows и OS/2, обеспечивали различные реализации этих функций.
Вывод - conio.h старое, унылое, не стандартное решение.

Чем заменить?
Да есть всякие реализации этих функций под винду и новые компиляторы.
Даже на форуме есть.
Например, вот реализация gotoxy
1
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
11.01.2016, 14:22  [ТС] #5
Croessmah, окей, таким образом от использования <conio.h> в современном программировании лучше отказаться. Это ясно, но тогда чем именно заменить её функции? Я имею в виду, например, для очистки экрана можно использовать соответствующую команду консоли, а для функции window() существует какой-то аналог?
0
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,077
Записей в блоге: 3
Завершенные тесты: 1
11.01.2016, 14:30 #6
Лучший ответ Сообщение было отмечено inviter42 как решение

Решение

Готового решения не подскажу.
Можно написать руками аналоги,
инфу по функциям API для управления консолью посмотреть на MSDN и в гугле.
Вот немного информации на русском
1
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
11.01.2016, 14:31  [ТС] #7
Croessmah, благодарю. Постараюсь дальше разобраться самостоятельно.
0
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,077
Записей в блоге: 3
Завершенные тесты: 1
11.01.2016, 14:34 #8
Цитата Сообщение от inviter42 Посмотреть сообщение
Постараюсь дальше разобраться самостоятельно.
Ну если что, заходите, спрашивайте.
Если видно, что человек старается,
то тут постараются помочь чем смогут
0
nord_v
329 / 177 / 80
Регистрация: 22.08.2013
Сообщений: 724
11.01.2016, 14:45 #9
Цитата Сообщение от inviter42 Посмотреть сообщение
но тогда чем именно заменить её функции? Я имею в виду, например, для очистки экрана можно использовать соответствующую команду консоли, а для функции window() существует какой-то аналог?
Красота неописуемая! Документация: http://www.cs.colorado.edu/~main/bgi/
0
Миниатюры
Создание текстового окна  
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
11.01.2016, 14:48  [ТС] #10
nord_v, хм, вообще говоря имелось в виду текстовое окно. Т.е. псевдоокно внутри консоли. А Croessmah вообще сказал, что <conio.h> пора отправить на заслуженную пенсию
Но всё ровно благодарю за ответ!

[upd] я вот посмотрел на ваш код и теперь начинаю думать, что оперировать с реальным окном будет проще.
0
nord_v
329 / 177 / 80
Регистрация: 22.08.2013
Сообщений: 724
11.01.2016, 14:59 #11
Цитата Сообщение от inviter42 Посмотреть сообщение
Croessmah вообще сказал, что <conio.h> пора отправить на заслуженную пенсию
Так это не conio.h, это bgi под Windows (#include <conio.h> там можно убрать).
0
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
11.01.2016, 15:03  [ТС] #12
nord_v, я так понимаю, что в качестве bgi тут служит <graphics.h>, поправьте меня, если я не прав. Я погуглил и люди со стаковерфлоу говорят, что она(<graphics.h>) тоже устарела и лучше использовать winAPI вместо неё.
0
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,077
Записей в блоге: 3
Завершенные тесты: 1
11.01.2016, 15:11 #13
Цитата Сообщение от inviter42 Посмотреть сообщение
Я погуглил и люди со стаковерфлоу говорят, что она(<graphics.h>) тоже устарела
правильно говорят.
Цитата Сообщение от inviter42 Посмотреть сообщение
и лучше использовать winAPI вместо неё.
если что-то простое, то можно и с WinAPI наваять.
Сложное тоже можно, но очень муторно, долго и подвержено ошибкам.
Лучше использовать тогда готовый framework для GUI.
0
nord_v
329 / 177 / 80
Регистрация: 22.08.2013
Сообщений: 724
11.01.2016, 15:12 #14
Цитата Сообщение от inviter42 Посмотреть сообщение
что в качестве bgi тут служит <graphics.h>
Это заголовочный файл библиотеки. Библиотека собирается.
Цитата Сообщение от inviter42 Посмотреть сообщение
Я погуглил и люди со стаковерфлоу говорят, что она(<graphics.h>) тоже устарела и лучше использовать winAPI вместо неё.
Я же не знаю твои задачи. Я и bgi не знаю (так же, как и conio), но предполагаю, что это нечто сопоставимое с conio.h, поэтому и предложил. Это нечто простое, что там есть можешь посмотреть в документации.
Если тебе нужно что-то посложнее, то есть SFML, Qt и пр., а на winAPI писать - муторное занятие, но это твоё дело.
0
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
11.01.2016, 15:21  [ТС] #15
Croessmah, то есть я правильно понимаю, что при решении реальных задач для создания GUI используются фреймворки, а winAPI практически никто не использует? Вы упомянули, что разработка на winAPI подвержена ошибкам - почему? Оно так плохо работает?

У меня небольшой стак лабораторный работ, ничего серьёзного. Использовать сторонний фрэймворк для этого неразумно в моём случае. Но интересно на будущее как обстоят дела IRL.

Добавлено через 4 минуты
[upd] Croessmah, вообще есть ли возможность создать окно с использованием стандартных средств Qt без использования устаревших библиотек и winAPI?
0
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,077
Записей в блоге: 3
Завершенные тесты: 1
11.01.2016, 15:25 #16
Цитата Сообщение от inviter42 Посмотреть сообщение
Вы упомянули, что разработка на winAPI подвержена ошибкам - почему?
Потому что много всего нужно учитывать, держать в голове, обрабатывать вагон ошибок, которые могут произойти и т.д.
Цитата Сообщение от inviter42 Посмотреть сообщение
Оно так плохо работает?
Работает нормально - писать трудно просто.
Цитата Сообщение от inviter42 Посмотреть сообщение
а winAPI практически никто не использует?
Ну почему же?
Есть много простеньких утилит, где не нужен сложный GUI
(тянуть за собой мегабайты библиотек, ради одной кнопки - как-то глупо, ИМХО).
Понимание работы с системными функциями очень полезно.
0
nord_v
329 / 177 / 80
Регистрация: 22.08.2013
Сообщений: 724
11.01.2016, 15:25 #17
Цитата Сообщение от inviter42 Посмотреть сообщение
вообще есть ли возможность создать окно с использованием стандартных средств Qt без использования устаревших библиотек и winAPI?
Ты Qt с Qt Creator-ом не путаешь?
0
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
11.01.2016, 15:29  [ТС] #18
nord_v, вроде как нет. Qt - инструментарий разработки, qtcreator - среда разработки на Qt.
0
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,077
Записей в блоге: 3
Завершенные тесты: 1
11.01.2016, 15:30 #19
Цитата Сообщение от inviter42 Посмотреть сообщение
использованием стандартных средств Qt
конечно. Например, вот
0
inviter42
83 / 2 / 2
Регистрация: 27.11.2015
Сообщений: 163
11.01.2016, 15:32  [ТС] #20
Croessmah, здорово, спасибо. Сейчас попробую что-то такое наваять
0
11.01.2016, 15:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2016, 15:32

Создание текстового файла и его изменение
Добрый вечер,помогите написать программу,создающую текстовый файл F1 не менее,...

Создание текстового файла со строками заданной длины
У меня вопрос- если нужно считать информацию с одного текстового файла а затем...

Считывание строк из текстового файла и создание папки
ВОзникла задача создать кучу папок с разными именами, возникла идея, что можно...


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

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

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