때 페이지 로드 WebBrowser 컨트롤에서 완료 있는지 확인하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 180366 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

Internet Explorer WebBrowser 컨트롤의 끝나면 DocumentComplete 이벤트를 발생시켜 웹 페이지 다운로드. 응용 프로그램에서 이 이벤트에 대한 이벤트 처리기 함수를 만들 수 있습니다. 이 문서에서는 여부 확인 단계를 설명합니다 있는 WebBrowser 컨트롤의 완료된 웹 페이지 다운로드.

추가 정보

WebBrowser 컨트롤을 위해 READYSTATE_COMPLETE ReadyState 속성이 변경될 때 DocumentComplete 이벤트가 발생합니다. 웹 페이지 다운로드 WebBrowser 컨트롤의 완료되었음을 나타냅니다. 이 이벤트는 관련된 일부 주요 사항은 다음과 같습니다.
  • 프레임이 있는 페이지의 모든 수행된 후 DocumentComplete 한 번만 발생합니다.
  • 여러 프레임이 경우 DocumentComplete 여러 번 발생됩니다 가져옵니다. 이 이벤트는 모든 프레임 실행됩니다 있지만 DownloadBegin 이벤트를 발생시켜 각 프레임 해당 DocumentComplete 이벤트가 발생합니다.
  • DocumentComplete 이벤트 (shdocvw) DocumentComplete 발생합니다 프레임의 IDispatch 있는 IDispatch 1 매개를 변수인, 있습니다.
  • 최상위 프레임 끝 DocumentComplete를 발생합니다. 페이지 작업을 확인하려면 그렇게 다운로드, IDispatch 1 매개 변수는 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 이벤트를 처리하고 웹 페이지 다운로드 완료 여부 확인 하려면 다음과 같이 하십시오.

참고 다음 단계를 WebBrowser 컨트롤을 사용하는 방법에 따라 달라집니다.
  • WebBrowser 컨트롤을 사용하여 CWnd/CView 개체를 만드는 경우 1-4 단계를 수행해야 합니다.
  • WebBrowser 컨트롤에 있는 CDialog/CformView 개체를 만드는 경우 경우에만 4 단계를 따라야 합니다.
  • Visual C++ 6.0으로 제공된 했지만 CHtmlView 클래스를 사용하는 경우 CHtmlView::DocumentComplete() 무시하고 WebBrowser 컨트롤에 액세스하려면 했지만 CHtmlView 클래스의 m_pBrowserApp 멤버를 사용하여 4단계를 수행하십시오.
  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 컨트롤을 호스팅합니다. 프레임셋 한 프레임 내에 사용자가 해당 프레임 내에서 새 페이지를 열고 프레임셋 나머지 그대로 유지하는 링크를 클릭합니다. 새 페이지를 여러 프레임을 다시 포함할 수 있습니다. 따라서 있을 각 새 프레임에 대해 하나씩 여러 개의 DocumentComplete 알림을. 그러나, 최상위 프레임 변경된 이후 프레임은 있는 변경되었음을 최종 DocumentComplete 수 있습니다.

이 시나리오에서 완전한 최종 문서를 체크 인 관심이 있는 경우 다음 작업을 수행할 수 있습니다.:
IDispatch 매개 변수의 경우 DocumentComplete 같은 첫 번째 NavigateComplete2 이벤트 IDispatch 매개 변수로 있는지 확인하십시오. 첫 번째 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 - 마지막 검토: 2004년 7월 1일 목요일 - 수정: 2.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 서비스 팩 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
키워드:?
kbmt kbhowto KB180366 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
더 이상 지원되지 않는 제품의 KB 내용에 대한 고지 사항
이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다.

피드백 보내기

 

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