C高级编程笔记一

有关屏幕操作的函数
void clrscr(void);
该函数将清除窗口中的文本,并将光标移到当前窗口的左上角,即(1, 1)处。
void clreol(void);
该函数将清除当前窗口中从光标位置开始到本行结尾的所有字符,但不改变光标原来的
位置。

 void delline(void);

该函数将删除一行字符,该行是光标所在行。


void gotoxy(int x, int y);

该函数很有用,用来定位光标在当前窗口中的位置。这里
x,y是指光标要定位处的坐
标(相对于窗口而言)。当
x, y超出了窗口的大小时,该函数就不起作用了。


int movetext(int x1, int y1, int x2, int y2, int x3, int y3);

该函数将把屏幕上左上角为(xl,y1),右下角为(x2,y2)的矩形内文本拷贝到左上角为(x3,
y3)的一个新矩形区内。这里
x,y坐标是以整个屏幕为窗口坐标系,即屏幕左上角为
(1,1)。
该函数与开设的窗口无关,且原矩形区文本不变。


int gettext(int xl, int yl, int x2, int y2, void *buffer);

该函数将把左上角为(xl,y1),右下角为(x2,y2)的屏幕矩形区内的文本存到由指针
buffer
指向的一个内存缓冲区内,当操作成功,返回
1;否则,返回
0。

因一个在屏幕上显示的字符需占显示存储器
VRAM的两个字节,即第一个字节是该字
符的
ASCII码,第二个字节为属性字节,即表示其显示的前景、背景色及是否闪烁,所以
buffer指向的内存缓冲区的字节总数的计算为:

字节总数=矩形内行数×每行列数×2
其中:矩形内行数
=y2-y1+l,每行列数
=x2-xl+1(每行列数是指矩形内每行的列数)。矩形内
文本字符在缓冲区内存放的次序是从左到右,从上到下,每个字符占连续两个字节并依次存
放。


int puttext(int x1, int y1, int x2, int y2, void *buffer);
该函数则是将
gettext()函数存入内存
buffer中的文字内容拷贝到屏幕上指定的位置。
注意:


(1) gettext()函数和
puttext()函数中的坐标是对整个屏幕而言的,即是屏幕的绝对坐标,而
不是相对窗口的坐标;
(2) movetext()函数是拷贝而不是移动窗口区域内容,即使用该函数后,原位置区域的文本
内容仍然存在。
例程
3-2:下面的程序首先定义了一个字符数组,下标为
64,表示用来存四行八列的文本。
由于没有用
window函数设置窗口,因而用缺省值,即全屏幕为一个窗口,程序开始设置
80
列×25行文本显示方式
(C80),背景色为蓝色,前景色为红色,经
clrscr函数清屏后,设置
的背景色才使屏幕背景变蓝。gotoxy(10,10)使光标移到第
10行
10列,然后在
(10,10)开
始位置显示
L:load,接着在下面三行相同的列位置显示另外三条信息,
13行
10列显示的


E:exit后面带有回车换行符,为的是将光标移到下一行开始处,好显示
press any key to
continue。当按任一键后,
gettext函数将
(10,l0,18,13)矩形区的内容存到
ch缓存区内。
ch即上述的四行八列信息,接着设置一个窗口,并纵向写上
1,2,3,4,然后用
movetext(),

将此窗口内容复制到另一区域,由于此区域包括背景色和显示的字符,所以被复制到另一区
域的内容也是相同的背景色和文本。当按任一键后,又出现提示信息,再按键,则存在
ch
缓冲区内的文本由
puttext()又复制到开设的窗口内了,注意上述的函数
movetext(),gettext(),
puttext()均与开设的窗口内坐标无关,而是以整个屏幕为参考系的。

 /*-------例程
3-2-------*/

#include <conio.h>

main()

{
int i;
char ch[4*8*2]; /* 定义
ch字符串数组作为缓存区 */
textmode(C80);
textbackground(BLUE);
textcolor(RED);
clrscr();
gotoxy(10,10);
cprintf("L:load");
gotoxy(10,11);
cprintf("S:save");
gotoxy(10,12);
cprintf("D:delete");
gotoxy(10,13);
cprintf("E:exit/r/n");
cprintf("Press any key to continue");
getch();
gettext(10,10,18,13,ch); /* 存矩形区文存到
ch缓存区 */
clrscr();
textbackground(1);
textcolor(3);
window(20,9,34,14); /* 开一个窗口 */
clrscr();
cprintf("1./r/n2./r/n3./r/n4./r/n");/* 纵向写
1,2,3,4 */
movetext(20,9,34,14,40,10); /* 将矩形区文本复制到另一区域 */
puts("hit any key");
getch();
clrscr();
cprintf("press any key to put text");

}
getch();
clrscr();
puttext(23,10,31,13,ch);
getch();
/* 将
ch缓存区所存文本在屏上显示 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值