1

WebBrowserコントロールとMFCHTMLダイアログを使用して、ポータブルC++アプリケーションインターフェイスを構築します。私はwindow.external(実際には私のダイアログクラスです)を使用して、ブラウザー内のJavaScriptコードのC++機能を公開しています。したがって、たとえば、ユーザーが設定を保存したい場合は、[保存]ボタンをクリックします。この場合、次のようにwindow.externalを呼び出します。

<script type="text/javascript">
$("#Save").click(function() {
try
{
   window.external.Save();
}
catch(error)
{
   alert(error);
});
</script>

さて、HTMLダイアログには次のようなメソッドがあります。

void CMyDialog::Save()
{
   // Do something...
}

ユーザーが無効な設定を入力した場合、CMyDialog :: Save()内で例外を生成してメソッドの実行を停止し、エラーメッセージを表示することは論理的に見えます。ただし、ここでの問題は、C ++例外をJavaScriptで処理する必要があることであり、それを実装する方法がわかりません。つまり、JavaScriptがtry-catchステートメントで例外を処理できるようにC ++コードで例外をスローする方法はありますか? PSこの問題を回避する方法があることを理解しています。たとえば、例外をスローする代わりにSaveメソッドからエラーコードを返し、成功した場合は0を返すことができます。ただし、少なくとも私にとっては、例外の方がはるかに快適で直感的なエラー報告方法です。そのため、誰かが解決策を知っている場合は、アイデアを書いてください。

4

1 に答える 1

0

C ++コードでは、HRESULT失敗を示す値(負の値)を返すことでエラーを示します。それらだけで、すでにスクリプト例外(エラーオブジェクト)に変換されます。

メッセージなどの拡張情報を提供する場合は、/ interfaceISupportErrorInfoを実装するC++クラスにインターフェイスを実装し、MSDN: ReturningErrorInformationのこのトピックで説明されているようにエラー情報を返すことができます。IDispatchIDispatchEx

于 2012-12-13T14:10:57.233 に答える