Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Met deze klasse wordt de IBindStatusCallback-interface geïmplementeerd.
Belangrijk
Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.
Syntaxis
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>
Parameterwaarden
T
Uw klasse met de functie die wordt aangeroepen als de gegevens worden ontvangen.
nBindFlags
Hiermee geeft u de bindingsvlagmen op die worden geretourneerd door GetBindInfo. De standaard implementatie stelt de binding in op asynchroon, haalt de nieuwste versie van het gegevens/object op en slaat de opgehaalde gegevens niet op in de schijfcache.
Leden
Openbare constructors
| Naam | Description |
|---|---|
| CBindStatusCallback::CBindStatusCallback | De constructor. |
| CBindStatusCallback::~CBindStatusCallback | De destructor. |
Openbare methoden
| Naam | Description |
|---|---|
| CBindStatusCallback::D ownload | Statische methode waarmee het downloadproces wordt gestart, een CBindStatusCallback object wordt gemaakt en aangeroepen StartAsyncDownload. |
| CBindStatusCallback::GetBindInfo | Aangeroepen door de asynchrone moniker om informatie op te vragen over het type binding dat moet worden gemaakt. |
| CBindStatusCallback::GetPriority | Aangeroepen door de asynchrone moniker om de prioriteit van de bindingsbewerking op te halen. De ATL-implementatie retourneert E_NOTIMPL. |
| CBindStatusCallback::OnDataAvailable | Wordt aangeroepen om gegevens aan uw toepassing te verstrekken zodra deze beschikbaar is. Leest de gegevens en roept vervolgens de functie aan die eraan is doorgegeven om de gegevens te gebruiken. |
| CBindStatusCallback::OnLowResource | Wordt aangeroepen wanneer resources laag zijn. De ATL-implementatie retourneert S_OK. |
| CBindStatusCallback::OnObjectAvailable | Aangeroepen door de asynchrone moniker om een objectinterfaceaanwijzer door te geven aan uw toepassing. De ATL-implementatie retourneert S_OK. |
| CBindStatusCallback::OnProgress | Wordt aangeroepen om de voortgang van een proces voor het downloaden van gegevens aan te geven. De ATL-implementatie retourneert S_OK. |
| CBindStatusCallback::OnStartBinding | Aangeroepen wanneer binding wordt gestart. |
| CBindStatusCallback::OnStopBinding | Aangeroepen wanneer de asynchrone gegevensoverdracht wordt gestopt. |
| CBindStatusCallback::StartAsyncDownload | Initialiseert de beschikbare bytes en bytes die naar nul worden gelezen, maakt een push-type stroomobject op basis van een URL en roept OnDataAvailable telkens aan wanneer gegevens beschikbaar zijn. |
Publieke dataleden
| Naam | Description |
|---|---|
| CBindStatusCallback::m_dwAvailableToRead | Aantal bytes dat kan worden gelezen. |
| CBindStatusCallback::m_dwTotalRead | Totaal aantal bytes gelezen. |
| CBindStatusCallback::m_pFunc | Aanwijzer naar de functie die wordt aangeroepen wanneer gegevens beschikbaar zijn. |
| CBindStatusCallback::m_pT | Wijs het object aan dat de asynchrone gegevensoverdracht aanvraagt. |
| CBindStatusCallback::m_spBindCtx | Aanwijzer naar de IBindCtx-interface voor de huidige bindingsbewerking. |
| CBindStatusCallback::m_spBinding | Wijs de interface voor de IBinding huidige bindingsbewerking aan. |
| CBindStatusCallback::m_spMoniker | Wijs de IMoniker-interface aan voor de URL die moet worden gebruikt. |
| CBindStatusCallback::m_spStream | Wijs de IStream-interface voor de gegevensoverdracht aan. |
Opmerkingen
Met de klasse CBindStatusCallback wordt de IBindStatusCallback-interface geïmplementeerd.
IBindStatusCallback moet door uw toepassing worden geïmplementeerd, zodat deze meldingen kan ontvangen van een asynchrone gegevensoverdracht. De asynchrone moniker die door het systeem wordt geleverd, gebruikt IBindStatusCallback methoden voor het verzenden en ontvangen van informatie over de asynchrone gegevensoverdracht naar en van uw object.
Normaal gesproken is het CBindStatusCallback object gekoppeld aan een specifieke bindingsbewerking. Wanneer u bijvoorbeeld in het ASYNC-voorbeeld de URL-eigenschap instelt, wordt er een CBindStatusCallback object gemaakt in de aanroep naar Download:
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;
}
De asynchrone moniker gebruikt de callback-functie OnData om uw toepassing aan te roepen wanneer deze gegevens bevat. De asynchrone moniker wordt geleverd door het systeem.
Overnamehiërarchie
CComObjectRootBase
IBindStatusCallback
CBindStatusCallback
Requirements
Koptekst: atlctl.h
CBindStatusCallback::CBindStatusCallback
De constructor.
CBindStatusCallback();
Opmerkingen
Hiermee maakt u een object voor het ontvangen van meldingen over de asynchrone gegevensoverdracht. Normaal gesproken wordt er één object gemaakt voor elke bindingsbewerking.
De constructor initialiseert ook m_pT en m_pFunc naar NULL.
CBindStatusCallback::~CBindStatusCallback
De destructor.
~CBindStatusCallback();
Opmerkingen
Alle toegewezen resources worden vrijgemaakt.
CBindStatusCallback::D ownload
Hiermee maakt u een CBindStatusCallback object en roept u StartAsyncDownload aan om gegevens asynchroon te downloaden vanaf de opgegeven URL.
static HRESULT Download(
T* pT,
ATL_PDATAAVAILABLE pFunc,
BSTR bstrURL,
IUnknown* pUnkContainer = NULL,
BOOL bRelative = FALSE);
Parameterwaarden
Pt
[in] Een aanwijzer naar het object dat de asynchrone gegevensoverdracht aanvraagt. Het CBindStatusCallback object wordt templatized op de klasse van dit object.
pFunc
[in] Een aanwijzer naar de functie die de gegevens ontvangt die worden gelezen. De functie is lid van de klasse van het object van het type T. Zie StartAsyncDownload voor syntaxis en een voorbeeld.
bstrURL
[in] De URL waaruit gegevens moeten worden opgehaald. Dit kan elke geldige URL of bestandsnaam zijn. Kan niet NULL zijn. Voorbeeld:
CComBSTR mybstr =_T("http://somesite/data.htm")
pUnkContainer
[in] De IUnknown container. NULL standaard.
bRelative
[in] Een vlag die aangeeft of de URL relatief of absoluut is. STANDAARD ONWAAR, wat betekent dat de URL absoluut is.
Retourwaarde
Een van de standaard HRESULT-waarden.
Opmerkingen
Telkens wanneer gegevens beschikbaar zijn, worden deze verzonden naar het object via OnDataAvailable.
OnDataAvailable leest de gegevens en roept de functie aan die door pFunc wordt verwezen (bijvoorbeeld om de gegevens op te slaan of af te drukken op het scherm).
CBindStatusCallback::GetBindInfo
Wordt aangeroepen om de moniker te vertellen hoe ze moeten binden.
STDMETHOD(GetBindInfo)(
DWORD* pgrfBSCF,
BINDINFO* pbindinfo);
Parameterwaarden
pgrfBSCF
[uit] Een aanwijzer naar BINDF-opsommingswaarden die aangeven hoe de bindingsbewerking moet plaatsvinden. Standaard ingesteld met de volgende opsommingswaarden:
BINDF_ASYNCHRONOUS Asynchrone download.
OnDataAvailable BINDF_ASYNCSTORAGE retourneert E_PENDING wanneer gegevens nog niet beschikbaar zijn in plaats van te blokkeren totdat gegevens beschikbaar zijn.
BINDF_GETNEWESTVERSION De bindingsbewerking moet de nieuwste versie van de gegevens ophalen.
BINDF_NOWRITECACHE De bindingsbewerking mag geen opgehaalde gegevens opslaan in de schijfcache.
pbindinfo
[in, uit] Een aanwijzer naar de BINDINFO structuur die meer informatie geeft over hoe het object binding wil uitvoeren.
Retourwaarde
Een van de standaard HRESULT-waarden.
Opmerkingen
Met de standaard implementatie wordt de binding asynchroon ingesteld en wordt het gegevenspushmodel gebruikt. In het gegevenspushmodel wordt met de moniker de asynchrone bindingsbewerking aangestuurd en wordt de client continu op de hoogte gesteld wanneer er nieuwe gegevens beschikbaar zijn.
CBindStatusCallback::GetPriority
Aangeroepen door de asynchrone moniker om de prioriteit van de bindingsbewerking op te halen.
STDMETHOD(GetPriority)(LONG* pnPriority);
Parameterwaarden
pnPriority
[uit] Adres van de LONG-variabele die bij succes de prioriteit krijgt.
Retourwaarde
Retourneert E_NOTIMPL.
CBindStatusCallback::m_dwAvailableToRead
Kan worden gebruikt om het aantal beschikbare bytes op te slaan dat kan worden gelezen.
DWORD m_dwAvailableToRead;
Opmerkingen
Geïnitialiseerd tot nul in StartAsyncDownload.
CBindStatusCallback::m_dwTotalRead
Het cumulatieve totaal van bytes dat wordt gelezen in de asynchrone gegevensoverdracht.
DWORD m_dwTotalRead;
Opmerkingen
Steeds verhoogd wanneer OnDataAvailable het aantal daadwerkelijk gelezen bytes wordt aangeroepen. Geïnitialiseerd tot nul in StartAsyncDownload.
CBindStatusCallback::m_pFunc
De functie waarop wordt verwezen m_pFunc , wordt aangeroepen nadat OnDataAvailable de beschikbare gegevens zijn gelezen (bijvoorbeeld om de gegevens op te slaan of af te drukken op het scherm).
ATL_PDATAAVAILABLE m_pFunc;
Opmerkingen
De functie waarnaar wordt verwezen m_pFunc , is lid van de klasse van uw object en heeft de volgende syntaxis:
void Function_Name(
CBindStatusCallback<T>* pbsc,
BYTE* pBytes,
DWORD dwSize
);
CBindStatusCallback::m_pT
Een aanwijzer naar het object dat de asynchrone gegevensoverdracht aanvraagt.
T* m_pT;
Opmerkingen
Het CBindStatusCallback object wordt templatized op de klasse van dit object.
CBindStatusCallback::m_spBindCtx
Een aanwijzer naar een IBindCtx-interface die toegang biedt tot de bindingscontext (een object waarin informatie over een bepaalde monikerbindingsbewerking wordt opgeslagen).
CComPtr<IBindCtx> m_spBindCtx;
Opmerkingen
Geïnitialiseerd in StartAsyncDownload.
CBindStatusCallback::m_spBinding
Een aanwijzer naar de IBinding interface van de huidige bindingsbewerking.
CComPtr<IBinding> m_spBinding;
Opmerkingen
Geïnitialiseerd en OnStartBinding vrijgegeven in OnStopBinding.
CBindStatusCallback::m_spMoniker
Een aanwijzer naar de IMoniker-interface voor de URL die moet worden gebruikt.
CComPtr<IMoniker> m_spMoniker;
Opmerkingen
Geïnitialiseerd in StartAsyncDownload.
CBindStatusCallback::m_spStream
Een aanwijzer naar de IStream-interface van de huidige bindingsbewerking.
CComPtr<IStream> m_spStream;
Opmerkingen
Geïnitialiseerd vanuit OnDataAvailable de STGMEDIUM structuur wanneer de BCSF-vlag is BCSF_FIRSTDATANOTIFICATION en wordt vrijgegeven wanneer de BCSF-vlag wordt BCSF_LASTDATANOTIFICATION.
CBindStatusCallback::OnDataAvailable
De door het systeem geleverde asynchrone monikeraanroepen OnDataAvailable om gegevens aan het object te leveren zodra het beschikbaar komt.
STDMETHOD(
OnDataAvailable)(DWORD grfBSCF,
DWORD dwSize,
FORMATETC* /* pformatetc */,
STGMEDIUM* pstgmed);
Parameterwaarden
grfBSCF
[in] Een BSCF-opsommingswaarde. Een of meer van de volgende opties: BSCF_FIRSTDATANOTIFICATION, BSCF_INTERMEDIARYDATANOTIFICATION of BSCF_LASTDATANOTIFICATION.
dwSize
[in] De cumulatieve hoeveelheid gegevens (in bytes) die beschikbaar is sinds het begin van de binding. Kan nul zijn, waarmee wordt aangegeven dat de hoeveelheid gegevens niet relevant is of dat er geen specifieke hoeveelheid beschikbaar is.
pformatetc
[in] Wijs de STRUCTUUR FORMATETC aan die de indeling van de beschikbare gegevens bevat. Als er geen indeling is, kunt u CF_NULL.
pstgmed
[in] Wijs de STGMEDIUM-structuur aan die de werkelijke gegevens bevat die nu beschikbaar zijn.
Retourwaarde
Een van de standaard HRESULT-waarden.
Opmerkingen
OnDataAvailable leest de gegevens en roept vervolgens een methode van de klasse van uw object aan (bijvoorbeeld om de gegevens op te slaan of af te drukken op het scherm). Zie CBindStatusCallback::StartAsyncDownload voor meer informatie.
CBindStatusCallback::OnLowResource
Wordt aangeroepen wanneer resources laag zijn.
STDMETHOD(OnLowResource)(DWORD /* dwReserved */);
Parameterwaarden
dwReserved
Gereserveerd.
Retourwaarde
Retourneert S_OK.
CBindStatusCallback::OnObjectAvailable
Aangeroepen door de asynchrone moniker om een objectinterfaceaanwijzer door te geven aan uw toepassing.
STDMETHOD(OnObjectAvailable)(REFID /* riid */, IUnknown* /* punk */);
Parameterwaarden
riid
Interface-id van de aangevraagde interface. Unused.
Punk
Adres van de interface IUnknown. Unused.
Retourwaarde
Retourneert S_OK.
CBindStatusCallback::OnProgress
Wordt aangeroepen om de voortgang van een proces voor het downloaden van gegevens aan te geven.
STDMETHOD(OnProgress)(
ULONG /* ulProgress */,
ULONG /* ulProgressMax */,
ULONG /* ulStatusCode */,
LPCWSTRONG /* szStatusText */);
Parameterwaarden
ulProgress
Niet-ondertekend lang geheel getal. Unused.
ulProgressMax
Niet-ondertekend lang geheel getal Ongebruikt.
ulStatusCode
Niet-ondertekend lang geheel getal. Unused.
szStatusText
Adres van een tekenreekswaarde. Unused.
Retourwaarde
Retourneert S_OK.
CBindStatusCallback::OnStartBinding
Hiermee stelt u het gegevenslid m_spBinding in op de IBinding aanwijzer in pBinding.
STDMETHOD(OnStartBinding)(DWORD /* dwReserved */, IBinding* pBinding);
Parameterwaarden
dwReserved
Gereserveerd voor toekomstig gebruik.
pBinding
[in] Adres van de IBinding-interface van de huidige bindingsbewerking. Dit kan niet NULL zijn. De client moet AddRef op deze aanwijzer aanroepen om een verwijzing naar het bindingsobject te behouden.
CBindStatusCallback::OnStopBinding
Hiermee wordt de IBinding aanwijzer in het gegevenslid m_spBinding vrijgegeven.
STDMETHOD(OnStopBinding)(HRESULT hresult, LPCWSTR /* szError */);
Parameterwaarden
hresult-
Statuscode geretourneerd door de bindingsbewerking.
szError
Adres van een tekenreekswaarde. Unused.
Opmerkingen
Aangeroepen door de door het systeem geleverde asynchrone moniker om het einde van de bindingsbewerking aan te geven.
CBindStatusCallback::StartAsyncDownload
Begint met het asynchroon downloaden van gegevens uit de opgegeven URL.
HRESULT StartAsyncDownload(
T* pT,
ATL_PDATAAVAILABLE pFunc,
BSTR bstrURL,
IUnknown* pUnkContainer = NULL,
BOOL bRelative = FALSE);
Parameterwaarden
Pt
[in] Een aanwijzer naar het object dat de asynchrone gegevensoverdracht aanvraagt. Het CBindStatusCallback object wordt templatized op de klasse van dit object.
pFunc
[in] Een aanwijzer naar de functie die de gegevens ontvangt die worden gelezen. De functie is lid van de klasse van het object van het type T. Zie Opmerkingen voor syntaxis en een voorbeeld.
bstrURL
[in] De URL waaruit gegevens moeten worden opgehaald. Dit kan elke geldige URL of bestandsnaam zijn. Kan niet NULL zijn. Voorbeeld:
CComBSTR mybstr =_T("http://somesite/data.htm")
pUnkContainer
[in] De IUnknown container. NULL standaard.
bRelative
[in] Een vlag die aangeeft of de URL relatief of absoluut is. STANDAARD ONWAAR, wat betekent dat de URL absoluut is.
Retourwaarde
Een van de standaard HRESULT-waarden.
Opmerkingen
Telkens wanneer gegevens beschikbaar zijn, worden deze verzonden naar het object via OnDataAvailable.
OnDataAvailable leest de gegevens en roept de functie aan die door pFunc wordt verwezen (bijvoorbeeld om de gegevens op te slaan of af te drukken op het scherm).
De functie waarnaar wordt verwezen door pFunc is lid van de klasse van uw object en heeft de volgende syntaxis:
void Function_Name(
CBindStatusCallback<T>* pbsc,
BYTE* pBytes,
DWORD dwSize);
In het volgende voorbeeld (uit het ASYNC-voorbeeld ) schrijft de functie OnData de ontvangen gegevens naar een tekstvak.
Example
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!!!"));
}
}
}