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

Makale çevirileri Makale çevirileri
Makale numarası: 180366 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Ö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 If
    End 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 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;
   }
}
				

Özellikler

Makale numarası: 180366 - Last Review: 1 Temmuz 2004 Perşembe - Gözden geçirme: 2.1
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbmt kbhowto KB180366 KbMttr
Machine-translated Article
Ö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.

Geri Bildirim Ver

 

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