我做的软件使用了ocx控件MSHFlexGrid,在我正在开发的计算机上完全好用。当拷贝到没有开发环境上的计算机时,我想到了要注册控件,于是我在那台机器上的system32目录下拷贝了MSHFLXGD.OCX,并在开始->运行里执行“regsvr32 MSHFLXGD.OCX”,OK,注册成功,但是在我的程序里这个控件还是不能被显示出来;
于是,我做了如下程序:
BOOL CUIApp::RegisterOCX(LPCTSTR lpszOcxFileName, BOOL bRegister)
{
char lpszFileName[200];
sprintf(lpszFileName, "%s\\%s",gpszModulePath,lpszOcxFileName);
HINSTANCE hLib = LoadLibrary(lpszFileName);
if(hLib == NULL)
{
return FALSE;
}
FARPROC lpEntryPoint;
if(bRegister)
{
lpEntryPoint = GetProcAddress(hLib, _T("DllRegisterServer"));
}
else
{
lpEntryPoint = GetProcAddress(hLib, _T("DllUnregisterServer"));
}
if(lpEntryPoint != NULL)
{
if(FAILED((*lpEntryPoint)()))
{
FreeLibrary(hLib);
return FALSE;
}
else
{
return TRUE;
}
}
else
{
return FALSE;
}
}
并在InitInstance函数里进行调用,在函数里执行也成功,但是还是显示不出来。
但是我在那台机器上装上了VC就可以正常使用了。
这是怎么里事呢?
别告诉我说用InstallShield做安装程序,1.我不太会;2.程序没有彻底完成;3.我想知道原因;
于是,我做了如下程序:
BOOL CUIApp::RegisterOCX(LPCTSTR lpszOcxFileName, BOOL bRegister)
{
char lpszFileName[200];
sprintf(lpszFileName, "%s\\%s",gpszModulePath,lpszOcxFileName);
HINSTANCE hLib = LoadLibrary(lpszFileName);
if(hLib == NULL)
{
return FALSE;
}
FARPROC lpEntryPoint;
if(bRegister)
{
lpEntryPoint = GetProcAddress(hLib, _T("DllRegisterServer"));
}
else
{
lpEntryPoint = GetProcAddress(hLib, _T("DllUnregisterServer"));
}
if(lpEntryPoint != NULL)
{
if(FAILED((*lpEntryPoint)()))
{
FreeLibrary(hLib);
return FALSE;
}
else
{
return TRUE;
}
}
else
{
return FALSE;
}
}
并在InitInstance函数里进行调用,在函数里执行也成功,但是还是显示不出来。
但是我在那台机器上装上了VC就可以正常使用了。
这是怎么里事呢?
别告诉我说用InstallShield做安装程序,1.我不太会;2.程序没有彻底完成;3.我想知道原因;
MSDN找不到这个控件用什么东西,至少我没有找到,yalechenfly(风轻云淡)你能找到吗?