描述:
我在基于对话框的工程中,程序主界面上放了一个控件,这个控件是一个摄像头开发包提供的。当我连接摄像头时,可以正常工作。
但是如果不连接摄像头,我只要一启动程序(启动时没有让摄像头开始工作),就会有报错说没有摄像头(不会退出)。把程序最小化,再显示,就再报错。
单步调试可以确定是在 CMyProApp::InitInstance() 里面的 int nResponse = dlg.DoModal(); 这一句报的错。我把这句用 try catch 包起来也没有用,捕获不到异常。
报错信息是做在控件里面的,但是又没有提供捕获异常的API,请问我怎么能捕获这种报错?我想针对错误进行处理,或者改为我自己的报错信息。
解决方案1:
这个问题恐怕只能找开发商解决,你加try...catch...没用。
只有他在控件的代码里加,或者像1楼说的那样,返回一个事件进行指示。
另外,如果是普通的数码摄像头,你干脆自己写个控件代替开发商的那个控件得了。
利用Windows API就可以完成的。
http://blog.csdn.net/zhoujianhei/archive/2007/12/04/1915505.aspx
解决方案3:用spy++跟踪一下对话框窗口的消息,看看最后的消息是什么
解决方案4: 他提示错误也是调用的系统api。
如果没有源码,可以以改写进程内系统api的方式来捕获。
也就是所谓的hook win32 api
找摄像头开发商
控件应该有事件来应对没接摄像头的情况,或者函数返回异常