zoukankan      html  css  js  c++  java
  • C++程序加载Flash动画

    在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"));

  • 相关阅读:
    8.4 IP地址的划分及子网划分
    8.3 TCPIP协议族
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    Web 安全开发规范手册 V1.0
    Web 安全开发规范手册 V1.0
    Web 安全开发规范手册 V1.0
    NET Core入门笔记
    NET Core入门笔记
  • 原文地址:https://www.cnblogs.com/fangkm/p/1852856.html
Copyright © 2011-2022 走看看