我做的软件使用了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.我想知道原因;

解决方案 »

  1.   

    上MCDN搜索MSHFlexGrid需要哪些东西?
      

  2.   

    regsvr32 MSHFLXGD.OCX, !!!要控件的绝对路径!!!!路径要写全了
      

  3.   

    楼上的,人家regsvr32 MSHFLXGD.OCX都执行成功了,还有什么路径问题吗?否则就说找不到文件了,只要MSHFLXGD.OCX文件在当前目录或path目录中,就不用写路径。你的“真理”是哪老师告诉你的?
      

  4.   

    建议用WinExec函数试试,再用Depends看看MSHFLXGD.OCX是否还需要其它组件,比如它还需要另一个dll文件,那么先要保证系统里有了这个dll文件才能注册成功。这个问题以前在我第一次遇到的时候也是搞得我摸不着头脑。
      

  5.   

    如果拷贝到了system32路径下好象就不用加路径了,何况系统提示成功了; 
    MSDN找不到这个控件用什么东西,至少我没有找到,yalechenfly(风轻云淡)你能找到吗?
      

  6.   

    我已经用Depends看了MSHFLXGD.OCX所需要的DLL,并在测试的机器上查看了一下,发现在那里并不缺少这些DLL,为了以防万一,我这些能注册的DLL又注册了一下。还是不行。
      

  7.   

    我也想知道,怎么注册OCX控件的问题,他已经捆饶我好久了