回 帖 发 新 帖 刷新版面

主题:[转帖]T C图形函数一览(1,2)

[转帖]T C图形函数一览(1)
TC 图形函数
函数名:initgraph
功  能:gdriver和gmode分别表示图形驱动器和图形模式,path是指图形驱动程序所在的目录路径。
用  法:void far initgraph(int far *gdriver, int far *gmode, char *path);
在这里必须在path目录下找到一个对应于gdriver的文件扩展名为.BGI的图形驱动程序(c语言编译器提供了对应各类适配器的不同图形驱动程序),然后对其设置模式gmode。
图形驱动器通常在TC根目录下或者根目录下面的BGI目录,以下给出一些图形驱动文件列表:
ATT.BGI
CGA.BGI(CGA模式)
EGAVGA.BGI(EGAVGA模式)
HERC.BGI
IBM8514.BGI
PC3270.BGI

    事实上现在我们最常用的是EGAVGA.BGI图形驱动文件,相对于其它几个图形驱动文件它出现的时间比较晚,因此所能达到的图形模式分辨率和色彩相对就更加高。以下给出图形驱动器、模式的符号常数及数值:

图形驱动器(gdriver) 图形模式(gmode) 色彩 分辨率
符号常数 数值 符号常数 数值  
CGA 1 CGAC0 0 C0 320*200
  CGAC1 1 C1 320*200
  CGAC2 2 C2 320*200
  CGAC3 3 C3 320*200
  CGAHI 4 2色 640*200
MCGA 2 MCGAC0 0 C0 320*200
  MCGAC1 1 C1 320*200
  MCGAC2 2 C2 320*200
  MCGAC3 3 C3 320*200
  MCGAMED 4 2色 640*200
  MCGAHI 5 2色 640*480
EGA 3 EGALO 0 16色 640*200
  EGAHI 1 16色 640*350
EGA64 4 EGA64LO 0 16色 640*200
  EGA64HI 1 4色 640*350
EGAMON 5 EGAMONHI 0 2色 640*350
IBM8514 6 IBM8514LO 0 256色 640*480
  IBM8514HI 1 256色 1024*768
HERC 7 HERCMONOHI 0 2色 720*348
ATT400 8 ATT400C0 0 C0 320*200
  ATT400C1 1 C1 320*200
  ATT400C2 2 C2 320*200
  ATT400C3 3 C3 320*200
  ATT400MED 4 2色 320*200
  ATT400HI 5 2色 320*200
VGA 9 VGALO 0 16色 640*200
  VGAMED 1 16色 640*350
  VGAHI 2 16色 640*480
PC3270 10 PC3270HI 0 2色 720*350
DETECT 0 硬件测试   

函数名:closegraph
功能:关闭图形模式
用法:void far closegraph(viod)

调用该函数后即退出图形状态而进入文本方式,并释放用于保存图形驱动程序和字体的系统内存。

还需要补充一点的是我们可以采用另一个函数同样达到让硬件自动检测图形驱动器和模式的效果,其调用格式为:
函数名: detectgraph
功能: 通过检测硬件确定图形驱动程序和模式
用法: void far detectgraph( int far *graphdriver, int far *gmode)

    画点函数
函数名: putpixel
功  能: 在指定位置画一像素
用  法: void far putpixel (int x, int y, int pixelcolor);

  
函数名: getpixel
功  能: 取得指定像素的颜色
用  法: int far getpixel(int x, int y);

坐标位置的函数
函数名: getmaxx
功  能: 返回屏幕的最大x坐标
用  法: int far getmaxx(void);

函数名: getmaxy
功  能: 返回屏幕的最大y坐标
用  法: int far getmaxy(void);

函数明: getx
功  能: 返回当前图形位置的x坐标
用  法: int far getx(void);

函数名: gety
功  能: 返回当前图形位置的y坐标
用  法: int far gety(void);

函数名: moveto
功  能: 将CP移到(x, y)
用  法: void far moveto(int x, int y);

函数名: moverel
功  能: 将当前位置(CP)移动一相对距离
用  法: void far moverel(int dx, int dy);

画线函数
函数名: line
功  能: 在指定两点间画一直线
用  法: void far line(int x0, int y0, int x1, int y1);

