使用按钮调用下面函数,浏览控件文件,打开文件。
- void CDemoDlg::OnTest()
- {
- //文件扩展名
- CString strFilter = _T("ActiveX 控件|*.*||");
- //创建文件对话框
- CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY |
- OFN_OVERWRITEPROMPT, strFilter);
- //对话框标题
- dlg.m_ofn.lpstrTitle = _T("浏览文件");
- if(dlg.DoModal() == IDOK)
- {
- //获得文件路径
- CString strPathName = dlg.GetPathName();
- if (DllRegister(strPathName))
- {
- AfxMessageBox(_T("注册ActiveX 控件成功。"));
- }
- else
- {
- AfxMessageBox(_T("注册ActiveX 控件失败。"));
- }
- }
- }
复制代码 如上代码调用 了我们自己编写的函数DllRegister。
- BOOL DllRegister(LPCTSTR lpszDllName)
- {
- ASSERT(lpszDllName != NULL);
- ASSERT(AfxIsValidString(lpszDllName));
- //加载ActiveX控件
- HINSTANCE hLib = LoadLibrary(lpszDllName);
- if (hLib == NULL)
- {
- TRACE(_T("%s加载失败\n"), lpszDllName);
- return FALSE;
- }
- //获得注册函数DllRegisterServer地址
- FARPROC lpDllEntryPoint;
- lpDllEntryPoint = GetProcAddress(hLib, _T("DllRegisterServer"));
- //调用注册函数DllRegisterServer
- if (lpDllEntryPoint != NULL)
- {
- if (FAILED((*lpDllEntryPoint)()))
- {
- TRACE(_T("调用DllRegisterServer失败\n"));
- FreeLibrary(hLib);
- return FALSE;
- }
- else
- {
- FreeLibrary(hLib);
- return TRUE;
- }
- }
- else
- {
- TRACE(_T("调用DllRegisterServer失败\n"));
- FreeLibrary(hLib);
- return FALSE;
- }
- }
复制代码 这样就可以注册了。
|