Freigeben über


CAsyncMonikerFile-Klasse

Stellt Funktionalität für die Verwendung von asynchronen Monikern in ActiveX-Steuerelementen (früher OLE-Steuerelemente) bereit.

Syntax

class CAsyncMonikerFile : public CMonikerFile

Member

Öffentliche Konstruktoren

Name Beschreibung
CAsyncMonikerFile::CAsyncMonikerFile Erstellt ein CAsyncMonikerFile-Objekt.

Öffentliche Methoden

Name Beschreibung
CAsyncMonikerFile::Close Schließt alle Ressourcen und gibt sie frei.
CAsyncMonikerFile::GetBinding Ruft einen Zeiger auf die asynchrone Übertragungsbindung ab.
CAsyncMonikerFile::GetFormatEtc Ruft das Format der Daten im Datenstrom ab.
CAsyncMonikerFile::Open Öffnet eine Datei asynchron.

Geschützte Methoden

Name Beschreibung
CAsyncMonikerFile::CreateBindStatusCallback Erstellt ein COM-Objekt, das implementiert IBindStatusCallbackwird.
CAsyncMonikerFile::GetBindInfo Wird von der OLE-Systembibliothek aufgerufen, um Informationen zum Typ der zu erstellenden Bindung anzufordern.
CAsyncMonikerFile::GetPriority Wird von der OLE-Systembibliothek aufgerufen, um die Priorität der Bindung abzurufen.
CAsyncMonikerFile::OnDataAvailable Wird aufgerufen, um Daten bereitzustellen, sobald sie während asynchroner Bindungsvorgänge für den Client verfügbar sind.
CAsyncMonikerFile::OnLowResource Wird aufgerufen, wenn Ressourcen niedrig sind.
CAsyncMonikerFile::OnProgress Wird aufgerufen, um den Fortschritt des Datendownloadvorgangs anzuzeigen.
CAsyncMonikerFile::OnStartBinding Wird aufgerufen, wenn die Bindung gestartet wird.
CAsyncMonikerFile::OnStopBinding Wird aufgerufen, wenn die asynchrone Übertragung beendet wird.

Hinweise

Abgeleitet von CMonikerFile, das wiederum von COleStreamFile abgeleitet wird, verwendet die IMoniker-Schnittstelle, CAsyncMonikerFile um asynchron auf jeden Datenstrom zuzugreifen, einschließlich des asynchronen Ladens von Dateien aus einer URL. Die Dateien können Datenpfadeigenschaften von ActiveX-Steuerelementen sein.

Asynchrone Moniker werden hauptsächlich in internetfähigen Anwendungen und ActiveX-Steuerelementen verwendet, um eine reaktionsfähige Benutzeroberfläche bei Dateiübertragungen bereitzustellen. Ein erstklassiges Beispiel hierfür ist die Verwendung von CDataPathProperty , um asynchrone Eigenschaften für ActiveX-Steuerelemente bereitzustellen. Das CDataPathProperty Objekt ruft wiederholt einen Rückruf ab, um die Verfügbarkeit neuer Daten während eines langen Eigenschaftsaustauschprozesses anzuzeigen.

Weitere Informationen zur Verwendung asynchroner Moniker und ActiveX-Steuerelemente in Internetanwendungen finden Sie in den folgenden Artikeln:

Vererbungshierarchie

CObject

Cfile

COleStreamFile

CMonikerFile

CAsyncMonikerFile

Anforderungen

Kopfzeile: afxole.h

CAsyncMonikerFile::CAsyncMonikerFile

Erstellt ein CAsyncMonikerFile-Objekt.

CAsyncMonikerFile();

Hinweise

Die Schnittstelle wird nicht erstellt IBindHost . IBindHost wird nur verwendet, wenn Sie sie in der Open Memberfunktion angeben.

Eine Beschreibung der IBindHost Schnittstelle finden Sie im Windows SDK.

CAsyncMonikerFile::Close

Rufen Sie diese Funktion auf, um alle Ressourcen zu schließen und freizugeben.

virtual void Close();

Hinweise

Kann für ungeöffnete oder bereits geschlossene Dateien aufgerufen werden.

CAsyncMonikerFile::CreateBindStatusCallback

Erstellt ein COM-Objekt, das implementiert IBindStatusCallbackwird.

virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);

Parameter

pUnkControlling
Ein Zeiger auf die unbekannte Steuerung (äußere IUnknown) oder NULL, wenn keine Aggregation verwendet wird.

