Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dodawanie wywołania zwrotnego w języku Visual Basic różni się od metody używanej w języku VBScript. Funkcja GetRef używana w języku VBScript różni się od tej używanej w języku Visual Basic. W związku z tym deweloper musi utworzyć obiekt IDispatch, który ma funkcję wywołania zwrotnego jako domyślną metodę. Ten temat zawiera niezbędne informacje dotyczące tworzenia aplikacji języka Visual Basic.
Aby zaimplementować to wywołanie zwrotne w aplikacji
Dodaj odwołania do dwóch bibliotek obiektów: TLBTypes.olb i VboostTypes6.olb. Te biblioteki obiektów są dostarczane z przykładowym kodem punktu sterowania.
Dodaj odwołanie do pliku Cbklib.tlb. Ten plik definiuje strukturę funkcji wywołania zwrotnego.
Plik cbklib.tlb jest tworzony przy użyciu pliku cbklib.idl dołączonego do przykładowego kodu punktu sterowania. Zaleca się zmianę nazwy tego pliku dla funkcji wywołania zwrotnego, które różnią się strukturą ich parametrów. W tym przykładzie użyto języka MIDL do utworzenia pliku biblioteki typów.
Napisz funkcję wywołania zwrotnego. Parametry są takie same jak w przykładzie VBScript w Rejestrowanie wywołania zwrotnego. Ten przykład drukuje ciąg za każdym razem, gdy nadejdzie zdarzenie.
Function eventHandler(ByVal callbackType As Variant, _ ByVal svcObj As Variant, ByVal varName As Variant, _ ByVal value As Variant) As Long On Error GoTo Error 'Write some interesting code to do actual work here MsgBox "Event Handler Called" Exit Function Error: With Err If .Number > 0 Then eventHandler = .Number Or &H800A0000 Else eventHandler = .Number End If End With End FunctionDodaj funkcję wywołania zwrotnego do obiektuIUPnPService, jak pokazano w poniższym przykładzie, lub w innym obiekcie, takim jak IUPnPDeviceFinder, przy użyciu odpowiedniej biblioteki typów wywołania zwrotnego (cbklib.tbl).
Public Sub AddCbFunction(upnpSvc As UPnPService) Dim X As CallbackIUnknownLib.CallBackInterface Dim obj As Object Dim ptinfo As ITypeInfo Dim ptcomp As ITypeComp With LoadTypeLibEx(App.Path & "\cbklib.tlb", _ REGKIND_NONE).GetTypeComp .BindType "CallBackInterface", 0, ptinfo, ptcomp End With 'NewDelegator is defined in FunctionDelegator.bas Set X = NewDelegator(AddressOf eventHandler) Set obj = CreateStdDispatch(Nothing, ObjPtr(X), ptinfo) upnpSvc.AddCallback obj End Sub
W poniższym przykładzie obiekt IUPnPService jest przekazywany do funkcji. Funkcja wywołania zwrotnego jest następnie dodawana jako parametr.
Dim device as UPnPDevice
Dim svcObj as UpnPService
' Initialize the device using the FindByType or using other methods of finding the devices
Set svcObj = device.Services("appropriateService")
Call AddCbFunction(svcObj)
Biblioteki obiektów używane w przykładowym kodzie
W poprzednich przykładach i przykładowym kodzie punktu sterowania użyto niektórych z następujących bibliotek obiektów:
- TLBTypes.olb — ta biblioteka definiuje niektóre typy i interfejsy typów używane w przykładowym kodzie. Definiuje niektóre funkcje używane w języku Visual Basic, takie jak LoadTypeLibEx, które są już dostępne w języku C lub C++.
- VboostTypes6.olb — ta biblioteka definiuje niektóre typy podstawowe, które są używane w TLBTypes.olb i FunctionDelegator.bas. Więcej informacji na temat TLBTypes można znaleźć w książce Advanced Visual Basic 6: Power Techniques for Everyday Programs, autorstwa Matthew Curlanda (Addison-Wesley, lipiec 2000, ISBN: 0-201-70712-8). (Ta książka może nie być dostępna w niektórych językach i krajach).
Przykładowy kod punktu sterowania i poniższe biblioteki są powiązane z tą sekcją i są potrzebne do zaimplementowania tego wywołania zwrotnego. Można je znaleźć za pomocą przykładowego kodu punktu sterowania:
- Cbklib.idl
- Cbklib.tlb
- VboostTypes6.olb
- TLBTypes.olb
- FunctionDelegator.bas