My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 多媒体
用程序来控制Flash控件(兼谈做CD的自启动程序一法)
作者:xlqin 时间:2001-10-09 10:10 出处:互联网 责编:MyFAQ
              摘要:用程序来控制Flash控件(兼谈做CD的自启动程序一法)

当前Flash很流行,而且Flash以控件形式提供IE,既然是控件,我们就可以用VC或
别的什么语言来控制它。
Flash 控件的播放功能很好实现,它有一个强大的命令 FSCommand,可用来向应
用程序发消息,截获此消息,我们可以实现很多功能。这样就可以结合Flash的漂
亮界面与VC的强大功能!

下面以用Flash控件做CD的autorun为例说明:
CD自启动程序一般是运行后有一个界面,进而有不同的安装项,这里,先应作一
个Flash动画,一个漂亮的界面,加上几个按钮,点不同的按钮,就发出不同的
FSCommand命令。FSCommand由命令就是两个字符串,响应FSCommand事件
应用程序可能得到这两个字符串,相关设计可以参考Flash动画制作的相关书
籍,这里不作说明
先用VC建一单文档无View/Doc的项目,导入flash控件,从头文件shockwaveflash.h
上可以看出,我们可能控制动很多细节,这里,我只关Create和SetMovie函数

 virtual BOOL Create(LPCTSTR lpszClassName,
  LPCTSTR lpszWindowName, DWORD dwStyle,
  const RECT& rect,
  CWnd* pParentWnd, UINT nID,
  CCreateContext* pContext = NULL)
 { return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
 void SetMovie(LPCTSTR lpszNewValue);

在类CChildView中加入一个Flash控件,方法,在头文件中定义
public:
 CShockwaveFlash m_flash;
重载CChildView的OnCreate

int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CWnd ::OnCreate(lpCreateStruct) == -1)
  return -1;
 
 m_flash.Create(NULL,NULL, WS_CHILD|WS_VISIBLE, CRect(0, 0, 0, 0), this, FLASHID);
 m_flash.SetMovie(szWorkPath+"Autorun.SWF");
 
 return 0;
}

上面SetMovie的参数是flash文件的完整文件名

最后就是响应动画的FSCommand命令,即在CChildView中响应FSCommand事件

BEGIN_EVENTSINK_MAP(CChildView,CWnd)
 ON_EVENT(CChildView, FLASHID, 150 /* FSCommand */, OnFSCommandFlash, VTS_BSTR VTS_BSTR)
END_EVENTSINK_MAP()


afx_msg void  CChildView::OnFSCommandFlash(LPCTSTR command, LPCTSTR args)
{
 if(strcmp(command,"quit")==0)
 {
  m_flash.Stop();
  AfxGetMainWnd()->PostMessage(WM_CLOSE);
 }
 else if(strcmp(command,"SetupPath")==0)
  DoRun( args );
 else if(strcmp(command,"OpenPath")==0)
  DoExplore( args );
 else
 {
 }
}

其中 command  和 args 就是FSCommand发出的两个字符串,由于command,
和 args 内容由动画文件autorun.swf来确定,改变autorun.swf就可以有不同的
CD自启动程序。
上例中,有一个按钮发出的是 {"quit", ""} 令程序退出
另有一个按钮发出的是 {"OpenPath", ""} 令程序打开当前目录
还有几个是{"SetupPath", "soft1\setup.exe"} 令程序运行子目录soft1下的setup.exe
即安装soft1,同样,可能还有按钮发出的是
{"SetupPath", "soft2\setup.exe"} 安装soft2
{"SetupPath", "soft3\setup.exe"} 安装soft3

是不是很简单

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有