www.pudn.com > cwin.rar > DRAWB.C
/*-----------------------------------------------------------
函数 _DrawButton : 在指定坐标画按键
-----------------------------------------------------------*/
#include
void _Cdecl _DrawButton(button,col,line,chameleon,op)
BUTTON_TYPE button; /* 按键参数 */
int col; /* 菜单左上角列坐标(以字节为单位) */
int line; /* 菜单左上角行坐标(以象素为单位) */
int chameleon; /* 按下按键时是否改变颜色 */
int op; /* 按键状态(0=弹起,1=按下) */
{
int color; /* 按键名颜色 */
int bk; /* 按键面颜色 */
int lightedge; /* 按键阳面边缘颜色 */
int darkedge; /* 按键阴面边缘颜色 */
int x; /* 按键绝对列坐标 */
int y; /* 按键绝对行坐标 */
int xtimes = _Xtimes;/* 保存原来的横向放大倍数 */
int ytimes = _Ytimes;/* 保存原来的纵向放大倍数 */
int namex; /* 键名显示列坐标 */
int namey; /* 键名显示行坐标 */
/*-- 取出显示按健的各种颜色 ---------------------------*/
if(chameleon)
{
color = (button.pushcolor) & 0x0f;
bk = (button.pushcolor>>4) & 0x0f;
lightedge = (button.pushcolor>>8) & 0x0f;
darkedge = (button.pushcolor>>12) & 0x0f;
}
else
{
color = button.butncolor & 0x0f;
bk = (button.butncolor>>4) & 0x0f;
lightedge = (button.butncolor>>8) & 0x0f;
darkedge = (button.butncolor>>12) & 0x0f;
}
/*-- 取键名显示放大倍数 -------------------------------*/
_Xtimes = button.fonttimes&0xff;
_Ytimes = button.fonttimes>>8;
/*-- 计算显示按键的各种坐标 ---------------------------*/
x = col*8+button.x;
y = line+button.y;
namex = x+button.w/2-strlen(button.name)*4*_Xtimes;
namey = y+(button.h-_CurrentHZK->fonthigh*_Ytimes)/2-1;
/*-- 显示按键 -----------------------------------------*/
_Bar(x,y,button.w,button.h,bk,0xffff0000);
if(button.high)
draw_rectangle(x,y,button.w,button.h,_BoxLineColor,0xff);
if(op==0)
_Hole(x+1,y+1,button.w-2,button.h-2,lightedge,darkedge,button.high);
if(button.lock)
set_font_bk_style(DOTTEDLINE);
drawxystr(namex,namey+((op && button.high)?1:0),color,button.name);
set_font_bk_style(SOLIDLINE);
_Xtimes = xtimes;
_Ytimes = ytimes;
}