
Get
Ready to Unleash the
Power of UCanCode
.NET
|
|
|
| |
|
C/C++ Drawing BarCode
Tutorials
BarCode Printing,
it also with BarCode Library
and BarCode Source Code,
with Drawing barcode.
|
Barcode
library
Library file presented is Barcode.h
under Lib directory, which 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 user's point of view, only 2 functions are
needed to be used.
- Encode...()
- Draw...(...)
For example, class for Code39
is Barcode39:
Call default constructor first, then call following 2
functions:
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 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 Barcode
Base 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:
[n/a][n/a][n/a][n/a][n/a][n/a][w-n][b-s]
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 Barcode Ean13
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.
Main dialog is in borderless style, when edit-box Move (refer to picture
bellow) 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.
Controls:
- Buttons:
OnTop/OnNormal: set the program as top-most-window or not
Close: close the program
Help: display this html file
Print: print barcode
- Others
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) can not be
displayed properly on screen, you have to test them by printing.
Disappoint:
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
answer:
As we know, there are three methods for printing:
- By drawing
Such as LineTo()
- By Bitmap
Such as BitBlt()
- By fonts
Such as TextOut()
Barcode must be printed
clearly with high qualities. The only way to print
good barcode is by fonts.
If you try to use the code for commercial purposes, result is very
disappointed because this program dose not use fonts.
Screenshot of main dialog

References
- Barcode serial
articles by Mr. Neil Van Eps
- Articles by Mr. Lam Do Thanh
download source code here.
|