現在オフラインです。再接続するためにインターネットの接続を待っています

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

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB: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 IfEnd 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 eventvoid 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;   }}				
DocumentComplete

警告: この記事は自動翻訳されています

プロパティ

文書番号:180366 - 最終更新日: 07/05/2011 16:44:00 - リビジョン: 4.0

  • kbhowto kbmt KB180366 KbMtja
フィードバック