Share via


Klasse CAsyncMonikerFile

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Biedt functionaliteit voor het gebruik van asynchrone monikers in ActiveX-besturingselementen (voorheen OLE-besturingselementen).

Syntaxis

class CAsyncMonikerFile : public CMonikerFile

Leden

Openbare constructors

Naam Description
CAsyncMonikerFile::CAsyncMonikerFile Maakt een CAsyncMonikerFile object.

Openbare methoden

Naam Description
CAsyncMonikerFile::Close Hiermee worden alle resources gesloten en vrijgegeven.
CAsyncMonikerFile::GetBinding Hiermee wordt een aanwijzer opgehaald naar de asynchrone overdrachtsbinding.
CAsyncMonikerFile::GetFormatEtc Hiermee haalt u de indeling van de gegevens in de stream op.
CAsyncMonikerFile::Open Hiermee opent u asynchroon een bestand.

Beveiligde methoden

Naam Description
CAsyncMonikerFile::CreateBindStatusCallback Hiermee maakt u een COM-object dat wordt geïmplementeerd IBindStatusCallback.
CAsyncMonikerFile::GetBindInfo Wordt aangeroepen door de OLE-systeembibliotheek om informatie op te vragen over het type binding dat moet worden gemaakt.
CAsyncMonikerFile::GetPriority Aangeroepen door de OLE-systeembibliotheek om de prioriteit van de binding op te halen.
CAsyncMonikerFile::OnDataAvailable Aangeroepen om gegevens op te geven zodra deze beschikbaar worden voor de client tijdens asynchrone bindingsbewerkingen.
CAsyncMonikerFile::OnLowResource Wordt aangeroepen wanneer resources laag zijn.
CAsyncMonikerFile::OnProgress Wordt aangeroepen om de voortgang van het downloaden van gegevens aan te geven.
CAsyncMonikerFile::OnStartBinding Wordt aangeroepen wanneer de binding wordt gestart.
CAsyncMonikerFile::OnStopBinding Aangeroepen wanneer asynchrone overdracht wordt gestopt.

Opmerkingen

Afgeleid van CMonikerFile, dat op zijn beurt is afgeleid van COleStreamFile, CAsyncMonikerFile gebruikt de IMoniker-interface om asynchroon toegang te krijgen tot gegevensstromen, waaronder het asynchroon laden van bestanden vanuit een URL. De bestanden kunnen gegevenspadeigenschappen van ActiveX-besturingselementen zijn.

Asynchrone monikers worden voornamelijk gebruikt in toepassingen met internet en ActiveX-besturingselementen om een responsieve gebruikersinterface te bieden tijdens bestandsoverdrachten. Een goed voorbeeld hiervan is het gebruik van CDataPathProperty om asynchrone eigenschappen voor ActiveX-besturingselementen te bieden. Het CDataPathProperty object krijgt herhaaldelijk een callback om de beschikbaarheid van nieuwe gegevens aan te geven tijdens een langdurige uitwisseling van eigenschappen.

Zie de volgende artikelen voor meer informatie over het gebruik van asynchrone monikers en ActiveX-besturingselementen in internettoepassingen:

Overnamehiërarchie

CObject

CFile

COleStreamFile

CMonikerFile

CAsyncMonikerFile

Requirements

Koptekst: afxole.h

CAsyncMonikerFile::CAsyncMonikerFile

Maakt een CAsyncMonikerFile object.

CAsyncMonikerFile();

Opmerkingen

De interface wordt niet gemaakt IBindHost . IBindHost wordt alleen gebruikt als u deze opgeeft in de Open lidfunctie.

Zie de Windows SDK voor een beschrijving van de IBindHost interface.

CAsyncMonikerFile::Close

Roep deze functie aan om alle resources te sluiten en los te laten.

virtual void Close();

Opmerkingen

Kan worden aangeroepen op niet-geopende of al gesloten bestanden.

CAsyncMonikerFile::CreateBindStatusCallback

Hiermee maakt u een COM-object dat wordt geïmplementeerd IBindStatusCallback.

virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);

Parameterwaarden

pUnkControlling
Een aanwijzer naar het beheer onbekend (het buitenste IUnknown) of NULL als er geen aggregatie wordt gebruikt.

Retourwaarde