Rückgabewert

Wenn pUnkControlling nicht NULL ist, gibt die Funktion einen Zeiger auf das Innere IUnknown eines neuen COM-Objekts zurück, das unterstützt IBindStatusCallback. Ist pUnkControlling NULL, gibt die Funktion einen Zeiger auf ein IUnknown neues COM-Objekt zurück, das unterstützt IBindStatusCallback.

Hinweise

CAsyncMonikerFile erfordert ein COM-Objekt, das implementiert IBindStatusCallbackwird. MFC implementiert ein solches Objekt und ist aggregierbar. Sie können das eigene COM-Objekt überschreiben CreateBindStatusCallback . Ihr COM-Objekt kann die Implementierung von MFC aggregieren, indem die Steuerung unbekannter COM-Objekte aufgerufen CreateBindStatusCallback wird. COM-Objekte, die mithilfe der CCmdTarget COM-Unterstützung implementiert werden, können die unbekannte Steuerung mithilfe CCmdTarget::GetControllingUnknownvon .

Alternativ kann Ihr COM-Objekt die Implementierung von MFC durch Aufrufen CreateBindStatusCallback( NULL )delegieren.

CAsyncMonikerFile::Open calls CreateBindStatusCallback.

Weitere Informationen zu asynchronen Monikern und asynchroner Bindung finden Sie in der IBindStatusCallback-Schnittstelle und wie asynchrone Bindung und Speicherarbeit funktionieren. Eine Erläuterung der Aggregation finden Sie unter Aggregation. Alle drei Themen sind im Windows SDK enthalten.

CAsyncMonikerFile::GetBindInfo

Vom Client eines asynchronen Monikers aufgerufen, um dem asynchronen Moniker mitzuteilen, wie er gebunden werden soll.

virtual DWORD GetBindInfo() const;

Rückgabewert

Ruft die Einstellungen für IBindStatusCallBack. Eine Beschreibung der IBindStatusCallback Schnittstelle finden Sie im Windows SDK.

Hinweise

Die Standardimplementierung legt fest, dass die Bindung asynchron ist, um ein Speichermedium (einen Datenstrom) zu verwenden und das Daten-Push-Modell zu verwenden. Überschreiben Sie diese Funktion, wenn Sie das Verhalten der Bindung ändern möchten.

Ein Grund hierfür wäre das Binden mithilfe des Daten-Pull-Modells anstelle des Daten-Push-Modells. In einem Daten-Pull-Modell steuert der Client den Bindungsvorgang, und der Moniker stellt nur Daten für den Client bereit, wenn er gelesen wird. In einem Daten-Push-Modell steuert der Moniker den asynchronen Bindungsvorgang und benachrichtigt den Client kontinuierlich, wenn neue Daten verfügbar sind.

CAsyncMonikerFile::GetBinding

Rufen Sie diese Funktion auf, um einen Zeiger auf die asynchrone Übertragungsbindung abzurufen.

IBinding* GetBinding() const;

Rückgabewert

Ein Zeiger auf die Schnittstelle, die beim Beginn der IBinding asynchronen Übertragung bereitgestellt wird. Gibt NULL zurück, wenn die Übertragung aus irgendeinem Grund nicht asynchron erfolgen kann.

Hinweise

Auf diese Weise können Sie den Datenübertragungsprozess über die IBinding Schnittstelle steuern, z. B. mit IBinding::Abort, IBinding::Pauseund IBinding::Resume.

Eine Beschreibung der IBinding Schnittstelle finden Sie im Windows SDK.

CAsyncMonikerFile::GetFormatEtc

Rufen Sie diese Funktion auf, um das Format der Daten im Datenstrom abzurufen.

FORMATETC* GetFormatEtc() const;

Rückgabewert

Ein Zeiger auf die Windows-Struktur FORMATETC für den aktuell geöffneten Datenstrom. Gibt NULL zurück, wenn der Moniker nicht gebunden wurde, wenn er nicht asynchron ist oder der asynchrone Vorgang nicht begonnen hat.

CAsyncMonikerFile::GetPriority

Vom Client eines asynchronen Monikers aufgerufen, da der Bindungsprozess beginnt, die Priorität des Threads für den Bindungsvorgang zu empfangen.

virtual LONG GetPriority() const;

Rückgabewert

