Aracılığıyla paylaş


CBindStatusCallback Sınıfı

Bu sınıf arabirimini IBindStatusCallback uygular.

Önemli

Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.

Sözdizimi

template <class T,
    int nBindFlags = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_GETNEWESTVERSION | BINDF_NOWRITECACHE>
class ATL_NO_VTABLE CBindStatusCallback : public CComObjectRootEx <T ::_ThreadModel::ThreadModelNoCS>,
    public IBindStatusCallbackImpl<T>

Parametreler

T
Veriler alınırken çağrılacak işlevi içeren sınıfınız.

nBindFlags
GetBindInfo tarafından döndürülen bağlama bayraklarını belirtir. Varsayılan uygulama bağlamayı zaman uyumsuz olarak ayarlar, verilerin/nesnenin en yeni sürümünü alır ve alınan verileri disk önbelleğinde depolamaz.

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CBindStatusCallback::CBindStatusCallback Oluşturucu.
CBindStatusCallback::~CBindStatusCallback Yok edici.

Genel Yöntemler

Veri Akışı Adı Açıklama
CBindStatusCallback::D ownload İndirme işlemini başlatan, bir CBindStatusCallback nesnesi oluşturan ve çağıran StartAsyncDownloadstatik yöntem.
CBindStatusCallback::GetBindInfo Oluşturulacak bağlama türü hakkında bilgi istemek için zaman uyumsuz takma adı tarafından çağrılır.
CBindStatusCallback::GetPriority Bağlama işleminin önceliğini almak için zaman uyumsuz takma adı tarafından çağrılır. ATL uygulaması döndürür E_NOTIMPL.
CBindStatusCallback::OnDataAvailable Kullanıma sunuldukça uygulamanıza veri sağlamak için çağrılır. Verileri okur, ardından verileri kullanmak için kendisine geçirilen işlevi çağırır.
CBindStatusCallback::OnLowResource Kaynaklar düşük olduğunda çağrılır. ATL uygulaması S_OK döndürür.
CBindStatusCallback::OnObjectAvailable Uygulamanıza bir nesne arabirimi işaretçisi geçirmek için zaman uyumsuz takma adı tarafından çağrılır. ATL uygulaması S_OK döndürür.
CBindStatusCallback::OnProgress Bir veri indirme işleminin ilerleme durumunu belirtmek için çağrılır. ATL uygulaması S_OK döndürür.
CBindStatusCallback::OnStartBinding Bağlama başlatıldığında çağrılır.
CBindStatusCallback::OnStopBinding Zaman uyumsuz veri aktarımı durdurulduğunda çağrılır.
CBindStatusCallback::StartAsyncdownload Kullanılabilir baytları başlatır ve sıfıra okunan baytları başlatır, URL'den bir anında iletme türü akış nesnesi oluşturur ve her veri kullanılabilir olduğunda çağırır OnDataAvailable .

Ortak Veri Üyeleri

Veri Akışı Adı Açıklama
CBindStatusCallback::m_dwAvailableToRead Okunabilecek bayt sayısı.
CBindStatusCallback::m_dwTotalRead Okunan toplam bayt sayısı.
CBindStatusCallback::m_pFunc Veriler kullanılabilir olduğunda çağrılan işlev işaretçisi.
CBindStatusCallback::m_pT Zaman uyumsuz veri aktarımını isteyen nesnenin işaretçisi.
CBindStatusCallback::m_spBindCtx Geçerli bağlama işlemi için IBindCtx arabirimi işaretçisi.
CBindStatusCallback::m_spBinding Geçerli bağlama işleminin IBinding arabirimine yönelik işaretçi.
CBindStatusCallback::m_spMoniker Kullanılacak URL için IMoniker arabiriminin işaretçisi.
CBindStatusCallback::m_spStream Veri aktarımı için IStream arabirimi işaretçisi.

Açıklamalar

