ASYNC-Beispiel: Downloadet Daten asynchron
Das ASYNC-Beispiel 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 längeren Netzwerkoperationen entsperrt bleiben. Asynchronen Downloadens gibt auch dem Benutzer die Gelegenheit, den Download abzubrechen. WinInet-Funktionen wird von ATL verwendet, um asynchrone downloaden zu implementieren.
ASYNC Attribute Beispiel ist die 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 async.sln.
Erstellen Sie auf Menü, klicken Sie auf Projektmappe.
Nachdem das Beispiel erstellt wurde, öffnen Sie in Ihrem Webbrowser ATLAsync.htm und folgen Sie den Anweisungen. Dies legt die URL-Eigenschaft des ASYNC-Steuerelements 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. Weitere Informationen zum Testcontainer zugreifen und es zum Testen eines Steuerelements verwenden finden Sie unter Testing Properties and Events with Test Container.
Funktionsweise des Beispiels
ASYNC erstellt ein Unterklasse Edit-Steuerelement, das eine Eigenschaft mit dem Namen URL verfügt. Die URL -Eigenschaft ist ein BSTR, die einen URL darstellt, die auf Daten verweist. Das ASYNC-Beispiel verwendet die ATL-CBindStatusCallback-Klasse, um asynchronen Downloadens zu implementieren. Wenn 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 sendet nur die empfangenen Daten an das untergeordnete Bearbeitungssteuerelement, wo es angezeigt.
Ein Beispiel zur wie um übergeordnete Klasse Windows, steuert indem mit Hilfe von ATL finden Sie im ATL-SubEdit Beispiel.
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