函数名:lineto
功能:画一作从现行光标到点(x, y)的直线
    用法:void far lineto(int x, int y);

函数名: linerel
功  能: 从当前位置点(CP)到与CP有一给定相对距离的点画一直线
用  法: void far linerel(int dx, int dy);

函数名: circle
功  能: 在给定半径以(x, y)为圆心画圆
用  法: void far circle(int x, int y, int radius);

函数名: arc
功  能: 画一弧线
用  法: void far arc( int x,int y,int stangle,int endangle, int radius );

函数名: ellipse
功  能: 画一椭圆
用  法: void far ellipse( int x, int y, int stangle, int endangle, int xradius, int yradius);

函数名: rectangle
功  能: 画一个矩形
用  法: void far rectangle( int left, int top, int right, int bottom );

函数名: drawpoly
功  能: 画多边形
用  法: void far drawpoly( int numpoints, int far *polypoints );

线型函数
函数名: setlinestyle
功  能: 设置当前画线宽度和类型
用  法: void far setlinestyle( int linestype, unsigned upattern, int thickness);

有关线的形状(linestyle) :
符号常数 数值 含义
SOLID_LINE 0 实线
DOTTED_LINE 1 点线
CENTER_LINE 2 中心线
DASHED_LINE 3 点画线
USERBIT_LINE 4 用户定义线

有关线宽(thickness):
符号常数 数值 含义
NORM_WIDTH 1 一点宽
THIC_WIDTH 3 三点宽

函数名: getlinesettings
功  能: 取当前线型、模式和宽度
用  法: void far getlinesettings( struct linesettingstype far *lininfo );

该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:
          struct linesettingstype{
               int linestyle;
               unsigned upattern;
               int thickness;
          }

    例如下面两句程序可以读出当前线的特性
     struct linesettingstype *info;
     getlinesettings(info);

  
函数名: setwritemode
功  能: 设置图形方式下画线的输出模式
用  法: void far setwritemode(int mode);

    如果mode=0,则表示画线时将所画位置的原来信息覆盖了(复制模式)。如果mode=1,则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,异或模式下当线的颜色不变的时候,进行两次画线操作相当于没有画线。这一功能将在下一章“简单动画”中得到充分使用。

图形填充函数
函数名: bar
功  能: 画一个二维条形图
用  法: void far bar(int left,int top,int right,int bottom);

函数名: bar3d
功  能: 画一个三维条形图
用  法: void far bar3d( int left, int top, int right, int bottom, int depth, int topflag);

函数名: pieslice
功  能: 绘制并填充一个扇形
用  法: void far pieslice( int x, int stanle, int endangle, int radius );

函数名: sector
功  能: 画并填充椭圆扇区
用  法: void far sector( int x, int y, int stangle, int endangle );

填充方式
函数名: setfillstyle
功  能: 设置填充模式和颜色
用  法: void far setfillstyle(int pattern, int color);

color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的符号常数。
关于填充式样pattern的规定:
符号常数 数值 含义
EMPTY_FILL 0 以背景颜色填充
SOLID_FILL 1 以实填充
LINE_FILL 2 以直线填充
LTSLASH_FILL 3 以斜线填充(阴影线)
SLASH_FILL 4 以粗斜线填充(粗阴影线)
BKSLASH_FILL 5 以粗反斜线填充(粗阴影线)
LTBKSLASH_FILL 6 以反斜线填充(阴影线)
HATCH_FILL 7 以直方网格填充
XHATCH_FILL 8 以斜网格填充
INTTERLEAVE_FILL 9 以间隔点填充
WIDE_DOT_FILL 10 以稀疏点填充
CLOSE_DOS_FILL 11 以密集点填充
USER_FILL 12 以用户定义式样填充


    除USER_FILL(用户定义填充式样)以外,其它填充式样均可由setfillstyle()函数设置。当选用USER_FILL时, 该函数对填充图模和颜色不作任何改变。之所以定义USER_FILL主要因为在获得有关填充信息时用到此项。

函数名: setfillpattern
功  能: 选择用户定义的填充模式
用  法: void far setfillpattern( char far *upattern, int color );

    其中upattern是一个指向8个字节的指针。这8个字节定义了8x8点阵的图形。每个字节的8位二进制数表示水平8点,8个字节表示8行,然后以此为模型向个封闭区域填充。

