Reading Barcodes

Take the following steps to create and run a program that demonstrates how to read barcodes. Remember that the purpose of the tutorials is to provide you with a quick and easy way to generate a Barcode program.

  1. Start Microsoft Visual Studio.

  2. Select the File->New menu option, 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 "BarcodeTutor".

  5. In the Location dialog box, enter the <LEADTOOLS_INSTALLDIR>\Examples\Barcode\ClassLibrary directory of your LEAD installation. Then Click OK. Then click "Next".

  6. Choose "Dialog based" and click "Finish".

  7. Click the "Solution Explorer" tab, and then click the "BarcodeTutor" project to expand it. Click the Header files, then Open "BarcodeTutor.h".

  8. Add the following line immediately before the class CBarcodeTutorApp declaration, (keep in mind that you may have to change the path to the header files):

    #include <..\..\..\..\include\ClassLib\ltwrappr.h> 

  9. Click the "Class View" tab.

  10. Click to open the "BarcodeTutor" classes branch.

  11. Click "CBarcodeTutorApp", and then double click the CBarcodeTutorApp(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 in place it beside your project files.

    1. In the Project Workspace, click the Solution Explorer tab.
    2. Double-click the BarcodeTutor 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)    
         #pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLL\\x64\\Ltwvc_x.lib")   
      #else   
         #pragma comment(lib, "..\\..\\..\\..\\Lib\\CDLL\\Win32\\Ltwvc_u.lib")   
      #endif // #if defined(WIN64) 
  14. Click on the "Class View" tab.

  15. Right click "CBarcodeTutorDlg" and select Add "Add Variable...".

  16. For Variable Type enter LBarCode, and for Variable Declaration put m_Barcode. Leave Access as "Public" and click OK.

  17. Right click "CBarcodeTutorDlg" and select Add "Add Variable...".

  18. For Variable Type enter LBitmapBase, and for Variable Declaration put m_Bitmap. Leave Access as "Public" and click OK.

  19. Click on the "Solution Explorer" tab.

  20. Double-click the "BarcodeTutor" folder to open it.

  21. Double-click the "Resource Files" folder to open it. Then double click "BarcodeTutor.rc" file to open it, then double click "Dialog", and then double click "IDD_BARCODETUTOR_DIALOG".

  22. Now, drag and drop 2 buttons, and change their properties as follows:

    Button ID Caption
    Button1 IDC_LOAD Load Image
    Button2 IDC_READ_BARCODE Read Barcode
  23. From View menu, select "Other Windows" menu, then select "Resource View" menu, then select Dialog, and select "IDD_BARCODETUTOR_DIALOG".

  24. Double click the "Load Image" button, and add the following code:

    m_Bitmap.SetFileName(MAKE_IMAGE_PATH(TEXT("barcode1.tif")));   
    m_Bitmap.Load(); 

  25. From View menu, select "Other Windows" menu, then select "Resource View" menu, then select Dialog, and select "IDD_BARCODETUTOR_DIALOG"

  26. Double click the "Read Barcode" button, and add the following code:

    BARCODE1D Bar1d; 
    memset(&Bar1d, 0, sizeof(BARCODE1D)); 
    Bar1d.uStructSize = sizeof(BARCODE1D); 
    Bar1d.bErrorCheck = TRUE; 
    Bar1d.nGranularity = 9; 
    Bar1d.nDirection = BARCODE_DIR_HORIZONTAL; 
    BARCODEREADOPT BarReadOpts; 
    memset(&BarReadOpts, 0, sizeof(BARCODEREADOPT)); 
    BarReadOpts.ulSearchType = BARCODE_1D_READ_ANYTYPE; 
    BarReadOpts.nUnits = BARCODE_SCANLINES_PER_PIXELS; 
    BarReadOpts.ulFlags = BARCODE_BLOCK_SEARCH; 
    BarReadOpts.nMultipleMax = 0; 
    SetRect(&BarReadOpts.rcSearch, 0, 0, 0, 0); 
    BarReadOpts.bUseRgn = FALSE; 
    BarReadOpts.BarColor.uStructSize = sizeof(BARCODECOLOR); 
    BarReadOpts.BarColor.dwColorBar = RGB(0, 0, 0); 
    BarReadOpts.BarColor.dwColorSpace = RGB(255, 255, 255); 
    m_Barcode.SetReadOptions(&BarReadOpts); 
    m_Barcode.SetBitmap(&m_Bitmap); 
    // The Read method will search for all linear barcodes in the whole bitmap 
    L_INT nRet = m_Barcode.Read(BARCODES_1D, &Bar1d, NULL); 
    if (nRet > 0) 
    { 
       pBARCODEDATA pBarData = NULL; 
       L_INT nCount = nRet; 
       L_CHAR szBuffer[MAX_PATH]; 
       for (L_INT i=0; i<nCount; i++) 
       { 
          pBarData = m_Barcode.GetBarCodeDataItem(i); 
          memset(szBuffer, 0, MAX_PATH); 
          wsprintfA(szBuffer, 
          "Barcode # %d\nData %s\nLeft %d\nTop %d\nRight %d\nBottom %d\n", 
          i+1, 
          pBarData->pszBarCodeData, 
          pBarData->rcBarLocation.left, 
          pBarData->rcBarLocation.top, 
          pBarData->rcBarLocation.right, 
          pBarData->rcBarLocation.bottom); 
          MessageBoxA(m_hWnd, szBuffer, ("Barcode Data"), MB_OK); 
       } 
    } 
    else 
       AfxMessageBox(TEXT("Failure while reading linear barcodes")); 

  27. Compile and test the program.

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

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