Chắc hẳn, khi mới bắt đầu vào ngành lập trình, chúng ta đều đã quen thuộc với cái giao diện console màn đen chữ trắng đến phát chán. Trong bài viết này, mình sẽ đưa ra những cách để thay đổi màu chữ hiển thị trên console, qua đó… giúp màn hình console trở nên sinh động hơn. Lưu ý, những hướng dẫn bên dưới chỉ hoạt động khi bạn lập trình trên môi trường Windows.
Trước tiên, chúng ta hãy tìm hiểu về màu mà console có thể thay đổi:
Giá trị (mã màu) | Tên màu |
---|---|
0 | BLACK |
1 | BLUE |
2 | GREEN |
3 | AQUA |
4 | RED |
5 | PURPLE |
6 | YELLOW |
7 | WHITE |
8 | GRAY |
9 | LIGHT BLUE |
10 (A) | LIGHT GREEN |
11 (B) | LIGHT AQUA |
12 (C) | LIGHT RED |
13 (D) | LIGHT PURPLE |
14 (E) | LIGHT YELLOW |
15 (F) | BRIGHT WHITE |
Chúng ta có thể xem các mã màu này bằng cách bật cmd (Command Prompt) và gõ
color [ký tự bất kỳ (không trùng với giá trị )]
Chẳng hạn: color *
hoặc color /?
Để đổi màu cmd, ta gõ như sau:
color [giá trị của màu]
Giờ hãy bắt đầu với cách đơn giản nhất
int system(const char *command);
Hàm int system(const char *command)
gửi chuỗi lệnh hoặc tên chương trình được chỉ định bởi command
đến trình xử lý lệnh (Command Processor) của hệ điều hành để thực thi (trên Windows sẽ là cmd.exe). Hàm này tạo một tiến trình con để chạy lệnh và tạm dừng tiến trình hiện tại cho đến khi lệnh hoàn tất, sau đó trả về mã thoát của lệnh hoặc giá trị báo lỗi nếu không thể thực thi lệnh. Để dùng được hàm này cần include <stdlib.h>.
Đây là ví dụ:
Tuy nhiên, cách này có một nhược điểm đó là khi ta gọi hàm này thì toàn bộ chữ trên console sẽ bị thay đổi. Ví dụ: ban đầu có console chữ màu trắng (mặc định), khi gọi hàm system(“color 4”) thì toàn bộ chữ sẽ đổi sang màu đỏ, sau đó tiếp tục gọi hàm system(“color 6”) thì toàn bộ chữ sẽ lại đổi sang màu vàng.
Cách đổi màu thứ 2
Đây là cách mình hay dùng nhất, còn lý do vì sao thì các bạn xem tiếp sẽ rõ.
Với cách thứ 2 này, chúng ta có thể đổi màu rất linh hoạt, thay đổi được màu của từng kí tự cụ thể chứ không phải thay đổi màu toàn bộ chữ có trong console như cách 1.
void SET_COLOR(int color)
{
WORD wColor;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
{
wColor = (csbi.wAttributes & 0xF0) + (color & 0x0F);
SetConsoleTextAttribute(hStdOut, wColor);
}
}
Lưu ý: Để có thể xây dựng được hàm này cần phải #include <Windows.h>
Lời kết
Như vậy là mình đã trình bày xong những cách để có thể đổi Console trong lập trình C/C++. Cảm ơn bạn đã dành thời gian đọc bài viết!
Còn thư viện iostream thì thay màu chữ làm sao ạ
Bạn có thể nói rõ hơn đc không? Mình chưa hiểu ý của bạn…