在DLL中的一个视图中定义一个CMSChart的对象,用Create方法生成控件时有时会失败,程序就一直停在那里.有时又是好的.这里用到的MsChart6.0是封装到另一个DLL中来导出的.不知道这是什么原因.
一、是不是资源冲突,导致ocx的容器无效?
二、是不是封装到DLL中的MSCHART跟系统自带的MSCHART6。0产生了冲突?希望高手帮忙给点提示。急啊。

解决方案 »

  1.   

    CAxWindow::CreateControl
    HRESULT CreateControl( LPCOLESTR lpszName, IStream* pStream = NULL, IUnknown** ppUnkContainer = NULL );HRESULT CreateControl( DWORD dwResID, IStream* pStream = NULL, IUnknown** ppUnkContainer = NULL );Return ValueA standard HRESULT value.ParameterslpszNameA pointer to a string to create the control. Must be formatted in one of the following ways: A ProgID such as "MSCAL.Calendar.7"
    1、试试上面的函数;
    2、创建控件你是放在哪里创建的?
      

  2.   

    创建控件是在视图的OnInitUpdate里创建的.
    CreateCtrol()这个函数MSChart会自动去调用,最终调用工厂类去生成对象.今天跟了一样,报错0x800401154,提示控件是否已注册.如果是未注册的话,为什么有时候又可以创建成功呢?该如何手动注册?
      

  3.   

    在DOS下:   regsvr32 *.ocx
      

  4.   

    注册了也没用.mschart应该默认就是注册了的.
      

  5.   

    小问题,应该是没有做签名。
    去这看看
    http://support.microsoft.com/kb/151771/zh-cn