使用自绘的按钮,怎样给他添加位图

class CIEButton: public CButton

void   CIEButton::DrawItem(LPDRAWITEMSTRUCT   lpDrawItemStruct)    
  {  
  //   TODO:   Add   your   code   to   draw   the   specified   item  
  CDC   ButtonDC;  
  CBitmap   bitmapTrans;  
  BITMAP   bmp;  
  CDC   mem;  
  CRect   rc,rc2;  
  //得到用于绘制按钮的DC  
  ButtonDC.Attach(   lpDrawItemStruct->hDC   );  
  //准备用于向按钮区域传输位图  
  mem.CreateCompatibleDC(&ButtonDC);  
  //获取按钮所占的矩形大小  
  rc=lpDrawItemStruct->rcItem;  
  rc2=rc;  
   
  //在任何状态下,图片是首先要绘绘制的  
  bitmapTrans.LoadBitmap(IDB_IE);  
  bitmapTrans.GetBitmap(&bmp);  
  CBitmap   *old=mem.SelectObject(&bitmapTrans);  
  int   x,y;  
  x=rc.Width()/2-bmp.bmWidth/2;  
  y=rc.Height()/2-bmp.bmHeight/2;  
  //向按钮中心点传输位图  
  ButtonDC.BitBlt(x,y,rc.right,rc.bottom,&mem,   0,   0,   SRCCOPY);  
  mem.SelectObject(old);  
   
  //获取按钮目前所处的状态,根据不同的状态绘制不同的按钮  
  //如果鼠标移入按钮,绘制浮起状态  
  if   (IsMouseOn   )  
          {  
  //为按钮绘制立体效果  
  rc.top=rc.top+1;rc.bottom=rc.bottom-1;  
  rc.left=rc.left+1;rc.right=rc.right-1;  
  //绘制立体边框  
  ButtonDC.Draw3dRect(&rc,RGB(255,255,255),RGB(0,0,0));  
  }  
   
  //如果按钮被按下,绘制下沉立体效果  
  if(lpDrawItemStruct->itemAction   &ODA_SELECT)  
  {  
  rc2.top=rc2.top+1;rc2.bottom=rc2.bottom-1;  
  rc2.left=rc2.left+1;rc2.right=rc2.right-1;  
  //绘制立体边框  
  ButtonDC.Draw3dRect(&rc2,RGB(0,0,0),RGB(255,255,255));  
  }  
   
  }

 

你可能感兴趣的:(IE,Class)