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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Bios, использование <graphics.h> 
:(
    Опции темы
shokky
Дата 15.4.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем доброго времени суток... smile 
в Центре помощи по этому поводу никто ничего сказать не может....может тут кто-нибуть знает.....
тут вот возник вопрос...как сделать так чтобы текст вводился в нарисаванное окошко?
вот есть такой кодик....:
Код

#include <conio.h>
#include<iostream.h>
#include<graphics.h>

int main( void )
{
    char *text;
    int c;
    int gdriver=DETECT, gmode,errorcode;
    int midx,midy,i;
    initgraph(&gdriver,&gmode,"C:\\TC\\BGI");
    errorcode=graphresult();
    if(errorcode!=grOk)
     {
      cout<<"This is a grafic mistake\nPlease push down some box ";
      getch();
      return 1;
     }
    else
    {
    cleardevice();
    midx = getmaxx() / 2;
    midy = getmaxy() / 2;
    setbkcolor(BROWN);
    setfillstyle(1,14);
    bar(midx-50.0,midy-50.0,midx+50.0,midy+50.0);

i=0;
text=new char [20];
moveto(midx-50.0, midy-50.0);
cin.getline(text, 20);
outtextxy(midx-50.0, midy-50.0, text);
do {
    c=getche();
    ++i;
    if( i==11 )
    {
    i=0;
    clrscr();
    }
    } while( c!='$' );
closegraph();
return 0;
}
}

в нем текст вводится сначала в самом верхнем левом углу(как обычно) а потом уже 10 первых введенных символов после нажатия Enter записывается в левый верхний угол окошка smile 
как сделать так, чтоб он сразу писался в рамке и после десятого символа введенный туда текст стирался и курсор возвращался в левый верхний угол рамки?
PM MAIL   Вверх
vinter
Дата 15.4.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Код

char str[size/*требуемый размер строки*/];
k = 0;
 while((c=getch())!=13&&/*добавь тут ограничение по границе рамке*/)
  {
    sprintf(str,"%c",c);
    outtextxy(x, y, str);
    k++;
    if(c==8)//backspace
       {
     k--;
     str[k]='\0';
     setfillstyle(SOLID_FILL,LIGHTCYAN);
     bar(/*по нужным координатам*/);
       }
    if(k == 9)
      {
          /*по координатам где написан текст, рисуем прямоугольник(закрашенный), и перемещаем курсор в требуемые координаты*/
          k = 0;
       }

  }
/*achtung это всего лишь идея, тут еще нужна косметика чтобы все нормально работало*/


Это сообщение отредактировал(а) vinter - 15.4.2007, 16:01


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


Шустрый
*


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

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



vinter, спасибо большое за помощь.....но только у меня получилось исправить не все smile 
я смогла только вот что...
Код

#include <conio.h>
#include<iostream.h>
#include<graphics.h>

int main( void )
{
    char str[10];
    int k, c;
    int gdriver=DETECT, gmode,errorcode;
    int midx,midy,i;
    initgraph(&gdriver,&gmode,"C:\\TC\\BGI");
    errorcode=graphresult();
    if(errorcode!=grOk)
     {
      cout<<"This is a grafic mistake\nPlease push down some box ";
      getch();
      return 1;
     }
    else
    {
    cleardevice();
    midx = getmaxx() / 2;
    midy = getmaxy() / 2;
    setbkcolor(BROWN);
    setfillstyle(1,14);
    bar(midx-50.0,midy-50.0,midx+50.0,midy+50.0);
k = 0;
 while((c=getch())!=13&&/*добавь тут ограничение по границе рамке*/)
  {
    sprintf(str,"%c",c);
    outtextxy(x, y, str);
    k++;
    if(c==8)//backspace
       {
     k--;
     str[k]='\0';
     setfillstyle(SOLID_FILL,LIGHTCYAN);
     bar(midx-50.0,midy-50.0,midx+50.0,midy+50.0);
       }
    if(k == 9)
      {
      /*по координатам где написан текст, рисуем прямоугольник(закрашенный), и перемещаем курсор в требуемые координаты*/
      setfillstyle(1,14);
      bar(midx-50.0,midy-50.0,midx+50.0,midy+50.0);
      k = 0;
       }
  }
closegraph();
return 0;
}
}

я не знаю как добавить ограничение по границе рамки((( smile .....подскажи пожалуйста...  smile 
PM MAIL   Вверх
shokky
Дата 15.4.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 smile ....мне помогли в Центре помощи....
спасибо за помощь smile 
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.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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