Изменение цвета текста, фона и пр. в консольном приложении.
| Автор
| Сообщение |
|
|
|
Цитата |
|
Консольное приложение пишу. Нужно тексту задать цвета отличные от стандартных. Паскалевские методы не работают, т.к. соотв. модулей нет.
Начитался, что есть соответствующий WinAPI функции с помощью которых это можно сделать.
Может кто-нибудь в курсе где это можно найти? |
|
| В начало |
|
 |
|
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
SetConsoleTextAttribute. А все WinAPI функции можно найти в MSDN Library (в Delphi тоже есть кусочек - Windows Help) _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Вопрос в догонку.
1. SetConsoleTextAttribute хочет хэндл консольного приложения. Как его получить?
2. Какой-то модуль доп.-ный надо подключать? |
|
| В начало |
|
 |
 Belt
Постоянный участник

Возраст: 29
Знак зодиака: 
Зарегистрирован: 13.08.2004
Сообщения: 122
Откуда: Russia
|
|
| В начало |
|
 |
Steel FedeX
Частый гость

Возраст: 26
Знак зодиака: 
Зарегистрирован: 13.09.2005
Сообщения: 48
Откуда: Житомир, Украина
|
|
|
Цитата |
|
Вот примерчик.
Прожка никудышняя, но то что ты спрашивал там есть. _________________ Я всё могу! ...но сегодня не успею. |
|
| В начало |
|
 |
 TuXAPuK
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
Стилизация MS-DOS окон... Это моя тема...
А в ответ кину несколько кусочков из могего DosWndStyle.pas какбы без этих функций вообще не одно стильное окно не потянет...
| delphi: | Function TDosWndStyle.AscToOem866(str: String): String; Type TCharSet = Array[0..65] Of Char; Var ChPos: Word; StPos: Byte; Const CharSetHigh: Byte = 65; Win1255: TCharSet = ( #$C0,#$C1,#$C2,#$C3,#$C4,#$C5,#$A8,#$C6, #$C7,#$C8,#$C9,#$CA,#$CB,#$CC,#$CD,#$CE, #$CF,#$D0,#$D1,#$D2,#$D3,#$D4,#$D5,#$D6, #$D7,#$D8,#$D9,#$DA,#$DB,#$DC,#$DD,#$DE, #$DF,#$E0,#$E1,#$E2,#$E3,#$E4,#$E5,#$B8, #$E6,#$E7,#$E8,#$E9,#$EA,#$EB,#$EC,#$ED, #$EE,#$EF,#$F0,#$F1,#$F2,#$F3,#$F4,#$F5, #$F6,#$F7,#$F8,#$F9,#$FA,#$FB,#$FC,#$FC, #$FE,#$FF); Dos866: TCharSet = ( #$80,#$81,#$82,#$83,#$84,#$85,#$F0,#$86, #$87,#$88,#$89,#$8A,#$8B,#$8C,#$8D,#$8E, #$8F,#$90,#$91,#$92,#$93,#$94,#$95,#$96, #$97,#$98,#$99,#$9A,#$9B,#$9C,#$9D,#$9E, #$9F,#$A0,#$A1,#$A2,#$A3,#$A4,#$A5,#$F1, #$A6,#$A7,#$A8,#$A9,#$AA,#$AB,#$AC,#$AD, #$AE,#$AF,#$E0,#$E1,#$E2,#$E3,#$E4,#$E5, #$E6,#$E7,#$E8,#$E9,#$EC,#$EB,#$EA,#$ED, #$EE,#$EF); Begin Result := str; For ChPos := 1 To Length(Result) Do For StPos := 0 To CharSetHigh Do If Result[ChPos] = Win1255[StPos] Then Result[ChPos] := Dos866[StPos]; End; Procedure TDosWndStyle.ClrScr; Var ScrBuffInfo: TConsoleScreenBufferInfo; iBytesOk: Cardinal; Const pCoord: TCoord = (X: 0; Y: 0); Begin GetConsoleScreenBufferInfo(hConOut, ScrBuffInfo); FillConsoleOutputCharacter(hConOut, #$00, ScrBuffInfo.dwSize.X * ScrBuffInfo.dwSize.Y, pCoord, iBytesOk); End; Procedure TDosWndStyle.GotoXY(X, Y: SmallInt); Var pNewCurPos: TCoord; Begin pNewCurPos.X := X; pNewCurPos.Y := Y; SetConsoleCursorPosition(hConOut, pNewCurPos); End; Procedure TDosWndStyle.SetColor(br,bg,bb,bi,fr,fg,fb,fi: Byte); Var iAttr: Word; Begin iAttr := 0; If (fr > 0) Then Inc(iAttr, FOREGROUND_RED); If (fg > 0) Then Inc(iAttr, FOREGROUND_GREEN); If (fb > 0) Then Inc(iAttr, FOREGROUND_BLUE); If (fi > 0) Then Inc(iAttr, FOREGROUND_INTENSITY); If (br > 0) Then Inc(iAttr, BACKGROUND_RED); If (bg > 0) Then Inc(iAttr, BACKGROUND_GREEN); If (bb > 0) Then Inc(iAttr, BACKGROUND_BLUE); If (bi > 0) Then Inc(iAttr, BACKGROUND_INTENSITY); SetConsoleTextAttribute(hConOut, iAttr); End;
|
Весь модуль извини скидывать не стану... Так как в своё время его засмеяли ( | Цитата: | | Стили DOS. Ты что идеот! Кому ето старьё нужно! | ).. Что меня слишком обидело...
А hConOut берётся с помощью GetStdHandle(STD_OUTPUT_HANDLE);  _________________
 |
|
| В начало |
|
 |
|
Новая тема
Ответить
Печать
|
Вы можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете присоединять файлы в этом форуме Вы можете скачивать файлы в этом форуме
|
|