CBindStatusCallback sınıfı, IBindStatusCallback arabirimini uygular. IBindStatusCallback zaman uyumsuz bir veri aktarımından bildirim alabilmesi için uygulamanız tarafından uygulanmalıdır. Sistem tarafından sağlanan zaman uyumsuz takma ad, nesnenize ve nesnenizden zaman uyumsuz veri aktarımı hakkında bilgi göndermek ve almak için yöntemleri kullanır IBindStatusCallback .

CBindStatusCallback Nesne genellikle belirli bir bağlama işlemiyle ilişkilendirilir. Örneğin, ASYNC örneğinde URL özelliğini ayarladığınızda çağrısında Downloadbir CBindStatusCallback nesnesi oluşturur:

STDMETHOD(put_URL)(BSTR newVal)
{
   HRESULT hResult = E_UNEXPECTED;

   ATLTRACE(_T("IATLAsync::put_URL\n"));
   m_bstrURL = newVal;

   if (::IsWindow(m_EditCtrl.m_hWnd))
   {
      ::SendMessage(m_EditCtrl.m_hWnd, WM_SETTEXT, 0,  (LPARAM)_T(""));
      hResult = CBindStatusCallback<CATLAsync>::Download(this, &CATLAsync::OnData, 
         m_bstrURL, m_spClientSite, FALSE);
   }

   return hResult;
}

Zaman uyumsuz takma ad, veri içerdiğinde uygulamanızı çağırmak için geri çağırma işlevini OnData kullanır. Zaman uyumsuz takma adı sistem tarafından sağlanır.

Devralma Hiyerarşisi

CComObjectRootBase

IBindStatusCallback

CComObjectRootEx

CBindStatusCallback

Gereksinimler

Üst bilgi: atlctl.h

CBindStatusCallback::CBindStatusCallback

Oluşturucu.

CBindStatusCallback();

Açıklamalar

Zaman uyumsuz veri aktarımıyla ilgili bildirimleri almak için bir nesne oluşturur. Genellikle her bağlama işlemi için bir nesne oluşturulur.

Oluşturucu ayrıca m_pT başlatır ve NULL'a m_pFunc.

CBindStatusCallback::~CBindStatusCallback

Yok edici.

~CBindStatusCallback();

Açıklamalar

Ayrılan tüm kaynakları serbesttir.

CBindStatusCallback::D ownload

Belirtilen URL'den zaman uyumsuz olarak veri indirmeye başlamak için bir CBindStatusCallback nesne oluşturur ve çağrılar StartAsyncDownload .

static HRESULT Download(
    T* pT,
    ATL_PDATAAVAILABLE pFunc,
    BSTR bstrURL,
    IUnknown* pUnkContainer = NULL,
    BOOL bRelative = FALSE);

Parametreler

Pt
[in] Zaman uyumsuz veri aktarımını isteyen nesneye yönelik bir işaretçi. CBindStatusCallback Nesnesi, bu nesnenin sınıfında şablon haline getirilir.

pFunc
[in] Okunan verileri alan işlev işaretçisi. işlevi, nesnenizin türündeki Tsınıfının bir üyesidir. Söz dizimi ve bir örnek için bkz . StartAsyncDownload .

bstrURL
[in] Veri almak için URL. Herhangi bir geçerli URL veya dosya adı olabilir. NULL olamaz. Örneğin:

CComBSTR mybstr =_T("http://somesite/data.htm")

pUnkContainer
[in] Kapsayıcının IUnknown . Varsayılan olarak NULL.

brelative
[in] URL'nin göreli mi yoksa mutlak mı olduğunu gösteren bir bayrak. VARSAYıLAN OLARAK YANLIŞ, URL'nin mutlak olduğu anlamına gelir.

Dönüş Değeri

Standart HRESULT değerlerinden biri.

Açıklamalar

Veriler her kullanılabilir olduğunda aracılığıyla nesnesine OnDataAvailablegönderilir. OnDataAvailableverileri okur ve pFunc tarafından işaret edilen işlevi çağırır (örneğin, verileri depolamak veya ekrana yazdırmak için).

CBindStatusCallback::GetBindInfo

Takma adın nasıl bağlanacağını söylemek için çağrıldı.

