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”);