Bạn đã bao giờ cảm thấy nhàm chán với giao diện trắng đen của Màn hình Console khi bắt đầu học công nghệ thông tin chưa? Trong bài viết này, mình sẽ chia sẻ với các bạn một hàm đơn giản, giúp làm cho Màn hình Console trở nên sinh động hơn bằng cách thay đổi màu sắc của chữ hiển thị.
Bảng màu cho Màn hình Console
Trước khi bắt đầu, chúng ta hãy tìm hiểu về bảng màu mà Màn hình Console có thể sử dụng để thay đổi màu:
Bạn có thể xem bảng màu này bằng cách mở CMD và gõ lệnh sau:
color [ký tự bất kỳ - ngoại trừ số]
Để thay đổi màu của Màn hình Console, bạn chỉ cần gõ lệnh sau:
color [giá trị màu]
Cách đơn giản nhất: Sử dụng hàm system()
Hàm int system(const char *command)
cho phép bạn gọi tên lệnh hoặc tên chương trình trong môi trường host để thực thi bởi Command Processor và trả về sau khi lệnh đã hoàn thành.
Lưu ý: Để sử dụng hàm này, bạn cần bao gồm #include <stdlib.h>
.
Dưới đây là ví dụ:
Tuy nhiên, cách này có một nhược điểm là khi gọi hàm này, toàn bộ chữ trên Màn hình Console sẽ bị thay đổi màu. Ví dụ, khi ban đầu Màn hình Console có chữ màu trắng (mặc định), sau khi gọi hàm system("color 4")
, toàn bộ chữ sẽ đổi sang màu đỏ. Tiếp tục gọi hàm system("color 6")
, toàn bộ chữ sẽ lại đổi sang màu vàng.
Cách đổi màu linh hoạt hơn: Sử dụng hàm SET_COLOR()
Đây là cách mà mình thường sử dụng nhất, và bạn sẽ hiểu lý do tại sao khi đọc tiếp.
Với cách này, chúng ta có thể thay đổi màu sắc của từng phần chữ cụ thể trên Màn hình Console, thay vì thay đổi màu toàn bộ chữ như cách trước.
Dưới đây là hàm SET_COLOR():
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 ý: Để sử dụng hàm này, bạn cần bao gồm #include <Windows.h>
.
Dưới đây là ví dụ về việc sử dụng hàm SET_COLOR():
Như vậy, mình đã trình bày xong hai cách để thay đổi màu sắc trên Màn hình Console trong lập trình C/C++. Hy vọng bạn đã tìm thấy thông tin hữu ích trong bài viết này.
Hãy để lại bình luận góp ý cho mình nhé!