Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Консольный функции, помогите найти 
:(
    Опции темы
Igor_K
Дата 21.4.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Всем привет!

Я хочу у вас спросить про некоторые функции(если есть) работы с консолью.

1) Самая главная, что мне нужна щяс это подсветка строки определенным цветом.
2) Как можно удалить/вставить строку?
3) Как можно убрать курсор?


Еще вы мне не подскажите где можно почитать про прерывания дос работы с дисплеем?

Спасибо за любую информацию! smile 
PM MAIL   Вверх
vinter
Дата 21.4.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



смотри аттач, может найдешь что полезное.
я так понял ты с досом работаешь? тогда можно юзать cprintf, это вывод  в цвете.

Добавлено через 2 минуты и 10 секунд
вот еще пример какой то, не помню че тут происходит. Скомпиль - посмотри.
Код

// Работа с клавиатурой
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#define BLINK 128
void main()
{textmode(C40);
clrscr();
struct text_info k;
gettextinfo(&k);
int ctrelka,x=1,y=1;

for(x=1;x<=k.screenwidth;x++)
{gotoxy(x,k.screenheight-3);printf("_");}
gotoxy(1,1);x=1;y=1;
do{
   ctrelka=getch();if(ctrelka==0)
   {
     ctrelka=getch();

     switch(ctrelka)
   {
      case 0x4B:{x--;if(x<1){y--;x=k.screenwidth;}gotoxy(x,y);break; }
      case 0x4D:{x++;if(x>k.screenwidth){x=1;y++;}gotoxy(x,y);break;}
      case 0x50:{y++;if(y>k.screenheight-3){y=1;x++;}gotoxy(x,y);break;}
      case 0x48:{y--;if(y<1){y=k.screenheight-3;x--;}gotoxy(x,y);break;}
      case 0x20: { x++;gotoxy(x,y);break;}
   }
     }

    else{
    if(islower(ctrelka)!=0){
   printf("%c",ctrelka);gotoxy(x,y);
   x++;   }
   if(x>80){x=1; y++; }
   if(islower(ctrelka)==0&&!iscntrl(ctrelka)) {
       gotoxy((k.screenwidth-30)/2,k.screenheight-2);
         textcolor(RED|BLINK);
          cprintf("\aThis is not latinish symbol!!!" );
             gotoxy(x,y);}
       if(islower(ctrelka)!=0)

          {
             gotoxy((k.screenwidth-30)/2,k.screenheight-2);
             textcolor(BLACK);
            delline();
                gotoxy(x,y);  }
   }
}while(ctrelka!=0x1B);
clrscr();

}



Это сообщение отредактировал(а) vinter - 21.4.2008, 18:42

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  ________________.rar 55,82 Kb


--------------------
Мой блог
PM MAIL WWW   Вверх
Igor_K
Дата 21.4.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



vinter, спасибо. Щяс посмотрю ;) 
Да, под ДОС. smile 
PM MAIL   Вверх
Igor_K
Дата 21.4.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



С 2 вопросом уже разобрался, а вот с остальными не знаю как делать :(
Кто-то знает как 1 вопрос сделать. Он для меня самый важный. Подскажите пожалуйста.
PM MAIL   Вверх
Optimus
Дата 21.4.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 1.9.2007

Репутация: 1
Всего: 14



Так вроде бы vinter подсказал,
Код

#include <stdio.h>
#include <conio.h>

void main()
{
  clrscr();

  textcolor(BLUE);
  textbackground(WHITE);
  cprintf("Hello World");

  getch();
}

Такой вариант не подходит ?
--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
Igor_K
Дата 22.4.2008, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Optimus, Спасибо! smile 
Но вопрос еще, как перевести строку в cprintf() ? Пишу:
Код

cprintf("Hello, World\nHello, World");

Выводит:
Код

Hello, World
             Hello, World

Как можно перевести на начало строки?
PM MAIL   Вверх
Earnest
Дата 22.4.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



\r\n
\n - новая строка
\r - перевод каретки


--------------------
...
PM   Вверх
Igor_K
Дата 22.4.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Earnest, спасибо большое! 

Осталось с курсором разобраться. smile 
Нашел такую функцию:
Код

#include <dos.h>

void setcursor(unsigned int shape)
/* Sets the shape of the cursor */
{
 union REGS reg;

 reg.h.ah = 1;
 reg.x.cx = shape;
 int86(0X10, &reg, &reg);
} /* setcursor */

устанавливает размер курсора(я так понял) В Турбо С++ работает, но я пишу в билдере 6 и в нем не работает :( Ктото знает как заставить работать в билдере?
PM MAIL   Вверх
vinter
Дата 22.4.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Igor_K @  22.4.2008,  18:37 Найти цитируемый пост)
 но я пишу в билдере 6 и в нем не работает

никак, пишешь по ДОС пиши под ДОС, в билдере уже win32 application


--------------------
Мой блог
PM MAIL WWW   Вверх
Igor_K
Дата 22.4.2008, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



А с помощью ассемблера это можно сделать независимо от билдера?
Например, для паскаля я писал
Код

 mov ah, 01
 mov cx, $2000
 int 10h

и курсор убирался, но в С++ не работает этот код. А я то сам ламер в программировании :(
PM MAIL   Вверх
vinter
Дата 22.4.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Igor_K @  22.4.2008,  19:20 Найти цитируемый пост)
и курсор убирался, но в С++ не работает этот код. А я то сам ламер в программировании :(

тогда зачем изобретать велосипед? пиши в ДОС компиляторе и будет тебе счастье.


--------------------
Мой блог
PM MAIL WWW   Вверх
Igor_K
Дата 22.4.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Цитата(vinter @  22.4.2008,  20:01 Найти цитируемый пост)
тогда зачем изобретать велосипед? пиши в ДОС компиляторе и будет тебе счастье. 

Там не счастье, там нервы!  smile  
Такая неудобная среда просто. ужас
PM MAIL   Вверх
Optimus
Дата 22.4.2008, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 1.9.2007

Репутация: 1
Всего: 14



Билдера под рукой нету, и не могу проверить, но в Турбо С++ есть
Код

_setcursortype(_NOCURSOR);

--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
xvr
Дата 23.4.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Igor_K @ 22.4.2008,  18:20)
А с помощью ассемблера это можно сделать независимо от билдера?

Это нельзя сделать в Win32 приложении, независимо ни от чего  smile 

Цитата

Например, для паскаля я писал
Код

 mov ah, 01
 mov cx, $2000
 int 10h

и курсор убирался, но в С++ не работает этот код. А я то сам ламер в программировании :(
Написать можно. Получишь GPF (General Protection Fault). int 10 (равно как и все остальные) не поддерживается в Win32 программах.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.