Using the Image Viewer

The LEADTOOLS Medical Image Viewer Control provides support for displaying one or more images and for the real-time manipulation of one or more images. Support for this control is provided by the LTIVW.DLL. When the LTIVW.DLL loads, it registers the LTCONTAINERCLASS window class. Windows of this class can then be created in any of the following ways:

image\sqrblit.gif calling L_DispContainerCreate function.

image\sqrblit.gif using the Windows API CreateWindow function.

image\sqrblit.gif adding editing the application's Resource Script file (.RC) with code such as:

CONTROL "", IDC_IMGVIW, LTCONTAINERCLASS, WS_CHILD|WS_BORDER|WS_VISIBLE, 10,10,100,100

If a window of this class is created using the CreateWindow function or in the application's .RC file, make sure the LTIVW.DLL is loaded in the application's InitInstance function by calling L_UseContainerControl within the InitInstance function.

Each container created has both a window handle and a handle to the container itself. To get the handle to the window, call L_DispContainerGetWindowHandle. To get a handle to the container itself, call L_DispContainerGetHandle. Each container also has a bounding rectangle, which defines it area. To set the bounding rectangle for a container, call L_DispContainerSetBounds. To get the current bounding rectangle for a container, call L_DispContainerGetBounds.

A container has a number of properties that govern the appearance of the container and the cells, including the number of rows and columns in which cells are viewed. These properties are sets by calling L_DispContainerSetProperties. Therefore, if the number of rows and columns for a container are both sets to 3, there will be 9 areas in which the cells will be viewed. Each two adjacent rows or columns are separated by a thick line, called a splitter, which can be moved in order to change the height of the rows or the width of the columns. These splitters may be dragged using the left mouse button. Once the splitter is released in its new position the size and position of the surrounding cells will be adjusted automatically. To get the current properties for a container, call L_DispContainerGetProperties.

To the right and to the bottom of the image viewer/container, there are two splitters. These are the extra splitters, which allow the user to change the number of rows and/or columns in the container dynamically. To increase the number of rows or columns, drag an extra splitter over from either the bottom or right side of the container. To decrease the number of rows or columns, drag a splitter currently in the container over to where the extra splitter is currently located. The maximum number of rows and columns allowed in a container is 4 X 8. Once the maximum number of rows or columns has been set in the container, the extra splitter disappears. For example, if the user sets the maximum number of rows in the container, the extra bottom splitter will disappear, indicating that no more rows can be added.

Changing the position of one splitter may affect other splitters, depending on whether the container was set to maintain cell size or maintain cell position. If the container was set to maintain cell size, then if one splitter is moved, the other splitters parallel to it will move the same amount, as long as possible, to maintain the size of the cells.

If the container has been set to maintain cell position, then moving splitters may result in cells of various sizes. To make all cells the same size, call L_DispContainerSetProperties for the container, with the number of rows and columns set to the current number of visible rows and columns.

While a container can have a maximum of 4 rows and 8 columns, the number of cells in a container is limited by the amount of available memory. If the container contains more cells than it does blocks in which to display those cells, a vertical scroll bar appears to control which rows of cells to display. The first visible row of cells can be set programmatically by calling L_DispContainerSetFirstVisibleRow. To determine the current first visible row, call L_DispContainerGetFirstVisibleRow.

When a container is no longer needed it should be destroyed, by calling L_DispContainerDestroy. This function destroys the container, any cells managed by the container, any actions added to the container, bitmap lists attached to the cells of the container, and any other internal data allocated for the container.