Visual Basic에서 콜백 등록
Visual Basic에서 콜백을 추가하는 것은 VBScript에서 사용되는 메서드와 다릅니다. VBScript에서 사용되는 GetRef 함수는 Visual Basic에서 사용되는 함수와 다릅니다. 따라서 개발자는 콜백 함수를 기본 메서드로 사용하는 IDispatch 개체를 만들어야 합니다. 이 항목에서는 Visual Basic 애플리케이션을 개발하는 데 필요한 정보를 제공합니다.
애플리케이션에서 이 콜백을 구현하려면
TLBTypes.olb 및 VboostTypes6.olb라는 두 개체 라이브러리에 대한 참조를 추가합니다. 이러한 개체 라이브러리는 제어점 샘플 코드와 함께 제공됩니다.
Cbklib.tlb에 대한 참조를 추가합니다. 이 파일은 콜백 함수의 구조를 정의합니다.
cbklib.tlb는 제어점 샘플 코드의 일부로 포함된 cbklib.idl 파일을 사용하여 만들어집니다. 매개 변수의 구조가 다른 콜백 함수에 대해 이 파일의 이름을 변경하는 것이 좋습니다. 이 예제에서는 MIDL을 사용하여 형식 라이브러리 파일을 만듭니다.
콜백 함수를 작성합니다. 매개 변수는 콜백 등록의 VBScript 예제와 동일합니다. 다음은 이벤트가 도착할 때마다 문자열을 인쇄하는 예제입니다.
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 Function
다음 예제와 같이 IUPnPService 개체 또는 적절한 콜백 형식 라이브러리(cbklib.tbl)를 사용하여 IUPnPDeviceFinder와 같은 다른 개체에 콜백 함수를 추가합니다.
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
다음 예제에서는 IUPnPService 개체가 함수에 전달됩니다. 그런 다음 콜백 함수가 매개 변수로 추가됩니다.
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)
샘플 코드에 사용되는 개체 라이브러리
이전 예제 및 제어점 샘플 코드는 다음 개체 라이브러리 중 일부를 사용합니다.
- TLBTypes.olb - 이 라이브러리는 샘플 코드에 사용되는 일부 형식 라이브러리 형식 및 인터페이스를 정의합니다. C 또는 C++에서 이미 사용할 수 있는 LoadTypeLibEx와 같이 Visual Basic에서 사용할 함수 중 일부를 정의합니다.
- VboostTypes6.olb - 이 라이브러리는 TLBTypes.olb 및 FunctionDelegator.bas에서 사용되는 일부 기본 형식을 정의합니다. TLBTypes에 대한 자세한 내용은 매튜 컬랜드 (애디슨 - 웨슬리, 2000년 7월, ISBN: 0-201-70712-8)에 의해 책 고급 시각적 기본 6 : 일상 프로그램에 대한 전원 기술에서 찾을 수 있습니다. (이 책은 일부 언어 및 국가에서는 사용할 수 없습니다.)
제어점 샘플 코드 및 다음 라이브러리는 이 섹션과 관련이 있으며 이 콜백을 구현하는 데 필요합니다. 제어점 샘플 코드에서 찾을 수 있습니다.
- Cbklib.idl
- Cbklib.tlb
- VboostTypes6.olb
- TLBTypes.olb
- FunctionDelegator.bas