网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用VC++制作播放AVI视频流的动画按钮
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
2Created;
 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 );
}

void CAviButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
 // TODO: Add your code to draw the specified item
 CRect rect;
 GetClientRect(rect);
 if (!::IsWindow(AnimateCtrl))
 {
  //在按钮上生成一个动画控件
  AnimateCtrl.Create(WS_CHILD |WS_VISIBLE,rect,this,0);
  //打开avi文件并显示第一帧
  AnimateCtrl.Open(m_nAviID);
  AnimateCtrl.GetClientRect(rect);
 }
 CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
 UINT nState = lpDrawItemStruct->itemState;
 CRect buttonRect;
 GetClientRect(buttonRect);
 //绘制按钮
 DrawButton(pDC, nState, buttonRect);
}

BOOL CAviButton::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD
dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
 // TODO: Add your specialized code here and/or call the base class
 return CWnd::Create(lpszClassName, lpszWindowName, dwStyle,
 rect, pParentWnd, nID, pContext);
}

void CAviButton::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 ClientToScreen(&point);
 CRect rcWindow;
 GetWindowRect(rcWindow);
 //判断鼠标是否经过按钮
 BOOL bNewMouseOverButton = rcWindow.PtInRect(point);
 if (bNewMouseOverButton && IsWindowEnabled() )
 {
  if (::IsWindow(AnimateCtrl) && !bPlaying)
  {
   AnimateCtrl.Play(0,-1,1);
   bPlaying = TRUE;
   SetCapture();
  }
 }
 else
 {
  bPlaying = FALSE;
  ReleaseCapture();
 }
 CButton::OnMouseMove(nFlags, point);
}
/////////////////////////////////
BOOL CTestAviButtonDlg::OnInitDialog()
{
 CDialog::OnInitDialog();
 …………………//此处代码省略;
 m_AviButton.LoadAvi(IDR_AVI);
 return TRUE; // return TRUE unless you set the focus to a control
}

  四、小结

  通过CAnimateCtrl类和按钮控件的自画功能的结合,本实例实现了动画按钮,如果该类和工具条、状态条等控件结合,还可以实现在上述控件上播放动画视

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号