描述:
各位高手,小弟正在开发一个firefox的插件,这个插件里面需要用到我们自己定义好的ocx控件,由于firefox的插件开发是必须基于win32的dll项目的,所以无法在工具箱里面直接把ocx控件拖过去,只好使用代码调用的方式,代码如下:
//////在这里导入ocx文件
#import "BanaX.ocx"
using namespace BanaXLib;
/////////
////////这里省去一些无关的代码
//////////
::CoInitialize(NULL);
CLSID clsid;
IID iid;
::CLSIDFromString(L"{67004315-CF72-4E45-A739-6DB3959A7010}",&clsid);
::CLSIDFromString(L"{EAA1A185-91C7-4056-88C7-9B2454280EF8}",&iid);
BanaXLib::_DBanaXPtr bana;
///////////////////////在这里创建控件接口
HRESULT hr=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,iid,(LPVOID*)&bana);
//////////////////////
if(SUCCEEDED(hr))
{
MessageBox(NULL,_T("OK!"),_T("Done"),MB_OK);
}
else
{
MessageBox(NULL,_T("Failed!"),_T("Error"),MB_OK);
}
if(bana)
bana.Release();
::CoUninitialize();
现在的问题是,我的控件接口bana是创建成功了,问题是如何在初始化我们的控件,是否要用到控件的容器,调用的代码是怎样的?我在网上找了好久,网上说的方法分别有:1)使用IDispatch::Invoke函数 2)使用CAxWindow类
可是我都试过,就是不成功,请大家帮帮忙,我比较急~最好要有详细的代码,跪谢