
Nguyên bản được gửi bởi
conde
Như vậy bài này có phải chạy trên DOS không?
/*attrib.c*/
/*changes graphics attributes*/
#define NORMAL "\x1B[0m"
#define BOLD "\x1B[1m"
#define UNDER "\x1B[4m"
#define BLINK "\x1B[5m"
#define REVERSE "\x1B[7m"
main()
{
printf("Normal %s Blinking %s Normal \n\n", BLINK
, NORMAL
); printf("Normal %s Bold %s Normal \n\n", BOLD
, NORMAL
); printf("Normal %s Underlined %s Normal \n\n", UNDER
, NORMAL
); printf("Normal %s Reversed %s Normal \n\n", REVERSE
, NORMAL
); printf("%s %s Reversed and Blinking %s \n\n", BLINK
, REVERSE
, NORMAL
); }
Để xóa màn hình dùng chuỗi "\x1B[2j" sao chạy không đúng?
/*cfill.c*/
/*dung putch() de dien vao man hinh*/
#define ROMAX 25
#define COMAX 80
#define CLEAR "\x1B[2j"
main()
{
int col, row;
char ch;
printf("\nGo vao ki tu de bat dau, go lai de thay doi:"); while ((ch = getche()) != 'x') {
for (row = 0; row < ROMAX; row++) {
for (col = 0; col < COMAX; col++) {
putch(ch);
}
}
}
}
Hỏi lại cách điều khiển cursor?
/*menu.c*/
/*demonstrates simple menu*/
#define TRUE 1
#define NUM 5
#define CLEAR "\x1B[2J" /*xoa man hinh*/
#define ERASE "\x1B[2K" /*xoa dong*/
#define NORMAL "\x1B[0m" /*thuoc tinh normal*/
#define REVERSE "\x1B[7m" /*thuoc tinh dao mau*/
#define HOME "\x1B[1;1f" /*cursor ve goc trai tren*/
#define BOTTOM "\x1B[20;1f" /*cursor ve goc phai duoi*/
#define U_ARRO 72 /*mui ten len*/
#define D_ARRO 80 /*mui ten xuong*/
#define INSERT 82 /*phim INS*/
main()
{
static char *item[NUM] = /*cac muc menu*/
{ "Open",
"Close",
"Save",
"Print",
"Quit" };
int curpos; /*vi tri cac muc duoc chon*/
int code;
printf(CLEAR
); /*xoa man hinh*/ curpos = 0; /*chon dinh menu*/
while (TRUE) {
display (items, NUM, curpos); /*hien thi menu*/
code = getcode(); /*kiem tra ban phim*/
switch (code) {
case U_ARRO: if (curpos > 0) {
--curpos;
}
break;
case D_ARRO: if (curpos < NUM-1) {
++curpos;
}
break;
case INSERT: action(curpos);
break;
}
}
}
/*display()*/
/*displays menu*/
display (arr, size, pos)
char *arr[];
int size, pos;
{
int i;
printf(HOME
); /*cursor to top left*/ for (i = 0; i < size; i++) { /*for each menu item*/
if (i == pos) { /*if selected*/
printf(REVERSE
); /*print in reverse dideo*/ }
printf("%s \n", *(arr
+i
)); /*print item*/ printf(NORMAL
); /*restore normal attribute*/ }
printf(BOTTOM
); /*cursor to lower left*/ }
/*getcode()*/
/*gets keyboard code*/
getcode ()
{
int key;
while (getch() != 0) { /*wait for initial 0*/
; /*(ignores normal keys)*/
}
return(getch()); /*return code*/
}
/*action()*/
/*performs action based on cursor position*/
action(pos)
int pos;
{
printf(ERASE
); /*erase lower line*/ switch(pos) {
case 0: printf("Open"); break; case 1: printf("Close"); break; case 2: printf("Save"); break; case 3: printf("Print"); break; case 4: exit(); /*exit from program*/
}
bài này mình trả lời rồi mà
PHP Code:
à để dùng được cách lệnh điều khiển ANSI thì trong tập tin config.sys bạn khai báo thêm dòng này :
DEVICE=ANSI.SYS
Tuy nhiên xài BC 3.01 hoặc Tc3.0 với OS XP thì ko được đâu...
hình như nó chỉ có tác dụng với OS DOS hoặc win98 thôi.......
sách đó cũ rồi nên còn lưu lại các lệnh ANSI.
sách thầy ất ko còn đề cập đến nữa.
sách thầy ngọc chỉ nói sơ qua tầm 1 dòng.