VC里如何添加flash动画? VC里如何添加flash动画? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 添加Flash.Ocx ShockwaveFlash 進行播放 shockware Flash Object.lnk..\Windows\system32\Macromed\Flash\Flash9.ocx在"VC开发环境"中,选择"工程"->"添加工程"->Components and controls->..\programFiles\Microsoft Visual Studio\Common\MSDev98\Gallery\Registered ActiveX Controls选择"shockware Flash Object.lnk",添加Flash控件。在Flash.h中#include "shockwaveflash.h"class CFlash : public CDialog{ ……public://------------Flash文件--------------- char PathName[255];// 保存flash文件名void FlashRun(); //*.swf文件运行void FlashPause(); //*.swf文件暂停 void FlashStop(); //*.swf文件停止 long lMSEL; //定义总的播放毫秒数long CurrentNum; //保存当前的帧数CurrentFrame()// long CMSEL; //定义当前的已经播放的时间 ……}在Flash.cpp中long i_TotalNum=0; //保存总帧数GetTotalFrames()long CMSEL=0; //定义当前的已经播放的时间//--------------*.swf----void CFlash::FlashRun(){long state=0;UpdateData(FALSE); CMSEL=0;//定义当前的已经播放的时间CurrentNum=0;m_FlashOCX.LoadMovie(0,PathName);state=m_FlashOCX.GetReadyState();m_FlashOCX.Zoom(0);//还原大小,显示全部的内容// long lMSEL=0; //定义总的播放毫秒数if(state==4){ m_FlashOCX.GotoFrame(0); CurrentNum=m_FlashOCX.CurrentFrame(); i_TotalNum=m_FlashOCX.GetTotalFrames(); m_FlashOCX.GotoFrame(CurrentNum); lMSEL=i_TotalNum; //得到总的毫秒数,将总帧数转换为毫秒数 m_FlashOCX.Play();//播放 SetTimer(3,10,NULL);}}void CFlash::FlashPause(){m_FlashOCX.Stop(); //在当前帧位置停止播放KillTimer(3);}void CFlash::FlashStop(){ KillTimer(3);m_FlashOCX.GotoFrame(m_FlashOCX.GetTotalFrames()-1);//移动到最后一帧m_FlashOCX.Stop(); //在末尾停止播放 m_FlashOCX.Zoom(0);//还原大小,显示全部的内容m_FlashOCX.SetBGColor("0");}void CFlash::OnTimer(UINT nIDEvent) {// TODO: Add your message handler code here and/or call defaultint oldNum=CurrentNum;CurrentNum=m_FlashOCX.CurrentFrame();if(oldNum!=CurrentNum) CMSEL=CMSEL+1; //保存现在已经播放的时间数if(CurrentNum>=i_TotalNum-1){ FlashStop(); /*m_FlashOCX.StopPlay();*/ }else{ if(CMSEL>=lMSEL) //lMSEL为总的播放时间,CMSEL为当前已经播放的时间数 FlashStop(); else { m_FlashOCX.Zoom(0);//还原大小,显示全部的内容 if(m_FlashOCX.IsPlaying()==FALSE)//判断*.swf文件是否正在播放 { m_FlashOCX.Play(); } }}CDialog::OnTimer(nIDEvent);}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////“播放”按钮代码: flash.Play(); “暂停”按钮代码: flash.Stop(); “停止”按钮代码: flash.Rewind(); flash.Stop(); “重播”按钮代码:flash.Rewind();flash.Play(); “后退”按钮代码:flash.Back(); “前进”按钮代码:flash.Forward(); “末帧”按钮代码: flash.GotoFrame(flash.get_TotalFrames()-1); “快退”按钮代码: int current=flash.CurrentFrame(); if(current>4) { current-=5; flash.GotoFrame(current); } else { flash.put_FrameNum(0); } “快进”按钮代码: int current=flash.CurrentFrame(); int i=flash.get_FrameNum(); if(current<flash.get_TotalFrames()-5) { current+=5; flash.GotoFrame(current); } else { flash.put_FrameNum(flash.get_TotalFrames()-1); } “放大”按钮代码: flash.Zoom(50); “缩小”按钮代码: flash.Zoom(200); 看看这个源码吧:http://www.vckbase.com/document/viewdoc/?id=1201 用ShockwaveFlash这个active控件倒是挺方便的~ 能否捕捉到flash里面的键盘,鼠标的动作?比如在某个画面单击了某个按钮,那么就调用vc中的一些类的方法等. [Help]如何把下面调用API的VB代码修改成C++代码? 您好!关于VC++“创建菜单资源”的问题 CreateThread出错,调用GetLastError()值为8,高手赐教 调试程序里跳出一个for循环使用哪个选项? 如何使静态控件能够用鼠标自由拖动? PostMessage怎么不行? 在线等待,关于ftp下载速度问题 小提一问 半价转让经典VC新书 端口重用问题,请进来看看代码有什么问题 我在1920*1080分辨率下做的对话框全屏显示,怎么让比在小的分辨率下也实现全屏显示? VC++ TCP/IP通信的问题?
class CFlash : public CDialog
{ ……public:
//------------Flash文件---------------
char PathName[255];// 保存flash文件名
void FlashRun(); //*.swf文件运行
void FlashPause(); //*.swf文件暂停
void FlashStop(); //*.swf文件停止
long lMSEL; //定义总的播放毫秒数
long CurrentNum; //保存当前的帧数CurrentFrame()
// long CMSEL; //定义当前的已经播放的时间
……
}在Flash.cpp中long i_TotalNum=0; //保存总帧数GetTotalFrames()
long CMSEL=0; //定义当前的已经播放的时间//--------------*.swf----
void CFlash::FlashRun()
{
long state=0;
UpdateData(FALSE);
CMSEL=0;//定义当前的已经播放的时间CurrentNum=0;
m_FlashOCX.LoadMovie(0,PathName);
state=m_FlashOCX.GetReadyState();
m_FlashOCX.Zoom(0);//还原大小,显示全部的内容// long lMSEL=0; //定义总的播放毫秒数
if(state==4)
{
m_FlashOCX.GotoFrame(0);
CurrentNum=m_FlashOCX.CurrentFrame();
i_TotalNum=m_FlashOCX.GetTotalFrames();
m_FlashOCX.GotoFrame(CurrentNum); lMSEL=i_TotalNum; //得到总的毫秒数,将总帧数转换为毫秒数
m_FlashOCX.Play();//播放
SetTimer(3,10,NULL);
}
}void CFlash::FlashPause()
{
m_FlashOCX.Stop(); //在当前帧位置停止播放
KillTimer(3);
}void CFlash::FlashStop()
{
KillTimer(3);
m_FlashOCX.GotoFrame(m_FlashOCX.GetTotalFrames()-1);//移动到最后一帧
m_FlashOCX.Stop(); //在末尾停止播放
m_FlashOCX.Zoom(0);//还原大小,显示全部的内容
m_FlashOCX.SetBGColor("0");
}void CFlash::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
int oldNum=CurrentNum;
CurrentNum=m_FlashOCX.CurrentFrame();
if(oldNum!=CurrentNum)
CMSEL=CMSEL+1; //保存现在已经播放的时间数if(CurrentNum>=i_TotalNum-1)
{ FlashStop(); /*m_FlashOCX.StopPlay();*/ }
else
{
if(CMSEL>=lMSEL) //lMSEL为总的播放时间,CMSEL为当前已经播放的时间数
FlashStop();
else
{
m_FlashOCX.Zoom(0);//还原大小,显示全部的内容
if(m_FlashOCX.IsPlaying()==FALSE)//判断*.swf文件是否正在播放
{ m_FlashOCX.Play(); }
}
}
CDialog::OnTimer(nIDEvent);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////“播放”按钮代码:
flash.Play();
“暂停”按钮代码:
flash.Stop();
“停止”按钮代码:
flash.Rewind();
flash.Stop();
“重播”按钮代码:
flash.Rewind();
flash.Play();
“后退”按钮代码:
flash.Back();
“前进”按钮代码:
flash.Forward();
“末帧”按钮代码:
flash.GotoFrame(flash.get_TotalFrames()-1);
“快退”按钮代码:
int current=flash.CurrentFrame();
if(current>4)
{
current-=5;
flash.GotoFrame(current);
}
else
{
flash.put_FrameNum(0);
} “快进”按钮代码:
int current=flash.CurrentFrame();
int i=flash.get_FrameNum();
if(current<flash.get_TotalFrames()-5)
{
current+=5;
flash.GotoFrame(current);
}
else
{
flash.put_FrameNum(flash.get_TotalFrames()-1);
} “放大”按钮代码:
flash.Zoom(50); “缩小”按钮代码:
flash.Zoom(200);