MFC ActiveX 工程中使用flash控件动态创建到这个ActiveX上,在IE中CLSID定义出来后调用封装好的flash功能!我用的方式是#import "xxx\flash.ocx" no_namespace rename("","")
有个接口重定义了。然后用的
//定义flash,CLSID
static CLSID const clsid =
{ 0xd27cdb6e, 0xae6d, 0x11cf, { 0x96, 0xb8, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 } };
IClassFactory *icf=(0);//工厂
IShockwaveFlash *sf=(0);//flash object
//获得工厂就失败了。下边的代码执行就崩溃
CoGetClassObject(clsid,CLSCTX_SERVER,NULL,__IDD(ShockwaveFlash),(LPVOID*)&icf );
icf->QueryInterface(__uuidof(IShockwaveFlash),(VOID**)sf);
sf->Movie="D:\\opop\\ff.swf";//ff.swf加入了一个mp3打开就播放
sf->Play()//开始播放但是如何把flash窗体显示到ActiveX控件,然后播放呢?困惑请各位兄弟姐妹解答!
有个接口重定义了。然后用的
//定义flash,CLSID
static CLSID const clsid =
{ 0xd27cdb6e, 0xae6d, 0x11cf, { 0x96, 0xb8, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 } };
IClassFactory *icf=(0);//工厂
IShockwaveFlash *sf=(0);//flash object
//获得工厂就失败了。下边的代码执行就崩溃
CoGetClassObject(clsid,CLSCTX_SERVER,NULL,__IDD(ShockwaveFlash),(LPVOID*)&icf );
icf->QueryInterface(__uuidof(IShockwaveFlash),(VOID**)sf);
sf->Movie="D:\\opop\\ff.swf";//ff.swf加入了一个mp3打开就播放
sf->Play()//开始播放但是如何把flash窗体显示到ActiveX控件,然后播放呢?困惑请各位兄弟姐妹解答!
MFC ActiveX 工程中使用flash控件动态创建到这个ActiveX上,在IE中CLSID定义出来后调用封装好的flash功能!我用的方式是:
//有个接口重定义了
#import "xxx\flash.ocx" no_namespace rename("IServiceProvider","IServiceProviderO")
然后用的
//定义flash,CLSID
static CLSID const clsid =
{ 0xd27cdb6e, 0xae6d, 0x11cf, { 0x96, 0xb8, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 } };
IClassFactory *icf=(0);//工厂
IShockwaveFlash *sf=(0);//flash object
//获得工厂的时候就失败了。下边的代码执行就崩溃
CoGetClassObject(clsid,CLSCTX_SERVER,NULL,__uuidof(IFlashFactory),(LPVOID*)&icf );
icf->QueryInterface(__uuidof(IShockwaveFlash),(VOID**)sf);
sf->Movie="D:\\opop\\ff.swf";//ff.swf加入了一个mp3打开就播放
sf->Play()//开始播放但是如何把flash窗体显示到ActiveX控件,然后播放呢?困惑请各位兄弟姐妹解答!
你应该使用CoCreateInstance来创建ActiveX
参考http://blog.joycode.com/jiangsheng/archive/2004/12/15/41209.aspx
const CLSID CLSID_FLASH = {0xD27CDB6E,0xAE6D,0x11CF,{0x96,0xB8,0x44,0x45,0x53,0x54,0x00,0x0}};HRESULT hr = CoInitialize( NULL );
if( SUCCEEDED(hr) )
{
hr = CoCreateInstance( CLSID_FLASH, NULL, CLSCTX_INPROC_SERVER, IID_FLASH, (void**)&g_pFlash );
if( SUCCEEDED(hr) )
{ // 播放
g_pFlash->LoadMovie( 0, "F:\\Test\\WIN32Test\\AAA.swf" );
g_pFlash->Play();
}
}
REFCLSID rclsid, //CLSID associated with the class object
DWORD dwClsContext,
//Context for running executable code
COSERVERINFO * pServerInfo,
//Pointer to machine on which the object is to
// be instantiated
REFIID riid, //Reference to the identifier of the interface
LPVOID * ppv //Address of output variable that receives the
// interface pointer requested in riid
);
= { 0xd27cdb6e, 0xae6d, 0x11cf, { 0x96, 0xb8, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 } };
const IID IID_FLASH = {0xd27cdb6c,0xae6d,0x11cf,{0x96,0xb8,0x44,0x45,0x53,0x54,0x00,0x00}}; HRESULT result=(0);
IClassFactory *icf=(0);
IShockwaveFlash *sf=(0);
result = CoInitialize(NULL); if(SUCCEEDED(result))
{
result = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(IShockwaveFlash),(VOID**)&sf);
if(SUCCEEDED(result))
{
result = sf->LoadMovie(0,"E:\\opop\\ff.swf");
if(SUCCEEDED(result))
{ result = sf->Play();
if(SUCCEEDED(result))
{}
else
MessageBox(_T("打开文件失败!"));
}
else
{
MessageBox(_T("打开文件失败!"));
}
}
else
{
MessageBox(_T("创建对象失败"));
}
}
else
{
MessageBox(_T("初始化失败"));
}
代码执行没问题。。但是play执行以后没反映。。我的这个flash插入了一个mp3直接播放的。。
您发的地址我看过了不是我要的。。他讲的是先insert ActiveX Control,然后创建flash Control的一个映射,再进行操作。
我问的是#import 进来,然后通过一些com函数实现播放和显示