Als pUnkControlling niet NULL is, retourneert de functie een aanwijzer naar de binnenkant IUnknown van een nieuw COM-object dat wordt ondersteund IBindStatusCallback. Als pUnkControlling null is, retourneert de functie een aanwijzer naar een IUnknown nieuw COM-object dat wordt ondersteund IBindStatusCallback.

Opmerkingen

CAsyncMonikerFile vereist een COM-object dat wordt geïmplementeerd IBindStatusCallback. MFC implementeert een dergelijk object en kan worden samengevoegd. U kunt overschrijven CreateBindStatusCallback om uw eigen COM-object te retourneren. Uw COM-object kan de implementatie van MFC aggregeren door aan te roepen CreateBindStatusCallback met de controle onbekend van uw COM-object. COM-objecten die zijn geïmplementeerd met behulp van de CCmdTarget COM-ondersteuning, kunnen het beheer onbekend ophalen met behulp van CCmdTarget::GetControllingUnknown.

U kunt uw COM-object ook delegeren aan de implementatie van MFC door aan te roepen CreateBindStatusCallback( NULL ).

CAsyncMonikerFile::Open aanroepen CreateBindStatusCallback.

Zie de IBindStatusCallback-interface en hoe Asynchrone binding en hoe Asynchrone binding en storage werken voor meer informatie over asynchrone monikers en asynchrone bindingen. Zie Aggregatie voor een bespreking van aggregatie. Alle drie de onderwerpen bevinden zich in de Windows SDK.

CAsyncMonikerFile::GetBindInfo

Aangeroepen vanaf de client van een asynchrone moniker om de asynchrone moniker te vertellen hoe het wil binden.

virtual DWORD GetBindInfo() const;

Retourwaarde

Haalt de instellingen voor IBindStatusCallBack. Zie de Windows SDK voor een beschrijving van de IBindStatusCallback interface.

Opmerkingen

De standaard implementatie stelt de binding in op asynchroon, om een opslagmedium (een stream) te gebruiken en het gegevenspushmodel te gebruiken. Overschrijf deze functie als u het gedrag van de binding wilt wijzigen.

Een van de redenen hiervoor is het binden met behulp van het gegevens pull-model in plaats van het gegevenspushmodel. In een gegevens pull-model stuurt de client de bindingsbewerking aan en levert de moniker alleen gegevens aan de client wanneer deze wordt gelezen. In een gegevenspushmodel wordt met de moniker de asynchrone bindingsbewerking aangestuurd en wordt de client continu op de hoogte gesteld wanneer er nieuwe gegevens beschikbaar zijn.

CAsyncMonikerFile::GetBinding

Roep deze functie aan om een aanwijzer op te halen naar de asynchrone overdrachtsbinding.

IBinding* GetBinding() const;

Retourwaarde

Een aanwijzer naar de IBinding interface die wordt opgegeven wanneer asynchrone overdracht begint. Retourneert NULL als de overdracht om welke reden dan ook niet asynchroon kan worden uitgevoerd.

Opmerkingen

Zo kunt u het proces voor gegevensoverdracht beheren via de IBinding interface, bijvoorbeeld met IBinding::Abort, IBinding::Pauseen IBinding::Resume.

Zie de Windows SDK voor een beschrijving van de IBinding interface.

CAsyncMonikerFile::GetFormatEtc

Roep deze functie aan om de indeling van de gegevens in de stream op te halen.

FORMATETC* GetFormatEtc() const;

Retourwaarde

Een aanwijzer naar de Windows-structuur FORMATETC voor de momenteel geopende stream. Retourneert NULL als de moniker niet is gebonden, als deze niet asynchroon is of als de asynchrone bewerking niet is gestart.

CAsyncMonikerFile::GetPriority

Aangeroepen vanaf de client van een asynchrone moniker wanneer het bindingsproces de prioriteit krijgt die aan de thread voor de bindingsbewerking wordt gegeven.

virtual LONG GetPriority() const;

Retourwaarde

De prioriteit waarop de asynchrone overdracht plaatsvindt. Een van de standaardthreadprioriteitsvlagmen: THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL en THREAD_PRIORITY_TIME_CRITICAL. Zie de Windows-functie SetThreadPriority voor een beschrijving van deze waarden.

Opmerkingen

GetPriority mag niet rechtstreeks worden aangeroepen. THREAD_PRIORITY_NORMAL wordt geretourneerd door de standaard implementatie.

CAsyncMonikerFile::OnDataAvailable

