MFC中flash动画控制问题,在线等!!!!急!!!!!
说一下我的思路和办法:
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();
}