Die Priorität, bei der die asynchrone Übertragung stattfindet. Eines der Standardthreadprioritätskennzeichnungen: THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL und THREAD_PRIORITY_TIME_CRITICAL. Eine Beschreibung dieser Werte finden Sie in der Windows-Funktion SetThreadPriority .

Hinweise

GetPriority sollte nicht direkt aufgerufen werden. THREAD_PRIORITY_NORMAL wird von der Standardimplementierung zurückgegeben.

CAsyncMonikerFile::OnDataAvailable

Asynchrone Monikeraufrufe OnDataAvailable zum Bereitstellen von Daten an den Client während der asynchronen Bindungsvorgänge.

virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);

Parameter

dwSize
Der kumulierte Betrag (in Byte) der Daten, die seit beginn der Bindung verfügbar sind. Kann null sein, was angibt, dass die Datenmenge für den Vorgang nicht relevant ist oder dass keine bestimmte Menge verfügbar wurde.

bscfFlag
Ein BSCF-Enumerationswert. Dabei kann es sich um einen oder mehrere der folgenden Werte handeln:

  • BSCF_FIRSTDATANOTIFICATION Identifiziert den ersten Aufruf OnDataAvailable für einen bestimmten Bindungsvorgang.

  • BSCF_INTERMEDIATEDATANOTIFICATION Identifiziert einen zwischengeschalteten Aufruf OnDataAvailable für einen Bindungsvorgang.

  • BSCF_LASTDATANOTIFICATION Identifiziert den letzten Aufruf OnDataAvailable für einen Bindungsvorgang.

Hinweise

Bei der Standardimplementierung dieser Funktion wird keine Aktion ausgeführt. Im folgenden Beispiel finden Sie eine Beispielimplementierung.

Beispiel

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

Wird vom Moniker aufgerufen, wenn Ressourcen niedrig sind.

virtual void OnLowResource();

Hinweise

Die standardmäßigen Implementierungsaufrufe GetBinding( )-> Abort( ).

CAsyncMonikerFile::OnProgress

Wird vom Moniker wiederholt aufgerufen, um den aktuellen Fortschritt dieses Bindungsvorgangs anzugeben, in der Regel in angemessenen Intervallen während eines langwierigen Vorgangs.

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

Parameter

ulProgress
Gibt den aktuellen Fortschritt des Bindungsvorgangs relativ zum erwarteten Maximum an, das in ulProgressMax angegeben ist.

ulProgressMax
Gibt den erwarteten Höchstwert von ulProgress für die Dauer der Aufrufe OnProgress für diesen Vorgang an.

ulStatusCode
Enthält zusätzliche Informationen zum Fortschritt des Bindungsvorgangs. Gültige Werte werden aus der BINDSTATUS Enumeration entnommen. Mögliche Werte finden Sie in den Hinweisen.

szStatusText
Informationen zum aktuellen Fortschritt, abhängig vom Wert von ulStatusCode. Mögliche Werte finden Sie in den Hinweisen.

Hinweise

Mögliche Werte für ulStatusCode (und der szStatusText für jeden Wert) sind:

Wert Beschreibung
BINDSTATUS_FINDINGRESOURCE Der Bindungsvorgang sucht die Ressource, an die das Objekt oder den Speicher gebunden ist. Der szStatusText stellt den Anzeigenamen der gesuchten Ressource bereit (z. B. "www.microsoft.com").
BINDSTATUS_CONNECTING Beim Bindungsvorgang wird eine Verbindung mit der Ressource hergestellt, an die das Objekt oder der Speicher gebunden ist. Der szStatusText stellt den Anzeigenamen der Ressource bereit, mit der eine Verbindung hergestellt wird (z. B. eine IP-Adresse).
BINDSTATUS_SENDINGREQUEST Der Bindungsvorgang fordert das Objekt oder den Speicher an, an das gebunden wird. Der szStatusText stellt den Anzeigenamen des Objekts bereit (z. B. einen Dateinamen).
BINDSTATUS_REDIRECTING Der Bindungsvorgang wurde an einen anderen Datenspeicherort umgeleitet. Der szStatusText stellt den Anzeigenamen des neuen Datenspeicherorts bereit.
BINDSTATUS_USINGCACHEDCOPY Der Bindungsvorgang ruft das angeforderte Objekt oder speicher aus einer zwischengespeicherten Kopie ab. Der szStatusText ist NULL.
BINDSTATUS_BEGINDOWNLOADDATA Der Bindungsvorgang hat begonnen, das Objekt oder den Speicher zu empfangen, an das gebunden wird. Der szStatusText stellt den Anzeigenamen des Datenspeicherorts bereit.
BINDSTATUS_DOWNLOADINGDATA Der Bindungsvorgang empfängt weiterhin das Objekt oder den Speicher, an das gebunden wird. Der szStatusText stellt den Anzeigenamen des Datenspeicherorts bereit.
BINDSTATUS_ENDDOWNLOADDATA Der Bindungsvorgang hat den Empfang des Objekts oder speichers abgeschlossen, an das gebunden wird. Der szStatusText stellt den Anzeigenamen des Datenspeicherorts bereit.
BINDSTATUS_CLASSIDAVAILABLE Eine Instanz des Objekts, an das gebunden wird, ist gerade zu erstellen. Der szStatusText stellt die CLSID des neuen Objekts im Zeichenfolgenformat bereit, sodass der Client bei Bedarf den Bindungsvorgang abbrechen kann.