函数名: getfillpattern
功  能: 将用户定义的填充模式拷贝到内存中
用  法: void far getfillpattern(char far *upattern);

函数名:getfillsetings
功  能:获得现行图模的颜色并将存入结构指针变量fillinfo中
用  法:viod far getfillsetings(struct linesettingstype far  *lineinfo);

其中fillsettingstype结构定义如下:
          struct fillsettingstype{
             int pattern;  // 现行填充模式
             int color;    // 现行填充模式
          };

函数名: floodfill
功  能: 填充一个有界区域
用  法: void far floodfill(int x, int y, int border);

x,y为封闭图形内的任意一点。border为边界的颜色,也就是封闭图形轮廓的颜色。调用了该函数后, 将用规定的颜色和图模填满整个封闭图形。

    使用这个函数有几点需要注意:
1.不能对边界点进行填充;
     2.不封闭的图形将溢出到其外的封闭图区域,若其外没有封闭区域,以屏幕为封闭区域,填充整个屏幕;
     3.点在图形外面,则填充封闭图形外的屏幕区域;
     4.border的颜色值必须与图形边框颜色值相同。

文本输出函数
函数名: outtext
功  能: 在视区显示一个字符串
用  法: void far outtext(char far *textstring);

函数名: outtextxy
功  能: 在指定位置显示一字符串
用  法: void far outtextxy(int x, int y, char *textstring);

    由于没有中文平台的支持,所以*textstring通常只能是英文字符串。

函数名: settextjustify
功  能: 为图形函数设置文本的对齐方式
用  法: void far settextjustify(int horiz, int vert);

outtextxy()函数指定了字符串输出的初始位置(x,y),可是,比如对于字符串"Game"来说,初始位置(x,y)到底是对应"G"的左上角、左下角还是中间这需要由settextjustify()函数来规定。
settextjustify()函数,将字符串按垂直方向可分为顶部, 中部和底部三个位置, 水平方向可分为左, 中, 右三个位置, 两者结合就有9个位置。请注意,这里的位置是针对字符串(如:Game)而不是第一个字母(如:G)而言的。
settextjustify()函数的第一个参数horiz是指水平方向,第二个参数vert是指垂直方向,两个参数都有3个值可供选择,其实也就是各自选择三个位置中的一个,二者以结合就确定了其中一个位置对应于初始位置(x,y)。函数中各个参数的规定见下列各表所示:

参数horiz和vert的取值 (修改):

符号常数 数值 用于
LEFT_TEXT 0 水平
RIGHT_TEXT 2 水平
BOTTOM_TEXT 0 垂直
TOP_TEXT 2 垂直
CENTER_TEXT 1 水平或垂直


配图

函数名: settextstyle
功  能: 为图形输出设置当前的文本属性
用  法: void far settextstyle ( int font, int direction, char size );


该函数用来设置输出字符的字形(由font确定)、输出方向(由direction确定)和字符大小(由charsize确定)等特性。函数中各个参数的规定见下列各表所示:

font的取值:

符号常数 数值 含义
DEFAULT_FONT 0 8*8点阵字(缺省值)
TRIPLEX_FONT 1 三倍笔划字体
SMALL_FONT 2 小号笔划字体
SANSSERIF_FONT 3 无衬线笔划字体
GOTHIC_FONT 4 黑体笔划字
direction的取值:
符号常数 数值 含义
HORIZ_DIR 0 从左到右
VERT_DIR 1 从底到顶


charsize的取值:

符号常数或数值 含义
1 8*8点阵
2 16*16点阵
3 24*24点阵
4 32*32点阵
5 40*40点阵
6 48*48点阵
7 56*56点阵
8 64*64点阵
9 72*72点阵
10 80*80点阵
USER_CHAR_SIZE=0 用户定义的字符大小
函数名: setusercharsize
功  能: 为矢量字体改变字符宽度和高度
用  法: void far setusercharsize( int multx, int dirx, int multy, int diry );

    这个函数只有在settextstyle( ) 函数中的charsize为0(或USER_CHAR_SIZE)时才起作用。调用函数setusercharsize()后,  每个显示在屏幕上的字符都以其缺省大小乘以mulx/divx为输出字符宽, 乘以muly/divy为输出字符高。

