上次整理以前DOS下的代码,找了个线性回归分析函数,觉得可能还有用,于是放在了《C语言版的线性回归分析函数》中,今天在CSDN的C/C++版,发现居然还有人求DOS下VGA 12H模式下的直接写屏代码,临时找了2个以前的文件,发了出去供参考。后来仔细找了一会,把以前DOS下写的供Trubo C使用的VGA 12H直接写屏图形函数找齐了,还有鼠标和XMS内存管理函数,决定放在这里,供C语言初学者参考。因为这些函数全部都是外部汇编代码文件,比较长,只得分几篇文章存放,由于时间太长,有些代码我自己现在也说不清楚,除个别情况外,本人不对代码作解释,纯粹代码粘贴。这篇文章中存放VGA 12H图形的基本函数和C调用头文件以及全部汇编函数的MAKEFILE。
有人可能说,Turbo C不是有图形库吗,为啥还要自己写图形库?因为Trubo C自带的图形库通用性太强,导致当时DOS下使用它时,速度很慢,所以我写了供自己用的专用VGA图形库,没有考虑通用性,故而速度相当快,现在的机器速度快,使用Trubo C的图形库当然没有慢的感觉了,不过,我认为这些代码对C初学者来说,还是有价值的:首先可以了解VGA12H模式下的直接写屏技术;其次可以掌握C语言与外部汇编函数的相互调用方式;再次,本图形库中很多函数中包含了一些现在的计算机书中很少有的基础图形算法,如任意直线、圆、弧、图形填充等整数算法。
首先给出全部汇编文件的MAKEFILE,该文件名graph.mak:
###############################################################
# FileName: graph.mak #
###############################################################
TLIB=TLib
TASM=Tasm/ml
#
!if!$d(MDL)
MDL=s
!endif
#
!if$(MDL)==t
TasmComm=/D__TINY__
!elif$(MDL)==s
TasmComm=/D__SMALL__
!elif$(MDL)==m
TasmComm=/D__MEDIUM__
!elif$(MDL)==c
TasmComm=/D__COMPACT__
!elif$(MDL)==l
TasmComm=/D__LARGE__
!endif
#
#
Dep_graph=graph$(MDL).lib
#
Dep_graphdlib=
xms.asm
mouse.asm
grroll.asm
grputch.asm
grimage.asm
grfill.asm
grellip.asm
grbase.asm
grarc.asm
graph.inc
tasm_c.inc
$(Dep_graph):$(Dep_graphdlib)
del$(Dep_graph)
$(TASM)$(TasmComm)xms.asm
$(TASM)$(TasmComm)mouse.asm
$(TASM)$(TasmComm)grroll.asm
$(TASM)$(TasmComm)grputch.asm
$(TASM)$(TasmComm)grimage.asm
$(TASM)$(TasmComm)grfill.asm
$(TASM)$(TasmComm)grellip.asm
$(TASM)$(TasmComm)grbase.asm
$(TASM)$(TasmComm)grarc.asm
$(TLIB)$(Dep_graph)+xms.obj+mouse.obj+grroll.obj+grputch.obj
+grimage.obj+grfill.obj+grellip.obj+grbase.obj+grarc.obj
del*.obj
在命令行使用Turbo C的make.exe,可以制造一个TC库文件GraphX.lib,其中X为存储模式,由make命令行的MDL宏指定(缺省为small模式),如制造一个中模式库,命令行为(注:由于10多年没用过这种东西,我的记忆不知道是否正确,如果错误,请原谅):
make -DMDL=m -fgraph.mak
然后给出TC调用的图形汇编函数的头文件,从这个头文件可以看出,在DOS下,不仅TC调用它们,也可供Turbo C++或者Borland C++调用本文的这些函数。需要说明的是,从InitUCDOS开始的函数已经不完全是纯图形函数了,而是与UCDOS有关的字符串显示函数,如果不使用UCDOS,可以将它们以及后面的代码删掉;另外,PutBmp函数只是用来显示16色未压缩过的位图文件的图形数据,没有打开文件功能,本文最后贴出以前的一个测试程序代码:
/*GRAPH.H*/
#ifndef__GRAPH_H
#define__GRAPH_H
#ifdef__cplusplus
extern"C"{
#endif
/*打开图形屏幕*/
voidOpenGraph(void);
/*以正文方式关闭图形屏幕*/
voidCloseGraph(void);
/*设置图形操作边界,参数:左上角X,Y坐标,右下角X,Y坐标;
除图像保存,移动函数外,所有图形均进行裁剪*/
voidSetBorder(int,int,int,int);
/*使用缺省的屏幕尺寸为图形边界*/
voidDefBorder(void);
/*设置当前作图颜色值为Value,返回当前的值*/
intSetColor(intValue);
/*返回当前颜色值*/
intGetColor();
/*置写图型屏幕方式(0-3),返回当前的方式*/
intSetDrMode(intMode);
/*在(X,Y)用当前色写点*/
voidPutPixel(intX,intY);
/*返回(X,Y)的颜色值*/
intGetPixel(intX,intY);
/*从(X1,Y1)至(X2,Y2)画直线*/
voidLine(intX1,intY1,intX2,intY2);
/*从(X1,Y1)至(X2,Y2)画填充矩形(无边界线)*/
voidBar(intX1,intY1,intX2,intY2);
/*用颜色从(X1,Y1)至(X2,Y2)画矩形*/
voidRectangle(intX1,intY1,intX2,intY2);
/*保存(Left,Top)至(Right,Bottom)内的图象到Buf中*/
unsignedGetImage(intLeft,intTop,intRight,intBottom,voidfar*Buf);
/*将Buf内保存的图象在(Row,Col)处显示,Mode显示方式(0-3)*/
voidPutImage(intRow,intCol,voidfar*Buf,intMode);
/*计算并返回保存(Left,Top)至(Right,Bottom)内的图象缓冲区的字节数*/
longImageSize(intLeft,intTop,intRight,intBottom);
/*将屏幕区(Left,Top)至(Right,Bottom)垂直移动N线,N上移,-N下移*/
voidRoll(intn,intLeft,intTop,intRight,intBottom);
/*安装用户掩膜LnStyle返回当前的线型*/
intSetLnStyle(intLnstyle);
/*安装用户图案Pattern及颜色Color*/
voidSetPattern(voidfar*Pattern,intColor);
/*以(X,Y)为园心,Radius为半径画园*/
voidCircle(intX,intY,intRadius);
/*以(X,Y)为园心,RadiusX为X半径,RadiusY为Y半径画椭园*/
voidEllipse(intX,intY,intRadiusx,intRadiusy);
/*以(X,Y)为园心,Radius为半径,Start为起始角,End为结束角画园弧*/
voidArc(intX,intY,intStart,intEnd,intRadius);
/*以(X,Y)为园心,Radius为半径,Start为起始角,End为结束角画扇形(不填充)*/
voidSlice(intX,intY,intStart,intEnd,intRadius);
/*以(X,Y)为园心,Radius为半径,Start为起始角,End为结束角画馅饼形(不填充)*/
voidPie(intX,intY,intStart,intEnd,intRadius);
/*以(X,Y)为内点,Color为填充色,以当前图案进行区域填充*/
voidFill(intX,intY,intColor);
/*改变系统的颜色,Index调色板号(0-15),Red红色值,Green绿色值,Blus蓝色值
颜色值范围为0-63*/
voidSetPalette(intIndex,intRed,intGreen,intBlus);
/*从(X,Y)开始显示位图数据Bmp*/
voidPutBmp(intX,intY,voidfar*Bmp);
/*定义字符显示和光标函数*/
/*判断UCDOS是否启动,已启动,关闭UCDOS光标,重新安装闪烁光标并返回-1,
否则返回0,参数为光标颜色值,用此值与屏幕异或成实际光标颜色*/
intInitUCDOS(int);
/*撤消自安装的闪烁光标,如果flag=0恢复UCDOS光标*/
voidRestUCDOS(intflag);
/*显示光标*/
voidShowCursor(void);
/*隐蔽光标,如多次隐蔽后,需多次调用ShowCursor()*/
voidHideCursor(void);
/*设置字符坐标点的左上角坐标,参数:X坐标,Y坐标*/
voidSetPos(int,int);
/*返回当前光标处字符的左上角坐标,参数:X坐标指针,Y坐标指针*/
voidGetPos(int*,int*);
/*设置光标状态为插入方式(8*8光标,缺省)或改写方式(8*4光标),分别返回1或0*/
intInsertMode(void);
/*在当前坐标写字符,参数:字符,字符个数,字符属性(高4位背景色,低4位前景色);
字符为16*16点阵,显示字符后,不改变坐标*/
voidPutch(int,int,int);
/*在给定的坐标处显示字符串,坐标超长或遇结束符0中止,返回实际写的字符数,
参数:X起始坐标,Y坐标,字符串,X结束坐标,字符属性;显示后坐标在字符串尾*/
intPutss(int,int,char*,int,int);
#ifdef__cplusplus
}
#endif
#endif
下面是TC外部汇编(TASM)函数通用的插入文件,该文件定义了一些与存储模式有关的宏,包含它的汇编文件可以用TASM.EXE编译成TC的任意模式obj文件:
;TASM_C.INC
IFNDEF__TINY__
IFNDEF__SMALL__
IFNDEF__MEDIUM__
IFNDEF__COMPACT__
IFNDEF__LARGE__
DISPLAY"**Warning**Youmustsupplyamodelsymbol."
__SMALL__equ1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IDEAL
IFDEF__TINY__
LPROGequ0
LDATAequ0
MODELTINY,PROLOG
ENDIF
IFDEF__SMALL__
LPROGequ0
LDATAequ0
MODELSMALL,PROLOG
ENDIF
IFDEF__MEDIUM__
LPROGequ1
LDATAequ0
MODELMEDIUM,PROLOG
ENDIF
IFDEF__COMPACT__
LPROGequ0
LDATAequ1
MODELCOMPACT,PROLOG
ENDIF
IFDEF__LARGE__
LPROGequ1
LDATAequ1
MODELLARGE,PROLOG
ENDIF
IFLDATA
DPTR_EQUdword
DS_EQUds:
ES_EQUes:
MACROLDS_Register,Memory
ldsRegister,Memory
ENDMLDS_
MACROLES_Register,Memory
lesRegister,Memory
ENDMLES_
MACROPUSHDS_
pushds
ENDMPUSHDS_
MACROPOPDS_
popds
ENDMPOPDS_
MACROPUSHES_
pushes
ENDMPUSHES_
MACROPOPES_
popes
ENDMPOPES_
ELSE
DPTR_EQUword
DS_EQU
ES_EQU
MACROLDS_Register,Memory
movRegister,Memory
ENDMLDS_
MACROLES_Register,Memory
movRegister,Memory
ENDMLES_
MACROPUSHDS_
ENDMPUSHDS_
MACROPOPDS_
ENDMPOPDS_
MACROPUSHES_
ENDMPUSHES_
MACROPOPES_
ENDMPOPES_
ENDIF
;TASM_C.INCEND
基本图形文件,该文件提供了几个基本的图形函数(带下划线的函数)和其它图形汇编文件使用的内部函数(没有下划线的函数,C不能直接调用):
;graphbas.asm(VGA16色640*480方式)
P386N
includetasm_c.inc
MAXCOLORequ15;最大颜色值
MAXXequ639;最大X象素
MAXYequ479;最大Y象素
DSPMEMSEGequ0A000h;屏显起始地址
DMWIDTHequ80;屏幕每线字节数
GRMODEequ12h;屏显方式
DATASEG
PUBLICColor
PUBLICDrMode
PUBLICMinX
PUBLICMinY
PUBLICMaxX
PUBLICMaxY
PUBLICWidthX
PUBLICWidthY
Colordw7
DrModedw3
LnStyledw0ffffh
Patterndb8dup(0ffh)
MinXdw0
MinYdw0
MaxXdwMAXX
MaxYdwMAXY
WidthXdwMAXX
WidthYdwMAXY
CODESEG
PUBLIC_OpenGraph
PUBLIC_CloseGraph
PUBLIC_Line
PUBLIC_PutPixel
PUBLIC_GetPixel
PUBLIC_SetColor
PUBLIC_GetColor
PUBLIC_SetDrMode
PUBLIC_SetLnStyle
PUBLIC_SetPattern
PUBLIC_Rectangle
PUBLIC_Bar
PUBLIC_SetPalette
PUBLIC_SetBorder
PUBLIC_DefBorder
PUBLICGetDspMem
PUBLICGetDspMemOff
PUBLICSetWrMode
PUBLICSetWrMode0
PUBLICRestReg
PUBLICRestReg0
PUBLICTestPoint
PUBLICBar
PUBLICGetPixel
PUBLICPutPixel
;
;GetDspMem;ax=X,bx=Y,returnes:bx=DspMem
;
PROCGetDspMem
pushDSPMEMSEG
popes
ENDP
;
PROCGetDspMemOff
pushax
shlbx,4
movax,bx;bx=Y*16
shlax,2
addbx,ax;(bx+=(Y*64))or(bx=Y*80)
popax
shrax,3;ax=X/8
addbx,ax;returnBX=(Y*80+X/8)
ret
ENDP
;
PROCSetWrMode0
xoral,al
movah,[byteColor]
movdx,3ceh
outdx,ax
movax,0f01h
outdx,ax
xorah,ah
ENDP
;
;SetWrMode,ah=Mode(0-3);returndx=3cfh
;
PROCSetWrMode
moval,5
movdx,3ceh
outdx,ax
movax,[DrMode]
outdx,ax
moval,8
outdx,al
incdx
ret
ENDP
;
PROCRestReg0
movdx,3ceh
xorax,ax
outdx,ax
incax
outdx,ax
ENDP
;
PROCRestReg
movdx,3ceh
movax,0ff08h
outdx,ax
movax,5
outdx,ax
movax,3
outdx,ax
ret
ENDP
;
;TestPoint;ax=x1,bx=y1,si=x2,di=y2,cx=WintdX,dx=WidthY
;
PROCTestPoint
cmpax,si
jle@@1
xchgax,si
@@1:
cmpbx,di
jle@@2
xchgbx,di
@@2:
ordi,di
js@@7
cmpdi,dx
jle@@3
movdi,dx
@@3:
orsi,si
js@@7
cmpsi,cx
jle@@4
movsi,cx
@@4:
cmpbx,dx
jg@@7
orbx,bx
jns@@5
xorbx,bx
@@5:
cmpax,cx
jg@@7
orax,ax
jns@@6
xorax,ax
@@6:
clc
ret
@@7:
stc
ret
ENDP
;
;void_SetBorder(intX1,intY1,intX2,intY2)
;
PROC_SetBorder
ARGX1:word,Y1:word,X2:word,Y2:word
movax,[X1]
movbx,[X2]
cmpax,bx
jle@@1
xchgax,bx
@@1:
orax,ax
jns@@2
xorax,ax
orbx,bx
jns@@2
xorax,ax
@@2:
cmpbx,MAXX
jle@@3
movbx,MAXX
cmpax,MAXX
jle@@3
movax,MAXX
@@3:
mov[MinX],ax
mov[MaxX],bx
subbx,ax
mov[WidthX],bx
;
movax,[Y1]
movbx,[Y2]
cmpax,bx
jle@@4
xchgax,bx
@@4:
orax,ax
jns@@5
xorax,ax
orbx,bx
jns@@5
xorax,ax
@@5:
cmpbx,MAXY
jle@@6
movbx,MAXY
cmpax,MAXY
jle@@6
movax,MAXY
@@6:
mov[MinY],ax
mov[MaxY],bx
subbx,ax
mov[WidthY],bx
ret
ENDP
;
PROC_DefBorder
mov[wordMinX],0
mov[wordMinY],0
mov[wordMaxX],MAXX
mov[wordMaxY],MAXY
mov[wordWidthX],MAXX
mov[wordWidthY],MAXY
ret
ENDP
;
;voidOpenGraph()
;
PROC_OpenGraph
movax,GRMODE
int10h
movdx,3c4h
movax,0f02h
outdx,ax
callRestReg0
call_DefBorder
ret
ENDP
;
;voidCloseGraph()
;
PROC_CloseGraph
movax,3
int10h
ret
ENDP
;
;intSetColor(intColor)
;
PROC_SetColor
ARGcolor:word
movax,[color]
andax,MAXCOLOR
xchgax,[Color]
ret
ENDP
;
;intSetDrMode(intMode)
;
PROC_SetDrMode
ARGmode:word
movax,[mode]
andax,3
shlax,11
orax,3
xchgax,[DrMode]
shrax,11
ret
ENDP
;
;intSetLnStyle(intlinestyle)
;
PROC_SetLnStyle
ARGlinestyle:word
movax,[linestyle]
xchgax,[LnStyle]
ret
ENDP
;
;voidSetPattern(voidfar*Pat,intcolor)
;
PROC_SetPattern
ARGpat:farptr,color:word
USESdi,si,ds
push[wordcolor]
call_SetColor
popax
pushds
popes
leadi,[Pattern]
ldssi,[dwordpat]
movcx,8
cld
repmovsb
ret
ENDP
;
;intGetColor(void)
;
PROC_GetColor
movax,[Color]
ret
ENDP
;
;ax=x,bx=y,dx=03cfh
;
PROCPutPixel
cmpax,[WidthX]
ja@@1
cmpbx,[WidthY]
ja@@1
addax,[MinX]
addbx,[MinY]
pushax
callGetDspMem
popcx
andcx,7
moval,80h
shral,cl
outdx,al
movax,[Color]
xchgal,[bytees:bx]
@@1:
ret
ENDP
;
;voidPutPixel(intx,inty)
;
PROC_PutPixel
ARGx:word,y:word
movah,2
callSetWrMode
movax,[x]
movbx,[y]
callPutPixel
callRestReg
ret
ENDP
;
;ax=x,bx=y
;
PROCGetPixel
pushax
callGetDspMem
popcx
notcl
andcl,7
xorch,ch
movdx,3ceh
moval,4
outdx,al
incdx
moval,3
@@1:
outdx,al
movah,[bytees:bx]
shrah,cl
andah,1
shlch,1
orch,ah
decal
jns@@1
moval,ch
cbw
ret
ENDP
;
;intGetPixel(intx,inty)
;
PROC_GetPixel
ARGx:word,y:word
movax,[x]
movbx,[y]
addax,[MinX]
addbx,[MinY]
callGetPixel
ret
ENDP
;
;(b2-b1)*(w-a1)/(a2-a1));
;ax=w,cx=a1,bx=b1,si=a2,di=b2
;
PROCSumXY
pushbx
pushdx
pushax
movax,di
subax,bx
popbx
subbx,cx
imulbx
movbx,si
subbx,cx
idivbx
popdx
popbx
ret
ENDP
;cx=x,bx=y;retax=Code
;
PROCOutCode
xorax,ax
orcx,cx
jns@@1
orax,0001b
@@1:
orbx,bx
jns@@2
orax,0010b
@@2:
cmpcx,[WidthX]
jle@@3
orax,0100b
@@3:
cmpbx,[WidthY]
jle@@4
orax,1000b
@@4:
ret
ENDP
;
PROC_Line
ARGx1:word,y1:word,x2:word,y2:word
USESsi,di
movcx,[x2]
movbx,[y2]
callOutCode
movdh,al;dh=p2
movsi,cx
movdi,bx
movcx,[x1]
movbx,[y1]
@@1:
callOutCode
movdl,al;dl=al=p1
testal,dh;if((p1&p2))return
jz@@2
jmp@@17
@@2:
oral,dh;if(!(p1|p2)line
jz@@7
cmpdl,0;if(!p1)x1swapx2;y1swapy2;p1swapp2
jne@@3
xchgcx,si
xchgbx,di
xchgdh,dl
@@3:
testdl,0001b
jz@@4
xorax,ax;if(x1<0)
callSumXY
addbx,ax;y1+=(y2-y1)*(-x1)/(x2-x1)
xorcx,cx;x1=0
jmpshort@@1
@@4:
testdl,0010b
jz@@5
xorax,ax;if(y1<0)
xchgcx,bx
xchgsi,di
callSumXY
xchgcx,bx
xchgsi,di
addcx,ax;x1+=(x2-x1)*(-y1)/(y2-y1)
xorbx,bx;y1=0
jmpshort@@1
@@5:
testdl,0100b
jz@@6
movax,[WidthX];if(x1>WidthX)
callSumXY
addbx,ax;y1+=(y2-y1)*(WidthX-x1)/(x2-x1)
movcx,[WidthX];x1=WidthX
jmp@@1
@@6:
testdl,1000b
jz@@1
movax,[WidthY];if(y1>WidthY)
xchgcx,bx
xchgsi,di
callSumXY
xchgcx,bx
xchgsi,di
addcx,ax;x1+=(x2-x1)*(WidthY-y1)/(y2-y1)
movbx,[WidthY];y1=WidthY
jmp@@1
@@7:
movax,cx;line(x1,y1,x2,y2)
addax,[MinX]
addbx,[MinY]
addsi,[MinX]
adddi,[MinY]
mov[wordy1],80
mov[wordx1],0
cmpax,si
jle@@8
xchgax,si
xchgbx,di
@@8:
subsi,ax
subdi,bx
jge@@9
neg[wordy1]
negdi
@@9:
cmpdi,si
jle@@10
mov[wordx1],1
xchgdi,si
@@10:
pushsi
mov[y2],di
mov[x2],si
movdi,si
shrdi,1
pushax
callGetDspMem
movah,2
callSetWrMode
movsi,[LnStyle]
popcx
andcl,7
moval,80h
shral,cl
outdx,al
movah,[byteColor]
popcx
inccx
@@11:
testsi,8000h
jz@@12
pushax
xchg[bytees:bx],ah
popax
@@12:
rolsi,1
adddi,[y2]
cmpdi,[wordx2]
jle@@13
addbx,[y1]
subdi,[x2]
jmpshort@@14
@@13:
cmp[wordx1],0
je@@14
addbx,[y1]
loop@@11
jmpshort@@16
@@14:
roral,1
testal,80h
jz@@15
incbx
@@15:
outdx,al
loop@@11
@@16:
callRestReg
@@17:
ret
ENDP
;
;voidRectangle(intx1,inty1,intx2,inty2)
;
PROC_Rectangle
ARGx1:word,y1:word,x2:word,y2:word
USESsi,di
movsi,[x1]
movdi,[y1]
pushdi
push[wordx2]
pushdi
pushsi
call_Line
addsp,8
incdi
push[wordy2]
push[wordx2]
pushdi
push[wordx2]
call_Line
addsp,8
push[wordy2]
push[wordx2]
push[wordy2]
pushsi
call_Line
addsp,8
dec[wordy2]
push[wordy2]
pushsi
pushdi
pushsi
call_Line
addsp,8
ret
ENDP
;
;ax=x1,bx=y1,si=x2,di=y2
;
PROCBar
pushbp
subdi,bx
incdi
pushdi
pushbx
pushax
callGetDspMem
movdi,bx
popax
movcx,ax
movbx,0ffffh
andcl,7
shrbh,cl
movcx,si
notcl
andcl,7
shlbl,cl
shrax,3
shrsi,3
subsi,ax
movbp,si
popsi
popcx
cld
@@1:
pushcx
pushdi
pushsi
pushds
andsi,7
moval,[bytePattern+si]
movah,al
andal,bh
movcx,bp
movsi,di
pushes
popds
deccx
js@@2
outdx,al
movsb
moval,ah
outdx,al
repmovsb
@@2:
andal,bl
outdx,al
movsb
popds
popsi
popdi
popcx
incsi
adddi,DMWIDTH
loop@@1
popbp
ret
ENDP
;
;voidBar(intx1,inty1,intx2,inty2)
;
PROC_Bar
ARGx1:word,y1:word,x2:word,y2:word
USESsi,di
movax,[x1]
movbx,[y1]
movsi,[x2]
movdi,[y2]
movcx,[WidthX]
movdx,[WidthY]
callTestPoint
jc@@1
addax,[MinX]
addbx,[MinY]
addsi,[MinX]
adddi,[MinY]
pushax
callSetWrMode0
popax
callBar
callRestReg0
@@1:
ret
ENDP
;
;voidSetPalette(intindex,intRed,intGreen,intBlus)
;
PROC_SetPalette
ARGindex:word,red:word,green:word,blus:word
moval,[byteindex]
andal,0fh
cmpal,6
jl@@2
jg@@1
moval,14h
jmpshort@@2
@@1:
cmpal,7
je@@2
addal,30h
@@2:
movdx,3c8h
outdx,al
incdx
moval,[bytered]
colo
分享到:
相关推荐
C语言Turbo-C-2.0-函数中文说明大全.doc
h中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要确保有显示器图形驱动程序*BGI, 同时将集成开发环境Options/Linker中的...
Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h 中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图 形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要...
Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h 中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图 形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要...
Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h 中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图 形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要...
用英文排序方式描述了C语言的函数。 C语言初学者的有用资料
Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h 中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图 形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要...
TurboC图形程序设计(graphics.h函数注释) TurboC图形程序设计(graphics.h函数注释)
这是使用Turbo C++ 3.0编译器进行C/C++图形感叹句地常用的图形函数的总结。包括大部分需要使用的常量、函数等。
h 中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图 形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要确保有显示 器图形驱动程序*BGI, 同时将集成开发环境Options/...
h中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要确保有显示器图形驱动程序*BGI, 同时将集成开发环境Options/Linker中的...
官方离线安装包,亲测可用
Turbo C 2.0 函数中文说明大全 分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值...
在Turbo-C中建立自己的函数库.pdf 在Turbo-C中建立自己的函数库.pdf
常用的C语言函数库 Turbo C 2.0 函数中文说明大全
turbo-router-border-router-deployment-guide
详细介绍 有关于C中屏幕函数 屏幕函数可以使你的C程序更加有效表达
Turbo C2.0英文版-软件,C语言的基础知识