工控编程吧
标题:
上位机MFC 如何在应用程序内部注册ActiveX 控件
[打印本页]
作者:
qq263946146
时间:
2019-8-16 11:22
标题:
上位机MFC 如何在应用程序内部注册ActiveX 控件
使用按钮调用下面函数,浏览控件文件,打开文件。
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;
}
}
复制代码
这样就可以注册了。
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4