CAsyncMonikerFile::OnStartBinding

Überschreiben Sie diese Funktion in den abgeleiteten Klassen, um Aktionen auszuführen, wenn die Bindung gestartet wird.

virtual void OnStartBinding();

Hinweise

Diese Funktion wird vom Moniker zurück aufgerufen. Bei der Standardimplementierung wird keine Aktion ausgeführt.

CAsyncMonikerFile::OnStopBinding

Wird vom Moniker am Ende des Bindungsvorgangs aufgerufen.

virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);

Parameter

Hresult
Ein HRESULT, das den Fehler- oder Warnwert darstellt.

szErrort
Eine Zeichenfolge, die den Fehler beschreibt.

Hinweise

Überschreiben Sie diese Funktion, um Aktionen auszuführen, wenn die Übertragung beendet wird. Standardmäßig wird die Funktion los.IBinding

Eine Beschreibung der IBinding Schnittstelle finden Sie im Windows SDK.

CAsyncMonikerFile::Open

Rufen Sie diese Memberfunktion auf, um eine Datei asynchron zu öffnen.

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);

Parameter

lpszURL
Ein Zeiger auf die Datei, die asynchron geöffnet werden soll. Die Datei kann eine beliebige gültige URL oder ein beliebiger Dateiname sein.

pError
Ein Zeiger auf die Datei exceptions. Im Falle eines Fehlers wird sie auf die Ursache festgelegt.

pMoniker
Ein Zeiger auf die asynchrone Moniker-Schnittstelle IMoniker, ein präziser Moniker, der die Kombination des eigenen Monikers des Dokuments ist, mit dem Sie abrufen IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER)können, und einen Moniker, der aus dem Pfadnamen erstellt wurde. Das Steuerelement kann diesen Moniker zum Binden verwenden, aber dies ist nicht der Moniker, den das Steuerelement speichern soll.

pBindHost
Ein Zeiger auf die IBindHost Schnittstelle, die zum Erstellen des Monikers aus einem potenziell relativen Pfadnamen verwendet wird. Wenn der Bindungshost ungültig ist oder keinen Moniker bereitstellt, wird der Aufruf standardmäßig auf Open(lpszFileName,pError). Eine Beschreibung der IBindHost Schnittstelle finden Sie im Windows SDK.

pServiceProvider
Ein Zeiger auf die IServiceProvider-Schnittstelle. Wenn der Dienstanbieter ungültig ist oder der Dienst nicht IBindHostbereitgestellt werden kann, wird der Aufruf standardmäßig auf Open(lpszFileName,pError).

pUnknown
Ein Zeiger auf die IUnknown-Schnittstelle. Wenn IServiceProvider gefunden wird, werden die Funktionsabfragen für IBindHost. Wenn der Dienstanbieter ungültig ist oder der Dienst nicht IBindHostbereitgestellt werden kann, wird der Aufruf standardmäßig auf Open(lpszFileName,pError).

Rückgabewert

Nonzero, wenn die Datei erfolgreich geöffnet wird; andernfalls 0.

Hinweise

Dieser Aufruf initiiert den Bindungsprozess.

Sie können eine URL oder einen Dateinamen für den lpszURL-Parameter verwenden. Beispiel:

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

- oder -

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

Siehe auch

CMonikerFile-Klasse
Hierarchiediagramm
CMonikerFile-Klasse
CDataPathProperty-Klasse