如何在MFCWIN32程序中添加动画效果

如何在MFCWIN32程序中添加动画效果,第1张

很多方案,

方案1.用flash制作电子相册,然后通过插件嵌入到mfc中

方案2.通过opengl或者directx类库来实现动画

以上两种方案都很需要编程技术

如果你抛弃编程实现,那可以用现成的工具

比如flash,数码大师,会声会影甚至office自带的powerpoint也可以制作你说的效果,就看你自己的选择了

说一下我的思路和办法:

MFC程序的主界面,当然作为主对话框

添加一个对话框,作为显示Flash欢迎界面窗口,这个窗口去掉标题栏和外框;

启动程序是,让主对话框隐藏,设置定时器让欢迎窗口先显示3秒,然后将欢迎窗口隐藏,显示主窗口。这样其实不用考虑Flash的停止播放问题,隐藏或关闭了就一了百了。

我按照个人的测试具体说一下实现过程,以楼主的水平看起来也许会觉得有些啰嗦,但请耐心看完:

创建工程CSplash;

添加一个对话框IDD_SPLASH,为之创建一个类CSplashFlash;

在CSplashDlg类(主对话框)的头文件(SplashDlg.h)引入CSplashFlash类的头文件;

给CSplashDlg类添加一个成员变量,即定义一个CSplashFlash类的对象:

CSplashFlash* m_pFlash

在主对话框的OnInitDialog函数中,创建非模态欢迎窗口:

m_pFlash = new CSplashFlash

m_pFlash->Create(IDD_SPLASH, this)

设置两个定时器,一个用来让程序启动那刻起主对话框隐藏,欢迎窗口显示,一个用来让欢迎窗口显示3000毫秒,然后隐藏,显示主窗口:

SetTimer(1, 0, NULL)

SetTimer(2, 3000, NULL)

给CSplashDlg类添加一个窗口消息句柄(Add Windows Message handle)WM_TIMER,用来实现定时器的功能:

if(nIDEvent == 1)

{

  this->ShowWindow(SW_HIDE)

  m_pFlash->CenterWindow()

  m_pFlash->ShowWindow(SW_SHOWNORMAL)

}

if(nIDEvent == 2)

{

  KillTimer(1)

  m_pFlash->ShowWindow(SW_HIDE)

  this->CenterWindow()

  this->ShowWindow(SW_SHOW)

上面的步骤已经完全实现了欢迎窗口展示3秒的功能,至于如何把flash控件添加到欢迎窗口想必楼主都知道,不必赘述。

至此尚存在一个问题,就是程序主对话框虽然在启动时起就给他HIDE了,但该窗口的创建和显示要早于定时器1的执行,所以主界面在隐藏前仍会闪一下。无论是在OnInitDialog或者OnCreate或者OnShowWindow或者OnSize消息句柄中设置ShowWindow(SW_HIDE)都无济于事。后来了解到可以通过设置窗口位置来解决,就是吧窗口放到屏幕区域之外:

CRect rect

 GetClientRect(&rect)

 this->SetWindowPos(&wndBottom, -800, -800, rect.right, rect.bottom, SWP_HIDEWINDOW)

最后的一点善后工作,添加消息句柄WM_CLOSE,把定时器2杀掉,把欢迎窗口所占的内存释放了:

void CSplashDlg::OnClose()

{

 // TODO: Add your message handler code here and/or call default

 KillTimer(2)

 delete m_pFlash

 CDialog::OnClose()

}

能做动画,但是得一步 一步的编程,一般都不用MFC,耗时费力不说,而且动画效果有时候根本就没法看。如果要做的话,MFC中必须得加载DirectX插件,你得了解这个DirectX,这是WINDOWS给你包装好的多媒体编程接口。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11346611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存