Een asynchrone monikeraanroepen OnDataAvailable om gegevens aan de client te bieden zodra deze beschikbaar is, tijdens asynchrone bindingsbewerkingen.

virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);

Parameterwaarden

dwSize
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 voor de bewerking of dat er geen specifieke hoeveelheid beschikbaar is.

bscfFlag
Een BSCF-opsommingswaarde. Dit kunnen een of meer van de volgende waarden zijn:

  • BSCF_FIRSTDATANOTIFICATION Identificeert de eerste aanroep voor OnDataAvailable een bepaalde bindingsbewerking.

  • BSCF_INTERMEDIATEDATANOTIFICATION Identificeert een tussenliggende aanroep OnDataAvailable voor een bindingsbewerking.

  • BSCF_LASTDATANOTIFICATION Identificeert de laatste aanroep OnDataAvailable voor een bindingsbewerking.

Opmerkingen

De standaard implementatie van deze functie doet niets. Zie het volgende voorbeeld voor een voorbeeld van een implementatie.

Example

void CMyMoniker::OnDataAvailable(DWORD dwSize, DWORD bscfFlag)
{
   if ((bscfFlag & BSCF_FIRSTDATANOTIFICATION) != 0)
   {
      m_dwReadBefore = 0;
      m_strText.Empty();
   }

   DWORD dwArriving = dwSize - m_dwReadBefore;

   if (dwArriving > 0)
   {
      int nLen = m_strText.GetLength();
      ASSERT((DWORD)nLen == m_dwReadBefore);
      LPTSTR psz = m_strText.GetBuffer(nLen + dwArriving);
      Read(psz + nLen, dwArriving);
      m_strText.ReleaseBuffer(nLen + dwArriving);
      m_dwReadBefore = dwSize;
   }
}

CAsyncMonikerFile::OnLowResource

Aangeroepen door de moniker wanneer resources laag zijn.

virtual void OnLowResource();

Opmerkingen

De standaard-implementatie-aanroepen GetBinding( )-> Abort( ).

CAsyncMonikerFile::OnProgress

Wordt herhaaldelijk aangeroepen door de moniker om de huidige voortgang van deze bindingsbewerking aan te geven, meestal met redelijke intervallen tijdens een langdurige bewerking.

virtual void OnProgress(
    ULONG ulProgress,
    ULONG ulProgressMax,
    ULONG ulStatusCode,
    LPCTSTR szStatusText);

Parameterwaarden

ulProgress
Geeft de huidige voortgang van de bindingsbewerking aan ten opzichte van het verwachte maximum dat wordt aangegeven in ulProgressMax.

ulProgressMax
Geeft de verwachte maximumwaarde van ulProgress aan voor de duur van aanroepen voor OnProgress deze bewerking.

ulStatusCode
Biedt aanvullende informatie over de voortgang van de bindingsbewerking. Geldige waarden worden opgehaald uit de BINDSTATUS opsomming. Zie Opmerkingen voor mogelijke waarden.

szStatusText
Informatie over de huidige voortgang, afhankelijk van de waarde van ulStatusCode. Zie Opmerkingen voor mogelijke waarden.

Opmerkingen

Mogelijke waarden voor ulStatusCode (en de szStatusText voor elke waarde) zijn:

Waarde Description
BINDSTATUS_FINDINGRESOURCE Met de bindingsbewerking wordt gezocht naar de resource waaraan het object of de opslag is gebonden. De szStatusText bevat de weergavenaam van de resource die wordt gezocht (bijvoorbeeld "www.microsoft.com").
BINDSTATUS_CONNECTING De bindingsbewerking maakt verbinding met de resource waaraan het object of de opslag is gebonden. De szStatusText bevat de weergavenaam van de resource die wordt verbonden met (bijvoorbeeld een IP-adres).
BINDSTATUS_SENDINGREQUEST De bindingsbewerking vraagt het object of de opslag aan die is gebonden. De szStatusText bevat de weergavenaam van het object (bijvoorbeeld een bestandsnaam).
BINDSTATUS_REDIRECTING De bindingsbewerking is omgeleid naar een andere gegevenslocatie. De szStatusText bevat de weergavenaam van de nieuwe gegevenslocatie.
BINDSTATUS_USINGCACHEDCOPY Met de bindingsbewerking wordt het aangevraagde object of de aangevraagde opslag opgehaald uit een kopie in de cache. De szStatusText is NULL.
BINDSTATUS_BEGINDOWNLOADDATA De bindingsbewerking is begonnen met het ontvangen van het object of de opslag waaraan is gebonden. De szStatusText bevat de weergavenaam van de gegevenslocatie.
BINDSTATUS_DOWNLOADINGDATA De bindingsbewerking blijft het object of de opslag ontvangen waaraan is gebonden. De szStatusText bevat de weergavenaam van de gegevenslocatie.
BINDSTATUS_ENDDOWNLOADDATA De bindingsbewerking is voltooid met het ontvangen van het object of de opslag waaraan is gebonden. De szStatusText bevat de weergavenaam van de gegevenslocatie.
BINDSTATUS_CLASSIDAVAILABLE Een exemplaar van het object waarnaar wordt gebonden, staat op het punt om te worden gemaakt. De szStatusText biedt de CLSID van het nieuwe object in tekenreeksindeling, zodat de client desgewenst de bindingsbewerking kan annuleren.

CAsyncMonikerFile::OnStartBinding

Overschrijf deze functie in uw afgeleide klassen om acties uit te voeren wanneer de binding wordt gestart.

virtual void OnStartBinding();

Opmerkingen

Deze functie wordt teruggeroepen door de moniker. De standaard implementatie doet niets.

CAsyncMonikerFile::OnStopBinding

Aangeroepen door de moniker aan het einde van de bindingsbewerking.

virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);

Parameterwaarden

hresult-
Een HRESULT dat de fout- of waarschuwingswaarde is.

szErrort
Een tekenreeks die de fout beschrijft.

Opmerkingen

Overschrijf deze functie om acties uit te voeren wanneer de overdracht wordt gestopt. Standaard wordt de functie vrijgegeven IBinding.

Zie de Windows SDK voor een beschrijving van de IBinding interface.

CAsyncMonikerFile::Open

Roep deze lidfunctie aan om een bestand asynchroon te openen.

virtual BOOL Open(
    LPCTSTR lpszURL,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IBindHost* pBindHost,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IBindHost* pBindHost,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IServiceProvider* pServiceProvider,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IServiceProvider* pServiceProvider,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IUnknown* pUnknown,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IUnknown* pUnknown,
    CFileException* pError = NULL);

Parameterwaarden

lpszURL
Een aanwijzer naar bestand dat asynchroon moet worden geopend. Het bestand kan elke geldige URL of bestandsnaam zijn.

pError
Een aanwijzer naar de bestandsonderzondering. In het geval van een fout wordt deze ingesteld op de oorzaak.

pMoniker
Een aanwijzer naar de asynchrone monikerinterface IMoniker, een nauwkeurige moniker die de combinatie is van de eigen moniker van het document, waarmee u kunt ophalen en IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER)een moniker die is gemaakt op basis van de padnaam. Het besturingselement kan deze moniker gebruiken om te binden, maar dit is niet de moniker die het besturingselement moet opslaan.

pBindHost
Een aanwijzer naar de IBindHost interface die wordt gebruikt om de moniker te maken op basis van een potentieel relatieve padnaam. Als de bindingshost ongeldig is of geen moniker biedt, wordt de aanroep standaard ingesteld op Open(lpszFileName,pError). Zie de Windows SDK voor een beschrijving van de IBindHost interface.

pServiceProvider
Een aanwijzer naar de IServiceProvider interface. Als de serviceprovider ongeldig is of de service IBindHostniet kan opgeven, wordt de aanroep standaard ingesteld Open(lpszFileName,pError)op .

pUnknown
Een aanwijzer naar de IUnknown interface. Als IServiceProvider deze wordt gevonden, worden de functiequery's voor IBindHost. Als de serviceprovider ongeldig is of de service IBindHostniet kan opgeven, wordt de aanroep standaard ingesteld Open(lpszFileName,pError)op .

Retourwaarde

Niet-nul als het bestand is geopend; anders 0.

Opmerkingen

Met deze aanroep wordt het bindingsproces gestart.

U kunt een URL of een bestandsnaam gebruiken voor de parameter lpszURL . Voorbeeld:

CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("http://www.microsoft.com"));

- of -

CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("file:c:\\mydata.dat"));

Zie ook

CMonikerFile-klasse
Hiërarchiegrafiek
CMonikerFile-klasse
CDataPathProperty-klasse