Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zmiana kolorów c++, powrót do koloru standardowego

Ostatnio zmodyfikowano 2016-01-10 20:18
Autor Wiadomość
Kleszczykb
Temat założony przez niniejszego użytkownika
Zmiana kolorów c++, powrót do koloru standardowego
» 2016-01-10 17:13:30
Znalazłem na forum funkcje jak zmienić kolor i udało mi się ją użyć,niestety nie mam pojęcia jak teraz zrobić kolejny napis już w kolorze standardowym, ktoś może wyjasnić? oto kod na którym testowałem zmienianie kolorów

C/C++
#include <windows.h>
#include <iostream>
#include <cstdlib>
using namespace std;
main()
{
    HANDLE hOut;
    hOut = GetStdHandle( STD_OUTPUT_HANDLE );
    string napis = "Haha zmieniam kolor ";
    cout << napis << endl;
    SetConsoleTextAttribute( hOut, FOREGROUND_RED | FOREGROUND_INTENSITY );
    cout << napis << endl;
    hOut = GetStdHandle( STD_OUTPUT_HANDLE );
    SetConsoleTextAttribute( hOut, 10 );
    cout << napis << endl;
   
    return 0;
}
P-143305
jankowalski25
» 2016-01-10 17:58:19
P-143319
Kleszczykb
Temat założony przez niniejszego użytkownika
» 2016-01-10 18:00:24
i dzięki tej lekcji umiem już zmieniać kolor co tez widać w tym kodzie, natomiast nie wiem jak powrócić do koloru standardowego
P-143320
jankowalski25
» 2016-01-10 18:02:05
Przecież w tej lekcji masz podany przykład:
C/C++
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED );
cout << "Mozna powiedzieć ze ten napis jest standartowy" << endl;
P-143321
DejaVu
» 2016-01-10 18:15:27
Nie możesz poeksperymentować z parametrami tej funkcji?
P-143324
Monika90
» 2016-01-10 18:51:56
Można odczytać początkowe kolory za pomocą GetConsoleScreenBufferInfo, a później je przywrócić.

Na przykład:
C/C++
#include <windows.h>
#include <iostream>

struct attr
{
    WORD attributes;
   
    friend std::ostream & operator <<( std::ostream & out, attr a )
    {
        out.flush();
        SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), a.attributes );
        return out;
    }
};

struct restore_attributes
{
    WORD attributes;
   
    restore_attributes()
    {
        CONSOLE_SCREEN_BUFFER_INFO info;
        GetConsoleScreenBufferInfo( GetStdHandle( STD_OUTPUT_HANDLE ), & info );
        attributes = info.wAttributes;
    }
   
    restore_attributes( restore_attributes && ) = delete;
   
    ~restore_attributes()
    {
        SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), attributes );
    }
};

int main()
{
    restore_attributes on_exit;
    attr red { FOREGROUND_RED | BACKGROUND_BLUE };
    attr blue { FOREGROUND_BLUE | BACKGROUND_RED };
    attr black { 0 };
   
    std::cout << red << "Hello" << black << ',' << blue << "World!" << std::endl;
}

P-143331
Kleszczykb
Temat założony przez niniejszego użytkownika
» 2016-01-10 20:18:27
Dzięki za pomoc, Monika90 poziom tego co napisałaś narazie przerasta moją znajomość C++
P-143345
« 1 »
  Strona 1 z 1