none
MFC CDHtmlDialogにて、URLの変更を受けた際に、その内容によって、遷移を取りやめるには RRS feed

  • 質問

  • お世話になります。

    VisualStudio2010ProでVC++のCDHtmlDialogクラスにてWebページを表示し、

    そのページの中からの特定のページ遷移となった場合に、特定のページへの移動の場合は遷移を行わないようにしたいのですが、

    OnBeforeNavigate にてURLの特定はできましたが、ページ遷移を発生させない(キャンセルさせる)方法わかりません。

    m_pBrowserApp->Stop() で実現出来るかと試しましたが、有効ではないようでした。

    また、m_pBrowserApp->Refresh() とすると、結果としては同じページの表示となりますが、メソッドの名の通りいったん再読み込み処理が入ってしまうので、動作としては望ましくありません。

    Windows7日本語64Bit版で、IEは10以上が入っている環境での動作になります。

    ご教示いただけますと幸いです。

    よろしくお願いいたします。

    2014年10月30日 18:56

すべての返信

  • OnBeforeNavigate2イベントであれば、イベント引数にBOOL* cancelが存在してキャンセルできます。

    CDHtmlDialogクラスには定義されていないようなので、自前で定義する必要があるようですね。以下のページを参考にしてください。

    http://stackoverflow.com/questions/354607/how-to-get-the-document-cdhtmldialog-after-asp-net-ajax-updatepanel

    • 回答の候補に設定 星 睦美 2014年11月7日 7:44
    2014年10月30日 19:03
  • お早い回答ありがとうございました。

    いただきました情報にて、OnBeforeNavigate2にて切り分けることができました。

    ただ、ページ内でリダイレクト処理がなされてから発行されるものに関しては、
    OnBeforeNavigateではなく、Completeに解決されたものが送られてきてしまっています。

    このような場合にも先と同じように判別をして、場合によってはページ遷移を
    発生させなくさせるにはどのように対応すべきになりますでしょうか?
    OnNavigateComplete2には、OnBeforeNavigate2のようにキャンセルフラグのような
    ものは無いようでした。

    また、状況が少々異なるかもしれませんが、エラーになった場合も別途ダイアログを
    表示する等して状況を通知するので、ブラウザ画面自体はエラー表示に遷移するのを
    避けたい場合についても、手法がないものかと苦慮しております。

    お手数かとは思いますが、ご教示いただけましたら幸いです。

    2014年10月31日 17:50