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 }