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 StartAsyncDownload statik 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 Download
bir 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
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 T
sı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 OnDataAvailable
gönderilir. OnDataAvailable
verileri 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 StartAsyncDownload
sı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 StartAsyncDownload
sı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 StartAsyncDownload
baş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 OnStopBinding
yayı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 StartAsyncDownload
baş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 T
sı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 OnDataAvailable
gönderilir. OnDataAvailable
verileri 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!!!"));
}
}
}