龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

用VC++制作播放AVI视频流的动画按钮(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
BEGIN_MESSAGE_MAP(CAviButton, CButton) //{{AFX_MSG_MAP(CAviButton) ON_WM_MOUSEMOVE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////// CAviButton message handlers void CAviButton::DrawButton(CDC

BEGIN_MESSAGE_MAP(CAviButton, CButton)
 //{{AFX_MSG_MAP(CAviButton)
  ON_WM_MOUSEMOVE()
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

///////////////////// CAviButton message handlers
void CAviButton::DrawButton(CDC *pDC, UINT nState, CRect rect)
{
 COLORREF upCol,downCol,edgeCol;
 edgeCol=RGB(0,0,0); //设置按钮边缘的初始化颜色;
 if ((nState & ODS_SELECTED) == ODS_SELECTED)
 {
  //设置按钮被按下时按钮的颜色
  upCol=RGB(0,0,0);
  edgeCol=RGB(128,128,128);
  downCol=RGB(0,0,0);
 }
 else
 {
  //设置按钮正常时按钮的颜色
  upCol=RGB(255,255,255);
  downCol=RGB(128,128,128);
 }
 CPen* pOldPen = NULL;
 BOOL pen1Created;
 CPen pen1;
 BOOL pen2Created;
 CPen pen2;
 if (pen1Created = 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);
 if (pen2Created = pen2.CreatePen(PS_SOLID, 1, downCol))
  pDC->SelectObject( &pen2 );
 if (pen1Created)
 {
  pen1.DeleteObject();
  pen1Created = FALSE;
 }
 //画右下边缘
 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);
 if (pen2Created)//删除"pen2"画笔对象
 {
  pen2.DeleteObject();
  pen2Created = FALSE;
 }
 if (pen1Created = pen1.CreatePen(PS_SOLID, 1, edgeCol))
  pOldPen = pDC->SelectObject( &pen1 );
 if (pen1Created)
 {
  pen1.DeleteObject();
  pen1Created = FALSE;
 }
 if (pOldPen != NULL)
  pDC->SelectObject( pOldPen );
}

精彩图集

赞助商链接