Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

NotBu bir WebBrowser denetimi yükleme bitti olmadığı nasıl belirlenir

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:180366
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.
Özet
ınternet Explorer WebBrowser denetimi bittiğinde DocumentComplete Olayı harekete bir Web sayfası yükleniyor. Bu olay için uygulamanın olay işleyicisinin işlev oluşturabilirsiniz. Bu makalede, saptanırken uygulanması gereken adımlar bir WebBrowser denetimi tamamlandıktan bir Web sayfası yükleniyor.
Daha fazla bilgi
WebBrowser denetimi için READYSTATE_COMPLETE ReadyState özelliği değiştiğinde DocumentComplete Olayı Harekete. Bu Web sayfası yükleniyor WebBrowser denetimi tamamlandığını gösterir. Bu olay ile ilgili önemli bazı noktalar şunlardır:
  • Çerçeve içeren bir sayfa durumunda her şeyi yapıldıktan sonra DocumentComplete kez harekete geçirilir.
  • Birden çok çerçeve durumunda, birden çok kez DocumentComplete harekete. Her çerçeve, bu olay harekete, ancak bir DownloadBegin olayı her çerçevenin karşılık gelen bir DocumentComplete Olayı Harekete.
  • DocumentComplete Olayı ıdispatch çerçevenin DocumentComplete harekete geçirilir (shdocvw) olan bir ıdispatch * parametresi vardır.
  • En üst düzey çerçeve uçtaki DocumentComplete tetikler. Böyle bir sayfa yapılır denetlemek için yükleme, ıdispatch * parametre WebBrowser denetimi ıdispatch ilgili olarak aynı olup olmadığını denetlemek gerekir.

    Visual Basic için bu denetimi gerçekleştiren kod aşağıdadır:
    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 Olayı işlemek ve karşıdan yükleme Web sayfasının tamamını olup olmadığını belirlemek için aşağıdaki adımları izleyin.

WebBrowser denetimi kullanmadan gelmekte adımları izlemeniz bağlı olduğunu unutmayın.
  • WebBrowser denetiminin bir CWnd/CView nesnesinde oluşturuyorsanız, 1-4. adımları izlemeniz gerekir.
  • WebBrowser denetiminin bir CDialog/CFormView nesnesinde oluşturuyorsanız, yalnızca 4 adım gerçekleştirmeniz gerekir.
  • Visual C++ 6.0 ile sağlanan CHtmlView sınıf kullanıyorsanız, CHtmlView::DocumentComplete() geçersiz kılmak ve adım 4, erişim WebBrowser denetimi için CHtmlView sınıfı m_pBrowserApp üyesi kullanarak izleyin.
  1. Kullanacağınız CWnd/CView türetilmiş bir sınıf için <a1>Üstbilgi</a1> dosyasında OnDocumentComplete yöntemini tanımlayın:
    afx_msg void OnDocumentComplete(LPDISPATCH lpDisp,                                VARIANT FAR* URL);					
  2. Olay havuzunu aynı üstbilgi dosyasında bildirin:
    DECLARE_EVENTSINK_MAP()					
  3. Olay havuzunu haritası uygulama dosyasında (.cpp) için kullanacağınız CWnd/CView türetilmiş sınıf uygulamak:
    BEGIN_EVENTSINK_MAP(CYourView, CView)   ON_EVENT(CWBTstView, ID_WEB_BROWSE, 259 /* DocumentComplete */,            OnDocumentComplete, VTS_DISPATCH VTS_PVARIANT)END_EVENTSINK_MAP()					
  4. OnDocumentComplete yöntemi:
    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 denetimi en üst düzey çerçeve değiştiren bir sayfaya geçtiğinde, bu yaklaşım çalışır. Gezinti bir çerçevesinde oluşur ve çerçeve ve üst düzey çerçeveyi, harekete geçirilen bir son DocumentComplete olan, söyleyin. Örneğin, şu senaryoyu inceleyin.

WebBrowser denetimi, bir çerçeve kümesi gerçekleştirmektedir. Çerçeve bir çerçeve içinde kullanıcı çerçevede yeni bir sayfa açılır ve diğer çerçeve olduğu gibi tutar bir bağlantıyı tıklatır. Yeni bir sayfaya birden çok çerçeve yeniden içerebilir. Bu nedenle, birden çok DocumentComplete bildirimleri (her yeni çerçeve için bir tane) olacaktır. Ancak, en üst düzey çerçeve değişmedi çünkü son DocumentComplete çerçevesini, değişmiş olabilir.

Belgenin son tam olarak bu senaryo için denetimi ilgileniyorsanız, aşağıdakileri yapabilirsiniz:
DocumentComplete ıdispatch parametresini ilk NavigateComplete2 olayı <a1>ıdispatch</a1> parametresi ile aynı olup olmadığını denetleyin. Ilk NavigateComplete2 en üst düzey çerçevesini ve son DocumentComplete de en üst düzey çerçevesini olduğundan, bu tür bir biçimde bir karşılaştırma yapmak sayfaya yapılan söyleyecektir yükleniyor.
Bazı <a0>Örnek</a0> C++ kod aşağıdadır:
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

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 180366 - Son İnceleme: 07/01/2004 16:33:16 - Düzeltme: 2.1

Microsoft Internet Explorer 4.0 128-Bit Edition, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.5

  • kbmt kbhowto KB180366 KbMttr
Geri bildirim
/html>