Thư viện giúp bạn xây dựng UI trong console với C và C++ dành cho thành viên tại FPT Polytechnic được phát triển bởi Quang Nhật.
- Bạn hãy tải mã nguồn từ trang git này sau đó giải nén vào folder dự án bạn muốn sử dụng thư viện
- Import thư viện sau khi muốn sử dụng:
#include "lavenes.h"
Khi sử dụng sự kiện bạn sẽ không sử dụng được scanf để lấy dữ liệu nhậ, bạn hãy xem sự kiện bàn phím để lấy giá trị và lưu vào biến nhé
Để sử dụng bạn init lệnh sau trước khi sử dụng
//Setup mouse event
InitMouseStruct mouse = initMouse();
while(1) {
InputStruct mouseStruct = initInput(mouse);
//Các lệnh xử lý sự kiện chuột và bàn phím
}
Sự kiện bắt các thao tác chuột trên console bao gồm tọa độ và phím nhấn. Để sử dụng API này bạn hãy init lệnh sau trước khi sử dụng:
if(mouseStruct.eventType == MOUSE_EVENT) {
//Xử lý thao tác trên chuột
}
Lấy tọa độ của chuột:
int posX = mouseStruct.mouse.X; //Tọa độ X
int posY = mouseStruct.mouse.Y; //Tọa độ Y
Lấy phím nhấn từ chuột:
//Chuột trái
if(mouseStruct.mouse.buttonState == FROM_LEFT_1ST_BUTTON_PRESSED) {
//Code
}
//Chuột phải
if(mouseStruct.mouse.buttonState == FROM_LEFT_2ND_BUTTON_PRESSED) {
//Code
}
//Chuột giữa
if(mouseStruct.mouse.buttonState == FROM_LEFT_3RD_BUTTON_PRESSED) {
//Code
}
Sự kiện bắt các thao tác từ bàn phím. Để sử dụng API này bạn hãy init lệnh sau trước khi sử dụng:
if(mouseStruct.eventType == KEY_EVENT) {
//Code xử lý
}
Kiểm tra người dùng có đang nhấn bàn phím hay không:
if(mouseStruct.key.bKeyDown) {
//Code
}
Lấy thông tin ký tự người dùng đã nhấn
//Ascii Char
char key = mouseStruct.key.AsciiChar;
Cùng các kiểu khác:
struct key {
DWORD wVirtualKeyCode;
CHAR AsciiChar;
WCHAR UnicodeChar;
BOOL bKeyDown;
WORD dwControlKeyState;
WORD wRepeatCount;
WORD wVirtualScanCode;
}
Để tạo một header bạn sử dụng hàm sau:
headerBar(title, width);
//title: tiêu đề (string)
//width: độ dài (int)
Để tạo một Radio Box bạn sử dụng code sau:
//Khai báo cấu hình Radio Box
//Cách 1
RadioBox radio;
radio.x = 0; //Tọa độ x
radio.y = 0; //Tọa độ y
radio.labelColor = 240; //Màu cho label
radio.boxColor = 240; //Màu cho Radio box
radio.checked = 1; //Trạng thái cho radio box cho check hay không 0: không, 1: có
radio.codePage = 437; //Code page cho radio box
strcpy(radio.label, "Label radio box"); //Label cho Radio box
//Cách 2
//RadioBox radio = {title, x, y, labelColor, boxColor, checked, codePage};
RadioBox radio = {"Tiêu đề radio Box", 0, 0, 240, 240, true, 437};
//Vẽ radio box lên màn hình
RadioBoxElement(radio);
Để tạo một Button bạn sử dụng code sau:
//Khai báo cấu hình Button
//Cách 1
Button btn;
btn.x = 0; //Tọa độ x
btn.y = 0; //Tọa độ y
btn.width = 100; //Độ dài button
btn.height = 1; //Độ rộng button
btn.color = 240; //Màu cho button
btn.align = 1; //Align cho button- 0: Left, 1: Center, 2: Right
btn.codePage = 437; //Codepage cho Button
strcpy.title("Tiêu đề button"); //Nội dung cho button
//Cách 2
//Button btn = {title, x, y, width, height, color, align, codePage};
Button btn = {"Tiêu đề button", 0, 0, 100, 1, 240, 1, 437};
//Vẽ button lên màn hình
ButtonElement(btn);
Để tạo một Textbox bạn sử dụng code sau:
//Khai báo cấu hình Textbox
//Cách 1
Input textbox;
textbox.x = 0; //Tọa độ x
textbox.y = 0; //Tọa độ y
textbox.width = 10; //Độ dài Textbox
textbox.labelColor = 15; //Màu cho label
textbox.inputColor = 240; //Màu cho Textbox
textbox.align = 0; //Align cho Textbox: 0-Left; 1-Center; 2-Right
textbox.codePage = 437; //Codepage cho Textbox
strcpy(textbox.label, "Label"); //Label cho Textbox
//Cách 2
//Input textbox = {label, value, x, y, width, labelColor, inputColor, align, codePage};
Input textbox = {"Label", "Hello", 0, 0, 10, 15, 240, 0, 437};
//Vẽ Textbox lên màn hình
InputElement(textbox);
Để tạo một Alert bạn sử dụng lệnh sau:
//Khai báo cấu hình Alert
//Cách 1
Alert alert;
alert.x = 0; //Tọa độ x
alert.y = 0; //Tọa độ y
alert.width = 20; //Chiều dài
alert.height = 10; //Chiều rộng
alert.titleColor = 159; //Màu title bar
alert.titleBarColor = 159; //Màu background title bar
alert.contentColor = 240; //Màu cho nội dung
alert.backgroundColor = 240; //Màu background cho nội dung
alert.codePage = 437; //Codepage
strcpy(alert.title, "Tieu de") //Tiêu đề cho title bar
strcpy(alert.content, "Noi dung") //Nội dung cho Alert
//Cách 2
//Alert alert = {title, content, x, y, width, height, titleColor, titleBarColor, contentColor, backgroundColor, codePage};
Alert alert = {"Tieu de", "Noi dung", 0, 0, 20, 10, 159, 159, 240, 240, 437};
//Vẽ Alert lên màn hình
AlertElement(alert);
Các hàm xử lý vẽ lên màn hình
Vẽ nội dung trên tọa độ X, Y với màu
//draw(content, x, y, color, codePage);
draw("HELLO", 0, 0, 240, 437);
Di chuyển con trỏ đến tọa độ X, Y
//gotoXY(x, y);
gotoXY(2, 5);
Vẽ một vùng từ vị trí x,y đến x,y với màu
//square(startX, startY, endX, endY, color);
square(0, 0, 10, 10, 240);
Đổi màu cho console
//setColor(color); //color: mã màu
setColor(240);
Hiện tại có các mã code page sau được sử dụng nhiều: Xem thêm các mã khác tại: Microsoft Code Page Identifiers
Identifier | Additional information |
---|---|
437 | OEM United States - Mặc định của console |
65001 | Unicode (UTF-8) - Sử dụng để viết tiếng Việt lên console |
Đây là bảng mã màu cho console