C++程序加载Flash动画
2010-10-16 09:27:22 来源:WEB开发网核心提示:在VC中加载Flash动画,一种很方便的方式就是在IDE的类向导生成一个IShockwaveFlash接口的包装类,但小弟十分不喜欢VC的可视化向导,几乎很少用,总是喜欢直接拿代码说话,C++程序加载Flash动画,下面写段播放Flash的简单代码:首先要利用#import命令导入Flash控件的类型库,如:#impo
在VC中加载Flash动画,一种很方便的方式就是在IDE的类向导生成一个IShockwaveFlash接口的包装类。但小弟十分不喜欢VC的可视化向导,几乎很少用,总是喜欢直接拿代码说话。
下面写段播放Flash的简单代码:
首先要利用#import命令导入Flash控件的类型库,如:#import "PROGID:ShockwaveFlash.ShockwaveFlash" nonamespace raw interfaces only
运行一次后会生成flash.tlh文件,程序中需要的接口定义(如IShockwaveFlash接口)就在此文件中生成。
上代码:
// 播放Flash文件 // hWndAttach: 播放Flash文件所依赖的窗口 // lpszFlash: 要播放的Flash文件 inline BOOL PlayFlash(HWND hWndAttach, LPCTSTR lpszFlash) { ATLASSERT(::IsWindow(hWndAttach) && ::PathFileExists(lpszFlash)); CComPtr<IShockwaveFlash> spFlash = NULL; // 创建IShockwaveFlash指针对象 AUX_HRESULT_ASSERT_FAILED_RETURN_VALUE(::CoCreateInstance(__uuidof(ShockwaveFlash), NULL, CLSCTX_ALL, __uuidof(IShockwaveFlash), (LPVOID*)&spFlash), FALSE); ATLASSERT(spFlash != NULL); // 设置背景透明 ATLVERIFY(SUCCEEDED(spFlash->put_WMode(L"transparent"))); // 将IShockwaveFlash对象绑定到指定的窗口上 AUX_HRESULT_ASSERT_FAILED_RETURN_VALUE(AtlAxAttachControl(spFlash, hWndAttach, NULL), FALSE); // 播放Flash文件 AUX_HRESULT_ASSERT_FAILED_RETURN_VALUE(spFlash->put_Movie(CT2OLE(lpszFlash)), FALSE); return TRUE; }
其中AUX_HRESULT_ASSERT_FAILED_RETURN_VALUE宏是为了简便代码的编写而定义的,定义如下:
#define AUX_ASSERT_FAILED_RETURN_VALUE(expr, ret) { BOOL bRet = (expr) ? TRUE : FALSE; ATLASSERT(bRet && #expr); if (!bRet) return ret; } #define AUX_HRESULT_ASSERT_FAILED_RETURN_VALUE(expr, ret) { AUX_ASSERT_FAILED_RETURN_VALUE(SUCCEEDED(expr), ret) }
完成后,调用:
PlayFlash(this->GetDlgItem(IDC_FLASH), _T("D:\\test.swf"));
[]
- ››flash文件的压缩方法(swf文件压缩瘦身)
- ››Flash鼠绘教程:临摹徐悲鸿的骏马图
- ››Flash实例:AS3制作茶杯震动动画
- ››Flash AS 3.0实例教程:Main类打造发散效果
- ››Flash cs3仿真艺术设计3.6:运用遮罩打造焦点效果...
- ››Flash cs3仿真艺术设计4.1:阴影的基本运用
- ››Flash CS4教程:3d工具实例和骨骼工具
- ››flash加载外部文本文件的3种方法
- ››flash在有限的页面内制作大的地图
- ››Flash教程:AS代码制作计时器方法
- ››Flash AS教程:propertydata问题解决
- ››FlashFXP v4.0.0 Build 1486 RC2 [烈火汉化]
更多精彩
赞助商链接