MFC中flash动画控制问题,在线等!!!!急!!!!!

我在做一个基于对话框的mfc程序,加入了一个flash欢迎动画,但是如果想让这个动画播放3秒自动关闭该对话框调到下一个该怎么操作??StopPlay()函数应该写在哪里?... 我在做一个基于对话框的mfc程序,加入了一个flash欢迎动画,但是如果想让这个动画播放3秒自动关闭该对话框调到下一个该怎么操作??StopPlay()函数应该写在哪里?计时函数该怎么写??求大神速速回复!!!! 展开
 我来答
ljupcn
2013-08-25 · TA获得超过1688个赞
知道小有建树答主
回答量:872
采纳率:0%
帮助的人:969万
展开全部

说一下我的思路和办法:

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

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

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

 

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

  1. 创建工程CSplash;

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

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

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

    CSplashFlash* m_pFlash;

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

    m_pFlash = new CSplashFlash;
    m_pFlash->Create(IDD_SPLASH, this);

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

    SetTimer(1, 0, NULL);
    SetTimer(2, 3000, NULL);

  7. 给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();
}

sunnyMiracle14
2013-08-22 · TA获得超过198个赞
知道小有建树答主
回答量:824
采纳率:0%
帮助的人:455万
展开全部
响应WM_TIMER消息。在初始化函数中调用SetTimer(1,1000,NULL),在ontimer函数里面添加stopplay()和显示对话框代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式