bool CCollectDataDlgDlg::CreateMyCtrl(LPRECT lpRect, UINT nID, CWnd *pParent)
{
 CLSID clsid;
 wstring strClsid = _T("{126983A5-3415-4A3F-B2C6-D18DDF6E43B9}"); // 控件id号

CCOMHelper  COMHelper;
 COMHelper.clsid_from_string(&clsid, strClsid.c_str());

BOOL bSucc = false;
 TCHAR szMsg[1024] = {0};

try
 {

// MyCtrl必须是全局的CWnd类对象
  bSucc = m_MyCtrl.CreateControl(
   clsid, 
   _T("CollectData"),
   WS_CHILD | WS_VISIBLE| WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
   CRect(lpRect),
   pParent,
   nID,
   NULL, FALSE, NULL);
 }
 catch (CMemoryException* e)
 {
  e->GetErrorMessage(szMsg, 1024);
  e->Delete();
 }
 catch (CFileException* e)
 {
  e->GetErrorMessage(szMsg, 1024);
  e->Delete();
 }
 catch (CException* e)
 {
  e->GetErrorMessage(szMsg, 1024);
  e->Delete();
 }

if (!bSucc)
 {
  AfxMessageBox(_T("创建CollectData.ocx控件失败\r\n请检查CollectData.ocx控件是否安装并注册"));
  return false;
 }

IUnknown *pUnk = m_MyCtrl.GetControlUnknown();
 CComQIPtr<_DCollectData> spDCollectDataCtl(pUnk);
 if (spDCollectDataCtl == NULL)
 {
  AfxMessageBox(_T("无法从CollectData.ocx中获取_DCollectData接口"));
  return false;
 }

return true;
}

注意:必须在工程的app文件的InitInstance()中加入如下代码,否则动态创建控件不会成功

AfxEnableControlContainer();

上述只是动态创建了ocx控件,但控件的接口函数等还是不能用,必须按下面的步骤,控件的接口等才会被识别:
在你加载该ocx控件的主工程节点中单击鼠标右键,在弹出的菜单中选择“添加---->类”菜单,在弹出的对话框中选择如下红色圈圈中的项:
单击“添加”按钮,弹出如下对话框
上面对话框罗列出了注册表中所有的ocx控件,找到你要添加的控件,单击“完成”,此时会生成一个封装该ocx的cpp和.h文件,在主程序中包含该.h即可使用该ocx控件中的接口了

转载于:https://www.cnblogs.com/huty/p/8518426.html

【VS开发】动态创建ActiveX控件相关推荐

  1. asp.net 动态创建TextBox控件 如何加载状态信息

    接着上文Asp.net TextBox的TextChanged事件你真的清楚吗? 这里我们来说说状态数据时如何加载的. 虽然在Control中有调用状态转存的方法,但是这里有一个判断条件 if (_c ...

  2. VC6开发视频监控ActiveX控件总结

    总结前段时间在VC6下使用MFC开发视频监控控件过程中遇到的一些问题. 1.获取控件当前所在路径,用于读取该目录下的INI配置文件 获取配置文件路径 2.获取当前运行控件的电脑上的固定盘符列表,用于本 ...

  3. [原]动态创建Web控件制做计算器

    最近参加了Web基础开发的培训,收获不少,做了一个练习,在后台动态创建控件制作了一个简单功能的计算器.程序中控件创建好以后,往往不能放在想要的位置,前台的布局非常麻烦,我用Table.TableRow ...

  4. FindChildControl与FindComponent(动态创建的控件要通过Owner.FindComponent去找该控件)

    前两天编码遇到了要使用FindChildControl方法获取指定名称的TSpeedButton按钮,结果折腾了半天就是没得结果(基础不扎实,呵呵),于是赶紧搜索了下,补习关于这两个方法的用法. TW ...

  5. VB编程动态注册ActiveX控件

    在使用VB和其它一些Win9X下的编程软件,就要同ActiveX控件打交道,注册 和反注册控件是一件令人很头疼的事情.有时从网上下载了一个控件,但是在使用 时VB总是提示控件没有注册.又或者想删除一个 ...

  6. js动态创建html控件,通过JS动态添加html控件后,添加样式以及OnClick

    /** * 新增标签 * @param count */ function addLabel(count){ var image_id_obj = document.getElementById(&q ...

  7. MFC ActiveX控件的创建

    参考资料:MFC ActiveX (ocx)控件的开发_hk的博客-CSDN博客MFC ActiveX (ocx)开发https://blog.csdn.net/hkcsdn/article/deta ...

  8. MFC ActiveX控件的3种调用方式

    导读 1.导入ActiveX控件,拖放ActiveX控件方式 2.动态创建ActiveX控件 3.COM调用方式 1.导入ActiveX控件,拖放ActiveX控件方式 1.工具箱添加ActiveX控 ...

  9. [转]使用C#开发ActiveX控件

    前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...

最新文章

  1. flutter中分割线效果实现(三种方法)
  2. react 判断图片是否加载完成_React中型项目的优化实践
  3. netty实现高性能文件服务器,通用文件服务组件(Netty实现版本)
  4. matlab窗函数 响应,matlab窗函数设计方案.doc
  5. EBB-23、DNS服务
  6. jq输出html 单引号引号转义符,javascript - 由于JSON中的单引号转义,jQuery.parseJSON抛出“无效的JSON”错误...
  7. python re.sub
  8. Laravel跨数据库事务的实现
  9. 存储器的分类及层次结构
  10. python指数函数ks检验_python指数函数不正确的指数值
  11. 【ACM- OJ】《六度分离》C++
  12. 整除分块 B - Make Divisible
  13. -XX:SoftRefLRUPolicyMSPerMB从名字看不出什么意思?【官文解读】
  14. mac 重装 mysql
  15. 一起来读书361- 应用密码学:第十一章 数学背景
  16. Springboot源码分析第一弹 - 自动装配实现
  17. EMNLP2020 | 近期必读Transformer精选论文
  18. 【ABAP学习】数据类型
  19. ICH4芯片LAN控制器寄存器
  20. SVG 画正六边形的进度条~奇奇怪怪的需求

热门文章

  1. 能量平衡_能量平衡原则
  2. 禅道 bug状态 open_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...
  3. 大闹天竺里的机器人_在《大闹天竺》中哪一位演员是你喜欢的
  4. win10格式化linux分区,直接删除linux分区再重装linux可以恢復启动么,我是直接在win10里把linux mint...
  5. 重装上阵怎么造简便机器人_重装上阵怎么造厉害的机器人?新人必看的干货组装教学[多图]...
  6. append有时加载不出来_关于艾拉浏览器看漫画,有时加载慢的解决方法,你知道了吗...
  7. 判断是否是完全二叉树_【数据结构】二叉树高频考试题目【代码模板】!
  8. VS与QT的路径查找差异
  9. 2top 存储过程 查看_S7-1500 PLC的存储区
  10. 条令考试小程序辅助器_应知应会条令纲要学习微课堂(六)