MFC界面中添加简单动画的思路
2014-03-13 22:05
295 查看
最近在学习MFC,正好今天帮同学修了下照片,突发奇想想在MFC界面里添加一些动画,效果应该不错。
于是,开始动手实验。
先上效果图吧(不知道这上面GIF能不能正常显示):
如果不能正常显示请点下面链接:
http://xiangce.baidu.com/picture/detail/83d7a1b2bdfd5b2d545887e734dbfcbaeb413d9a
下面是CSDN共享链接:(包含了源代码和程序以及效果图)
http://download.csdn.net/detail/k616358281/7037115
![](https://img-blog.csdn.net/20140313214048468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSzYxNjM1ODI4MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
上面结果,界面很简单。
思路也很简单,就是跟做动画一样,一帧一帧地切换就好了,设置好定时时间(这里是专门开辟了一个线程用来操作,以免影响主函数)。
下面是代码:
在
下面是线程一的定义:
void CGIF_DLGDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent==0)
((CStatic*)GetDlgItem(IDC_STATIC1))->SetBitmap(m_bmp[m_bk_num++]);
if (m_bk_num==14)
m_bk_num=0;
CDialog::OnTimer(nIDEvent);
}
添加OnCtlColor响应,并添加如下代码(主要是把背景刷白)
就这么简单,这里设置的是80ms的时间间隔,貌似这里看不到动画。
我把程序源代码和程序效果图以及生成的程序已经打包到了CSDN共享里,有兴趣的可以试试!
欢迎转载~~~
于是,开始动手实验。
先上效果图吧(不知道这上面GIF能不能正常显示):
如果不能正常显示请点下面链接:
http://xiangce.baidu.com/picture/detail/83d7a1b2bdfd5b2d545887e734dbfcbaeb413d9a
下面是CSDN共享链接:(包含了源代码和程序以及效果图)
http://download.csdn.net/detail/k616358281/7037115
上面结果,界面很简单。
思路也很简单,就是跟做动画一样,一帧一帧地切换就好了,设置好定时时间(这里是专门开辟了一个线程用来操作,以免影响主函数)。
下面是代码:
在
BOOL CGIF_DLGDlg::OnInitDialog()里添加下面代码(当然,其中有些是类成员,要自己添加)
CBitmap bkbmp; bkbmp.LoadBitmap(IDB_BKBMP); m_bkbrush.CreatePatternBrush(&bkbmp); m_bk_num=0; m_bmp[0].LoadBitmap(IDB_GIF01); m_bmp[1].LoadBitmap(IDB_GIF02); m_bmp[2].LoadBitmap(IDB_GIF03); m_bmp[3].LoadBitmap(IDB_GIF04); m_bmp[4].LoadBitmap(IDB_GIF05); m_bmp[5].LoadBitmap(IDB_GIF06); m_bmp[6].LoadBitmap(IDB_GIF07); m_bmp[7].LoadBitmap(IDB_GIF08); m_bmp[8].LoadBitmap(IDB_GIF09); m_bmp[9].LoadBitmap(IDB_GIF010); m_bmp[10].LoadBitmap(IDB_GIF011); m_bmp[11].LoadBitmap(IDB_GIF012); m_bmp[12].LoadBitmap(IDB_GIF013); m_bmp[13].LoadBitmap(IDB_GIF014); HANDLE hthread1; hthread1=CreateThread(NULL,0,FunProc,this,0,NULL);
下面是线程一的定义:
DWORD WINAPI FunProc( LPVOID lpParameter // thread data ) { CGIF_DLGDlg* pdlg; pdlg=(CGIF_DLGDlg*)lpParameter; pdlg->SetTimer(0,80,NULL);
return 0; }添加ontimer相应,并在响应函数添加如下代码:
void CGIF_DLGDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent==0)
((CStatic*)GetDlgItem(IDC_STATIC1))->SetBitmap(m_bmp[m_bk_num++]);
if (m_bk_num==14)
m_bk_num=0;
CDialog::OnTimer(nIDEvent);
}
添加OnCtlColor响应,并添加如下代码(主要是把背景刷白)
HBRUSH CGIF_DLGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (pWnd==this) { return m_bkbrush; } // TODO: Return a different brush if the default is not desired return hbr; }
就这么简单,这里设置的是80ms的时间间隔,貌似这里看不到动画。
我把程序源代码和程序效果图以及生成的程序已经打包到了CSDN共享里,有兴趣的可以试试!
欢迎转载~~~
相关文章推荐
- (四期)简单添加TableViewCell的3D动画效果
- ACtivity实现欢迎界面并添加动画切换效果
- MFC中 给基于对话框的应用程序添加登陆界面
- (转载)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- VC/MFC如何添加启动界面
- 为Windows Mobile界面添加等待动画
- UINavigationBar添加背景图片的几种简单思路
- VC/MFC如何添加启动界面
- VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)
- VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)[转]
- MFC 软件登陆界面的实现(可以用来做启动画面,添加bmp图片,然后给图片加点击响应事件。)
- 基于MFC框架的C++游戏开发(五)定时器和简单动画
- Android Activity界面切换添加动画特效
- iOS添加到购物车的简单动画效果
- MFC简单界面程序
- MFC:在CView(或CScrollView等)界面上动态添加右键菜单
- VC/MFC如何添加启动界面
- 在MFC中列表框控件 添加网格简单解析
- VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)