DocCleanSuccess example for Visual Basic

Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Public hRgnAll As Long
Private Const RGN_OR = 2

'Declare the RasterProcess object WithEvents
Public WithEvents RasterProc As LEADRasterProcess

'Create the RasterProcess object and UnlockSupport
Private Sub Form_Load()
'.....
    Set RasterProc = CreateObject("LEADRasterProcess.LEADRasterProcess. ")
    LEADRasterView1.Raster.UnlockSupport L_SUPPORT_DOCUMENT, "TestKey"
'.....
End Sub

'This example updates a region with all 1x1 to 3x3 specks that are solid black
'If a speck has any white pixels, it is NOT part of the updated region
'The call is configured to update a single LEAD region with all changes
'The image itself is unchanged
'The DotRemove Event is used to display information about each speck that is removed

Dim nRet As Integer

RasterProc.EnableDocCleanEvents = True
nRet = RasterProc.DotRemove(LEADRasterView1.Raster, DOT_USE_SIZE Or DOT_SINGLE_REGION Or DOT_LEAD_REGION Or DOT_IMAGE_UNCHANGED, 1, 1, 3, 3)
If (nRet = 0) Then
    LEADRasterView1.RgnFrameType = RGNFRAME_COLOR
End If

Private Sub RasterProc_DotRemove(ByVal hRgn As Long, ByVal fBoundingRectLeft As Single, ByVal fBoundingRectTop As Single, ByVal fBoundingRectWidth As Single, ByVal fBoundingRectHeight As Single, ByVal iWhiteCount As Long, ByVal iBlackCount As Long)
Dim nRet As Long
Debug.Print "Dot Found at [Left,Top,Width,Height]" & CStr(fBoundingRectLeft) & "," & CStr(fBoundingRectTop) & "," & CStr(fBoundingRectWidth) & "," & CStr(fBoundingRectHeight) & " WhiteCount=" & CStr(iWhiteCount) & " BlackCount=" & CStr(iBlackCount)
'Do not remove the speck if it contains any white pixels
If (iWhiteCount > 0) Then
    nRet = SUCCESS_NOREMOVE
Else
    nRet = SUCCESS_REMOVE
End If
RasterProc.DocCleanSuccess = nRet
End Sub