@b Skrevet 28. januar 2004 Del Skrevet 28. januar 2004 Hvordan får man forskjellig farge på teksten i vanlige dos-programmer (i steden for hvit tekst på svart bakgrunn)? Jeg kan grunnleggende C++ og bruker MS Visual C++ Standard Edition. Lenke til kommentar
@b Skrevet 28. januar 2004 Forfatter Del Skrevet 28. januar 2004 Det jeg mente, var hvordan jeg kan ha tekst med forskjellige farger i program som jeg skriver selv i MS Visual C++. Jeg har lett etter C++-kodesnutter på internett, men har ikke funnet noe som virker enda. Håper på svar. Lenke til kommentar
Øyst Skrevet 28. januar 2004 Del Skrevet 28. januar 2004 Før måtte man laste ansi.sys for å kunne bruke farger i dos. Det er lenge siden men jeg husker jeg alltid lastet ansi.sys når jeg skulle lage bat-menyter og basic program med farger. Kan dessverre ikke si mer enn dette men du kan jo sjekke opp muligheten med ansi.sys kanskje? Lenke til kommentar
@b Skrevet 28. januar 2004 Forfatter Del Skrevet 28. januar 2004 Men hvordan er C++-koden jeg skal bruke i kildekoden? Lenke til kommentar
@b Skrevet 28. januar 2004 Forfatter Del Skrevet 28. januar 2004 (endret) De samme som i C Jeg startet med C++, så jeg vet ikke hva C har å tilby. Jeg har funnet flere biblotek/headere, men ingen av dem har ikke virket. Så derfor spør jeg her. Er det noen som vet om noen bibloteker/headere? Endret 28. januar 2004 av @b Lenke til kommentar
Vial Skrevet 29. januar 2004 Del Skrevet 29. januar 2004 For å få farger på teksten må du inkludere <windows.h>. Lag så en ut-handle + en coord.. noe sånn som dette: (ikke testet) #include <iostream> #include <windows.h> #include <conio.h> // for getch() using namespace std; COORD cursor; HANDLE utHandle GetStdHandle(STD_OUTPUT_HANDLE); int main() { SetConsoleTextAttribute(utHandle, BACKGROUND_GREEN | FOREGROUND_RED); cout << "Hei på deg verden!\nTrykk en tast for å fortsette..." << endl; getch(); return 0; } Du får google litt på SetConsoleTextAttribute - så tenker jeg du blir mer belært Lenke til kommentar
Manfred Skrevet 30. januar 2004 Del Skrevet 30. januar 2004 assembly powah! hehe det er jo bare til å putte assemblykode inn i C-programmet ditt og skrive rett til skjermbuffer da. mulig dette funker kun i DOS, og at win ikke gir deg tilgang til skjermbuffer. uansett skal det være mulig på en eller annen måte gjennom asm Lenke til kommentar
GeirGrusom Skrevet 31. januar 2004 Del Skrevet 31. januar 2004 Windows lager virtual machine av DOS vinduene sine vettu. Lenke til kommentar
@b Skrevet 31. januar 2004 Forfatter Del Skrevet 31. januar 2004 For å få farger på teksten må du inkludere <windows.h>.Lag så en ut-handle + en coord.. noe sånn som dette: (ikke testet) #include <iostream> #include <windows.h> #include <conio.h> // for getch() using namespace std; COORD cursor; HANDLE utHandle GetStdHandle(STD_OUTPUT_HANDLE); int main() { SetConsoleTextAttribute(utHandle, BACKGROUND_GREEN | FOREGROUND_RED); cout << "Hei på deg verden!\nTrykk en tast for å fortsette..." << endl; getch(); return 0; } Du får google litt på SetConsoleTextAttribute - så tenker jeg du blir mer belært Feilmelding i MS Visual C++: syntax error: missing ';' before identifier 'GetStdHandle' Jeg har ikke kunnskaper nok til å fikse dette, har aldri brukt 'using namespace std;' før. Lenke til kommentar
Peter Skrevet 31. januar 2004 Del Skrevet 31. januar 2004 Trenger ikke COORD da, dette har jo med posisjonen til texten å gjøre, ikke noe med fargen. Burde også ta en titt på GetConsoleScreenBufferInfo() for å kunne gjenopprette fargene som var Denne bruker jeg: void ColorString(std::string str, WORD color) { CONSOLE_SCREEN_BUFFER_INFO csbiInfo; HANDLE stdHandle = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(stdHandle, &csbiInfo); SetConsoleTextAttribute(stdHandle, color); std::cerr << str; SetConsoleTextAttribute(stdHandle, csbiInfo.wAttributes); } WORD color kan være en blanding av (FOREGROUND | BACKGROUND)_(RED | BLUE | GREEN) Error_X bruker en annen funksjon textcolor(), men jeg har ikke sett den noe sted. Lenke til kommentar
Vial Skrevet 31. januar 2004 Del Skrevet 31. januar 2004 heh, skulle AKKURAT til å edit'e inlegge mitt Skrev koden etter at jeg hadde skrevet teksten.. hadde tenkt å vise noe litt kulere... btw. hvorfor bruker du cerr? Lenke til kommentar
Peter Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 (endret) heh, skulle AKKURAT til å edit'e inlegge mitt Skrev koden etter at jeg hadde skrevet teksten.. hadde tenkt å vise noe litt kulere... btw. hvorfor bruker du cerr? dayslepers dårlige inflytelse antar jeg, følger min læremesters fotspor og tips slavisk. Det er egentlig bare fordi jeg er slapp, selv om koden antakelig blir litt tregere av det. Endret 1. februar 2004 av Nazgul Lenke til kommentar
iCrap Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 (endret) Hvis du ikke har tenkt å endre fargen på teksten slik som f. eks som dette men ha fast bakgrunns/tekstfarge kan jo system("color XX"); være et alternativ. C:\Documents and Settings\Jo Christian>color --help Sets the default console foreground and background colors. COLOR [attr] attr Specifies color attribute of console output Color attributes are specified by TWO hex digits -- the first corresponds to the background; the second the foreground. Each digit can be any of the following values: 0 = Black 8 = Gray 1 = Blue 9 = Light Blue 2 = Green A = Light Green 3 = Aqua B = Light Aqua 4 = Red C = Light Red 5 = Purple D = Light Purple 6 = Yellow E = Light Yellow 7 = White F = Bright White If no argument is given, this command restores the color to what it was when CMD.EXE started. This value either comes from the current console window, the /T command line switch or from the DefaultColor registry value. The COLOR command sets ERRORLEVEL to 1 if an attempt is made to execute the COLOR command with a foreground and background color that are the same. Example: "COLOR fc" produces light red on bright white. Endret 1. februar 2004 av iCrap Lenke til kommentar
@b Skrevet 1. februar 2004 Forfatter Del Skrevet 1. februar 2004 Hvis du ikke har tenkt å endre fargen på teksten slik som f. eks som dette men ha fast bakgrunns/tekstfarge kan jo system("color XX"); være et alternativ. Det var akkurat dette jeg tenkte på. Og programmet må kunne kjøres i DOS i windows. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå