본문 바로가기

C / C++ / Win32 / MFC

IWebBrower의 DocumentComplete 이벤트에서 마지막 호출인지 검사하기

 void CDlgWebPopup::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
{
    IUnknown*        pUnk;
    LPDISPATCH     lpWBDisp;

    pUnk = m_cWebBrowser.GetControlUnknown();
    pUnk->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
    if(pDisp == lpWBDisp)
    {
            // 마지막 이벤트
    }

    lpWBDisp->Release();
}


보통의 웹페이지는 프레임을 포함하고 있기 때문에 페이지 로딩시 DocumentComplete가 여러 번 호출됩니다.
DocumentComplete 이벤트는 최상위의  웹브라우저 윈도우에 대해 마지막으로 호출됩니다.
IWebBrowser를 이용한다면 위와 같은 방법으로 DocumentComplete의 마지막 호출을 판단할 수 있습니다.

또는 LPDISPATCH pDisp 파라미트를 IWebBrowser2로 인터페이싱하요 TopLevelContainer 프로퍼티로도 판단이 가능합니다.