一、窗口内文本的输出函数
int cprintf("<格式化字符串>", <变量表>);
int cputs(char *string);
int putch(int ch);
cprintf()函数输出一个格式化的字符串或数值到窗口中。它与printf() 函 数的用法完全一样, 区别在于cprintf()函数的输出受窗口限制, 而printf() 函 数的输出为整个屏幕。
cputs()函数输出一个字符串到屏幕上,它与puts()函数用法完全一样, 只是受窗口大小的限制。
putch()函数输出一个字符到窗口内。
注意:
(1) 使用以上几种函数, 当输出超出窗口的右边界时会自动转到下一行的开始处继续输出。当窗口内填满内容仍没有结束输出时, 窗口屏幕将会自动逐行上卷直到输出结束为止。
二、窗口内文本的输入函数
int getche(void);
该函数在前面已经讲过, 需要说明的是, getche()函数从键盘上获得一个字符, 在屏幕上显示的时候, 如果字符超过了窗口右边界, 则会被自动转移到下一行的开始位置。
例1:
#include <stdio.h>
#include <conio.h>
int main()
{
int i;
char *c[]={"BLACK", "BLUE", "GREEN", "CYAN", "RED",
"MAGENTA","BROWN", "LIGHTGRAY"};
textbackground(0); /* 设置屏幕背景色 */
clrscr(); /* 清除文本屏幕 */
for(i=1; i<8; i++)
{
window(10+i*5, 5+i, 30+i*5,15+i); /* 定义文本窗口 */
textbackground(i); /* 定义窗口背景色 */
clrscr(); /* 清除窗口 */
}
getch();
return 0;
三、有关屏幕操作的函数
void clrscr(void); 清除当前窗口中的文本内容, 并把光标定位在窗口的左上角(1, 1)处。
void clreol(void); 清除当前窗口中从光标位置到行尾的所有字符, 光标位置不变。
void gotoxy(x, y); 该函数很有用, 它用来定位光标在当前窗口中的位置。这里x, y是指光标要定位处的坐标(相对于窗口而言), 当x, y超出了窗口的大小时, 该函数就不起作用了。
int gettext(int xl, int yl, int x2, int y2, void *buffer);
int puttext(int x1, int y1, int x2, int y2, void *buffer);
gettext()函数是将屏幕上指定的矩形区域内文本内容存入buffer 指针指向的一个内存空间。内存的大小用下式计算:
所用字节大小=行数*列数*2
其中: 行数=y2-y1+1;列数=x2-x1+1
puttext()函数则是将gettext()函数存入内存buffer中的文字内容拷贝到屏幕上指定的位置。
int movetext(int x1, int x2, int y2, int x3, int y3);
movetext()函数将屏幕上左上角为(x1,y1), 右下角为(x2, y2)的一矩形窗口内的文本内容拷贝到左上角为(x3, y3)的新的位置。该函数的坐标也是相对于整个屏幕而言的。
注意:
1. gettext()函数和puttext()函数中的坐标是对整个屏幕而言的,即是屏幕的绝对坐标, 而不是相对窗口的坐标。
2. movetext()函数是拷贝而不是移动窗口区域内容, 即使用该函数后,原位置区域的文本内容仍然存在。
include <conio.h>
main()
{
int i;
char *f[]={"Load F3", "Pick Alt-F3", "New ",
"Save F2", "Write to ", "Directory",
"Change dir","Os shee ", "QuitAlt-X"};
char buf[9*14*2];
clrscr();
textcolor(YELLOW);
textbackground(BLUE);
clrscr();
gettext(10, 2, 24, 11, buf);
window(10, 2, 24, 11);
textbackground(RED);
textcolor(YELLOW);
clrscr();
for(i=0; i<9; i++)
{
gotoxy(1, i++);
cprintf("%s", f[i]);
}
getch();
movetext(10, 2, 24, 11, 40, 10);
puttext(10, 2, 24, 11, buf);
getch();
}
下面再介绍一些函数:
void highvideo(void); 设置显示器高亮度显示字符。
void lowvideo(void); 设置显示器低亮度显示字符。
void normvideo(void); 使显示器返回到程序运行前的显示方式。
int wherex(void); 这两个函数返回当前窗口下光标的x, y坐标。
int wherey(void);