zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    微信公众平台开发(51)会员卡
    iOS UIViewController的瘦身计划
    NSProxy
    Xcode
    NSPredicate
    NSArray、NSDictionary
    iOS Runtime
    iOS UmbrellaFramework
    iOS UmbrellaHeader
    iOS OCR
  • 原文地址:https://www.cnblogs.com/cxjchen/p/2715031.html
Copyright © 2011-2022 走看看