楼上正解
运行:regsvr32 路径\控件.ocx

解决方案 »

  1.   

    我在我的程序中已经注册过了,下面是我的注册代码.
    //ActiveX控件的路径及文件名
    LPCTSTR pszDllName="MSFLXGRD.OCX";
    //装载ActiveX控件
    HINSTANCE hLib = LoadLibrary(pszDllName);
    if (hLib < (HINSTANCE)HINSTANCE_ERROR)
    {
    MessageBox(NULL,"不能载入Dll文件!","结果",MB_OK);
    return;
    }
    //获取注册函数DllRegisterServer地址
    FARPROC lpDllEntryPoint; 
    lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer"));
    //调用注册函数DllRegisterServer
    if(lpDllEntryPoint!=NULL)
    {
    if(FAILED((*lpDllEntryPoint)()))
    {
                MessageBox(NULL,"调用DllRegisterServer 失败!","结果",MB_OK);
                FreeLibrary(hLib);
                return;
    }
    // MessageBox(NULL,"注册成功","结果",MB_OK);
    }
    else
    MessageBox(NULL,"调用DllRegisterServer失败!","结果",MB_OK);
    后来我在没有VC的机子运行不行,
    我又用regsvr32在没有VC的机子上运行 ,还是显示不了MSFLEXGRID.
    是怎么回事,大家帮忙.
      

  2.   

    这是我的注册代码,不知道对不对,我把它放在了一个函数中,在ONNEWDOCUMENT中调用,
    //ActiveX控件的路径及文件名
    LPCTSTR pszDllName="MSFLXGRD.OCX";
    //装载ActiveX控件
    HINSTANCE hLib = LoadLibrary(pszDllName);
    if (hLib < (HINSTANCE)HINSTANCE_ERROR)
    {
    MessageBox(NULL,"不能载入Dll文件!","结果",MB_OK);
    return;
    }
    //获取注册函数DllRegisterServer地址
    FARPROC lpDllEntryPoint; 
    lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer"));
    //调用注册函数DllRegisterServer
    if(lpDllEntryPoint!=NULL)
    {
    if(FAILED((*lpDllEntryPoint)()))
    {
                MessageBox(NULL,"调用DllRegisterServer 失败!","结果",MB_OK);
                FreeLibrary(hLib);
                return;
    }
    // MessageBox(NULL,"注册成功","结果",MB_OK);
    }
    else
    MessageBox(NULL,"调用DllRegisterServer失败!","结果",MB_OK);