MFC里创建FLASH控件,并从内存流中载入SWF
发布时间:2020-12-15 18:21:43 所属栏目:百科 来源:网络整理
导读:1,在stdafx.h里引用如下头文件 #include atlbase.hextern CComModule _Module; #include atlcom.h#include oleacc.h#include comdef.h#pragma comment(lib,"atl")#pragma comment(lib,"User32.lib")#import "c:WINDOWSsystem32MacromedFlashFlash32_11_
1,在stdafx.h里引用如下头文件
#include <atlbase.h> extern CComModule _Module; #include <atlcom.h> #include <oleacc.h> #include <comdef.h> #pragma comment(lib,"atl") #pragma comment(lib,"User32.lib") #import "c:WINDOWSsystem32MacromedFlashFlash32_11_5_502_135.ocx" using namespace ShockwaveFlashObjects; ? <p>#pragma pack(push,1)</p><p> typedef struct _FLASH_STREAM_HEADER { ??? DWORD m_dwSignature; ??? DWORD m_dwDataSize; } FLASH_STREAM_HEADER,*PFLASH_STREAM_HEADER;</p><p>#pragma pack(pop)</p> <pre class="cpp" name="code">? BOOL CFlashTest::InitInstance() { ... CoInitialize(NULL); AtlAxWinInit(); } <pre class="cpp" name="code">2创建FLASH控件并从内存流中载入 CRect rc; GetClientRect(&rc); static CWnd wnd; BOOL bRet = wnd.CreateControl("ShockwaveFlash.ShockwaveFlash","flash",WS_CHILD|WS_VISIBLE,rc,this,0x223); CComPtr<IShockwaveFlash> spFlash; LPUNKNOWN pUnknow = wnd.GetControlUnknown(); pUnknow->QueryInterface(__uuidof(IShockwaveFlash),(void **)&spFlash); HRSRC hRes = FindResource(NULL,(LPCTSTR)IDR_SWF1,"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; spFlash.QueryInterface(&spPersistStreamInit); spPersistStreamInit->Load(spStream); } <pre> </pre><pre class="cpp" name="code"> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |