2011-06-27 17 views
1

プロパティシートのページハンドラー(たとえば、OnInitDialogハンドラー)内ではなく、トップレベルアプリケーションのtry-catchブロックで例外をキャッチして処理したいと考えています。したがって、以下のコードでは、これらの例外はcatch(...)ブロックで処理されるはずです。プロパティシートのページハンドラーからスローされた例外

try { 

CMyPropertySheet sheet; 
sheet.DoModal(); 

} catch (...) { 

// i want to handle an exception here 

} 

ただし、OnInitDialogが例外をスローすると、Windowsデストラクタを実行した後でアサートが(デバッグモードで)表示されます。 CMyPropertySheetデストラクタのEndDialog(m_hWnd、IDCANCEL)を呼び出しても、アサートは残ります。不足しているものや壊れているものを検出するのを手伝ってください。私はWTLを使用します。私のプロパティシートclaaはCPropertySheetImplから派生しています。

ありがとうございました。

答えて

0

Cインターフェイス(CreateDialog、DispatchMessageなど)から例外を安全に渡すことはできません。彼らは窓の手順から逃げる前にそれらを捕まえなければなりません、何とか呼び出し元にそれらを転送し、そこからそれらを再スローする。あなたは一般的にC++ 0xでそれを行うことができますが、おそらくそれをまだサポートしていないでしょう。 boost::exceptionsを使用してC++ 03で近似してみてください。

関連する問題