VC 无界面DLL调用ocx时退出出错问题

在无界面DLL中使用OCX功能时,程序退出时可能出现错误,这可能是由于OCX对象释放的问题。传统的创建和使用方式会导致退出错误。为解决此问题,建议通过创建一个临时对话框,并在其中加入OCX对象,然后在对话框类中添加OCX对象的变量。在调用DLL时,首先获取OCX的CLSID,然后创建对话框实例,并通过对话框实例调用OCX内的函数,以此避免退出时的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于没有界面,纯粹是导出功能函数的DLL,在使用ocx的功能时,退出总是报错,估计是ocx对象释放问题

我们不能像普通的ocx创建一样来使用它例如下面的语句,创建和使用没有问题,但是退出报错

clsCAXSecurity.Create(NULL, WS_CHILD, CRect(0,0,0,0), AfxGetMainWnd(), IDC_AXSECURITY_OCX)

clsCAXSecurity为ocx生成的类的对象

 

我们要创建一个对话框,然后在对话框中加入ocx对象,同时在对话框类中添加此ocx对象的变量clsCAXSecurity(注:在添加ocx变量时会同时生成ocx的导入类)

 

这样我们在调用的时候定义一个对话框类的的对象比如CDlgAXSecurity  DlgAXSecurity;

然后可以像下面这样创建DlgAXSecurity

   CLSID clsid;

   CLSIDFromProgID(OLESTR("AXSECURITY.AXSecurityCtrl.1"), &clsid);
   if (clsid != GUID_NULL)
   {
         if (DlgAXSecurity.m_hWnd == NULL)
         {
               DlgAXSecurity.Create(IDD_AXSecurity);
         };
   }
   else
   {
         AfxMessageBox("AXSecurity.ocx可能未注册!");
   }

 

调用ocx内的函数可以这样调用了DlgAXSecurity.clsCAXSecurity.ocx内的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值