zoukankan      html  css  js  c++  java
  • 通过代码动态注册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”);
     
  • 相关阅读:
    使用servicename连接Oracle数据库
    使用SID连接Oracle数据库
    使用xlrd模块
    【Project Euler 8】Largest product in a series
    Git使用帮助
    【Project Euler 1】Multiples of 3 and 5
    VSCode使用新体验
    导出牛顿引力形式为平方反比的两种方式
    NOIP2018游记
    即将退役声明
  • 原文地址:https://www.cnblogs.com/tyjsjl/p/2156083.html
Copyright © 2011-2022 走看看