VERSION 5.00 Begin VB.Form frmSelectPin Caption = "Connect to Pin" ClientHeight = 3210 ClientLeft = 4890 ClientTop = 4920 ClientWidth = 6270 LinkTopic = "Form2" PaletteMode = 1 'UseZOrder ScaleHeight = 3210 ScaleWidth = 6270 Begin VB.ListBox listPins Height = 1425 Left = 3360 TabIndex = 7 Top = 360 Width = 2655 End Begin VB.ListBox listFilters Height = 1425 Left = 240 TabIndex = 5 Top = 360 Width = 2655 End Begin VB.CommandButton Cancel Cancel = -1 'True Caption = "Cancel" Height = 375 Left = 3360 TabIndex = 4 Top = 2640 Width = 975 End Begin VB.CommandButton OK Caption = "OK" Default = -1 'True Height = 375 Left = 1920 TabIndex = 3 Top = 2640 Width = 975 End Begin VB.Label Label2 Caption = "Pins" Height = 252 Left = 3240 TabIndex = 6 Top = 120 Width = 492 End Begin VB.Label VendorInfoLabel Caption = "Vendor Info:" Height = 252 Left = 120 TabIndex = 2 Top = 2160 Width = 972 End Begin VB.Label VendorInfo Height = 252 Left = 1320 TabIndex = 1 Top = 2160 Visible = 0 'False Width = 2772 End Begin VB.Label Label1 Caption = "Filters" Height = 255 Left = 120 TabIndex = 0 Top = 120 Width = 495 End End Attribute VB_Name = "frmSelectPin" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False ' create filter components to connect filter pins Public OtherDir As Long Public g_objFI As IFilterInfo Public g_objPI As IPinInfo Public g_objMC As IMediaControl Public bOK As Boolean Private Sub Cancel_Click() ' cancel was clicked, so no pin connection is made bOK = False Hide End Sub Private Sub listFilters_Click() ' when the user clicks on a specific filter in the filter graph, this creates the ' list of pins for that filter in the pin listbox Dim pfilter As IFilterInfo For Each pfilter In g_objMC.FilterCollection If pfilter.Name = listFilters.Text Then ' display the information and pins for the selected filter Set g_objFI = pfilter ' global FilterInfo object VendorInfo.Caption = pfilter.VendorInfo listPins.Clear Dim pin As IPinInfo For Each pin In pfilter.Pins Dim pinOther As IPinInfo On Error Resume Next Set pinOther = pin.ConnectedTo If Err.Number <> 0 Then If pin.Direction <> OtherDir Then listPins.AddItem pin.Name End If End If Next pin End If Next pfilter listPins.ListIndex = 0 End Sub Private Sub Form_Load() ' fill the filters listbox with all filters in the current filter graph RefreshFilters End Sub Public Sub RefreshFilters() ' fill the filters listbox with all filters in the current filter graph listFilters.Clear Dim filter As IFilterInfo For Each filter In g_objMC.FilterCollection Dim pin As IPinInfo Dim pinOther As IPinInfo For Each pin In filter.Pins On Error Resume Next Set pinOther = pin.ConnectedTo If Err.Number <> 0 Then If pin.Direction <> OtherDir Then listFilters.AddItem filter.Name Exit For End If End If Next pin Next filter listFilters.ListIndex = 0 End Sub Private Sub OK_Click() ' connect the selected pins, if possible. if no connection is possible, the pin ' selection box closes and the program continues normally. Dim pin As IPinInfo For Each pin In g_objFI.Pins If pin.Name = listPins.Text Then Set g_objPI = pin bOK = True Exit For End If Next pin Hide End Sub Private Sub listPins_Click() ' when a pin is selected, store it in the global pin object Dim pPin As IPinInfo For Each pPin In g_objFI.Pins If pPin.Name = listPins.Text Then Set SelPin = pPin End If Next pPin End Sub