Note: The purpose of this TWAIN tutorial is to provide you a quick and easy way to generate a TWAIN program. For more in depth TWAIN programming, refer to the TWAIN demo.
To acquires images using the LEADTOOLS Fast TWAIN features:
| 
 1.  | 
 Start a new project as follows:  | 
|
| 
 
  | 
 Run Microsoft Visual Studio 2005, select the File -> New -> Project menu option, and do the following:  | 
|
| 
 
  | 
 a.  | 
 Select the “Other Languages” -> “Visual C++” -> “MFC”.  | 
| 
 
  | 
 b.  | 
 Select MFC Application as the project type.  | 
| 
 
  | 
 c.  | 
 In the Project name text box, specify tutor.  | 
| 
 
  | 
 d.  | 
 In the Location text box, specify the path of the project.  | 
| 
 
  | 
 E  | 
 Click the OK button, then Click Next button  | 
| 
 2.  | 
 In the next dialog box, do the following:  | 
|
| 
 
  | 
 a.  | 
 Select Dialog based.  | 
| 
 
  | 
 b.  | 
 Ensure “Use MFC in shared DLL” is selected  | 
| 
 
  | 
 c.  | 
 Click the Finish button.  | 
| 
 3.  | 
 Add #include statements to your program so you can access the LEAD Twain DLL functions:  | 
|
| 
 
  | 
 a.  | 
 In the Project Workspace, click the FileView tab.  | 
| 
 
  | 
 b.  | 
 Double-click the tutor files folder to open it.  | 
| 
 
  | 
 c.  | 
 Double-click the Header Files folder to open it.  | 
| 
 
  | 
 d.  | 
 Double-click the StdAfx.h file to edit it.  | 
