ba_wang_mao 发表于 2006-12-25 13:10

Gui编程

<P>#include &lt;stdio.h&gt;<BR>#include &lt;dos.h&gt;<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&lt;&lt;8L)+((unsigned long)y&lt;&lt;6L)+((unsigned long)x))<BR>#define VRAM_GRAPH_512(x,y)         (((unsigned long)y&lt;&lt;9L)+((unsigned long)x))<BR>#define VRAM_GRAPH_640(x,y)         (((unsigned long)y&lt;&lt;9L)+((unsigned long)y&lt;&lt;7L)+((unsigned long)x))<BR>#define VARM_GRAPH_800(x,y)            (((unsigned long)y&lt;&lt;9L)+((unsigned long)y&lt;&lt;8L)+((unsigned long)y&lt;&lt;5L)+((unsigned long)(x)))<BR>#define VRAM_GRAPH_1024(x,y)         (((unsigned long)y&lt;&lt;10L)+((unsigned long)x))<BR>#define RGB(r, g, b)                (((r)&amp;0xE0)|(((g)&amp;0xE0)&gt;&gt;3)|(((b)&amp;0xC0)&gt;&gt;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>

卧龙孔明 发表于 2006-12-25 21:04

支持一下[em17]

页: [1]

编程论坛