通过代码动态注册OCX控件

 
1.       在APP初始化中:
if (FAILED(OleInitialize(NULL)))
   {
      AfxMessageBox("OLE initialization failed.Make sure that the OLE libraries are the correct version.") ;
      return FALSE ;
   }
2.在需使用的对话框及程序开头处加入
#ifdef _WIN32
#define LOADLIBRARY_FAILED(x) (x == 0)
#else
#define LOADLIBRARY_FAILED(x) (x <= HINSTANCE_ERROR)
#endif
 
//定义函数地址
STDAPI DllRegisterServer(void) ;
STDAPI DllUnregisterServer(void) ;
typedef HRESULT (STDAPICALLTYPE *CTLREGPROC)();
 
3.       定义注册函数
BOOL CNetMeetDlg::Register(CString strOcx)    //strOcx为需注册的OCX名称
{
              BOOL bResult = FALSE;
              HMODULE hModule = ::LoadLibrary(strOcx) ;
              if (LOADLIBRARY_FAILED(hModule)) return FALSE ;
      
              //获得注册函数地址
              CTLREGPROC DLLRegisterServer =
            (CTLREGPROC)::GetProcAddress(hModule,"DllRegisterServer" ) ;
              if (DLLRegisterServer != NULL)
              {
                     HRESULT regResult = DLLRegisterServer() ;
                     bResult = (regResult == NOERROR) ;
              }
              ::FreeLibrary(hModule) ;
        return bResult;
}
 
4.在需注册的地方加入Register(“name.OCX”);
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值