| 
 
  | 
 Add the following lines to the end of the file (keep in mind, you may have to change the path to where the dll's reside):  | 
|
#include "..\..\..\include\l_bitmap.h"
#include "..\..\..\include\lttwn.h"
| 
 4.  | 
 Add the LEAD Twain LIB file to your program:  | 
| 
 
  | 
 Open “tutorDlg.cpp”, and add the following line after #include statements:  | 
#pragma comment(lib, "..\\..\\..\\Lib"L_VER_DESIGNATOR"\\CDLL\\Win32\\Lttwn_u.lib")
| 
 5.  | 
 Add a HTWAINSESSION member to the class and set it to NULL in the constructor.  | 
|
| 
 
  | 
 a.  | 
 Open “tutorDlg.h” file and add the following line after “HICON m_hIcon;” HTWAINSESSION m_hSession;  | 
| 
 
  | 
 b.  | 
 Open “tutorDlg.cpp” file and add the following line inside “CtutorDlg::CtutorDlg” m_hSession = NULL;  | 
| 
 6.  | 
 Go to the Solution Explorer and click the Resource Files, double click the .rc file. Double-click Dialog and double-click IDD_TUTOR_DIALOG to bring up the application's dialog box.  | 
|
| 
 7.  | 
 Add 1 check box. To do this, select the check box control on the Controls toolbar. Then, click and drag to position the button on the dialog box. Then double-click the check box to change its properties. Set the properties as follows:  | 
|
| 
 
  | 
 ID  | 
 Caption  | 
| 
 
  | 
 IDC_USEBUFFERSIZE  | 
 Use Buffer Size  | 
| 
 8.  | 
 Add two Radio buttons in addition to the above buttons.  | 
|
| 
 
  | 
 ID  | 
 Caption  | 
| 
 
  | 
 IDC_NATIVE  | 
 Native Mode  | 
| 
 
  | 
 IDC_MEMORY  | 
 Memory Mode  | 
| 
 9.  | 
 Add the following button:  | 
|
| 
 
  | 
 ID  | 
 Caption  | 
| 
 
  | 
 IDC_ACQUIRE  | 
 Fast Acquire  | 
| 
 10.  | 
 Add the following two edit boxes and name them as follows:  | 
|
| 
 
  | 
 ID  | 
|
| 
 
  | 
 IDC_BUFFERSIZE  | 
|
| 
 
  | 
 IDC_FILENAME  | 
|
| 
 11.  | 
 Add the following code to the end of OnInitDialog before the return statement:  | 
|
APPLICATIONDATA AppData;
AppData.uStructSize = sizeof(APPLICATIONDATA);
AppData.hWnd = GetSafeHwnd(); // Window handle of an application, may not be NULL
lstrcpy (AppData.szManufacturerName, TEXT("LEAD Technologies, Inc.")); // Application manufacturer name
lstrcpy (AppData.szAppProductFamily, TEXT("LEAD Test Applications")); // Application product family
lstrcpy (AppData.szVersionInfo, TEXT("Version 14.0")); // Application version info
lstrcpy (AppData.szAppName, TEXT("TWAIN Utility Application")); // Application Name
// initialize the twain session to use other lead twain functions
L_INT nRet = L_TwainInitSession (&m_hSession, &AppData);
if (nRet != SUCCESS)
   return FALSE;
| 
 12.  | 
 To end the Twain session and free memory allocated by the Twain DLL, add the following code in the WM_DESTROY of the CTutorDlg. Do the following:  | 
|
| 
 
  | 
 a.  | 
 Double click the dialog “IDD_TUTOR_DIALOG”, and then go to View -> Properties Window, and then press “Messages” button.  | 
| 
 
  | 
 b.  | 
 Select WM_DESTROY, and then add OnDestroy from the list box.  | 
if (m_hSession)
   L_TwainEndSession (&m_hSession);
| 
 13.  | 
 Add the following member variables for the following controls. To do so, go to Class View from Solution Explorer, select CtutorDlg, and then go to Project -> Add Variable menu, then do the following:  | 
|
| 
 
  | 
 a.  | 
 Check “Control variable” check box.  | 
| 
 
  | 
 b.  | 
 Select each of the following controls and add the corresponding member variable by pressing the Finish variable button.  | 
| 
 
  | 
 ID  | 
 Member variable  | 
 Type  | 
 Category  | 
| 
 
  | 
 IDC_USEBUFFERSIZE  | 
 m_bUseBufferSize  | 
 BOOL  | 
 Value  | 
| 
 
  | 
 IDC_BUFFERSIZE  | 
 m_nBufferSize  | 
 int  | 
 Value  | 
| 
 
  | 
 IDC_FILENAME  | 
 m_csFileName  | 
 CString  | 
 Value  | 
| 
 14.  | 
 Double click the dialog “IDD_TUTOR_DIALOG”, and then double click on “Fast Acquire” button to add “OnBnClickedAcquire” handler function  | 
| 
 
  | 
 Add the following code  | 
void CTutorDlg:: OnBnClickedAcquire ()
{
   UpdateData();
   L_INT  nFormat;
   L_UINT uTransferMode;
   BOOL bMemory = IsDlgButtonChecked(IDC_MEMORY);
   if (bMemory)
   {
      uTransferMode = LTWAIN_BUFFER_MODE;
      nFormat = FILE_CCITT_GROUP4;
   }
   else
   {
      uTransferMode = LTWAIN_NATIVE_MODE;
      nFormat = FILE_TIF;
   }
   L_INT nRet = L_TwainAcquireMulti (m_hSession,
                                    (L_TCHAR *)(LPCTSTR)m_csFileName,
                                    LTWAIN_SHOW_USER_INTERFACE | LTWAIN_USE_THREAD_MODE,
                                    uTransferMode,
                                    nFormat,
                                    1,
                                    TRUE,
                                    m_nBufferSize,
                                    !m_bUseBufferSize 
 , NULL, NULL);
   if (nRet == 1)
      AfxMessageBox(TEXT("Fast Scanning process done successfully..."));
   else
   {
      CString csError;
      csError.Format(TEXT("AcquireMulti failed, Error = %d\n"), nRet);
      AfxMessageBox(csError);
   }
}
| 
 15.  | 
 Compile and run your program to test it.  | 
| 
 16.  | 
 Enter a value (say 1000) for the buffer size and a file name (include full path) for the scanned image.  |