VS2008使用MSCOMM控件捕捉port already open的错误提示

最近学习使用MSCOMM控件编写一个简单的串口收发程序,基本功能已经基本实现,但是在我选择已经被占用的串口时,系统会自动弹出“port already open”的提示,虽然会有提示,但是总是让人很不爽,想自己捕捉到这个错误进行处理。

找了好多资料,搜遍了GOOGLE都没有找到解决方法,后来只要自己解决了。

我发现MSCOMM控件的方法都调用InvokeHelper()函数进行处理,于是我在网上搜索InvokeHelper()抛出的异常,还真找到了。

这个函数将参数转换为VARIANTARG值,然后对OLE控件调用IDispatch::Invoke方法。如果对IDispatch::Invoke的调用失败,这个函数将抛出一个异常。如果IDispatch::Invoke返回的SCODE(状态码)是DISP_E_EXCEPTION,则这个函数抛出一个COleException对象;否则它抛出一个COleDispatchException对象。"

所以我使用TRY...CATCH...模块捕捉了COleDispatchException错误,终于实现了捕捉这个错误。

代码如下:

1 TRY 

2 {

3       //TODO 要捕捉的语句

4 }

5 CATCH(COleDispatchException, e)

6 {

7       MessageBox("");

8 }

9 END_CATCH

 

 

你可能感兴趣的:(vs2008)