With The Case Of  Release The Power OF  Visual C++ !   HomeProducts | PurchaseSupport | Downloads  
Download Evaluation
Pricing & Purchase?
E-XD++Visual C++/ MFC Products
Features Tour 
Electronic Form Solution
Visualization & HMI Solution
Power system HMI Solution
CAD Drawing and Printing Solution

Bar code labeling Solution
Workflow Solution

Coal industry HMI Solution
Instrumentation Gauge Solution

Report Printing Solution
Graphical modeling Solution
GIS mapping solution

Visio graphics solution
Industrial control SCADA &HMI Solution
BPM business process Solution

Industrial monitoring Solution
Flowchart and diagramming Solution
Organization Diagram Solution

Graphic editor Source Code
UML drawing editor Source Code
Map Diagramming Solution

Architectural Graphic Drawing Solution
Request Evaluation
ActiveX COM Products
Technical Support
  General Q & A
Discussion Board
Contact Us


Get Ready to Unleash the Power of UCanCode .NET


UCanCode Software focuses on general application software development. We provide complete solution for developers. No matter you want to develop a simple database workflow application, or an large flow/diagram based system, our product will provide a complete solution for you. Our product had been used by hundreds of top companies around the world!

"100% source code provided! Free you from not daring to use components because of unable to master the key technology of components!"

C++ Barcode source codes with draw Code39 Code93 AND Code128A  Code128B with Code128C


Screenshot of Main Dialog


The Library file presented is Barcode.h under Lib directory contains inline C++ code for:

  • Code39
  • Code93
  • CodeI2of5
  • Code128A
  • Code128B
  • Code128C

The library file is targeted to Win32, so it can be used by both MFC and Win32 programs. 
All classes are almost the same from the user's point of view, only 2 functions are needed to be used.

  1. Encode...()
  2. Draw...(...)

For example, class for Code39 is Barcode39:

Call default constructor first, then call the following 2 functions:

Collapse Copy Code
BOOL Encode39(const char*pszCodeIn);
void Draw39(HDC hDC,int iX,int iY0,int iY1,const COLORREF clrBar,
			const COLORREF clrSpace,const int iPenW); 
Parameters of the above functions:
  • pszCodeIn: string to be encoded, i.e. "1234567890"
  • iX: start horizontal position to draw the barcode
  • iY0,iY1: start and end vertical positions to draw the barcode
  • clrBar, clrSpace: colors of bar and space
  • iPenW: width of pen to draw the barcode

Array for Bars and Spaces

A byte array is defined in BarcodeBase class as BYTE ia_Buf[4096];
Each byte of the array represents a bar or space, bits of the byte are encoded in the format:
First 6 bits are not used.
Last bit is flagged for bar or space.
Last second bit is flagged for wide or narrow.

So, value of the byte means:

  • 0x00 = a narrow space
  • 0x01 = a narrow bar
  • 0x02 = a wide space
  • 0x03 = a wide bar

Note: Class BarcodeEan13 is special: Last third bit is used by the class to indicate if the bar (space) is longer than others.

Sample Program

The sample is a dialog based MFC program. The main dialog is in borderless style, when edit-box Move (refer to picture below) gets focus, user can use arrow keys of up, down, left and right to move main dialog. This feature allows you to compare barcode drawn on main dialog with other barcode programs easily. You also can use mouse to drag main dialog by clicking on it as clicking on caption of normal windows.



  • OnTop/OnNormal: Set the program as top-most-window or not
  • Close: Close the program
  • Help: Display this HTML file
  • Print: Print barcode


  • Style: Barcode styles or symbologies
  • Map: Map-mode used
  • Move: Move main dialog by arrow keys once it gets focus
  • Code: String to be encoded
  • X,Y,Height: For print positions, unit is in logic points
  • Pen width: Width of one bar or space

Please note

Some MapModes (such as MM_HIENGLISH) cannot be displayed properly on screen, you have to test them by printing.


This sample and library file are my test program for barcode, which doesn't include second part: dynamical bitmap of barcode generated from encoding.

Why do I test barcode with bitmap? Here is the answer:
As we know, there are three methods for printing:

  1. By drawing such as LineTo()
  2. By Bitmap such as BitBlt()
  3. By fonts such as TextOut()

Barcode must be printed clearly with high qualities. The only way to print a good barcode is by fonts. If you try to use the code for commercial purposes, the result is very disappointing because this program does not use fonts.




Copyright ?1998-2022 UCanCode.Net Software , all rights reserved.
Other product and company names herein may be the trademarks of their respective owners.

Please direct your questions or comments to