附录D
时间延迟函数
函数名: delay
功  能: 将程序的执行暂停一段时间(毫秒)
用  法: void delay(unsigned milliseconds);

重画屏幕区域的函数
函数名:getimage
功  能:将指定区域的一个位图存到主存中
用  法:void far getimage( int left, int top, int right, int bottom, void far *bitmap);

函数名:putimage
功  能:在屏幕上输出一个位图
用  法:void far putimage( int x, int y, void far *bitmap, int op );    

图像大小函数
函数名: imagesize
功  能: 返回保存位图像所需的字节数
用  法: unsigned far imagesize( int left, int top, int right, int bottom );
异或模式函数
     函数名: setwritemode
功  能: 设置图形方式下画线的输出模式
用  法: void far setwritemode(int mode);

    参数MODE可以被设置位COPY_PUT或者XOR_PUT两种模式。当mode被设置为XOR_PUT,其后的图形操作将都采用异或方式。此外之前提到的putimage()函数也可以采用异或模式向屏幕复制图像。

检测键盘输入函数
函数名: kbhit
功  能: 检查当前按下的键
用  法: int kbhit(void);

键盘接口函数
函数名: bioskey
功  能: 直接使用BIOS服务的键盘接口
用  法: int bioskey(int cmd);

    该函数通过bois中断0x16执行键盘操作,由参数cmd来决定具体的操作。
Cmd 具体操作
0 读取按键的ascii码
1 测试是否有按键如果没有按键 返回0如果按键为ctrl+brk 返回-1如果是其他按键 返回按键本身键值(直到此按键被取出后恢复0)
2 返回shift key 状态

    以下是当cmd为2的时候,返回值的具体含义
cmd返回值 触发特殊键
0X01 Left ctrl
0X02 Left alt
0X04 Right ctrl
0X08 Right alt
0X10 Scroll lock
0X20 Num lock
0X40 Caps lock
0X80 Sys rq

    bioskey()函数的优点在于:
1.和kbhit()函数一样可以在不影响主程序运行的情况下检测是否有按键;
2.可以方便地检测普通键具体ASCII码和扫描码;
3.可以方便地检测功能键具体扫描码;
4.可以检测特殊按键;
5.只需要一个函数就能解决检测按键和读入按键的任务。

回复列表 (共11个回复)

沙发

(2)
声音与延迟函数
函数名: sound
功  能: 以指定频率打开PC扬声器
用  法: void sound(unsigned frequency);

函数名: nosound
功  能: 关闭PC扬声器
用  法: void nosound(void);

函数名: delay
功  能: 将程序的执行暂停一段时间(毫秒)
用  法: void delay(unsigned milliseconds);

sound()函数用于让pc喇叭发声,nosound()函数用于使正在发声的pc喇叭静音。要使程序中的发声的具体方法,是调用sound()函数并延迟一定时间,然后使用nosound()函数静音,具体语句实现方法如下:
sound(100);
delay(100);
nosound();

产生随即数函数
函数名: rand
功  能: 随机数发生器
用  法: void rand(void);

函数名: random
功  能: 随机数发生器
用  法: int random(int num);
初始化随机数函数
函数名: randomize
功  能: 初始化随机数发生器
用  法: void randomize(void);
in86()函数
函数名: int86
功  能: 通用8086软中断接口
用  法: int int86( int intr_num, union REGS *inregs, union REGS *outregs );

    其中intr_num为软中断号,函数通过inregs寄存器向中断发出具体功能命令,函数将中断调用结果返回寄存器outregs。
