方案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给你包装好的多媒体编程接口。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)