您的位置:程序门 -> vc/mfc -> 界面



在另一sdh_devicedlg.cpp如何清除drawcolorlight(pdc);和ontimer绘制告警灯.


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


在另一sdh_devicedlg.cpp如何清除drawcolorlight(pdc);和ontimer绘制告警灯.
发表于:2007-04-20 17:02:12 楼主
void   cnewbutton::drawitem(lpdrawitemstruct   lpdrawitemstruct)  
{
        cdc*   pdc   =   cdc::fromhandle(lpdrawitemstruct-> hdc);
uint   nstate   =   lpdrawitemstruct-> itemstate;
        crect   buttonrect;
        getclientrect(buttonrect);

    if   (iswindowenabled())
nstate   &=   ~ods_disabled;
else
nstate   ¦=   ods_disabled;


                  drawbutton(pdc,   nstate,   buttonrect);
drawcolorlight(pdc);
drawtext(pdc);
}

void   cnewbutton::drawbutton(cdc*   pdc,   uint   nstate,   crect   rect)
{
/* cbrush   brush(rgb(212,223,243)),*oldbrush=null;
brush.createobject();
oldbrush=pdc-> selectobject(&brush);
pdc-> fillrect(rect,&brush);
pdc-> selectobject(oldbrush);
brush.deleteobject();
*/
      colorref   upcol,downcol,edgecol;//////////////////////
        edgecol=rgb(0,0,0);
        bool   brevers   =   false;

if   ((nstate   &   ods_selected)   ==   ods_selected)
{
//     pressed  
                upcol=rgb(128,128,128);
                edgecol=rgb(128,128,128);
                downcol=rgb(255,255,255);
                brevers   =   true;

        }
else   if   ((nstate   &   ods_disabled)   ==   ods_disabled)
{
//   disabled//   in   the   future   maybe
}
else
        {       //   normal
                upcol=rgb(255,255,255);
                downcol=rgb(128,128,128);
}

        cpen*   poldpen   =   null;

        cpen   pen1;
        cpen   pen2;


        pen1.createpen(ps_solid,   1,   upcol);  
        poldpen=pdc-> selectobject(   &pen1   );
        pdc-> moveto(1,rect.height()-1);
        pdc-> lineto(1,1);                                                                                                                          
        pdc-> lineto(rect.width()-1,1);
        pdc-> moveto(0,rect.height()-1);
        pdc-> lineto(0,0);                                                                                                                          
        pdc-> lineto(rect.width()-1,0);
pdc-> selectobject(   poldpen   );
pen1.deleteobject();

        pen2.createpen(ps_solid,   1,   downcol);    
        poldpen   =pdc-> selectobject(   &pen2   );
        pdc-> moveto(rect.width()-1,0);
        pdc-> lineto(rect.width()-1,rect.height()-1);
        pdc-> lineto(0,rect.height()-1);
        pdc-> moveto(rect.width()-2,1);
        pdc-> lineto(rect.width()-2,rect.height()-2);
        pdc-> lineto(0,rect.height()-2);
pdc-> selectobject(   poldpen   );
pen2.deleteobject();

        pen1.createpen(ps_solid,   1,   edgecol);  
        poldpen   =   pdc-> selectobject(&pen1);
        if   (brevers)
        {
                pdc-> moveto(1,rect.height()-2);
                pdc-> lineto(1,1);                                                                                                                          
                pdc-> lineto(rect.width()-2,1);
        }
        else
        {
                pdc-> moveto(rect.width()-1,0);
                pdc-> lineto(rect.width()-1,rect.height()-1);
                pdc-> lineto(-1,rect.height()-1);
        }
pdc-> selectobject(   poldpen   );
pen1.deleteobject();
}

