TC 2.0 gettext函数的问题
用 TC2.0 编一个程序,打算在程序开始运行的时候,用 Gettext()函数保存原来屏幕上的显示,在程序退出的时候,再用Puttext()函数把屏幕还原回去,主代码这样写的:
main()
{
int *save;
gettext(1,1,80,25,save);
clrscr();
drawmenu();
}
但是,这段代码运行却是错误的,也没出现什么信息,只是屏幕的中央有一个小块,事先写好的 Drawmenu()函数是用来画菜单的(文本模式),而把 Gettext()函数的那一行拿掉,则程序运行一切正常,请问,这个程序有什么错误吗??我曾经专门编了一个小程序,测试 Gettext()和puttext()这两个函数的功能,如上述这样的调用是正确的啊,为什么会出错呢??
还有就是,TC2.0中要如何隐藏光标呢,具体函数是什么??我曾经问过这个问题,可是没有专业的回答,请高手不吝赐教/
参考答案:主要是你的变量定义错误,gettext函数的作用是以文本方式将屏幕上的文本拷贝到存储区,其形式为:
int gettext(int left, int top, int right, int bottom, void *destin);
其中*destin应该是从屏幕上得到的文本格式,其类型应该是char型或string型,所以你的 save 变量应该定义成 char *save[4096]。
这里有一个例子:
#include <conio.h>
char buffer[4096];
int main(void)
{
int i;
clrscr();
/*======先在屏幕上显示20行文字========*/
for (i = 0; i <= 20; i++)
cprintf("Line #%d\r\n", i);
/*======再将屏幕上的东西放到存储区========*/
gettext(1, 1, 80, 25, buffer);
/*======清屏=============*/
gotoxy(1, 25); /*定位光标*/
cprintf("Press any key to clear screen...");
getch();
clrscr();
gotoxy(1, 25);
cprintf("Press any key to restore screen..."); /*提示你开始还原屏幕了*/
getch();
/*======还原屏幕======================*/
puttext(1, 1, 80, 25, buffer); /*这时你将看到刚才屏幕上的20行文字了*/
gotoxy(1, 25);
cprintf("Press any key to quit...");
getch();
return 0;
}
=========================================
关于隐藏光标,网上找的,具体啥意思偶也没看懂,HOHO~~
#include<dos.h>
#include<stdio.h>
#define CURSOROFF 0
#define COR_CURSORON 0x607
#define MON_CURSORON 0x0c0d
void hcursor(CURSOR)
int CURSOR;
{
union REGS reg;
reg.h.ah=1;
if(CURSOR==0)
reg.x.cx=0x2120;
else
reg.x.cx=CURSOR;
int86(0x10,®,®);
reg.h.ah=19;
if(CURSOR!=0)
reg.h.al=1;
else
reg.h.al=0;
reg.x.cx=0;
int86(0x10,®,®);
}
main()
{
do
{
printf("\nhit to close...");
getch();
hcursor(CURSOROFF);
printf("\nhit to set...");
getch();
hcursor(COR_CURSORON);
printf("\nTo stop?");
}while(getch()!='y');
}