memset()函数
函数名: memset
功  能: 设置s中的所有字节为ch, s数组的大小由n给定
用  法: void *memset(void *s, char ch, unsigned n);
标准VGA显示模式表
模式(16进制) 适配器 显示类型 颜色 字符格式 屏幕大小 字符大小 缓冲区首址 属性类型
0/1 CGA 文本 16/16 40*25 320*200 8*8 B8000 彩色
EGA 文本 16/64 40*25 320*350 8*14 B8000 彩色
VGA 文本 16/256K 40*25 360*400 9*16 B8000 彩色
CGA 文本 16/16 80*25 640*200 8*8 B8000 彩色
2/3 EGA 文本 16/64 80*25 640*350 8*14 B8000 彩色
VGA(3+) 文本 16/256K 80*25 720*400 9*16 B8000 彩色
CGA 图形 4/16 40*25 320*200 8*8 B8000 彩色
4/5 EGA 图形 4/64 40*25 320*200 8*8 B8000 彩色
VGA 图形 4/256K 40*25 320*200 8*8 B8000 彩色
CGA 图形 2/16 40*25 640*200 8*8 B8000 单色
6 EGA 图形 2/64 40*25 640*200 8*8 B8000 单色
VGA 图形 2/256K 40*25 640*200 8*8 B8000 单色
7 MDA/EGA 文本 单色 80*25 720*350 9*14 B0000 单色
VGA(7+) 文本 单色 80*25 720*400 9*16 B0000 单色
D EGA 图形 16/64 40*25 320*200 8*8 A0000 彩色
VGA 图形 16/256K 40*25 320*200 8*8 A0000 彩色
E EGA 图形 16/64 80*25 640*200 8*8 A0000 彩色
VGA 图形 16/256K 80*25 640*200 8*8 A0000 彩色
F EGA/VGA 图形 单色 80*25 640*350 8*14 A0000 单色
10 EGA 图形 16/64 80*25 640*350 8*14 A0000 彩色
VGA 图形 16/256K 80*25 640*350 8*14 A0000 彩色
11 VGA 图形 2/256K 80*30 640*480 8*16 A0000 彩色
12 VGA 图形 16/256K 80*30 640*480 8*16 A0000 彩色
13 VGA 图形 256/256K 40*25 320*200 8*8 A000 彩色

常规内存函数
申请函数:malloc(),farmalloc(),calloc(),farcalloc(),realloc(),farealloc()
函数名: malloc
功  能: 内存分配函数
用  法: void *malloc(unsigned size);


函数名: farmalloc
功  能: 从远堆中分配存储块
用  法: void far *farmalloc(unsigned long size);


函数名: calloc
功  能: 分配主存储器
用  法: void *calloc(size_t nelem, size_t elsize);


函数名: farcalloc
功  能: 从远堆栈中申请空间
用  法: void far *farcalloc( unsigned long units, unsigned ling unitsz );


函数名: realloc
功  能: 重新分配主存
用  法: void *realloc(void *ptr, unsigned newsize);


函数名: farrealloc
功  能: 调整远堆中的分配块
用  法: void far *farrealloc( void far *block, unsigned long newsize );


使用函数:memcpy(),memset(),memmove(),movedata()


函数名: memcpy

功  能: 从源source中拷贝n个字节到目标destin中

用  法: void *memcpy(void *destin,void *source,unsigned n);


函数名: memset

功  能: 设置s中的所有字节为ch, s数组的大小由n给定

用  法: void *memset(void *s, char ch, unsigned n);


函数名: memmove

功  能: 移动一块字节

用  法: void *memmove(void *destin,void *source,unsigned n);


函数名: movedata

功  能: 拷贝字节

用  法: void movedata(int segsrc, int offsrc, int segdest, int offdest, unsigned numbytes);


释放函数:free(),farfree()


函数名: free

功  能: 释放已分配的块

用  法: void free(void *ptr);

函数名: farfree

功  能: 从远堆中释放一块

用  法: void farfree(void);


指针操作函数:MK_FP(),FP_OFF(),FP_SEG()


函数名: MK_FP
功  能: 设置一个远指针
用  法: void far *MK_FP(unsigned seg, unsigned off);


函数名: FP_OFF
功  能: 获取远地址偏移量
用  法: unsigned FP_OFF(void far *farptr);


函数名: FP_SEG
功  能: 获取远地址段值
用  法: unsigned FP_SEG(void far *farptr);

XMS功能调用索引表:
功能号 功能 版本
功能00H功能01H功能02H功能03H功能04H功能05H功能06H功能07H功能08H功能09H功能0AH功能0BH功能0CH功能0DH功能0EH功能0FH功能10H功能11H 取XMS版本号请求高内存区HMA释放高内存区HMA全程启用A20全程停用A20局部启用A20局部停用A20查询A20状态查询自由扩展内存分配扩展内存块释放扩展内存块移动扩展内存块锁住扩展内存块扩展内存块解锁取EMB句柄信息重新分配扩展内存块请求上位存储块UMB释放上位存储块UMB XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0XMS规范V2.0