void   cnewbutton::drawcolorlight(cdc*   pdc)//绘制带白底的绿色灯
{
        crect   rect;
int   h,w;
        getclientrect(rect);
h=rect.height()/10;
w=rect.width()/4;
if   ((m_txtcaption!= " "))
{
cpen   penwhite;
penwhite.createpen(ps_solid,1,rgb(255,255,255));//白
cpen   *oldpen=pdc-> selectobject(&penwhite);
cbrush   *oldbr=null;
cbrush   brgreen(rgb(0,255,0));//绿
brgreen.createobject();
oldbr=pdc-> selectobject(&brgreen);
pdc-> ellipse(rect.left+w,rect.top+h,rect.left+w*3,rect.top+h+2*w);//绿色灯
pdc-> selectobject(oldbr);
brgreen.deleteobject();
pdc-> selectobject(oldpen);
penwhite.deleteobject();

penwhite.createpen(ps_solid,5,rgb(255,255,255));
oldpen=pdc-> selectobject(&penwhite);
pdc-> moveto(rect.left+w+6,rect.top+h+6);
pdc-> lineto(rect.left+w+6,rect.top+h+6);
pdc-> selectobject(oldpen);
penwhite.deleteobject();
}
}

void   cnewbutton::ontimer(uint   nidevent)  
{
crect   rect;
int   h,w;
cbrush   *oldbrush=null;
        getclientrect(rect);
h=rect.height()/10;
w=rect.width()/4;

cclientdc   dc(this);

if(!bon)
{
cpen   penwhite;
penwhite.createpen(ps_solid,1,rgb(255,255,255));
cpen   *oldpen=dc.selectobject(&penwhite);
cbrush   brdarkred(rgb(255,0,128));
brdarkred.createobject();
oldbrush=dc.selectobject(&brdarkred);
dc.ellipse(rect.left+w,rect.top+h,rect.left+w*3,rect.top+h+2*w);//红色灯
dc.selectobject(oldbrush);
brdarkred.deleteobject();
dc.selectobject(oldpen);
penwhite.deleteobject();

penwhite.createpen(ps_solid,5,rgb(255,255,255));
oldpen=dc.selectobject(&penwhite);
dc.moveto(rect.left+w+6,rect.top+h+5);
dc.lineto(rect.left+w+7,rect.top+h+5);
dc.selectobject(oldpen);
penwhite.deleteobject();
}
else
{
cpen   penwhite;
penwhite.createpen(ps_solid,1,rgb(192,192,192));//灰
cpen   *oldpen=dc.selectobject(&penwhite);
cbrush   brred(rgb(255,0,0));
oldbrush=dc.selectobject(&brred);
dc.ellipse(rect.left+w,rect.top+h,rect.left+w*3,rect.top+h+2*w);//红色灯
dc.selectobject(oldbrush);
brred.deleteobject();
dc.selectobject(oldpen);
penwhite.deleteobject();
penwhite.createpen(ps_solid,5,rgb(192,192,192));
oldpen=dc.selectobject(&penwhite);
dc.moveto(rect.left+w+6,rect.top+h+5);
dc.lineto(rect.left+w+7,rect.top+h+5);
dc.selectobject(oldpen);
penwhite.deleteobject();
}

bon=!bon;

cbutton::ontimer(nidevent);

}

在另一sdh_devicedlg.cpp如何清除drawcolorlight(pdc);和ontimer绘制告警灯.


//光盘a开关按钮
void   csdh_devicedlg::onga()  
{      
    hbitmap   hbitmap1   =   ::loadbitmap(afxgetinstancehandle(),makeintresource   (idb_red));    
        hbitmap   hbitmap2   =   ::loadbitmap(afxgetinstancehandle(),makeintresource   (idb_green));  
   

switch(num%2)
    {
   
      case     0   ://关
             
      m_switch.setwindowtext( "光盘a关闭... ");  
      send_a_frame_to_device(device_addr,0x08,3,0x64,0xa0,1);                                  
              m_ga.setbitmap(hbitmap1);        
  //////清除语句写在这里
   

发表于:2007-04-20 20:28:001楼 得分:0
没明白楼主的意思!


快速检索

最新资讯
热门点击