比如CTreeView::OnTvnSelChanged之类的MFC消息映射函数都是void类型的,但是在函数内部需要调用COM组件,从而需要处理HRESULT类型的返回值。由于CTreeView::OnTvnSelChanged是void的,如果COM调用出错,便所以无法继续往上传递。貌似只能使用C++ Exception或者SEH,但是又不知道如何handle那些异常。希望有经验的介绍一下,在这种情况下如何进行返回值处理比较好。

解决方案 »

  1.   

    要么就在OnTvnSelChanged内部处理com返回的各种错误等,然后OnTvnSelChanged 直接返回,可以增加一些调试log等记录出错的信息
      

  2.   

    谢谢楼上两位,你们的意思是说OnTvnSelChanged以上就没有办法handle异常或者返回值了?加log或者assert并不是错误或者异常的处理方法。
      

  3.   

    如果我遇到类似的情况,我能想到的也只可能是抛出异常处理。或者做类似GetLastError的函数,通过GetLastError值来判断。
      

  4.   

    消息函数一般都是void的,他里面的错误就不往外传了
      

  5.   


    本身MFC处理消息大部分都是void的,也是为了不影响正常的消息传递。如果想要进行你上面所说的内容,直接打出个MSG,然后给程序POST的退出的MSG就可以了。
      

  6.   

    COM错误就是错误,没有异常,你该保存某些错误状态,可以提示用户,可以写日志,可以交给错误处理函数,也可以函数内直接处理了。