Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Через 3 дня :

День славянской письменности и культуры


Изменение цвета текста, фона и пр. в консольном приложении.


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
NW
Гость







СообщениеСб, 17-Дек-2005 5:03    Заголовок сообщения: Изменение цвета текста, фона и пр. в консольном приложении.
Цитата

Консольное приложение пишу. Нужно тексту задать цвета отличные от стандартных. Паскалевские методы не работают, т.к. соотв. модулей нет.
Начитался, что есть соответствующий WinAPI функции с помощью которых это можно сделать.

Может кто-нибудь в курсе где это можно найти?
В начало
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеСб, 17-Дек-2005 13:02 
Цитата

SetConsoleTextAttribute. А все WinAPI функции можно найти в MSDN Library (в Delphi тоже есть кусочек - Windows Help)
_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
NW
Гость







СообщениеВс, 18-Дек-2005 2:49 
Цитата

Вопрос в догонку.
1. SetConsoleTextAttribute хочет хэндл консольного приложения. Как его получить?
2. Какой-то модуль доп.-ный надо подключать?
В начало
Пол:Муж Belt
Постоянный участник


Возраст: 29
Знак зодиака: Водолей
Зарегистрирован: 13.08.2004
Сообщения: 122
Откуда: Russia
СообщениеВс, 18-Дек-2005 4:26 
Цитата

Чти
В начало
Посмотреть профиль Отправить личное сообщение
Steel FedeX
Частый гость


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 13.09.2005
Сообщения: 48
Откуда: Житомир, Украина
СообщениеВт, 20-Дек-2005 10:38 
Цитата

Вот примерчик.
Прожка никудышняя, но то что ты спрашивал там есть.

_________________
Я всё могу! ...но сегодня не успею.
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Пол:Муж TuXAPuK
Великий гонщик

Предупреждений : 1
Возраст: 26
Знак зодиака: Рыбы
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
СообщениеВт, 20-Дек-2005 18:22 
Цитата

Стилизация MS-DOS окон... Это моя тема...

А в ответ кину несколько кусочков из могего DosWndStyle.pas какбы без этих функций вообще не одно стильное окно не потянет...

delphi:
  1.   Function TDosWndStyle.AscToOem866(str: String): String;
  2.   Type
  3.     TCharSet = Array[0..65] Of Char;
  4.   Var
  5.     ChPos: Word;
  6.     StPos: Byte;
  7.   Const
  8.     CharSetHigh: Byte = 65;
  9.     Win1255: TCharSet = (
  10.       #$C0,#$C1,#$C2,#$C3,#$C4,#$C5,#$A8,#$C6,
  11.       #$C7,#$C8,#$C9,#$CA,#$CB,#$CC,#$CD,#$CE,
  12.       #$CF,#$D0,#$D1,#$D2,#$D3,#$D4,#$D5,#$D6,
  13.       #$D7,#$D8,#$D9,#$DA,#$DB,#$DC,#$DD,#$DE,
  14.       #$DF,#$E0,#$E1,#$E2,#$E3,#$E4,#$E5,#$B8,
  15.       #$E6,#$E7,#$E8,#$E9,#$EA,#$EB,#$EC,#$ED,
  16.       #$EE,#$EF,#$F0,#$F1,#$F2,#$F3,#$F4,#$F5,
  17.       #$F6,#$F7,#$F8,#$F9,#$FA,#$FB,#$FC,#$FC,
  18.       #$FE,#$FF);
  19.     Dos866: TCharSet = (
  20.       #$80,#$81,#$82,#$83,#$84,#$85,#$F0,#$86,
  21.       #$87,#$88,#$89,#$8A,#$8B,#$8C,#$8D,#$8E,
  22.       #$8F,#$90,#$91,#$92,#$93,#$94,#$95,#$96,
  23.       #$97,#$98,#$99,#$9A,#$9B,#$9C,#$9D,#$9E,
  24.       #$9F,#$A0,#$A1,#$A2,#$A3,#$A4,#$A5,#$F1,
  25.       #$A6,#$A7,#$A8,#$A9,#$AA,#$AB,#$AC,#$AD,
  26.       #$AE,#$AF,#$E0,#$E1,#$E2,#$E3,#$E4,#$E5,
  27.       #$E6,#$E7,#$E8,#$E9,#$EC,#$EB,#$EA,#$ED,
  28.       #$EE,#$EF);
  29.   Begin
  30.     Result := str;
  31.     For ChPos := 1 To Length(Result) Do
  32.       For StPos := 0 To CharSetHigh Do
  33.         If Result[ChPos] = Win1255[StPos] Then
  34.           Result[ChPos] := Dos866[StPos];
  35.   End;
  36.  
  37.   Procedure TDosWndStyle.ClrScr;
  38.   Var
  39.     ScrBuffInfo: TConsoleScreenBufferInfo;
  40.     iBytesOk: Cardinal;
  41.   Const
  42.     pCoord: TCoord = (X: 0; Y: 0);
  43.   Begin
  44.     GetConsoleScreenBufferInfo(hConOut, ScrBuffInfo);
  45.     FillConsoleOutputCharacter(hConOut, #$00, ScrBuffInfo.dwSize.X * ScrBuffInfo.dwSize.Y, pCoord, iBytesOk);
  46.   End;
  47.  
  48.   Procedure TDosWndStyle.GotoXY(X, Y: SmallInt);
  49.   Var
  50.     pNewCurPos: TCoord;
  51.   Begin
  52.     pNewCurPos.X := X; pNewCurPos.Y := Y;
  53.     SetConsoleCursorPosition(hConOut, pNewCurPos);
  54.   End;
  55.  
  56.   Procedure TDosWndStyle.SetColor(br,bg,bb,bi,fr,fg,fb,fi: Byte);
  57.   Var
  58.     iAttr: Word;
  59.   Begin
  60.     iAttr := 0;
  61.     If (fr > 0) Then Inc(iAttr, FOREGROUND_RED);
  62.     If (fg > 0) Then Inc(iAttr, FOREGROUND_GREEN);
  63.     If (fb > 0) Then Inc(iAttr, FOREGROUND_BLUE);
  64.     If (fi > 0) Then Inc(iAttr, FOREGROUND_INTENSITY);
  65.     If (br > 0) Then Inc(iAttr, BACKGROUND_RED);
  66.     If (bg > 0) Then Inc(iAttr, BACKGROUND_GREEN);
  67.     If (bb > 0) Then Inc(iAttr, BACKGROUND_BLUE);
  68.     If (bi > 0) Then Inc(iAttr, BACKGROUND_INTENSITY);
  69.     SetConsoleTextAttribute(hConOut, iAttr);
  70.   End;


Весь модуль извини скидывать не стану... Так как в своё время его засмеяли (
Цитата:
Стили DOS. Ты что идеот! Кому ето старьё нужно!
).. Что меня слишком обидело...
А hConOut берётся с помощью GetStdHandle(STD_OUTPUT_HANDLE);

_________________
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100