各位高手,小弟正在开发一个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类
可是我都试过,就是不成功,请大家帮帮忙,我比较急~最好要有详细的代码,跪谢
//////在这里导入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类
可是我都试过,就是不成功,请大家帮帮忙,我比较急~最好要有详细的代码,跪谢
解决方案 »
- 求救:MFC+ADO+ACCESS 将两个表的内容显示到listctrl上
- 关于WPF和MFC,原来老外也吵得不可开交……
- ffdshow video encoder的clisid???
- 救命呀!CFrameWnd 中的Scroll问题!
- 为什么release版本启动时很长时间没响应?
- 我的程序ShowWindow(SW_HIDE);后出问题了,请高手来指点一下。
- 初学:单链表
- ++++++++++++是谁说:一定要先学《SDK》,再学《MFC》+++++++++++++++?
- 高分求解:能不能在静态链接库中加入资源?如何使用它的资源?
- 关于画圆
- MFC的日历控件如何设置1970年前的日期?
- ODBC数据库删除语句问题
项创建它的实例可以调用
CAxWindow::CreateControl
我给出里面的一些代码
///////////////这段代码是在插件的Init()函数里面的
#ifdef XP_WIN
InvalidateRect(m_hWnd, NULL, TRUE);
UpdateWindow(m_hWnd);
#endif也就是说,可以在这个函数里面获取到HWND m_hWnd句柄,该句柄代表在firefox里面插件窗口的句柄,并不是firefox的句柄,比如,如果我的插件规定了插件窗口的大小为400*300,那么该句柄就代表这个400*300的窗口,并且可以在这个窗口里面绘制win32的图形啊,界面什么之类的