C++程序加载Flash动画

在VC中加载Flash动画,一种很方便的方式就是在IDE的类向导生成一个IShockwaveFlash接口的包装类。但小弟十分不喜欢VC的可视化向导,几乎很少用,总是喜欢直接拿代码说话。

下面写段播放Flash的简单代码:

首先要利用#import命令导入Flash控件的类型库,如:#import "PROGID:ShockwaveFlash.ShockwaveFlash" nonamespace raw interfaces only

运行一次后会生成flash.tlh文件,程序中需要的接口定义(如IShockwaveFlash接口)就在此文件中生成。

上代码:
C++程序加载Flash动画C++程序加载Flash动画代码//播放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);



returnTRUE;

}

其中AUX_HRESULT_ASSERT_FAILED_RETURN_VALUE宏是为了简便代码的编写而定义的,定义如下:

C++程序加载Flash动画C++程序加载Flash动画代码#defineAUX_ASSERT_FAILED_RETURN_VALUE(expr, ret)

{

BOOL bRet
=(expr)?TRUE : FALSE;

ATLASSERT(bRet
&&#expr);

if(!bRet)returnret;

}



#defineAUX_HRESULT_ASSERT_FAILED_RETURN_VALUE(expr, ret)

{

AUX_ASSERT_FAILED_RETURN_VALUE(SUCCEEDED(expr), ret)

}

完成后,调用:

PlayFlash(this->GetDlgItem(IDC_FLASH), _T("D:\test.swf"));
原文链接: https://www.cnblogs.com/fangkm/archive/2010/10/16/1852856.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/16168

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午4:24
下一篇 2023年2月7日 下午4:24

相关推荐