STDMETHOD(GetBindInfo)(
    DWORD* pgrfBSCF,
    BINDINFO* pbindinfo);

Parametreler

pgrfBSCF
[out] Bağlama işleminin nasıl gerçekleşmesi gerektiğini gösteren BINDF sabit listesi değerlerine yönelik bir işaretçi. Varsayılan olarak, aşağıdaki numaralandırma değerleriyle ayarlayın:

BINDF_ASYNCHRONOUS Zaman uyumsuz indirme.

OnDataAvailable BINDF_ASYNCSTORAGE, veriler kullanılabilir olana kadar engellemek yerine veriler henüz kullanılabilir olmadığında E_PENDING döndürür.

BINDF_GETNEWESTVERSION Bağlama işlemi verilerin en yeni sürümünü almalıdır.

BINDF_NOWRITECACHE Bağlama işlemi alınan verileri disk önbelleğinde depolamamalıdır.

pbindinfo
[in, out] Nesnenin bağlamanın BINDINFO nasıl gerçekleşmesini istediği hakkında daha fazla bilgi veren yapı işaretçisi.

Dönüş Değeri

Standart HRESULT değerlerinden biri.

Açıklamalar

Varsayılan uygulama, bağlamayı zaman uyumsuz olacak ve veri gönderme modelini kullanacak şekilde ayarlar. Veri gönderme modelinde, ad zaman uyumsuz bağlama işlemini yönetir ve yeni veriler kullanılabilir olduğunda istemciye sürekli olarak bildirimde bulunur.

CBindStatusCallback::GetPriority

Bağlama işleminin önceliğini almak için zaman uyumsuz takma adı tarafından çağrılır.

STDMETHOD(GetPriority)(LONG* pnPriority);

Parametreler

pnPriority
[out] Başarıda önceliği alan LONG değişkeninin adresi.

Dönüş Değeri

E_NOTIMPL döndürür.

CBindStatusCallback::m_dwAvailableToRead

Okunabilecek bayt sayısını depolamak için kullanılabilir.

DWORD m_dwAvailableToRead;

Açıklamalar

içinde StartAsyncDownloadsıfıra başlatıldı.

CBindStatusCallback::m_dwTotalRead

Zaman uyumsuz veri aktarımında okunan birikmeli bayt toplamı.

DWORD m_dwTotalRead;

Açıklamalar

Her seferinde OnDataAvailable artımlı olarak, gerçekte okunan bayt sayısı kadar çağrılır. içinde StartAsyncDownloadsıfıra başlatıldı.

CBindStatusCallback::m_pFunc

tarafından işaret edilen m_pFunc işlev, kullanılabilir verileri okuduktan sonra (örneğin, verileri depolamak veya ekrana yazdırmak için) tarafından OnDataAvailable çağrılır.

ATL_PDATAAVAILABLE m_pFunc;

Açıklamalar

tarafından m_pFunc işaret edilen işlev, nesnenizin sınıfının bir üyesidir ve aşağıdaki söz dizimine sahiptir:

void Function_Name(
   CBindStatusCallback<T>* pbsc,
   BYTE* pBytes,
   DWORD dwSize
   );

CBindStatusCallback::m_pT

Zaman uyumsuz veri aktarımını isteyen nesneye yönelik bir işaretçi.

T* m_pT;

Açıklamalar

CBindStatusCallback Nesnesi, bu nesnenin sınıfında şablon haline getirilir.

CBindStatusCallback::m_spBindCtx

Bağlama bağlamı (belirli bir takma ad bağlama işlemi hakkında bilgi depolayan bir nesne) erişim sağlayan bir IBindCtx arabirimi işaretçisi.

CComPtr<IBindCtx> m_spBindCtx;

Açıklamalar

içinde StartAsyncDownloadbaşlatıldı.

CBindStatusCallback::m_spBinding

Geçerli bağlama işleminin IBinding arabirimine yönelik bir işaretçi.

CComPtr<IBinding> m_spBinding;

Açıklamalar

