用IShockwaveFlash如何播放资源中的SWF影片?

lcy_888 2015-10-19 02:18:42
如题,在DUILIB中有个IShockwaveFlash类可以很方便的播放磁盘中的SWF影片,但是如何播放嵌入资源中的SWF呢?请各位大神赐教。
...全文
115 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lswandym_888 2015-10-20
  • 打赏
  • 举报
回复
if (msg.pSender->GetName() != _T("flash")) return; IShockwaveFlash* pFlash = NULL; CActiveXUI* pActiveX = static_cast<CActiveXUI*>(msg.pSender); pActiveX->GetControl(IID_IUnknown, (void**)&pFlash); if (pFlash != NULL) { pFlash->put_WMode(_bstr_t(_T("Transparent"))); //pFlash->put_Movie(_bstr_t(CPaintManagerUI::GetInstancePath() + _T("\\sys_update.swf"))); /*pFlash->put_Movie(_bstr_t(MAKEINTRESOURCE(IDR_SWF1)));//可能要动态从资源释放 pFlash->DisableLocalSecurity(); pFlash->put_AllowScriptAccess(L"always"); BSTR response; pFlash->CallFunction(L"<invoke name=\"setButtonText\" returntype=\"xml\"><arguments><string>Click me!</string></arguments></invoke>", &response); pFlash->Release();*/ typedef struct _FLASH_STREAM_HEADER { DWORD m_dwSignature; DWORD m_dwDataSize; } FLASH_STREAM_HEADER, *PFLASH_STREAM_HEADER; HRSRC hRes = FindResource(NULL, (LPCTSTR)IDR_SWF1, _T("SWF")); if (hRes) { DWORD dwResourceDataSize = SizeofResource(NULL, hRes); HGLOBAL hResourceLoaded = ::LoadResource(NULL, hRes); IStream *spStream; HRESULT hResult = ::CreateStreamOnHGlobal(NULL, TRUE, &spStream); FLASH_STREAM_HEADER fsh = { 0x55665566, dwResourceDataSize }; ULARGE_INTEGER uli = { sizeof(fsh) + dwResourceDataSize }; hResult = spStream->SetSize(uli); hResult = spStream->Write(&fsh, sizeof(fsh), NULL); hResult = spStream->Write(reinterpret_cast<void*>(hResourceLoaded), dwResourceDataSize, NULL); uli.QuadPart = 0; hResult = spStream->Seek(*reinterpret_cast<PLARGE_INTEGER>(&uli), STREAM_SEEK_SET, NULL); CComPtr<IPersistStreamInit> spPersistStreamInit; pFlash->QueryInterface(&spPersistStreamInit); pFlash->DisableLocalSecurity();//禁用本地安全 pFlash->put_AllowScriptAccess(L"always");//允许脚本访问 spPersistStreamInit->Load(spStream); pFlash->Release(); } }

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