加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读