Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2008, 02:02   #1
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию Функции управления цветом символа BC++3.1

Почему cout выводит незакрашенный текст, а cprintf() закрашенный? и как сделать, чтобы cout выводил закрашенный?
Код:
#include <iostream.h>                                                               #include <conio.h>                                                            
void main()                                                                   
   {                                                                          
   char text[] = "SSSSS";                                                     
   clrscr();                                                                  
   textmode (C80);                                                            
   gotoxy(1,1);                                                               
   textcolor(2);                                                              
   cout << text;                                                              
                                                                              
   cprintf(text);                                                             
   getch();                                                                   
   }
Go6a вне форума Ответить с цитированием
Старый 01.04.2008, 10:53   #2
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

Up!!!!!!!!!!
Go6a вне форума Ответить с цитированием
Старый 02.04.2008, 14:58   #3
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

Помогите разобраться!!! Неужели никто не разбирается в Borland c++ 3.1?
Go6a вне форума Ответить с цитированием
Старый 02.04.2008, 15:51   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Go6a Посмотреть сообщение
Почему cout выводит незакрашенный текст, а cprintf() закрашенный? и как сделать, чтобы cout выводил закрашенный?
Насколько мне известно - никак. << выводит данные в файл stdout, так же, как и printf, а cprintf (и прочие, описанные в conio.h) - непосредственно "на экран" функциями БИОСа. Можно, конечно, определить класс от ostream, но ценность такого шага, по-моему, очень сомнительна.
B_N вне форума Ответить с цитированием
Старый 02.04.2008, 18:55   #5
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

Спасибо за помощь!

Здесь текст выводится при помощи cout , а цвета у текста меняются. Почему?

Код:
               
                                                                             
#include<iostream.h>   
#include<conio.h> 
#include<stdlib.h>  
#include<dos.h>  
   
char text[]="Привет!"; 
unsigned int textlen=7, //размер текста 
        pause=500, //задержка в мсек 
        maxx=80, maxy=25, //гориз. и вертик. размеры экрана                   
        x1,y1,x2,y2,background,color,setblink,freq,  
         d = 0, f = 0;    
void doubleframe(); //функция формирования двойной рамки                    
void zadanie(); //
    
void main() 
{clrscr();   
unsigned int minlen;   
minlen= 7*textlen+6; //минимальный размер окна по горизонтали              
textbackground(0); 
clrscr;
do{  //формирование окна                                                      
        x1=1+random(maxx-minlen); //координата левого верхнего угла        
        x2=minlen+random(maxx-x1-minlen); //горизонтальный размер окна    
        y2=x2*maxy/maxx; //вертикальный размер окна                           
        y1=1+random(maxy-y2); //координата правого верхнего угла           
        window(x1,y1,x1+x2-1,y1+y2-1);                                        
        background=random(8); //цвет фона                                     
        color=random(16); //цвет символов                                     
        setblink=random(2); //мигание                                         
        textbackground(background);  
        clrscr();   
        textcolor(color+setblink*128);
  //---------------------------                                         
       
        int a = x2-textlen - 1, b = 3;
        gotoxy(a - d, (y2-1)/2+1);   
        cout<<text;
        gotoxy (b + d, (y2 - 1)/2+1);  
        cout << text;  
        if(f == 0 )  
           d++;       
        if(f == 1)    
           d--;  
        //---------------------------                                         
                                                                              
        if(d+textlen > x2/2 - textlen/2)                                      
           f = 1;                                                             
        if (d == 0)                                                           
           f = 0;                                                             
                                                                              
                                                                              
        doubleframe();                                                        
        switch (background){ //частота звука связывается с цветом фона    
                case 0: freq=262;break; //До                                  
                case 1: freq=294;break; //Ре        
                case 2: freq=330;break; //Ми                                  
                case 3: freq=349;break; //Фа        
                case 4: freq=392;break; //Соль                                
                case 5: freq=440;break; //Ля                                  
                case 6: freq=494;break; //Си                                  
                case 7: freq=524;break;} //До  
        sound(freq);   
        delay(pause);                                                         
        nosound();      
        } while(!kbhit()); //цикл до нажатия клавиши                          
         cprintf("\r\nA key was pressed...\r\n");                             
                                                                    
window(1,1,80,25); //полный размер экрана 
textbackground(0);                                                            
textcolor(7);           
clrscr();            
}                                                                             
                      
void doubleframe() //формирование двойной рамки                               
{                                                                             
int i;            
gotoxy(2,1);     
cout<<'╔'; //левый верхний угол рамки                                         
for(i=3;i<=x2-2;i++)cout<<'═'; //верхняя часть рамки                          
cout<<'╗'; //правый верхний угол рамки                                        
for(i=2;i<=y2-1;i++){                                                         
        gotoxy(2,i);cout<<'║';    //боковые                                   
        gotoxy(x2-1,i);cout<<'║';} //части рамки                              
gotoxy(2,y2);cout<<'╚'; //левый нижний угол рамки                             
for(i=3;i<=x2-2;i++)cout<<'═'; //нижняя часть рамки                           
cout<<'╝'; //правый нижний угол рамки                                         
}
Go6a вне форума Ответить с цитированием
Старый 02.04.2008, 19:17   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Go6a Посмотреть сообщение
Спасибо за помощь!

Здесь текст выводится при помощи cout , а цвета у текста меняются. Почему?
Потому, что там
Код:
clrscr();
Так всегда было в досе - "экран" при "очистке" заливался текущими атрибутами, по которым int 21h пишет просто "не зная" о них.
B_N вне форума Ответить с цитированием
Старый 02.04.2008, 21:16   #7
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

Все понял. Большое спасибо!
Go6a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL: проблема с цветом N!ckeL Общие вопросы Delphi 5 10.01.2010 15:14
Включение функции выделение цветом xxdima Microsoft Office Excel 3 28.08.2008 23:47
выделение строк цветом в StringGrid kate158 Помощь студентам 1 06.08.2008 09:56
хочу закрасить розовым цветом(си) Барби Помощь студентам 1 25.05.2008 13:58
Вопрос по функции "если" с цветом.. Dr.Eric Microsoft Office Excel 2 17.04.2007 19:44