Ako zistiť, kedy stránku prebieha nakládky v ovládaním

Preklady článku Preklady článku
ID článku: 180366
Rozbaliť všetko | Zbaliť všetko

SUHRN

Internet Explorer ovládaním požiare DocumentComplete udalosť po dokončení preberania webovej stránky. Môžete vytvoriť udalosť handler Funkcia vo vašej aplikácie pre túto udalosť. Tento článok popisuje kroky pri rozhodovaní, či je hotový ovládaním sťahovanie webovú stránku.

DALSIE INFORMACIE

Ovládaním požiare DocumentComplete udalosť pri jeho ReadyState Nehnuteľnosť sa zmení na READYSTATE_COMPLETE. Naznačuje, že Ovládaním dokončilo, sťahovanie webovej stránky. Tu sú niektoré dôležité body týkajúce sa tejto udalosti:
  • Pre stránky s rámy, DocumentComplete padáka raz po všetko, čo je hotovo.
  • V súvislosti s viacerými rámami DocumentComplete dostane padáka viackrát. Nie každý rám požiare túto udalosť, ale každý rám, že požiare DownloadBegin udalosť požiare zodpovedajúce DocumentComplete udalosť.
  • DocumentComplete udalosť má IDispatch * parameter, ktorý je IDispatch rámu (shdocvw), pre ktoré je vyhodil DocumentComplete.
  • Najvyššej úrovne rámu požiare DocumentComplete na konci. Takže, skontrolovať, ak stránke prebieha sťahovania, budete musieť skontrolovať, ak IDispatch * parameter je rovnaký ako IDispatch ovládaním.

    Pre Visual Basic, tu je kód, ktorý vykonáva túto kontrolu:
    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
    					
Zvládnuť DocumentComplete udalosť v Visual C++ a zistiť, či dokončení preberania webovej stránky, postupujte nasledovne.

Všimnite si, že budete postupovať podľa krokov závisieť spôsob používania ovládaním.
  • Ak vytvárate ovládaním v objekte CWnd/CView môžete musí nasledovať kroky 1 až 4.
  • Ak vytvárate ovládaním v objekte CDialog/CFormView len je potrebné sledovať krok 4.
  • Ak používate CHtmlView triedy s Visual c ++ 6.0, prepísanie CHtmlView::DocumentComplete() a postupujte podľa kroku 4, pomocou m_pBrowserApp člen CHtmlView triedy prístup ovládaním.
  1. Definovať OnDocumentComplete metódu v súbore hlavičky pre vaše CWnd/CView-odvodené triedy:
    afx_msg void OnDocumentComplete(LPDISPATCH lpDisp,
                                    VARIANT FAR* URL);
    					
  2. Vyhlásiť udalosť umývadlo v rovnakom súbore hlavičky:
    DECLARE_EVENTSINK_MAP()
    					
  3. V súbore implementácie (.cpp) pre vaše CWnd/CView-odvodené triedy implementovať udalosť drez mapa:
    BEGIN_EVENTSINK_MAP(CYourView, CView)
       ON_EVENT(CWBTstView, ID_WEB_BROWSE, 259 /* DocumentComplete */,
                OnDocumentComplete, VTS_DISPATCH VTS_PVARIANT)
    END_EVENTSINK_MAP()
    					
  4. Implementovať OnDocumentComplete metóda:
    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();
    }
    					
Tento prístup funguje, keď ovládaním prejde na stránku, ktorá zmení najvyššej úrovne rámu. Povedať, ak navigačné vyskytne v rámci rámu sám, potom konečnú DocumentComplete, že je vyhodili je, že rámu a nie najvyššej úrovne rámu. Napríklad Uvažujme o nasledovnom scenári.

Ovládaním je hostiteľom množinu rámov. V rámci jedného rámu na rámov, používateľ klikne na prepojenie, ktoré otvorí novú stránku v ráme samotný a drží zvyšok z frameset neporušené. Nová strana by mohli obsahovať viacnásobné rámcov znova. Takže, bude existovať viacero DocumentComplete notifikácie, (jeden pre každý nový rám). Ale pretože má najvyššej úrovne rám nezmenili, konečné DocumentComplete by, že časti rámu, ktorý má zmenil.

Ak máte záujem na kontrolu pre kompletné v tomto záverečný dokument scenár, ste mohli urobiť nasledovné:
Overiť, či IDispatch parameter DocumentComplete je rovnaké ako parameter IDispatch prvý NavigateComplete2 udalosti. Pretože prvý NavigateComplete2 je najvyššej úrovne rámu a posledný DocumentComplete je tiež najvyššej úrovne rámu, robí porovnanie takéto módne vám povedia, či stránka prebieha preberanie.
Tu je niekoľko vzorky c ++ kód:
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;
   }
}
				

Vlastnosti

ID článku: 180366 - Posledná kontrola: 18. októbra 2011 - Revízia: 2.0
Kľúčové slová: 
kbhowto kbmt KB180366 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:180366
Upozornenie na neaktuálny obsah článku databázy KB
Tento článok obsahuje informácie o produktoch, pre ktoré spoločnosť Microsoft už neposkytuje technickú podporu. Z tohto dôvodu je tento článok publikovaný ako nezmenený a už nebude aktualizovaný.

Odošlite odozvu

 

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