Acquire Images from a TWAIN Source

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.

Take the following steps to create and run a program that implements LEADTOOLS TWAIN features.

  1. Start Microsoft Visual Studio.
  2. Select the File->New menu option and then click the Project menu.
  3. From Project Types select Other Languages to expand it, then select Visual C++ to expand it, then select MFC. From the right window select MFC Application.
  4. In the Project Name dialog box, enter TwainTutor.
  5. In the Location dialog box, use the "Examples\Scanning\ClassLibrary" directory of your LEAD installation. For example, if you installed LEADTOOLS in *C:\LEADTOOLS22*, enter C:\LEADTOOLS22\Examples\Scanning\ClassLibrary, then click OK. Then click Next.
  6. Choose Dialog based and click Finish.
  7. Click the Solution Explorer tab, and then click the TwainTutor project to expand it. Click the Header files, then Open TwainTutor.h.
  8. Add the following line immediately before the class CTwainTutorApp declaration (keep in mind, you may have to change the path to where the header files reside):

    #include "..\..\..\..\include\ClassLib\ltwrappr.h" 

  9. Click the Class View tab.

  10. Click to open the TwainTutor classes branch.
  11. Click CTwainTutorApp, and then double-click the CTwainTutorApp(void) constructor.
  12. Add the following lines after //TODO: add construction code here:

    LBase::LoadLibraries(LT_ALL_LEADLIB);   
    L_TCHAR * pszLicenseFile = L"Replace this with the path to the LEADTOOLS license file";   
    L_TCHAR * pszDeveloperKey = L"Replace this with your developer key";   
    LSettings::SetLicenseFile(pszLicenseFile, pszDeveloperKey);   

  13. Create a new file called Imports.cpp and place it beside your project files.

    1. In the Project Workspace, click the Solution Explorer tab.
    2. Double-click the TwainTutor folder to open it.
    3. Right-click the source files folder and select Add New item.
    4. Expand the Visual C++ tree, if it is not already expanded.
    5. Select Code from the sub-tree.
    6. Select C++ File (.cpp) from the right window.
    7. In the Name text box, specify Imports.cpp.
    8. Click the Add button.
    9. Double-click the imports.cpp in the Solution Explorer and add the following lines:
      #include "StdAfx.h"   
      #if defined(WIN64)    
            
      #else   
         #pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLL\\Win32\\Ltwvc_u.lib")   
      #endif // #if defined(WIN64)  
  14. Click the Solution Explorer tab.

  15. Double-click the TwainTutor folder to open it.
  16. Double-click the Header Files folder to open it. Then double-click the TwainTutorDlg.h file to open it.
  17. Add the following class declaration before CTwainTutorDlg class.

    class LMyTwain : public LTwain 
    { 
       LEAD_DECLAREOBJECT(LMyTwain); 
    public: 
       LMyTwain(); 
       virtual ~LMyTwain(); 
       virtual L_INT BitmapCallBack(pBITMAPHANDLE pBitmap); 
    }; 

  18. Click the Solution Explorer tab.

  19. Double-click the TwainTutor folder to open it.
  20. Double-click the Source Files folder to open it. Then double-click the TwainTutorDlg.cpp file to open it.
  21. Add the following class:

    LEAD_IMPLEMENTOBJECT(LMyTwain); 
    LMyTwain::LMyTwain() 
    { 
       EnableCallBack(TRUE); 
    } 
    LMyTwain::~LMyTwain() 
    { 
    } 
    L_INT LMyTwain::BitmapCallBack(pBITMAPHANDLE pBitmap) 
    { 
       //Copy the acquired bitmap here 
       return SUCCESS; 
    } 

  22. Click the Class View tab

  23. Right-click CTwainTutorDlg and select Add Add Variable...
  24. For Variable Type enter LMyTwain, and for Variable Declaration put m_MyTwain. Leave Access as Public and click OK.
  25. Click to open the CTwainTutorDlg branch. Double-click the OnInitDialog() function and add the following code after the line:

// TODO: Add extra initialization here

