Beispiel für ASYNC-Attribute: Downloadet Daten asynchron

Aktualisiert: November 2007

Das Beispiel für ASYNC-Attribute erstellt ein Steuerelement zum asynchronen Herunterladen von Daten von einem URL. Das Steuerelement implementiert die IBindStatusCallback-Schnittstelle. Gewöhnlich werden große binäre Objekte oder Eigenschaften asynchron heruntergeladen. Dadurch wird die Benutzeroberfläche des Steuerelements auch bei längeren Netzwerkoperationen nicht blockiert. Beim asynchronen Herunterladen hat der Benutzer darüber hinaus die Möglichkeit, den Download abzubrechen. ATL verwendet zum Implementieren des asynchronen Herunterladens intern WinInet-Funktionen.

Das ASYNC-Beispiel ist die nicht attributierte Version dieses Beispiels.

Sicherheitshinweis:

Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird.

So rufen Sie Beispiele und Anweisungen für ihre Installation ab

  • Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.

    Weitere Informationen finden Sie unter Suchen von Beispieldateien.

  • Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.

  • Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.

Erstellen und Ausführen des Beispiels

So erstellen Sie dieses Beispiel und führen es aus

  1. Öffnen Sie die Projektmappendatei async.sln.

  2. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  3. Nachdem das Beispiel erstellt ist, öffnen Sie im Webbrowser ATLAsync.htm und folgen den Anweisungen. Hierdurch wird die URL-Eigenschaft des ASYNC-Steuerelements festgelegt und der Download gestartet. Die Daten werden während des Downloads im ASYNC-Steuerelement angezeigt.

Das Steuerelement kann im Testcontainer für ActiveX-Steuerelemente getestet werden. Ausführliche Informationen dazu, wie Sie auf den Testcontainer zugreifen und diesen zum Testen eines Steuerelements verwenden, finden Sie unter Testen von Eigenschaften und Ereignissen mit dem Testcontainer.

So funktioniert das Beispiel

ASYNC erstellt ein Edit-Steuerelement als untergeordnete Klasse mit einer Eigenschaft, die die Bezeichnung URL hat. Die URL-Eigenschaft ist eine BSTR, die einen URL repräsentiert, der auf Daten zeigt. Das ASYNC-Beispiel verwendet zum Implementieren des asynchronen Herunterladens die ATL-Klasse CBindStatusCallback. Wenn der Benutzer des Steuerelements die URL-Eigenschaft festlegt, erstellt ASYNC ein CBindStatusCallback-Objekt. Anschließend wird die CBindStatusCallback::StartAsyncDownload-Methode aufgerufen, der der URL sowie ein Zeiger auf eine Rückruffunktion übergeben werden. Diese Funktion (CAtlAsync::OnData) wird vom CBindStatusCallback-Objekt aufgerufen, und ihr werden die vom URL erhaltenen binären Daten übergeben. CAtlAsync::OnData sendet die empfangenen Daten einfach an das untergeordnete Edit-Steuerelement, wo sie angezeigt werden.

Ein Beispiel zum Erstellen übergeordneter Windows-Steuerelemente mithilfe von ATL finden Sie unter dem ATL-Beispiel SubEdit.

Attribute

In diesem Beispiel werden die folgenden Attribute verwendet:

coclass, default, dual, helpstring, id, implements_category, in, module, object, out, pointer_default, progid, propget, propput, registration_script, retval, threading, uuid, version, vi_progid

Schlüsselwörter

In diesem Beispiel werden die folgenden Schlüsselwörter verwendet:

ALT_MSG_MAP; ATLTRACE ; BEGIN_COM_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; BEGIN_PROPERTY_MAP; CBindStatusCallback::Download; CComBSTR::Append; CComCoClass; CComControl; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRoot; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; DECLARE_REGISTRY_RESOURCEID; DisableThreadLibraryCalls; DLL_PROCESS_ATTACH; DLL_PROCESS_DETACH; DllMain; END_COM_MAP; END_MSG_MAP; END_OBJECT_MAP; END_PROPERTY_MAP; IDataObjectImpl; IDispatchImpl; IObjectSafetyImpl; IOleControlImpl; IOleInPlaceActiveObjectImpl; IOleInPlaceObjectWindowlessImpl; IOleInPlaceObjectWindowlessImpl::SetObjectRects; IOleObjectImpl; IPerPropertyBrowsingImpl; IPersistPropertyBagImpl; IPersistStorageImpl; IPersistStreamInitImpl; IProvideClassInfo2Impl; IQuickActivateImpl; IsWindow; IViewObjectExImpl; MESSAGE_HANDLER; OBJECT_ENTRY; PROP_ENTRY; SendMessage; USES_CONVERSION

Hinweis:

In diesem und einigen anderen Beispielen wurden die Änderungen an den Visual C++-Assistenten, -Bibliotheken und -Compilern noch nicht nachvollzogen. Sie demonstrieren aber dennoch, wie Sie die gewünschte Aufgabe durchführen können.

Siehe auch

Weitere Ressourcen

ATL-Attributbeispiele