---- 应用程序的工具栏上除了可以放置图形按钮和一些控件,实现快捷操作外,
我们还可以在其上播放动画,以增加程序动感,并使用户知道程序正在工作。此功能
在VC++可以中通过向工具栏添加播放动画的标准控件-CanimateCtrl来方便的实现这
一效果。本程序允许用户通过"查看/动画"菜单播放与关闭动画。
---- 开始编制程序之前,应先选择合适的AVI文件,供程序调用。本文使用sample.avi.,
放置在c:\temp目录下。
---- AVI文件可以用一些AVI编辑器中自己进行制作,如Adobe Premiere 5.1,
Corel Photo-Paint 8等,也可以使用现有AVI资源,制作和选择时,应考虑到工具栏
大小适合播放视频图象较小的动画(本文选取的AVI文件中图象大小为 27 x 14 象素,
Pixel depth是4位。
程序具体实现步骤如下:
---- 1. 创建工程
---- 用MFC AppWizard(exe)创建一个新工程AnimateToolbar,在MFC AppWizard-Step 1
对话框选中"Single Document"选项后,单击Finish按钮,在接着弹出的对话框中单击OK按
钮,工程创建完毕。
---- 2. 创建菜单资源
---- 在菜单"查看中添加"动画(A )"菜单项,并设置其标识号为ID_VIEW_ANIMATE,
状态栏提示(Prompt)设为"播放/停止动画"。
---- 3. 添加工具栏上按纽位图资源。
---- 在位图资源上添加一个新的按纽,标识号设为ID_ANIMATE。
---- 4. 往工具栏中添加一个CanimateCtrl控件,并播放动画。
---- (1) 在CmainFrame类中声明下面的成员变量:
class CMainFrame : public CFrameWnd
{
…
public:
BOOL IsAnimationActive;//是否播放动画标识
CAnimateCtrl m_Animate;
…
}
---- (2)在CmainFrame类构造函数中初始化IsAnimationActive变量:
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
IsAnimationActive=TRUE;
}
---- (3)在CMainFrame::OnCreate函数中创建CAnimateCtrl控件
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
…
CRect rect;
m_wndToolBar.SetButtonInfo (12,ID_VIEW_ANIMATE,
TBBS_SEPARATOR,40);
m_wndToolBar.GetItemRect (12,&rect);
DWORD dwStyle = WS_CHILD|WS_VISIBLE|ACS_AUTOPLAY|
ACS_TRANSPARENT|ACS_CENTER;
if (!m_Animate.Create( dwStyle, rect, &m_wndToolBar, 0 ))
return FALSE;
…
}
---- (4) 使用ClassWizard处理菜单项"查看/动画"标识号ID为(ID_VIEW_ANIMATE)
的COMMAND和UPDATE_COMMAND_UI消息,并增加下述代码。该段代码根据可以让用户在播
放动画与关闭动画之间进行切换。
void CMainFrame::OnViewAnimate()
{
// TODO: Add your command handler code here
if(IsAnimationActive){
m_Animate.Open("c:\\temp\\sample.avi");
IsAnimationActive=FALSE;
}
else{
m_Animate.Stop();
m_Animate.Close();
IsAnimationActive=TRUE;
}
}
void CMainFrame::OnUpdateViewAnimate(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(!IsAnimationActive? 1 : 0);
}
---- 本程序在Visual C++ 6.0,Windows 98环境下调试通过。