> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OnToolAddBlock Method of the IImageViewerEvents Interface

> OnToolAddBlock method of the IImageViewerEvents Interface in ABBYY FineReader Engine Visual Components on Windows — This method is implemented on the client-side.

This method is implemented on the client-side. It is called by ABBYY FineReader Engine before adding a new block that has been drawn with the help of one of the following tools of [Image Viewer](/fine-reader/engine/visual-components-reference/imageviewer):

* Draw Recognition Area ([MI\_ChooseTool\_DrawRecognitionArea](/fine-reader/engine/visual-components-reference/imageviewer/image-viewer-commands#mi_choosetool_drawrecognitionarea))
* Draw Text Area ([MI\_ChooseTool\_DrawTextBlock](/fine-reader/engine/visual-components-reference/imageviewer/image-viewer-commands#mi_choosetool_drawtextblock))
* Draw Table Area ([MI\_ChooseTool\_DrawTableBlock](/fine-reader/engine/visual-components-reference/imageviewer/image-viewer-commands#mi_choosetool_drawtableblock))
* Draw Picture Area ([MI\_ChooseTool\_DrawPictureBlock](/fine-reader/engine/visual-components-reference/imageviewer/image-viewer-commands#mi_choosetool_drawpictureblock))
* Draw Background Picture Area ([MI\_ChooseTool\_DrawBackgroundPictureBlock](/fine-reader/engine/visual-components-reference/imageviewer/image-viewer-commands#mi_choosetool_drawbackgroundpictureblock))
* Draw Barcode Area ([MI\_ChooseTool\_DrawBarcodeBlock](/fine-reader/engine/visual-components-reference/imageviewer/image-viewer-commands#mi_choosetool_drawbarcodeblock))

See the description of the [Image Viewer Commands](/fine-reader/engine/visual-components-reference/imageviewer/image-viewer-commands) to know how these tools can be selected.

It delivers to the client information about the block that has been drawn: its type and region. With the help of this method it is possible to cancel the operation.

## Syntax

### C++

```cpp theme={null}
HRESULT OnToolAddBlock(
  BlockTypeEnum type,
  IFRRectangle* BlockRect,
  VARIANT_BOOL* Cancel
);
```

### C\#

```csharp theme={null}
void OnToolAddBlock(
  BlockTypeEnum type,
  IFRRectangle   BlockRect,
  out bool      Cancel
);
```

### Visual Basic .NET

```vb theme={null}
Sub OnToolAddBlock( _
  type As BlockTypeEnum, _
  BlockRect As IFRRectangle, _
  ByRef Cancel As Boolean _
)
```

## Parameters

type

\[in] Contains the type of the block. See the description of the [BlockTypeEnum](/fine-reader/engine/api-reference/enumerations/blocktypeenum) constants.

BlockRect

\[in] Contains the coordinates of the block. Coordinates are represented by the [FRRectangle](/fine-reader/engine/api-reference/supplementary-objects-and-methods/frrectangle) object. The coordinates are specified in pixels relative to the document image.

Cancel

\[out] You may set this variable to TRUE to indicate that the process should be terminated. In this case, the block will not be created.

## Return values

\[C++ only] If this method returns a value other than S\_OK, it indicates that an error occurred on the client-side, and in this case the value of the Cancel parameter is not taken into account.

## Remarks

The client implementation of this method must assure that all exceptions thrown inside the method are caught and handled and no exceptions are propagated outside the method. Propagation of an exception outside the method may lead to unpredictable results (such as program termination).

## See also

[IImageViewerEvents](/fine-reader/engine/visual-components-reference/iimageviewerevents)