EMS功能调用索引:
功能号 功能
功能40H功能41H功能42H功能43H功能44H功能45H功能46H功能47H功能48H功能4BH功能4CH功能4DH 取得EMS程序状态取得物理映射页面的段地址获取逻辑页页数信息分配句柄和内存内存映射释放句柄和内存获取EMM的版本号保存指定句柄映射关系恢复指定句柄映射关系获取EMM的句柄数获取指定句柄所分配的逻辑页页数取所有句柄分配情况

键盘扫描码表:
键名 扫描码 键名 扫描码 键名 扫描码
Esc 1 A 30 F1 59
! or 1 2 S 31 F2 60
@ or 2 3 D 32 F3 61
# or 3 4 F 33 F4 62
$ or 4 5 G 34 F5 63
% or 5 6 H 35 F6 64
^ or 6 7 J 36 F7 65
& or 7 8 K 37 F8 66
* or 8 9 L 38 F9 67
( or 9 10 : or ; 39 F10 68
) or 0 11 “ or ‘ 40 F11 133
- 12 ~ or ` 41 F12 134
= 13 Left shift 42 Numlock 69
Bksp 14 \ 43 Scroll lock 70
Tab 15 Z 44 Home or 7 71
Q 16 X 45 Up or 8 72
W 17 C 46 Pgup or 9 73
E 18 V 47 Gray - 74
R 19 B 48 Left or 4 75
T 20 N 49 Center or 5 76
Y 21 M 50 Right or 6  77
U 22 < or , 51 Gray + 78
I 23 > or . 52 End or 1 79
O 24 ? or / 53 Down or 2 80
P 25 Right shift 54 Pgdn or 3 81
{ or [ 26 Prt sc or * 55 Ins or 0 82
} or ] 27 Alt 56 Del or . 83
enter 28 Space bar 57  
ctrl 29 Caps lock 58  

键盘ASCII码表
ASCII字符集 (0 - 127)
代码 字符 代码 字符 代码 字符 代码 字符
0   32 [空格] 64 @ 96 `
1   33 ! 65 A 97 a
2   34 " 66 B 98 b
3   35 # 67 C 99 c
4   36 $ 68 D 100 d
5   37 % 69 E 101 e
6   38 & 70 F 102 f
7   39 ' 71 G 103 g
8 ** 40 ( 72 H 104 h
9 ** 41 ) 73 I 105 i
10 ** 42 * 74 J 106 j
11   43 + 75 K 107 k
12   44 , 76 L 108 l
13 ** 45 - 77 M 109 m
14  46 . 78 N 110 n
15   47 / 79 O 111 o
16   48 0 80 P 112 p
17   49 1 81 Q 113 q
18   50 2 82 R 114 r
19   51 3 83 S 115 s
20   52 4 84 T 116 t
21   53 5 85 U 117 u
22   54 6 86 V 118 v
23   55 7 87 W 119 w
24   56 8 88 X 120 x
25   57 9 89 Y 121 y
26   58 : 90 Z 122 z
27   59 ; 91 [ 123 {
28   60 < 92 \ 124 |  
29   61 = 93 ] 125 }
30 ? 62 > 94 ^ 126 ~
31  63 ? 95 _ 127 &127;
** 数值 8.9.10 和 13 可以分别转换为退格符、制表符、换行符和回车符。这些字符都没有图形表示,但是对于不同的应用程序,这些字符可能会影响文本的显示效果。
ASCII字符集 (128 - 255)
代码 字符 代码 字符 代码 字符 代码 字符
128 &#8364; 160 [空格] 192 &Agrave; 224 à
129 ? 161 &iexcl; 193 &Aacute; 225 á
130 ? 162 &cent; 194 &Acirc; 226 &acirc;
131 ? 163 &pound; 195 &Atilde; 227 &atilde;
132 ? 164 ¤ 196 &Auml; 228 &auml;
133 … 165 &yen; 197 &Aring; 229 &aring;
134 ? 166 &brvbar; 198 &AElig; 230 &aelig;
135 ? 167 § 199 &Ccedil; 231 &ccedil;
136 ? 168 ¨ 200 &Egrave; 231 &ccedil;
137 ‰ 169 &copy; 201 &Eacute; 232 è
138 ? 170 &ordf; 202 &Ecirc; 233 é
139 ? 171 &laquo; 203 &Euml; 234 ê
140 ? 172  204 &Igrave; 235 &euml;
141 ? 173  205 &Iacute; 236 ì
142 ? 174 (R) 206 &Icirc; 237 í
143 ? 175 &macr; 207 &Iuml; 238 &icirc;
144 ? 176 ° 208 &ETH; 239 &iuml;
145 ‘ 177 ± 209 &Ntilde; 240 &eth;
146 ’ 178 &sup2; 210 &Ograve; 241 &ntilde;
147 “ 179 &sup3; 211 &Oacute; 242 ò
148 ” 180 &acute; 212 &Ocirc; 243 ó
149 ? 181 &micro; 213 &Otilde; 244 &ocirc;
150 – 182  214 &Ouml; 245 &otilde;
151 — 183 · 215 × 246 &ouml;
152 ? 184 &cedil; 216 &Oslash; 247 ÷
153 &#8482; 185 &sup1; 217 &Ugrave; 248 &oslash;
154 ? 186 &ordm; 218 &Uacute; 249 ù
155 ? 187 &raquo; 219 &Ucirc; 250 ú
156 ? 188 &frac14; 220 &Uuml; 251 &ucirc;
157 ? 189 &frac12; 221 &Yacute; 252 ü
158 ? 190 &frac34; 222 &THORN; 253 &yacute;
159 ? 191 &iquest; 223 &szlig; 254 &thorn;

