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.
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.
- 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);
- Vyhlásiť udalosť umývadlo v rovnakom súbore hlavičky:
- 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()
- 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;
}
}
ID článku: 180366 - Posledná kontrola: 18. októbra 2011 - Revízia: 2.0
| 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
(http://support.microsoft.com/kb/180366/en-us/
)
Upozornenie na neaktuálny obsah článku databázy KBTento č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ý.