Using the Fast TWAIN Feature (C++ Builder)

Take the following steps to start a project and to add some code that acquires images using Fast Twain:

1.

Start C++ Builder 4.0.

2.

On the Project pull-down menu, use Import Type library… and select the LEAD RasterTwain Object Library (14.5). Press OK.

3.

On the Project pull-down menu, use Import Type library… and select the LEAD Raster Object Library (14.5). Press OK.

4.

On the Project pull-down menu, use Import Type library… and select the LEAD RasterIO Object Library (14.5). Press OK.

5.

Add the following code to the private section of Unit1.h:

LEADTwainCapability* pTwainCap; 
LEADRasterTwain* pRasterTwain; 
int nRet;

6.

Handle the Form1 OnCreate event, and code the FormCreate procedure as follows:

void __fastcall TForm1::FormCreate(TObject *Sender) 
{
   CoCreateInstance (CLSID_LEADRasterTwainCapability, NULL, CLSCTX_ALL, IID_ICapability, (void **)&pTwainCap); 
   CoCreateInstance(CLSID_LEADRasterTwain, NULL, CLSCTX_ALL, IID_ILEADRasterTwain, (void**)&pRasterTwain); 
   pRasterTwain->UnlockSupport ( L_SUPPORT_DOCUMENT, AnsiToOLESTR ( "TestKey" ) ) ; 
   pRasterTwain->InitSession ( (long)Handle ) ; 
   pRasterTwain->EnableMethodErrors = False; 
   rbMemory->Checked= True; 
}

7.

Handle the Form1 OnClose event, and code the FormClose procedure as follows:

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) 
{
   pRasterTwain->EndSession ( ) ; 
   if ( pTwainCap ) 
      pTwainCap->Release ( ) ; 
   
   if ( pRasterTwain ) 
      pRasterTwain->Release ( ) ; 
}

8.

At the top of Form1, add check box and name it as follows:

 

Name

Caption

 

chkUseBufferSize

Use Buffer Size

9.

Add 2 radio buttons, and name them as follows:

 

Name

Caption

 

rbNative

Native Mode

 

rbMemory

Memory Mode

10.

Add 1 button, and name it as follows:

 

Name

Caption

 

btnAcquire

Fast Acquire

11.

Add 2 Edit boxes, and name them as follows:

edtBufferSize
edtFName

12.

Handle the btnAcquire control's OnClick event, and code the btnAcquireClick procedure as follows. In online help, you can use the Edit pull-down menu to copy the block of code.

void __fastcall TForm1::btnAcquireClick(TObject *Sender) 
{
   if ( rbMemory->Checked ) 
   {
      pRasterTwain->FastTransferMode = L_LTWAIN_BUFFER_MODE ; 
     pRasterTwain->FastFormat = FILE_CCITT_GROUP4 ; 
   }
   else
   {
      pRasterTwain->FastTransferMode = L_LTWAIN_NATIVE_MODE ; 
      pRasterTwain->FastFormat = FILE_TIF; 
   }

   pRasterTwain->FastBitsPerPixel = 1; 
   pRasterTwain->FastUsePreferredBufferSize = chkUseBufferSize->Checked; 
   if ( pRasterTwain->FastUsePreferredBufferSize ) 
      pRasterTwain->FastBufferSize = StrToInt(edtBufferSize->Text); 

   nRet= pRasterTwain->AcquireMulti ( AnsiToOLESTR ( edtFName->Text.c_str() ), (long)(L_LTWAIN_SHOW_USER_INTERFACE | L_LTWAIN_USE_THREAD_MODE), (TOLEBOOL)true ); 
   if ( nRet == 0 ) 
      ShowMessage ( "Fast Scanning process done successfully..." ) ; 
   else
    ShowMessage ( "AcquireMulti failed, Error = " + IntToStr ( nRet ) ) ; 
}

13.

In the Unit1.h file include these files.

#include "LTRASTERTWAINLib_TLB.h"
#include "LTRASTERLib_TLB.h"
#include "LTRASTERIOLib_TLB.h"

14.

Save your project and run your program to test it.