içinde OnStartBinding başlatıldı ve içinde OnStopBindingyayımlandı.

CBindStatusCallback::m_spMoniker

Kullanılacak URL için IMonik arabirimine yönelik bir işaretçi.

CComPtr<IMoniker> m_spMoniker;

Açıklamalar

içinde StartAsyncDownloadbaşlatıldı.

CBindStatusCallback::m_spStream

Geçerli bağlama işleminin IStream arabirimine yönelik bir işaretçi.

CComPtr<IStream> m_spStream;

Açıklamalar

OnDataAvailable BCSF bayrağı BCSF_FIRSTDATANOTIFICATION olduğunda yapısından STGMEDIUM başlatılır ve BCSF bayrağı BCSF_LASTDATANOTIFICATION olduğunda serbest bırakılır.

CBindStatusCallback::OnDataAvailable

Sistem tarafından sağlanan zaman uyumsuz takma ad, kullanılabilir olduğunda nesneye veri sağlamak için çağrılar OnDataAvailable .

STDMETHOD(
    OnDataAvailable)(DWORD grfBSCF,
    DWORD dwSize,
    FORMATETC* /* pformatetc */,
    STGMEDIUM* pstgmed);

Parametreler

grfBSCF
[in] BSCF numaralandırma değeri. Aşağıdakilerden biri veya daha fazlası: BSCF_FIRSTDATANOTIFICATION, BSCF_INTERMEDIARYDATANOTIFICATION veya BSCF_LASTDATANOTIFICATION.

dwSize
[in] Bağlamanın başlangıcından bu yana kullanılabilir verilerin birikmeli miktarı (bayt cinsinden). Veri miktarının ilgili olmadığını veya belirli bir miktarın kullanılabilir olmadığını gösteren sıfır olabilir.

pformatetc
[in] Kullanılabilir verilerin biçimini içeren FORMATETC yapısının işaretçisi. Biçim yoksa CF_NULL olabilir.

pstgmed
[in] Artık kullanılabilir olan gerçek verileri tutan STGMEDIUM yapısının işaretçisi.

Dönüş Değeri

Standart HRESULT değerlerinden biri.

Açıklamalar

OnDataAvailable verileri okur, ardından nesnenizin sınıfının bir yöntemini çağırır (örneğin, verileri depolamak veya ekrana yazdırmak için). Ayrıntılar için bkz . CBindStatusCallback::StartAsyncDownload .

CBindStatusCallback::OnLowResource

Kaynaklar düşük olduğunda çağrılır.

STDMETHOD(OnLowResource)(DWORD /* dwReserved */);

Parametreler

dwReserved
Ayrılmış.

Dönüş Değeri

S_OK döndürür.

CBindStatusCallback::OnObjectAvailable

Uygulamanıza bir nesne arabirimi işaretçisi geçirmek için zaman uyumsuz takma adı tarafından çağrılır.

STDMETHOD(OnObjectAvailable)(REFID /* riid */, IUnknown* /* punk */);

Parametreler

riid
İstenen arabirimin arabirim tanımlayıcısı. Kullanılmıyor.

Punk
IUnknown arabiriminin adresi. Kullanılmıyor.

Dönüş Değeri

S_OK döndürür.

CBindStatusCallback::OnProgress

Bir veri indirme işleminin ilerleme durumunu belirtmek için çağrılır.

STDMETHOD(OnProgress)(
    ULONG /* ulProgress */,
    ULONG /* ulProgressMax */,
    ULONG /* ulStatusCode */,
    LPCWSTRONG /* szStatusText */);

Parametreler

ulProgress
İşaretsiz uzun tamsayı. Kullanılmıyor.

ulProgressMax
İşaretsiz uzun tamsayı Kullanılmayan.

ulStatusCode
İşaretsiz uzun tamsayı. Kullanılmıyor.

szStatusText
Dize değerinin adresi. Kullanılmıyor.

Dönüş Değeri

S_OK döndürür.

CBindStatusCallback::OnStartBinding

m_spBinding veri üyesini IBinding pBinding içindeki işaretçiye ayarlar.

