ASYNC-Beispiel: Downloadet Daten asynchron
Aktualisiert: November 2007
Das ASYNC-Beispiel 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 Beispiel für ASYNC-Attribute ist die 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
Öffnen Sie die Projektmappendatei async.sln.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
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.
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