小弟以前没做过ActiveX控件,现在有个项目很急,突然让我去做这样一个ActiveX插件:在别人已有ocx(假设为a.ocx)的基础上调用该控件(即为名为a.ocx的控件)。就是类似ActiveX内嵌ActiveX,小弟用的是MFC,怎么做呢?
试过一些方法最后不行,会不会是根本就不能内嵌呢?
已经纠结几天了,还是上来问问大牛们。拜托了。
试过一些方法最后不行,会不会是根本就不能内嵌呢?
已经纠结几天了,还是上来问问大牛们。拜托了。
解决方案 »
- 诡异的fprintf
- active造成其他的IE选项卡关闭
- 求助!!!如何将CString转化为LPCWSTR?
- 求<COM技术内幕>附带光盘
- 大家给我翻译一下 “but they're handy to have around nonetheless“
- vc++调用AfxBeginThread 内存增长 迅猛 直至软件报错
- 在广州谁愿意做VC兼职老师,日薪100元起(可协议)
- 一个程序运行时出现的问题
- 急...GetRecordInfoFromTypeInfo返回E_INVALIDRAG
- “无法定位。。EnumProcessModulesEx于PSAPI.DLL上“是怎么回事?
- : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
- 服务程序如何监视用户登录?
如果只是类似对话框使用这个控件的话,在对话框上右键添加ActiveX控件,就像添加一个按钮一样简单。可问题是用MFC向导建立的工程,没有可视化的控件,怎么右键添加呢?我试过用类向导添加这个控件的类,再声明对象,但是没有一个实体的IDD_XXX给它,运行到InvokeHelper就出错。
我也试过创建一个对话框,将我们自己的控件指向这个对话框,再将已有的a.ocx添加进入这个对话框,就像添加一个按钮一样,但是也出错,和前面的那个一样。
创建工程就是按照向导创建的。对话框m_topWnd就是这个窗口类声明的变量。int Ca_TabletCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: 在此添加您专用的创建代码
if (!m_topWnd.Create(IDD_DIALOG1,this))
{
return -1;
}
return 0;
}
::CoInitialize(0);
AfxEnableControlContainer();
做一下初始化。
http://blog.sina.com.cn/s/blog_467338ba01000028.html
谢谢你的回答。但是我这边不是不能注册的问题,程序使用自己制作的控件也没问题,就是在ActiveX内嵌ActiveX时出错。
谢谢你的方法,这个方法我试过了,在没有加入我的另一个ActiveX控件的时候是正常的,但是当我加入另一个ActiveX控件时,对话框构造过程中,运行到构造该控件,就不行了。
是不是我哪些注意事项没做好?求教。