关于VC++播放Flash动画的问题

CrazyBW 2013-07-09 06:57:41
我想用IShockwaveFlash接口,但还不想使用flash控件来播放,请问有没有什么办法?
...全文
193 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wshcdr 2013-07-11
  • 打赏
  • 举报
回复
楼主看看这个 http://www.codeproject.com/Articles/178940/Enhanced-Transparent-Flash-Control-in-C
ArcRain 2013-07-10
  • 打赏
  • 举报
回复
是否脱离MFC,看你建立的工程,从AfxGetApp()来看,我觉得你还是在MFC的基础上... 因为Win API或者ATL的窗口应用程序,是没有这个东西的...
CrazyBW 2013-07-10
  • 打赏
  • 举报
回复
引用 5 楼 dream238 的回复:
[quote=引用 3 楼 CrazyBW 的回复:] [quote=引用 2 楼 dream238 的回复:] 用IShockwaveFlash接口,不用flash控件?怎么理解... IShockwaveFlash不是可以加载SWF文件吗?加载完IShockwaveFlash之后用它的接口控制不就行了。
咋说呢,想脱离MFC,另外您看一下刚刚我写的代码,运行就会崩溃:

CoInitialize(NULL);
	IShockwaveFlash* flash = NULL; 
	IUnknown* un = NULL;
	const IID id={0xd27cdb6e,0xae6d,0x11cf, 
	{0x96,0xb8,0x44,0x45,0x53,0x54,0x0,0x0} }; 

	
	HRESULT hr = CoCreateInstance(id,NULL,CLSCTX_INPROC_SERVER,IID_IUnknown,(void**)&un); 
	hr = un->QueryInterface(__uuidof(IShockwaveFlash), (void**)&flash); 
	hr = flash->put_WMode(L"transparent");
	if (SUCCEEDED(hr))
		TRACE("succeed\n");
	HWND ha = AfxGetApp()->m_pMainWnd->m_hWnd;
	AtlAxAttachControl(flash, ha, NULL);  //到这里就会崩溃
	hr = flash->put_Movie(_bstr_t("C:\\flower.swf"));
	if (SUCCEEDED(hr))
		TRACE("succeed\n");
[/quote] 换句话说,你用的Window是CAxWindow吗?[/quote] 我没用ActiveX 的那个Flash插件 , 我直接绑定到我生成的对话框上,现在已经能播放了, 不知道这样实现算不算脱离MFC
ArcRain 2013-07-10
  • 打赏
  • 举报
回复
引用 3 楼 CrazyBW 的回复:
[quote=引用 2 楼 dream238 的回复:] 用IShockwaveFlash接口,不用flash控件?怎么理解... IShockwaveFlash不是可以加载SWF文件吗?加载完IShockwaveFlash之后用它的接口控制不就行了。
咋说呢,想脱离MFC,另外您看一下刚刚我写的代码,运行就会崩溃:

CoInitialize(NULL);
	IShockwaveFlash* flash = NULL; 
	IUnknown* un = NULL;
	const IID id={0xd27cdb6e,0xae6d,0x11cf, 
	{0x96,0xb8,0x44,0x45,0x53,0x54,0x0,0x0} }; 

	
	HRESULT hr = CoCreateInstance(id,NULL,CLSCTX_INPROC_SERVER,IID_IUnknown,(void**)&un); 
	hr = un->QueryInterface(__uuidof(IShockwaveFlash), (void**)&flash); 
	hr = flash->put_WMode(L"transparent");
	if (SUCCEEDED(hr))
		TRACE("succeed\n");
	HWND ha = AfxGetApp()->m_pMainWnd->m_hWnd;
	AtlAxAttachControl(flash, ha, NULL);  //到这里就会崩溃
	hr = flash->put_Movie(_bstr_t("C:\\flower.swf"));
	if (SUCCEEDED(hr))
		TRACE("succeed\n");
[/quote] 换句话说,你用的Window是CAxWindow吗?
ArcRain 2013-07-10
  • 打赏
  • 举报
回复
你的AfxGetApp()->m_pMainWnd->m_hWnd的窗口类型是什么?窗口类是AtlAxWin类型的windows吗?
CrazyBW 2013-07-10
  • 打赏
  • 举报
回复
引用 2 楼 dream238 的回复:
用IShockwaveFlash接口,不用flash控件?怎么理解... IShockwaveFlash不是可以加载SWF文件吗?加载完IShockwaveFlash之后用它的接口控制不就行了。
咋说呢,想脱离MFC,另外您看一下刚刚我写的代码,运行就会崩溃:

CoInitialize(NULL);
	IShockwaveFlash* flash = NULL; 
	IUnknown* un = NULL;
	const IID id={0xd27cdb6e,0xae6d,0x11cf, 
	{0x96,0xb8,0x44,0x45,0x53,0x54,0x0,0x0} }; 

	
	HRESULT hr = CoCreateInstance(id,NULL,CLSCTX_INPROC_SERVER,IID_IUnknown,(void**)&un); 
	hr = un->QueryInterface(__uuidof(IShockwaveFlash), (void**)&flash); 
	hr = flash->put_WMode(L"transparent");
	if (SUCCEEDED(hr))
		TRACE("succeed\n");
	HWND ha = AfxGetApp()->m_pMainWnd->m_hWnd;
	AtlAxAttachControl(flash, ha, NULL);  //到这里就会崩溃
	hr = flash->put_Movie(_bstr_t("C:\\flower.swf"));
	if (SUCCEEDED(hr))
		TRACE("succeed\n");
ArcRain 2013-07-10
  • 打赏
  • 举报
回复
用IShockwaveFlash接口,不用flash控件?怎么理解... IShockwaveFlash不是可以加载SWF文件吗?加载完IShockwaveFlash之后用它的接口控制不就行了。
CrazyBW 2013-07-10
  • 打赏
  • 举报
回复
有没有人知道啊 求解释啊!!!!!!!!!!!!!

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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