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; 
    }