橘子皮

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 
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”);
 
posted on 2007-03-06 11:43  橘子皮  阅读(304)  评论(0编辑  收藏  举报