ページが WebBrowser コントロールに読み込み行われますときを判断するには、方法

文書翻訳 文書翻訳
文書番号: 180366
すべて展開する | すべて折りたたむ

概要

Internet Explorer WebBrowser コントロール DocumentComplete イベントが発生します。完了すると、Web ページをダウンロードします。イベント ハンドラーを作成することができます。このイベントをアプリケーション内の関数です。この資料で説明、どうかを確認するための手順は、WebBrowser コントロールの終了Web ページをダウンロードしています。

詳細

WebBrowser コントロール DocumentComplete イベントが発生した場合、ReadyStateプロパティを READYSTATE_COMPLETE に変更されます。これは、ことを示す、WebBrowser コントロールは、Web ページのダウンロードが完了しました。ここではこのイベントについての重要なポイント:
  • 1 回の場合は、ページ フレームなしで DocumentComplete 発生します。すべてが完了するとします。
  • 複数フレームの場合、DocumentComplete 複数回発生します。このイベントは、発生する各フレームがないすべてのフレームが発生します。DownloadBegin イベントが対応する DocumentComplete イベントが発生します。
  • ある IDispatch * パラメーター、DocumentComplete イベントにも、IDispatch を DocumentComplete が発生したフレーム (shdocvw) の。
  • 最上位のフレーム、DocumentComplete 最終的に発生します。そのため、ページを実行するかどうかはチェックをダウンロードする場合を確認する必要があります、IDispatch * パラメーターは、WebBrowser コントロールを IDispatch として同じです。

    Visual Basic は、ここでこのチェックを実行するコードを示します。
    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object,
                                             URL As Variant)
       If (pDisp Is WebBrowser1.Object) Then
          Debug.Print "Web document is finished downloading"
       End If
    End Sub
    					
Visual C で DocumentComplete イベントを処理し、場合を判断するのにはWeb ページのダウンロードが完了、次の手順を実行します。

この手順は、WebBrowser コントロールを使用する方法によって異なります。
  • CWnd または CView オブジェクトでは、WebBrowser コントロールを作成する場合は、1 〜 4 の手順を実行する必要があります。
  • CDialog/CFormView オブジェクトでは、WebBrowser コントロールを作成する場合は、手順 4 を実行するだけで済みます。
  • Visual C 6.0 で提供される CHtmlView クラスを使用している場合は、CHtmlView::DocumentComplete() をオーバーライドしを使用して手順 4 を実行します、WebBrowser コントロールにアクセスするのには、m_pBrowserApp メンバーの CHtmlView クラス。
  1. CWnd または CView 派生クラス用のヘッダー ファイルでは、OnDocumentComplete メソッドを定義します。
    afx_msg void OnDocumentComplete(LPDISPATCH lpDisp,
                                    VARIANT FAR* URL);
    					
  2. イベント シンクが同じヘッダー ファイルで宣言します。
    DECLARE_EVENTSINK_MAP()
    					
  3. 実装ファイルで (.cpp) CWnd または CView から派生したクラスは、イベント シンク マップを実装します。
    BEGIN_EVENTSINK_MAP(CYourView, CView)
       ON_EVENT(CWBTstView, ID_WEB_BROWSE, 259 /* DocumentComplete */,
                OnDocumentComplete, VTS_DISPATCH VTS_PVARIANT)
    END_EVENTSINK_MAP()
    					
  4. OnDocumentComplete メソッドを実装します。
    void CWBTstView::OnDocumentComplete(LPDISPATCH lpDisp,
                                        VARIANT FAR* URL)
    {
       IUnknown*  pUnk;
       LPDISPATCH lpWBDisp;
       HRESULT    hr;
    
       pUnk = m_webBrowser.GetControlUnknown();
       ASSERT(pUnk);
    
       hr = pUnk->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
       ASSERT(SUCCEEDED(hr));
    
       if (lpDisp == lpWBDisp )
       {
          // Top-level Window object, so document has been loaded
          TRACE("Web document is finished downloading\n");
       }
    
      lpWBDisp->Release();
    }
    					
この方法では、WebBrowser コントロールはページを移動すると動作は、最上位レベルのフレームを変更します。フレーム内でのナビゲーションが発生した場合は、音声操作の項目発生、最終的な DocumentComplete フレームのです。最上位の枠ではなく。たとえば、次のシナリオを検討してください。

フレーム セットは、WebBrowser コントロールをホストしています。1 つのフレームの内で、フレーム、フレームに新しいページを開き、リンクをユーザーがクリックします。それ自体と、フレーム セットの残りの部分はそのまま保持されます。新しいページことができませんでした。複数のフレームを含みます。したがって、あります複数 DocumentComplete通知 (新しいフレームに 1 つ)。ただし、最上位のフレームがあるので変更なく、DocumentComplete、最後のフレームを持っているになります変更します。

これで完全な最終ドキュメントをチェックインしようとする場合シナリオは、次の操作を行います可能性があります。
DocumentComplete の IDispatch パラメーターと同じであるかを確認します。IDispatch パラメーター NavigateComplete2 イベントの最初の。ので、最初 NavigateComplete2、最上位レベル フレームの最後にあります。DocumentComplete も、最上位レベルのフレームの比較を実行ページを実行するかどうかこのような方法を教えてくれますダウンロードします。
いくつかのサンプル C++ コードは、次のとおりです。
LPDISPATCH glpDisp = NULL; // global LPDISPATCH, can also
                           // be of class scope

// NavigateComplete2 event
void CWebbrDlg::OnNavigateComplete2Explorer1(LPDISPATCH pDisp,
                                             VARIANT FAR* URL)
{
   // Check if glpDisp is NULL. If NULL, that means it is
   // the top level NavigateComplete2. Save the LPDISPATCH
   if (!glpDisp)
      glpDisp = pDisp;
}

void CWebbrDlg::OnDocumentCompleteExplorer1(LPDISPATCH pDisp,
                                            VARIANT FAR* URL)
{
   if (glpDisp && glpDisp == pDisp)
   {
      // if the LPDISPATCH are same, that means
      // it is the final DocumentComplete. Reset glpDisp
      TRACE("Document is done downloading");
      glpDisp = NULL;
   }
}
				

プロパティ

文書番号: 180366 - 最終更新日: 2011年7月5日 - リビジョン: 4.0
キーワード:?
kbhowto kbmt KB180366 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:180366
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com