APPLICATIONDATA AppData;    
memset(&AppData, 0, sizeof(APPLICATIONDATA));    
AppData.hWnd = m_hWnd;    
AppData.uStructSize = sizeof(AppData);    
lstrcpy(AppData.szManufacturerName, _T("LEAD Technologies, Inc."));    
lstrcpy(AppData.szAppProductFamily, _T("LEAD Test Applications"));   
lstrcpy(AppData.szVersionInfo, _T("Version 1.0"));   
lstrcpy(AppData.szAppName, _T("TWAIN Test Application"));   
m_MyTwain.InitSession(&AppData);  

  1. Right-click the CTwainTutorDlg branch, and choose Properties.
  2. From the Properties window toolbar, click the Messages icon. Then click the empty area beside the item WM_DESTROY and choose OnDestroy.
  3. Add the following code after the opening bracket {:

    m_MyTwain.EndSession();   
    LBase::UnloadLibraries(LT_ALL_LEADLIB);  

  4. Click the Solution Explorer tab.

  5. Double-click the TwainTutor folder to open it.
  6. Double-click the Resource Files folder to open it. Then double-click the TwainTutor.rc file to open it, then double-click Dialog, and then double-click IDD_TWAINTUTOR_DIALOG.
  7. Now drag and drop 2 buttons and 3 radio buttons, and change their properties as follows:

    Control Type ID Caption
    Button1 IDC_SELECT_SRC Select Source
    Button2 IDC_ACQUIRE Acquire
    Radio1 IDC_NATIVE Native
    Radio2 IDC_MEMORY Memory
    Radio3 IDC_FILE File
  8. From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR_DIALOG.

  9. Double-click the "Select Source" button, and add the following code:

    m_MyTwain.SelectSource(NULL);  

  10. From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR_DIALOG.

  11. Double-click the Acquire button, and add the following code:

    pBITMAPHANDLE pBitmap = NULL;    
    m_MyTwain.Acquire(pBitmap, sizeof(BITMAPHANDLE), LTWAIN_SHOW_USER_INTERFACE, NULL);  

  12. From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR_DIALOG.

  13. Double-click the Native radio button, and add the following code:

    LTWAINPROPERTIES twProps;    
    memset (&twProps, 0, LTWAINPROPERTIESSIZE);    
    L_INT nRet = m_MyTwain.GetProperties(&twProps, sizeof(LTWAINPROPERTIES), LTWAIN_PROPERTIES_GETCURRENT);    
    if (nRet != SUCCESS)    
       return;    
    twProps.DataTransfer.nTransferMode = TWSX_NATIVE;    
    nRet = m_MyTwain.SetProperties(&twProps, LTWAIN_PROPERTIES_SET);    
    if (nRet != SUCCESS)    
       return;  

  14. From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR_DIALOG.

  15. Double-click the Memory radio button, and add the following code:

    LTWAINPROPERTIES twProps;    
    memset (&twProps, 0, LTWAINPROPERTIESSIZE);    
    L_INT nRet = m_MyTwain.GetProperties(&twProps, sizeof(LTWAINPROPERTIES), LTWAIN_PROPERTIES_GETCURRENT);    
    if (nRet != SUCCESS)    
       return;    
    twProps.DataTransfer.nTransferMode = TWSX_MEMORY;    
    twProps.DataTransfer.nBufMemCompression = TWCP_NONE;    
    nRet = m_MyTwain.SetProperties(&twProps, LTWAIN_PROPERTIES_SET);    
    if (nRet != SUCCESS)    
       return;  

  16. From the View menu, select the Other Windows menu, then select the Resource View menu, then select Dialog, and select IDD_TWAINTUTOR_DIALOG.

  17. Double-click the File radio button, and add the following code:

    LTWAINPROPERTIES twProps;    
    memset (&twProps, 0, LTWAINPROPERTIESSIZE);    
    L_INT nRet = m_MyTwain.GetProperties(&twProps, sizeof(LTWAINPROPERTIES), LTWAIN_PROPERTIES_GETCURRENT);    
    if (nRet != SUCCESS)    
       return;    
    twProps.DataTransfer.nTransferMode = TWSX_FILE;    
    lstrcpy (twProps.DataTransfer.szFileName, TEXT("c:\\twain.bmp"));   
    nRet = m_MyTwain.SetProperties(&twProps, LTWAIN_PROPERTIES_SET);    
    if (nRet != SUCCESS)    
       return;  

  18. Compile and test the program.

Help Version 22.0.2022.12.7
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS TWAIN C++ Class Library Help
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.