文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++程序加载Flash动画

C++程序加载Flash动画

时间:2010-10-16  来源:方外之士

下面写段播放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"));

相关阅读 更多 +
排行榜 更多 +
边境检察最后区域手机版下载

边境检察最后区域手机版下载

角色扮演 下载
酋长你别跑手游下载

酋长你别跑手游下载

休闲益智 下载
心动漫画app下载官方版

心动漫画app下载官方版

浏览阅读 下载