【MFC】自绘对话框动画效果的状态栏
00. 目录
文章目录
- 00. 目录
- 01. 案例概述
- 02. 开发环境
- 03. 关键技术
- 04. 程序设计
- 05. 秘笈心法
- 06. 源码下载
- 07. 附录
01. 案例概述
在许多多媒体软件中,状态栏中会播放一个动画,使界面更加美观。本例就实现了一个动画效果的状态栏,效果如下图所示。
02. 开发环境
系统环境:Windows 10
开发环境:Visual Studio 2019
03. 关键技术
使状态栏播放一个动画很容易。只要将CAnimateCtrl控件放置在状态栏中就可以了。因为CAnimateCtrl控件可以播放无声的avi动画。在使用CAnimateCtrl控件时,需要使用Open方法和Play方法,下面逐一进行介绍。
Open方法
CAnimateCtrl::OpenBOOL Open(LPCTSTR lpszFileName);
BOOL Open(UNIT nID);返回值:如果成功,则返回非零值,否则为0。参数: lpszFileName CString对象或一个指向一个以空终止符结尾的字符串的指针。此字符串包含了AVI文件的名字或一个AVI资源的名字。如果此参数为空,则系统关闭以前动画控件打开的AVI片段,如果有的话。
nID AVI资源识别器。如果此参数为空,则系统关闭以前动画控件打开的AVI片段,如果有的话。
Play方法
CAnimateCtrl::PlayBOOL Play(UNIT nFrom, UINT nTo, UINT nRep);返回值:如果成功,则返回非零值,否则为0。参数: nFrom 运行开始的那个帧的基于零的索引。值必须小于65,536。0值意味着从AVI片段的第一帧开始。 nTo 运行结束的那个帧的基于零的索引。值必须小于65,536。-1值意味着以AVI片段的最后一帧结束。 nRep 重新播放AVI片段的次数。值为-1意味着无限地重新运行此文件。
04. 程序设计
(1)新建一个基于对话框的应用程序。
(2)在对话框中放置CAnimateCtrl控件,并通过类向导将其命名为“m_Animate”。
(3)在对话框类中定义一个CStatusBar变量m_StatusBar。
(4)在对话框的OnInitDialog方法中创建状态栏,并将CAnimateCtrl控件显示在状态栏中。
BOOL CMy1StatusDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != nullptr){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动// 执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标m_StatusBar.Create(this);UINT panels[4];for (int i = 0; i < 4; i++){panels[i] = 1000 + i;}m_StatusBar.SetIndicators(panels, 4);m_StatusBar.GetStatusBarCtrl().SetMinHeight(50);CRect rect;GetClientRect(rect);int width = rect.Width() / 4;for (int i = 0; i < 4; i++){m_StatusBar.SetPaneInfo(i, panels[i], SBPS_NORMAL, width);}//设置面板信息m_StatusBar.SetPaneText(0, TEXT("当前用户"));m_StatusBar.SetPaneText(1, TEXT("沧海一笑"));m_StatusBar.SetPaneText(2, TEXT("动画"));//m_Animage.SetParent(&m_StatusBar);RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);//获取第3个面板的区域大小m_StatusBar.GetStatusBarCtrl().GetRect(3, &rect);CRect progRect(rect.left, 2, rect.right, rect.Height() + 2);//m_Animage.MoveWindow(&progRect);m_Animage.Create(WS_CHILD | WS_VISIBLE, progRect, &m_StatusBar, 100);m_Animage.ShowWindow(SW_SHOW);m_Animage.Open(TEXT("4.avi"));m_Animage.Play(0, -1, -1);return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
05. 秘笈心法
状态栏动画的另一种实现
使用CAnimateCtrl控件播放动画比较方便,也可以在状态栏指定区域内用GDI函数来绘制动画。动画就是一幅一幅连续的图像,使用CDC类的Bitblt成员函数绘制连续的图像就可以形成动画效果。
06. 源码下载
下载:【MFC】自绘对话框动画效果的状态栏本.rar
07. 附录
参考: 《Visual C++从入门到精通(项目案例版)》
【MFC】自绘对话框动画效果的状态栏相关推荐
- ios animation 动画效果实现
1.过渡动画 CATransition CATransition *animation = [CATransition animation];[animation setDuration:1.0];[ ...
- Android高效率实现弹出带动画效果的对话框,仿照微信对话框效果
转载请注明出处: http://blog.csdn.net/jakeyangchina/article/details/53423453 看到很多app页面里都有弹出对话框效果,今天使用PopupWi ...
- Android 自绘动画效果---小清新等待
[独具匠心http://my.csdn.net/songxin393764941 未经允许严禁转载,请尊重作者劳动成果.我的博客] 今天给大家带来的是一个等待的动画效果↓ 看到我的照片有没有被迷到啊随 ...
- 【MFC】工具栏左侧双线效果
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 由MFC向导创建的文档 ...
- 【MFC】工具栏按钮单选效果
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 Visual C++在 ...
- MFC中模态对话框和非模态对话框的差别
在MFC中有模态对话框和非模态对话框,那这两种有什么差别呢. 又都是用于什么场合呢. 首先,要弄清楚2种对话框是怎样创建的. 然后要弄清楚2种对话框有什么差别,可能从表面上看,模态会堵塞主对话框.可原 ...
- Visual C# 2005 - 利用程序代码制作简单动画效果
一般的 Windows Form 通常是运用各种控件来显示数据,然而如果您希望在窗体中加入特殊效果来凸显数据内容,那么图形与动画将是非常不错的选择. 一般来说,我们会使用 .Net Framework ...
- QGIS 3.14|地震数据动画效果实战(二)动画设置篇
01 设置图层Temporal属性 在QGIS 3.14中,图层的属性对话框首次加入了 Temporal标签页,提供图层的时间设置. 右键点击[图层]面板中的"quake2020" ...
- QGIS 3.14|地震数据动画效果实战(三)进度条设置
在之前的版本中,QGIS对时间的处理是通过Time Manager插件实现的,QGIS 3.14将Temporal Controller引入软件整体框架之中,以原生的方式支持各类数据集对时间维度的处理 ...
最新文章
- 第五课.Python函数(二)
- CSS中常用中文字体的Unicode编码
- java set排序_Java Set排序的方法
- Silverlight - Validation 客户端同步数据验证
- flutter 底部动画导航栏
- 计算机操作师初级理论知识试卷答案,[计算机操作员初级理论知识试卷1.doc
- python安装失败错误代码0x_详解雨林木风Win10提示“Python 0x80070643安装时发生严重错误”解决方法...
- 3371 【模板】单源最短路径(Dijsktra)
- 如何将.txt中的数据导入.excel
- VM15.5安装XP系统
- python共享单车数据分析_共享单车数据可视化分析(Python/Seaborn)
- 计算机无法识别打印机usb,USB无法识别打印机的解决方案和教程
- 判断四边形凹凸性及凹点
- myeclipse6.5-8.5 激活码 秘钥 及使用
- 全网搜php,PHP实现中文全文搜索的原理介绍
- HTML5接入百度地图并搜索定位
- 开启邮箱的SMTP服务获取授权码(QQ邮箱、163邮箱)
- python中对Routers的理解
- Linux简单入门命令
- Oracle空闲超时时间设置
热门文章
- Windows SharePoint Services 3.0编码开发工具和技巧(Part 1 of 2)
- OnInit 和 Page_Init 事件有什么不同
- rgb fusion检测不到显卡_买不到RX 6800XT就装不了机解不了馋?我看未必
- 怎样分组教学计算机学生才有兴趣,学生计算机论文,关于如何激发职业中专学生学习计算机的兴趣相关参考文献资料-免费论文范文...
- session与cookie的简单使用
- 转载--html显示当前时间
- 年报统计系统—基本信息模块的目标文档
- MSIL实用指南-比较运算
- bzoj1833: [ZJOI2010]count 数字计数USACO37 Cow Queueing 数数的梦(数位DP)
- 下载大文件 不经过php 直接让apache发送文件给客户端 mod_xsendfile