DShowLib是IMAGE CONTROL提供的1394接口相机开发库。在使用该库时出现了与COM控件(比如:WEB控件)的冲突,OLE初始化失败,导致所有基于COM技术的控件无法使用,出现运行时错误(控件窗口创建失败)。调试分析结果为DShowLib的initial过程其实也是OLE的初始化,但其修改了一些设置导致其它COM控件无法使用。

解决办法:
        优先初始化OLE,将DShowLib的initial放在后边,等所有其它COM控件创建完成后再进行DShowLib之grabber等的创建。这样既可以避免如上所述之问题。

 1  DShowLib::Grabber  * p_Grabber;   // 必须定义成指针
 2  C ** WinApp theApp;
 3 
 4  void  C ** WinApp::Initialize()
 5  {
 6      /**/
 7      if ( ! AfxOleInit())
 8         return  ;
 9      if ( ! DShowLib::initial( "" ))
10           return  ;
11      //
12     p_Grabber = new  DShowLib::Grabber();
13      //
14  }