STDMETHOD(OnStartBinding)(DWORD /* dwReserved */, IBinding* pBinding);

Parametreler

dwReserved
Daha sonraki kullanımlar için ayrılmıştır.

pBinding
[in] Geçerli bağlama işleminin IBinding arabiriminin adresi. Bu NULL olamaz. İstemci, bağlama nesnesine bir başvuru tutmak için bu işaretçide AddRef'i çağırmalıdır.

CBindStatusCallback::OnStopBinding

İşaretçiyi IBinding veri üyesi m_spBinding serbest bırakır.

STDMETHOD(OnStopBinding)(HRESULT hresult, LPCWSTR /* szError */);

Parametreler

hresult
Bağlama işleminden döndürülen durum kodu.

szError
Dize değerinin adresi. Kullanılmıyor.

Açıklamalar

Bağlama işleminin sonunu belirtmek için sistem tarafından sağlanan zaman uyumsuz takma adı tarafından çağrılır.

CBindStatusCallback::StartAsyncdownload

Belirtilen URL'den zaman uyumsuz olarak veri indirmeye başlar.

HRESULT StartAsyncDownload(
    T* pT,
    ATL_PDATAAVAILABLE pFunc,
    BSTR bstrURL,
    IUnknown* pUnkContainer = NULL,
    BOOL bRelative = FALSE);

Parametreler

Pt
[in] Zaman uyumsuz veri aktarımını isteyen nesneye yönelik bir işaretçi. CBindStatusCallback Nesnesi, bu nesnenin sınıfında şablon haline getirilir.

pFunc
[in] Okunan verileri alan işlev işaretçisi. işlevi, nesnenizin türündeki Tsınıfının bir üyesidir. Söz dizimi ve bir örnek için açıklamalar bölümüne bakın.

bstrURL
[in] Veri almak için URL. Herhangi bir geçerli URL veya dosya adı olabilir. NULL olamaz. Örneğin:

CComBSTR mybstr =_T("http://somesite/data.htm")

pUnkContainer
[in] Kapsayıcının IUnknown . Varsayılan olarak NULL.

brelative
[in] URL'nin göreli mi yoksa mutlak mı olduğunu gösteren bir bayrak. VARSAYıLAN OLARAK YANLIŞ, URL'nin mutlak olduğu anlamına gelir.

Dönüş Değeri

Standart HRESULT değerlerinden biri.

Açıklamalar

Veriler her kullanılabilir olduğunda aracılığıyla nesnesine OnDataAvailablegönderilir. OnDataAvailableverileri okur ve pFunc tarafından işaret edilen işlevi çağırır (örneğin, verileri depolamak veya ekrana yazdırmak için).

pFunc tarafından işaret edilen işlev nesnenizin sınıfının bir üyesidir ve aşağıdaki söz dizimine sahiptir:

void Function_Name(
    CBindStatusCallback<T>* pbsc,
    BYTE* pBytes,
    DWORD dwSize);

Aşağıdaki örnekte (ASYNC örneğinden alınan), işlev OnData alınan verileri bir metin kutusuna yazar.

Örnek

void OnData(CBindStatusCallback<CATLAsync>* , BYTE* pBytes, DWORD /*cBytes*/)
{
   ATLTRACE(_T("OnData called\n"));

   m_bstrText.Append((LPCSTR)pBytes);
   if (::IsWindow(m_EditCtrl.m_hWnd))
   {
      USES_CONVERSION;
      _ATLTRY {
         ::SendMessage(m_EditCtrl.m_hWnd, WM_SETTEXT, 0, 
            (LPARAM)(LPCTSTR)COLE2CT((BSTR)m_bstrText));
      }
      _ATLCATCH( e ) {
         e; // unused
         // COLE2CT threw an exception!
         ::SendMessage(m_EditCtrl.m_hWnd, WM_SETTEXT, 0, 
            (LPARAM)_T("Could not allocate enough memory!!!"));
      }
   }
}

Ayrıca bkz.

Sınıfa Genel Bakış