home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / TAPI_Calle2081388302007.psc / CTAPICalls.cls < prev    next >
Text File  |  2007-08-30  |  4KB  |  180 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "CTAPICalls"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = False
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. ' collection of Calls
  15.  
  16. '********************************************************
  17. ' Code Sample by Gregory Fox, Data Management Associates, Inc.
  18. ' Portions borrowed and modified from publically posted samples.
  19. ' Provided AS-IS.  Not tested in a production environment.
  20. '********************************************************
  21.  
  22. Option Explicit
  23.  
  24. Private mcCalls As Collection
  25.  
  26. Private mlDeviceIndex As Long               'parent index
  27. Private mhOpenLine As Long                  'parent device handle
  28.  
  29.  
  30.  
  31. 'parent device
  32. Public Property Let DeviceIndex(ByVal newValue As Long)
  33.     mlDeviceIndex = newValue
  34.     
  35.     Dim oCall As CTAPICall
  36.     
  37.     For Each oCall In mcCalls
  38.         oCall.DeviceIndex = mlDeviceIndex
  39.     Next
  40.  
  41. End Property
  42. Public Property Get DeviceIndex() As Long
  43.     DeviceIndex = mlDeviceIndex
  44. End Property
  45.  
  46. Public Property Let OpenLineHandle(ByVal newValue As Long)
  47.     mhOpenLine = newValue
  48.     
  49.     Dim oCall As CTAPICall
  50.     
  51.     For Each oCall In mcCalls
  52.         oCall.OpenLineHandle = mhOpenLine
  53.     Next
  54.  
  55. End Property
  56. Public Property Get OpenLineHandle() As Long
  57.     OpenLineHandle = mhOpenLine
  58. End Property
  59.  
  60.  
  61. Private Sub Class_Initialize()
  62.     Set mcCalls = New Collection
  63. End Sub
  64. Private Sub Class_Terminate()
  65.     DeleteAll
  66.     Set mcCalls = Nothing
  67. End Sub
  68. Public Property Get Count() As Long
  69.     Count = mcCalls.Count
  70. End Property
  71. Public Function NewEnum() As IUnknown
  72. Attribute NewEnum.VB_UserMemId = -4
  73. Attribute NewEnum.VB_MemberFlags = "40"
  74.     Set NewEnum = mcCalls.[_NewEnum]
  75. End Function
  76.  
  77. Public Function Item(ByVal lCallHandle As Long) As CTAPICall
  78. Attribute Item.VB_UserMemId = 0
  79.  
  80.     On Error GoTo Item_Error
  81.     
  82.     Set Item = mcCalls.Item(CStr(lCallHandle))
  83.     
  84. Item_Exit:
  85.     Exit Function
  86.     
  87. Item_Error:
  88.     #If LevelA = 1 Then
  89.         Stop
  90.     #End If
  91.     Set Item = Nothing
  92.     Resume Item_Exit
  93.  
  94. End Function
  95.  
  96. Public Function AddGetCall(ByVal lCallHandle As Long) As CTAPICall
  97.  
  98.     On Error Resume Next
  99.     
  100.     Dim oCall As CTAPICall
  101.     
  102.     Set oCall = mcCalls.Item(CStr(lCallHandle))
  103.     
  104.     If oCall Is Nothing Then
  105.         Set oCall = New CTAPICall
  106.         oCall.OpenCallHandle = lCallHandle
  107.         oCall.DeviceIndex = mlDeviceIndex
  108.         oCall.OpenLineHandle = mhOpenLine
  109.         mcCalls.Add oCall, CStr(lCallHandle)      '<-- treat OpenCallHandle as the key
  110.     End If
  111.     
  112.     Set AddGetCall = oCall
  113.     
  114.     Set oCall = Nothing
  115.  
  116. End Function
  117.  
  118.  
  119. '0-based index
  120. Public Function ItemByIndex(ByVal lIndex As Long) As CTAPICall
  121.  
  122.     On Error GoTo Item_Error
  123.     
  124.     Set ItemByIndex = mcCalls.Item(lIndex + 1)
  125.     
  126. Item_Exit:
  127.     Exit Function
  128.     
  129. Item_Error:
  130.     #If LevelA = 1 Then
  131.         Stop
  132.     #End If
  133.     Set ItemByIndex = Nothing
  134.     Resume Item_Exit
  135.  
  136. End Function
  137.  
  138. Public Sub AddExisting(ByRef oCall As CTAPICall)
  139.  
  140.     If oCall.OpenCallHandle <> 0 Then
  141.  
  142.         oCall.DeviceIndex = mlDeviceIndex
  143.         oCall.OpenLineHandle = mhOpenLine
  144.         mcCalls.Add oCall, CStr(oCall.OpenCallHandle)      '<-- treat OpenCallHandle as the key
  145.     
  146.     End If
  147.     
  148. End Sub
  149. '
  150. Public Sub Delete(ByVal lCallHandle As Long)
  151.  
  152.     On Error Resume Next
  153.     
  154.     Dim oCall As CTAPICall
  155.     
  156.     Set oCall = mcCalls.Item(CStr(lCallHandle))
  157.     
  158.     If Not (oCall Is Nothing) Then
  159.         oCall.Release
  160.         mcCalls.Remove CStr(lCallHandle)   '<-- need to use lCallHandle because oCall.OpenCallHandle is now 0
  161.     End If
  162.     
  163. End Sub
  164.  
  165. Public Sub DeleteAll()
  166.  
  167.     On Error Resume Next
  168.  
  169.     Dim oCall As CTAPICall
  170.     Dim lHandle As Long
  171.     
  172.     For Each oCall In mcCalls
  173.         lHandle = oCall.OpenCallHandle
  174.         oCall.Release
  175.         mcCalls.Remove CStr(lHandle)   '<-- need to use lHandle because oCall.OpenCallHandle is now 0
  176.     Next
  177.     
  178. End Sub
  179.  
  180.