方块表示在当前平台下不支持。

中断改写中断服务程序函数
(1)取得中断向量入口的函数getvect(intr-num),它读取中断名为intr-num的向量。
函数名: getvect
功  能: 取得中断向量入口
用  法: void interrupt(*getvect(int intr_num));
(2)设置中断向量入口的函数servect(intr-num,*isr),它将intr-num的向量指置为指向新中断服务程序地址的远指针。
函数名: setvect
功  能: 设置中断向量入口
用  法: void setvect(int intr_num, void interrupt(*isr)());
(3)通用的8086软中断接口函数int86(intr-num,inregs,outregs),它执行一个由参数intr-num所指定的8086软中断,并且在执行前,把inregs中的寄存器值拷到各个寄存器中,返回时把寄存器的值拷到outregs中。
函数名: int86
功  能: 通用8086软中断接口
用  法: int int86( int intr_num, union REGS *inregs, union REGS *outregs );

TSR函数
1.退出并驻留内存函数keep(status,int size),它将当前函数驻留在空间为size个节(每节16个字节)的内存,其余部分被释放,出口状态保存在status中。
函数名: keep
功  能: 退出并继续驻留
用  法: void keep(int status, int size);
2.释放先前分配的DOS内存块函数freemem(seg),它将段地址为seg的内存块释放。在TSR中用于释放环境块。
函数名: freemem
功  能: 释放先前分配的DOS内存块
用  法: int freemem(unsigned seg);
3.设置远指针的宏MK_FP(seg,offs),seg为段地址,offs为偏移量。在TSR中用于访问内存中的特殊单元。
函数名: MK_FP
功  能: 设置一个远指针
用  法: void far *MK_FP(unsigned seg, unsigned off);

板凳

希望楼主转帖时能把它整理好,不过还是要谢谢

3 楼

[font=宋体][/font][em2]人才真是不看不知道一看吓一跳啊,我是个大一的学生现在在搞课程设计好难。就到网上来看看,没想到以外找到这个网站,对我很有用谢谢。!~

4 楼

能够跟我说far所定义的是什么吗,以及上述的函数的头文件都在哪里啊,能帮我说说吗?我对图形很感兴趣,但却一无所知

5 楼

太感谢了,我正好对tc的图形很陌生

6 楼

请问:
    这些函数,C++当中能用吗?

7 楼

好贴
我顶~~~~~~~~~~~~~~~~~~[em11]

8 楼

好啊,遍游戏就靠这些了!!!!

9 楼

调用此函数时
far 的作用是什么?
是在远堆中存储此函数么
程序运行时又是怎么样工作的

10 楼

当然,C++对C是兼容的

我来回复

您尚未登录,请登录后再回复。点此登录或注册