WS_MAXIMIZE|WS_POPUP|WS_VISIBLE|MCIWNDF_NOPLAYBAR|MCIWNDF_NOERRORDLG|MCIWNDF_NOTIFYERROR|MCIWNDF_NOTIFYMODE;
//建立MCIWnd 窗口
aviWnd=::MCIWndCreate(m_pMainWnd->
m_hWnd,AfxGetInstanceHandle(),dwMCIWndStyle,“mpc.avi”);
//表示MCIWnd 窗口存在
nFlag=TRUE;
//取开始时间
CTime m_dwSplashTime=::GetCurrentTime();
//播放
MCIWndPlay(aviWnd);
m_pMainWnd->DragAcceptFiles();
return TRUE;
}
注销一个正在播放的动画窗口有两种方法,一种是设定播放时间,另一种是接受用户命令直接注销。为设定播放时间,可在
程序中添加消息OnIdle,设定经过一段时间后,就注销动画窗口:
BOOL CStdio1App ::OnIdle(LONG lCount)
{
BOOL bResult=CWinApp::OnIdle(lCount);
//提取当前时间
CTime t=CTime::GetCurrentTime();
if(nFlag)
{
//设定播放时间为10000毫秒
if(t-m_dwSplashTime>10000)
{
//销毁MCIWnd 窗口
DestroyWindow(aviWnd);
//显示
程序的主框架窗口
m_pMainWnd->ShowWindow(SW_NORMAL);
m_pMainWnd->UpdateWindow();
nFlag=FALSE;
}
else{
bResult=TRUE;
}
return bResult;
}
return TRUE;
}
当由用户直接键入命令结束播放时,使用映射消息PreTranslateMessage接受用户的键盘或鼠标输入:
BOOL :: CStdio1App PreTranslateMessage(MSG* pMsg)
{
if(aviWnd!=NULL&&(pMsg->message==
WM_KEYDOWN) || pMsg->message==
WM_SYSKEYDOWN || pMsg->message==
WM_LBUTTONDOWN || pMsg->message==
WM_RBUTTONDOWN || pMsg->message==
WM_MBUTTONDOWN || pMsg->message==
WM_NCLBUTTONDOWN || pMsg->message==
WM_NCRBUTTONDOWN||WM_NCMBUTTONDOWN))
{
//注销
DestroyWindow(aviWnd);
m_pMainWnd->ShowWindow(SW_MAXIMIZE);
m_pMainWnd->UpdateWindow();
nFlag=FALSE;
aviWnd=NULL;
}
return CWinApp::PreTranslateMessage(pMsg);
}
小 结
上述3种软件封面的制作方法中,一般大型软件采用第一种静态画面的方法,因为此时程序本身比较大,如果再用一个消耗大量内存的动画作为封面,就有可能造成
计算机内存容量不足,影响软件的正常运行。对于面向大众化的多媒体软件,一般为了先声夺人,引人入胜,大多采用AVI动画作为软件封面。而面向学生的多媒体教学课件,一般用Authorware做一个动画
程序,再用 WinExec函数调用即可,既简单,效果又好。