Gui编程
<P>#include <stdio.h><BR>#include <dos.h><BR>#define False 0<BR>#define True 1<BR>#define S8X8 8 // 8*8 获取ASCII ROM字符集首地址<BR>#define S14X8 14 // 14*81 获取ASCII ROM字符集首地址<BR>#define S16X8 16 // 16*8 获取ASCII ROM字符集首地址<BR>#define VBE320X200X256 0X13<BR>#define VBE640X480X256 0X101<BR>#define VBE800X600X256 0X103<BR>#define VBE1024X768X256 0X105<BR>//////////////////////////////////////////////////////////////////<BR>//计算在特定分辨率下,x,y坐标的内存偏移量,计算值可能大于65536字节。<BR>//////////////////////////////////////////////////////////////////<BR>#define VRAM_GRAPH_320(x,y) (((unsigned long)y<<8L)+((unsigned long)y<<6L)+((unsigned long)x))<BR>#define VRAM_GRAPH_512(x,y) (((unsigned long)y<<9L)+((unsigned long)x))<BR>#define VRAM_GRAPH_640(x,y) (((unsigned long)y<<9L)+((unsigned long)y<<7L)+((unsigned long)x))<BR>#define VARM_GRAPH_800(x,y) (((unsigned long)y<<9L)+((unsigned long)y<<8L)+((unsigned long)y<<5L)+((unsigned long)(x)))<BR>#define VRAM_GRAPH_1024(x,y) (((unsigned long)y<<10L)+((unsigned long)x))<BR>#define RGB(r, g, b) (((r)&0xE0)|(((g)&0xE0)>>3)|(((b)&0xC0)>>6))<BR>//////////////////////////////////////////////////////////////////////////////<BR>// COLOR DEFINE<BR>//////////////////////////////////////////////////////////////////////////////<BR>#define BLACK 0<BR>#define BLUE 1<BR>#define GREEN 2<BR>#define CYAN 3<BR>#define RED 4<BR>#define MAGENTA 5<BR>#define BROWN 6<BR>#define LIGHTGRAY 7<BR>#define DARKGRAY 8<BR>#define LIGHTBLUE 9<BR>#define LIGHTGREEN 10<BR>#define LIGHTCYAN 11<BR>#define LIGHTRED 12<BR>#define LIGHTMAGENTA 13<BR>#define YELLOW 14<BR>#define WHITE 15<BR>//////////////////////////////////////////////////////////////////////////////<BR>// FILL PATTEREN DEFINE<BR>//////////////////////////////////////////////////////////////////////////////<BR>#define EMPTY_FILL 0 /* fills area in background color */<BR>#define SOLID_FILL 1 /* fills area in solid fill color */<BR>#define LINE_FILL 2 /* --- fill */<BR>#define LTSLASH_FILL 3 /* /// fill */<BR>#define SLASH_FILL 4 /* /// fill with thick lines */<BR>#define BKSLASH_FILL 5 /* <A>\\\</A> fill with thick lines */<BR>#define LTBKSLASH_FILL 6 /* <A>\\\</A> fill */<BR>#define HATCH_FILL 7 /* light hatch fill */<BR>#define XHATCH_FILL 8 /* heavy cross hatch fill */<BR>#define INTERLEAVE_FILL 9 /* interleaving line fill */<BR>#define WIDE_DOT_FILL 10 /* Widely spaced dot fill */<BR>#define CLOSE_DOT_FILL 11 /* Closely spaced dot fill */<BR>#define USER_FILL 12 /* user defined fill */<BR>int Back_Color,Fore_Color,Fill_Color;<BR><BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>// 设置 bar 填充颜色(同 Turbo C)<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>void _Cdecl setfillstyle(int __pattern,int color)<BR>{<BR> __pattern++; // no use<BR> Fill_Color = color;<BR>}</P><P>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>// 设置前景色(同 Turbo C)<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>void _Cdecl setcolor(int color)<BR>{<BR> Fore_Color = color;<BR>}</P>
<P><BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>// 获取前景色(同 Turbo C)<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>int _Cdecl getcolor(void)<BR>{<BR> return (Fore_Color);<BR>}</P>
<P><BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>// 设置背景色(同 Turbo C)<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>void _Cdecl setbkcolor(int color)<BR>{<BR> Back_Color = color;<BR>}</P>
<P><BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>// 获取背景色(同 Turbo C)<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>int _Cdecl getbkcolor(void)<BR>{<BR> return (Back_Color);<BR>}</P>
<P><BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>// 获取填充色<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>int _Cdecl getfillcolor(void)<BR>{<BR> return (Fill_Color);<BR>}<BR><BR><BR>/*********************************************************************************************/<BR>// 画一条凹凸立体线<BR>/*********************************************************************************************/<BR>void _Cdecl Double_VLine(int x1,int y1,int y2)<BR>{<BR> int gcolor = getcolor();</P>
<P> setcolor(DARKGRAY);<BR> Vline(x1,y1,y2);<BR> setcolor(WHITE);<BR> Vline(x1+1,y1,y2);<BR> setcolor(gcolor);<BR>}</P>
<P><BR>/*********************************************************************************************/<BR>// 画一个凸按钮<BR>/*********************************************************************************************/<BR>void _Cdecl GuiConProtrudingBox(int x1,int y1,int x2,int y2)<BR>{<BR> int bcolor = getbkcolor(); // 获取背景色<BR> int gcolor = getcolor(); // 获取前景色<BR> int fcolor = getfillcolor(); // 获取填充色</P>
<P> setcolor(WHITE);<BR> Hline(x1-1,y1-1,x2+1);<BR> Hline(x1 ,y1 ,x2);<BR> Vline(x1-1,y1-1,y2+1);<BR> Vline(x1 ,y1 ,y2);<BR> setcolor(DARKGRAY);<BR> Hline(x1-1,y2+1,x2+1);<BR> Hline(x1 ,y2 ,x2);<BR> Vline(x2 ,y1 ,y2);<BR> Vline(x2+1,y1-1,y2+1);<BR> setfillstyle(SOLID_FILL,LIGHTGRAY);<BR> Bar(x1+1,y1+1,x2-1,y2-1);<BR> setbkcolor(bcolor); // 恢复背景色<BR> setcolor(gcolor); // 恢复前景色<BR> setfillstyle(SOLID_FILL,fcolor);// 恢复填充色<BR>}</P>
<P><BR>/*********************************************************************************************/<BR>// 显示一个凹按钮<BR>/*********************************************************************************************/<BR>void _Cdecl GuiConCaveBox(int x1,int y1,int x2,int y2)<BR>{<BR> int bcolor = getbkcolor();<BR> int gcolor = getcolor();<BR> int fcolor = getfillcolor();</P>
<P> setcolor(DARKGRAY);<BR> Hline(x1-1,y1-1,x2+1);<BR> Hline(x1,y1,x2);<BR> Vline(x1-1,y1-1,y2+1);<BR> Vline(x1,y1,y2);<BR> setcolor(WHITE);<BR> Hline(x1,y2,x2);<BR> Hline(x1-1,y2+1,x2+1);<BR> Vline(x2,y1,y2);<BR> Vline(x2+1,y1-1,y2+1);<BR> setfillstyle(SOLID_FILL,LIGHTGRAY);<BR> Bar(x1+1,y1+1,x2-1,y2-1);<BR> setbkcolor(bcolor);<BR> setcolor(gcolor);<BR> setfillstyle(SOLID_FILL,fcolor);<BR>}</P>
<P>/*********************************************************************************************/<BR>// 画一个凹矩形<BR>/*********************************************************************************************/<BR>void _Cdecl GuiConProtrudingRectangle(int x1,int y1,int x2,int y2)<BR>{<BR> int bcolor = getbkcolor();<BR> int gcolor = getcolor();</P>
<P> setcolor(WHITE);<BR> Hline(x1 ,y1 ,x2);<BR> Vline(x1 ,y1 ,y2);<BR> setcolor(DARKGRAY);<BR> Hline(x1 ,y2 ,x2);<BR> Vline(x2 ,y1 ,y2);<BR> setfillstyle(SOLID_FILL,LIGHTGRAY);<BR> Bar(x1+1,y1+1,x2-1,y2-1);<BR> setbkcolor(bcolor);<BR> setcolor(gcolor);<BR> setbkcolor(bcolor);<BR> setcolor(gcolor);<BR>}</P>
<P>/*********************************************************************************************/<BR>// 画一个凹矩形<BR>/*********************************************************************************************/<BR>void _Cdecl GuiConCaveRectangle(int x1,int y1,int x2,int y2)<BR>{<BR> int bcolor = getbkcolor();<BR> int gcolor = getcolor();</P>
<P> setcolor(DARKGRAY);<BR> Hline(x1,y1,x2);<BR> Vline(x1,y1,y2);<BR> setcolor(WHITE);<BR> Hline(x1,y2,x2);<BR> Vline(x2,y1,y2);<BR> setbkcolor(bcolor);<BR> setcolor(gcolor);<BR>}<BR></P>
页:
[1]
