#c #cursor #turbo-c
#c #курсор #turbo-c
Вопрос:
Я новичок в Turbo C… Просто хочу спросить, что первое, что я должен сделать, чтобы включить использование cursor. Я также хотел бы управлять курсором и переопределять клавиши на клавиатуре. Пожалуйста, дайте мне шаги, заранее спасибо!
Комментарии:
1. Я просто озадачен… Что такое ANSI.SYS и CONFIG.SYS ?
2. Это реликвии эпохи DOS, о которых вам не обязательно знать — или заботиться — о них. (Очень похоже на Turbo C.) en.wikipedia.org/wiki/ANSI.SYS
3. @Враждебный форк: где я могу найти CONFIG.SYS или КОНФИГУРАЦИЯ. Файл NT?
4. Вероятно, вы не можете (или не должны) изменять их на своем компьютере, если на нем установлена современная версия Windows. Я сомневаюсь в вашей мотивации для желания сделать это, — но — если вы действительно хотите запускать старое программное обеспечение DOS, используйте эмулятор, подобный DOSBox. Он должен иметь CONFIG.SYS и AUTOEXEC.BAT на видном месте в каталоге «C: «: en.wikipedia.org/wiki/DOSBox
Ответ №1:
Когда динозавры правили Землей и некоторые профессиональные программисты действительно использовали Turbo C, поддержка курсора осуществлялась с помощью подпрограмм во включаемом файле под названием conio.h
.
http://en.wikipedia.org/wiki/Conio.h
Вы не найдете много статей об этом в эпоху Интернета. Но мне удалось найти ссылку на кого-то, кто использует это в онлайн-документе:
/* Program to display text using special functions*/
#include <conio.h>
main (){
int n,m,;
/* clears the screen */
clrscr ( );
/* sets the text mode to 80 columns color*/
textmode (3);
/* SETS THE TEXT COLOR*/
textcolor (4);
/* sets the text background color */
textbackground (2);
/* Positions to 5th row and 14th column*/
gotoxy (5,15);
printf ("Enter two numbers:");
scanf ("%d %d", amp;n, amp;m);
gotoxy (10,15);
printf ("Entered numbers are %d and %d nn", n,m);
}
Неясно, имеете ли вы в виду, что хотите переопределить клавиши таким образом, чтобы во время работы вашей программы, когда пользователь нажимает определенную клавишу, выводился другой символ. Если это так, вы, вероятно, захотите использовать что-то вроде bioskey()
…потому что getch()
считывает только символы, а не такие вещи, как функциональные клавиши или модификаторы:
Комментарии:
1. @Враждебная вилка: что, если я собираюсь переместить курсор по диагонали? Я не могу получить его с помощью этого кода —
printf("x1B[B");
гдеx1B
это escape-символ числовое значение 1B hex (27 десятичных знаков);[
это скобка, которая всегда предшествует определенному коду; иB
конкретное действие: курсор вниз2. Вы задаете вопросы о кодах выхода ANSI людям, которые не предлагали вам их использовать. Windows внедрила консольный API и по умолчанию прекратила поддержку ANSI в терминалах, и ее включение имеет сомнительную ценность, особенно когда ни на чьем другом компьютере она не включена. Вы не найдете простого способа вызвать консольный API из чего-то такого старого, как Turbo C: msdn.microsoft.com/en-us/library/ms682073 (v = VS.85).aspx
3. Вы пробовали вводить программный код, который я дал в качестве ответа на этот вопрос, который использует conio.h? Это дает вам возможность произвольно размещать курсор на экране размером 80×25. Теперь, по общему признанию, он не очень хорошо работает с современной консолью Windows с изменяемым размером. Но вам нужно принять, если вы используете Turbo C, что вы будете программировать в соответствии с ожиданиями той эпохи. Например, вы не будете создавать графику в OpenGL или DirectX … вы будете использовать графический интерфейс Borland («BGI»), и это будет неуклюже, но это то, что подходит для этого компилятора.
4. И да, вы, вероятно, можете получить ANSI.SYS устанавливается путем редактирования скрытого файла в вашей файловой системе Windows 7 и перезагрузки, после чего могут начать работать ваши управляющие коды ANSI. Но тогда любой компьютер, на котором вы хотите запустить свою программу, должен был бы выполнить этот процесс. Если бы вы использовали более современный компилятор с «curses», вам было бы намного лучше: en.wikipedia.org/wiki/Curses_ (programming_library)
5. @Враждебная вилка: я использую WindowsXP (SP3) и не нахожу этот скрытый файл. Я думаю, чтобы включить ANSI.SYS, есть кое-что, что нужно изменить в CONFIG.SYS файл.
Ответ №2:
Вы могли бы взглянуть на функцию gotoxy (int x, int y), которая не является ANSI C, а расширением Borland в Turbo C. Он помещает курсор в координату (x, y) при отображении в текстовом режиме.
Что касается переопределения нажатий клавиш, вы собираетесь сделать это в своей программе или в среде ide? Если в вашей программе вы можете использовать код сканирования, возвращаемый getchar(), и изменить его перед повторным выводом с помощью putchar(символ c). Что касается определения привязок клавиш для функций ide, я ДУМАЮ (прошло много времени), что пользовательский интерфейс допускал это в меню.
Извините, я не смог больше помочь.
Комментарии:
1. ага… как установить ANSI.SYS ? и как я могу это найти?