关于OCX控件的二次封装

无法支持的类型 2018-10-10 05:08:35
我现在要对一个ocx控件进行封装,原ocx是带界面的,我用MFC窗体 静态加载上这个控件,然后编译没有问题。但是用IE或者exe调用会出现闪退。然后我搜索到动态加载,

RECT rc;
GetClientRect(&rc);
bool f = m_pCwFacelive.Create("", WS_CHILD | WS_VISIBLE, rc, this, 0);
if (f)
{
m_pCwFacelive.cwInit();
}

会报错,0xC0000005: 读取位置 0x00000000 时发生访问冲突。
然后我又找到一个方法,直接Loadlibrary(),但是在调用注册函数时lpDllEntryPoint() 失败。
现在求大神指导一下应该怎么去做。。。
原有ocx是第三方的控件,没有源代码
...全文
261 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 zero_226 的回复:
原ocx的窗口,带的界面是mfc的吗?如果不是,可能是会出现一些问题的。你可以看看ocx窗口的属性,类名啥的。最好用个同类型的界面库来封装。
原有的窗体是MFC的,这个窗体加载进MFC界面没有问题。但是插入MFC控件然后再插入MFC界面就会崩溃
zero_226 2018-11-09
  • 打赏
  • 举报
回复
原ocx的窗口,带的界面是mfc的吗?如果不是,可能是会出现一些问题的。你可以看看ocx窗口的属性,类名啥的。最好用个同类型的界面库来封装。
hongkun18 2018-10-19
  • 打赏
  • 举报
回复
好久没搞com了。
建议你先用学个mfc窗口程序,注册ocx,再把ocx控件拖进去,测试下,看ocx是否是ok的。
然后在你的“MFC窗体 静态加载demo”中使用ocx的绝对路径测试,而且保证com的依赖库要全。
蒋晟 2018-10-11
  • 打赏
  • 举报
回复
控件是32位的话在64位进程中创建不会成功。 另外控件需要额外的DLL的话在IE标签页进程的当前路径不同的场合也可能找不到。可以预先去手动加载那些DLL。
  • 打赏
  • 举报
回复
引用 2 楼 jiangsheng 的回复:
控件是32位的话在64位进程中创建不会成功。
另外控件需要额外的DLL的话在IE标签页进程的当前路径不同的场合也可能找不到。可以预先去手动加载那些DLL。

我是创建的32位的程序,另外预先手动加载怎么设置呢?我目前用的是SetCurrentDirectory设置目录的办法。
  • 打赏
  • 举报
回复
我快被搞疯了。。。

3,245

社区成员

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

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