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 IBindStatusCallback wird. |
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
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 IBindStatusCallback
wird.
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 IBindStatusCallback
wird. 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::GetControllingUnknown
von .
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::Pause
und 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 IBindHost
bereitgestellt 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 IBindHost
bereitgestellt 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. Zum 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