Chapter 9. QRCode ActiveX Reference

Many programming environments support the use of ActiveX objects. We have tested the Morovia QRCode ActiveX with Visual Basic, Visual C++, Internet Explorer, Microsoft Word, Excel, Access and IIS programs. The object can be used as a control embedded in a VB form or a dialog, or be used at background for image creation and printing purposes. The QR Code ActiveX object can also be inserted into Microsoft Office documents and many other ActiveX-aware programs.

9.1. Specification

Table 9.1. QRCode ActiveX Specification

Prog IDMorovia.QRCodeActiveX
File nameQRCodeCtrl.dll
Interface ID{5AF858A3-0D3E-4D8E-B22F-F8191C60C161}

9.2. Enumerations

Table 9.2. List of QRCode ActiveX Enumerations

QRTypeQRType Enumeration

9.3. Properties

Table 9.3. List of QRCode ActiveX Properties

ActualVersionReturns the actual version in the symbol created.
BackColorSpecifies the background color for the control.
ECLevelSpecifies the error correction level of the barcode generated.
ForeColorSpecifies the foreground color for the control.
MaskSpecifies the mask used to create final image.
ModuleSizeSpecifies the length of a module (the smallest unit in a QRCode barcode).
PictureReturns a snapshot of the drawing in Windows Enhanced Metafile Format (EMF).
QRTypeSpecifies the type of QR code to create.
TargetDPISpecifies the value of DPI when exporting the images to vector graphics.
TextSpecified the data to encode.
VersionSpecifies the desired version (size) of the barcode.

Table 9.4. List of QRCode ActiveX Methods

CopyToClipboardPlace the drawing to clipboard in EMF format.
ExportImageVectorExport image to a file in vector graphics format specified (EMF, EPS or SVG).
ExportImageRasterExport image to a file in raster graphics fromat specified (PNG or BMP).

9.4. ActualVersion Property


Returns the actual version of the symbol created.




When Version specified is too small to encode the data, the program automatically select one that creates smallest barcode that fits. To find out the value of version realized, use this property.

9.5. BackColor, ForeColor Properties


BackColor - returns or sets the background color of the control.

ForeColor - returns or sets the foreground color of the control.


object.BackColor[= Color]
object.ForeColor[= Color] 


For open systems we strongly recommend to set the background color to solid white (0xFFFFFF) and foreground color to black (0x000000). Note: barcode requires decent contrast between the foreground color and the background color in order to be readable. Always test the readability thoroughly when you select a color pair different from black and white.

9.6. ECLevel Property

Specifies the error correction level.


object.ECLevel = Number


QR Code employs Reed-Solomon error control coding to detect and repair errors. There are four user-selectable levels of error correction, as shown in the table below.

Table 9.5. ECLevel options

ValueDescriptionRecovery Capacity (approx.)
0Level L7%
1Level M15%
2Level Q25%
3Level H30%

9.7. Mask Property

Specifies the pattern to be used for data masking.


object.Mask[= Number] 


For reliable QR Code reading, it is desirable for dark and light modules to be arranged in a well-balanced manner in the symbol. QR standard allows 7 patterns (000 - 111) to be used for data masking. If the value is -1, this program evaluates all seven patterns and select the one that produces the best result.

Table 9.6. Mask options

0pattern 0 (000)
1pattern 1 (001)
2pattern 2 (010)
3pattern 3 (011)
4pattern 4 (100)
5pattern 5 (101)
6pattern 6 (110)
7pattern 7 (111)

9.8. ModuleSize Property


Returns or sets a value that determines the width and height of a single cell in the QRcode symbols generated.


object.ModuleSize[= String] 


The real estate unit of a QR Code symbol, the module, is always square. This property sets both the width and the height of the square. It affects the overall symbol size.

The default value for ModuleSize is 20 mils. The property can be any numbers between 1 and 100.

This property is a string, and accepts the following units: mil, himetric, mm, cm, pt and inch. For example, 0.01cm and 1mm are all valid. If no measure unit is specified, unit of mil (which is 1/1000th inch) is assumed.

9.9. Picture Property


Readonly property. Returns a snapshot of the drawing in Windows Enhanced Metafile Format (EMF).




The Picture property provides a convenient method to retrieve the drawing without first saving it to disk. The picture object contains an enhanced metafile handle which can be passed to clipboard or played on a device.

The included VC++ and C# examples use this property to retrieve an EMF handle and play it on the target printer to print the barcode.

9.10. QRType Enumeration

Specifies the type of the QRCode.


typedef enum QRType {
  qrNormal = 0,
  qrHIBC   = 1,
} QRType; 


The normal QR Code.

The data to encode is a HIBC LIC. The program will adds + and mod 43 checksum automatically and encode the whole into a QRCode.

The Micro QR Code.

9.11. QRType Property

Specifies the type of QR code. Currently it suports two types of QR Code symbols - normal QR and HIBC QR.


object.QRType = Number 


The defautl value of this property is QRNormal.

9.12. TargetDPI Property

Specifies the resolution of the target printer, applicable during exporting vector graphics.


object.TargetDPI = Number 


Whe producing small sizes of barcodes, especailly on lowe resolution printers, lengths must be align to the boundary of pixels in order to retain high quality. The ActiveX control adjusts the drawing units automaticaly based on this property when exporting vector graphics images.

9.13. Text Property

Specifies the Data to be encoded into the QR Code symbol.


Returns or sets a string for the message to be encoded.


object.Text[= String] 


9.14. Version Property

Specifies the version of the symbol. The value ranges from 0 to 40. if the value is 0, the program select one that encodes the data and with minimum size.


object.Version = Number 


There are forty sizes of QR Code symbol rerferred to as version 1, Version 2 ... Version 40. Version 1 measures 21 modules x 21 modules, Version 2 measures 25 modules x 25 modules and so on increasing in steps of 4 modules per side up to version 40 which measures 177 modules x 177 modules.

When 0 is specified, the program selects a size that produces the most compact barcode that encodes the data.


If Version specified is too small to encode the data, the program automatically increase it to a value that is big enough. It means that the value of property will change every time the data is changed, if it is set to 0. Therefore, you must explicitely set it back to 0 you intend to use this value for creating the next QR code symbol.

9.15. CopyToClipboard Method

Copies the QRCode image into the system clipboard, in EMF format.




Use this method to place a copy of barcode image to the clipboard, so that you can either retrieve it immediately in your application, or other applications such as Microsoft Word.

9.16. ExportImageRaster Method


Exports the current drawing to a disk file, in raster image format (PNG or BMP).


obj.ExportImageRaster(filename, Number, Number)



[in] Number of pixels per module.


[in] Image type. The current version supports two raster image formats:

  • 0 - PNG

  • 4 - BMP

9.17. ExportImageVector Method


Exports the current drawing to a disk file, in raster image format (EMF, SVG and EPS).


obj.ExportImageVector(filename, imageType) 



[in] Image type. The current version supports two three image formats:

  • 1 - SVG

  • 2 - EMF

  • 3 - EPS