Beispiel für ASYNC-Attribute: Downloadet Daten asynchron
Das Beispiel für ASYNC-Attribute erstellt ein Steuerelement, das Daten asynchron von einem URL herunterlädt. Das Steuerelement implementiert die Schnittstelle IBindStatusCallback. In der Regel, downloaden Sie asynchron große binäre Objekte oder Eigenschaften. Dadurch wird die Benutzeroberfläche des Steuerelements während möglicherweise langwierigen Netzwerkoperationen entsperrt bleiben. Die Verwendung des asynchronen Downloadens gibt dem Benutzer auch die Gelegenheit, den Download abzubrechen. WinInet-Funktionen wird von ATL verwendet, um asynchrone downloaden zu implementieren.
ASYNC-Beispiel ist die nicht attributierte Version dieses Beispiels.
Sicherheitshinweis |
---|
Dieser Beispielcode soll ein Konzept veranschaulichen, und es wird nur den Code, der für dieses Konzept relevant sind. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "Wie besehen"keine Garantien. |
So erhalten Sie Beispiele und Anweisungen für deren Installation:
Um Beispiele von Visual Studio zuzugreifen
im Menü Hilfe Menü klicken Beispiele.
Standardmäßig sind die Beispiele in installiert. Laufwerk: \Programme\Microsoft visual Studio 10.0\Samples\.
- Die neueste Version dieses Beispiels und eine Liste der anderen Beispiele finden Sie unter Visual Studio Samples auf der MSDN-Website.
Erstellen und Ausführen des Beispiels
So erstellen und in diesem Beispiel führen
Öffnen Sie die Projektmappe Datei async.sln.
From the Build menu, click Build Solution.
Nachdem das Beispiel erstellt wurde, öffnen Sie in Ihrem Webbrowser ATLAsync.htm und folgen Sie den Anweisungen. Dadurch wird die ASYNC-Eigenschaft des Steuerelements URL und startet den Download. Wie Daten heruntergeladen ist, sehen Sie es im ASYNC-Steuerelement angezeigt.
Sie können das Steuerelement im Testcontainer für ActiveX-Steuerelemente testen testen. Details zu den Testcontainer zugreifen und es zum Testen eines Steuerelements verwenden finden Sie unter Testen von Eigenschaften und Ereignissen mit Testcontainer.
Funktionsweise des Beispiels
ASYNC erstellt eine Unterklasse eines Edit-Steuerelement mit einer Eigenschaft mit dem Namen URL. Die URL -Eigenschaft ist ein BSTR , das eine URL darstellt, der auf Daten zeigt. Das ASYNC-Beispiel verwendet die ATL-CBindStatusCallback-Klasse, um asynchronen Downloadens zu implementieren. Wenn der Benutzer des Steuerelements die URL -Eigenschaft festlegt, erstellt ASYNC ein CBindStatusCallback-Objekt. Die CBindStatusCallback::StartAsyncDownload-Methode ist dann aufgerufen, und die URL und einen Zeiger auf eine Rückruffunktion übergeben. Diese Funktion CAtlAsync::OnDatawird durch das CBindStatusCallback Objekt aufgerufen und ist binären Daten aus dem URL übergeben, wie es empfangen wurde. CAtlAsync::OnData einfach sendet die empfangenen Daten an das untergeordnete Steuerelement, zu bearbeiten, bei dem es angezeigt.
Ein Beispiel für wie Superklasse Windows-Steuerelementen mit ATL finden Sie im ATL-SubEdit Beispiel.
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
Einige Beispiele wie diesen, wurden nicht geändert, um Änderungen in der Visual C++-Assistenten, Bibliotheken und Compiler, demonstrieren aber dennoch wie Sie die gewünschte Aufgabe durchführen.