                                  PDF417 二维条码生成动态连接库使用说明
                    

   
   MakeBar.dll二维条码生成动态连接库，用以生成PDF417二维条码，适用于windows环境开发工具。
______________________________________________________________________________________________


//生成条码图片位图函数
(C++)
void  __stdcal Make(unsigned char* ucData, long nDataLen, char* szBmpFileName, long nClumn, long nErr, long nHLRatio,long nHeight);
参数说明:ucData         条码数据 
	 nDataLen        条码数据长度(注:是字节数) 长度<=1K；
	 szBmpFileName  生成条码的图片文件名，BMP格式	 
	 nClomn          条码列数，取值范围1-30，根据具体数据字符串长度；
	 nErr            纠错等级，取值范围0-7，建议取2-3；
	 nHLRatio        条码单位长度和宽度比例，取值范围1-5；
	                  1----紧凑型条码，生成条码图片容量最小，适合配合数据库管理系统使用，
	                       便于直接以最小的容量存储在数据库中，而且生成速度最快，适合大
	                       批量生成条码。但需要通过报表控件做纵横向适当拉伸后，打印出来
	                       才可识读，不能直接打印识读或软解码；
	                  2--5 标准型条码，适合直接打印识读或软件解码，建议取3。
	nHeight		生成BMP图片高度,若为0则自动生成最合适的高度，否则按指定高度，保持长宽比例缩放生成的二维条码图片
         以上参数的设置将直接影响条码的可读性和条码图片的大小。


// 设置、获取生成图片色彩深度 
int  __stdcal SetColorDepth(int nDepth);
int  __stdcal GetColorDepth();
参数说明:nDepth         色彩深度 取值为 1，8，24代表黑白二色、256色、真彩24位色 
返回值 SetColorDepth 返回1表示成功
       GetColorDepth 返回色彩深度 返回值为 1，8，24其中之一


//文字信息和条码图片合成函数
(C++)
long  MixText(char*  szSrcBmpFileName, 
	char*  szDstBmpFileName, 
	char*  szText, 
	long lFontSize, 
	long lTxtHeight, 
	long lHmargin, 
	long lVmargin, 
	long lTxtCntOneLine)
参数说明:szSrcBmpFileName, 需要在下面加文字信息的BMP文件
	szDstBmpFileName, 加好文字后保存的BMP文件，可以与szSrcBmpFileName同名
	szText,需要添加的文字信息,可以为空
	lFontSize,字体尺寸，可以为0，代表根据lTxtHeight指定的文字区的高度，来自动创建字体
		  若不为0，则直接根据lFontSize创建字体，lTxtHeight将不起作用
	lTxtHeight,文字书写区的高度，若lFontSize为0，将自动根据这个高度创建字体
	lHmargin,文字水平方向(左边及右边）预留的空白象素,在lFontSize不为0时，右边预留的空白象素将不一定为
		lHmargin(因为字体并不是自适应的)
	lVmargin,文字垂直方向预留的空白象素
	lTxtCntOneLine,一行的字节数（注意：1个中文字算2个字节）,若为0，则把所有文字显示在一行，否则按照lTxtCntOneLine指定

lTxtHeight,lHmargin,lVmargin均为象素值
返回值:0失败，1成功



//将条码图片生成到缓存中
(C++)
void __stdcall MakeToBuffer(unsigned char* ucData, long nDataLen, long nClumn, long nErr, long nHLRatio,long nHeight, 
		   char** ppBuffer, long* pBufferLen)
参数说明:ucData          条码数据 
	 nDataLen        条码数据长度(注:是字节数) 长度<=1555；
	 nClomn          条码列数，取值范围1-30，根据具体数据字符串长度；
	 nErr            纠错等级，取值范围0-7，建议取2-3；
	 nHLRatio        条码单位长度和宽度比例，取值范围1-5；
	                  1----紧凑型条码，生成条码图片容量最小，适合配合数据库管理系统使用，
	                       便于直接以最小的容量存储在数据库中，而且生成速度最快，适合大
	                       批量生成条码。但需要通过报表控件做纵横向适当拉伸后，打印出来
	                       才可识读，不能直接打印识读或软解码；
	                  2--5 标准型条码，适合直接打印识读或软件解码，建议取3。	                       
	nHeight		生成BMP图片高度,若为0则自动生成最合适的高度，否则按指定高度，保持长宽比例缩放生成的二维条码图片	 
         		以上参数的设置将直接影响条码的可读性和条码图片的大小。
	 ppBuffer   	传出用,存放生成条码的BMP个数文件数据
	 pBufferLen	传出用,返回*ppBuffer所指缓冲区的长度
说明:   *ppBuffer  所指缓冲区空间由函数内部根据实际图片大小,动态分配,使用完此函数后,至少调用
	FreeBuffer一次,来释放空间


//释放条码图片缓存
(C++)
void __stdcall FreeBuffer(char* pBuffer)		 
说明:
	释放MakeToBuffer函数内部所分配的空间


//生成条码图片到句柄
(C++)
void __stdcall MakeToHBitmap(unsigned char* ucData, long nDataLen, long nClumn, long nErr, long nHLRatio,long nHeight,
		   HBITMAP* pHBitmap);

参数说明:ucData          条码数据 
	 nDataLen        条码数据长度(注:是字节数) 长度<=1555；
	 nClomn          条码列数，取值范围1-30，根据具体数据字符串长度；
	 nErr            纠错等级，取值范围0-7，建议取2-3；
	 nHLRatio        条码单位长度和宽度比例，取值范围1-5；
	                  1----紧凑型条码，生成条码图片容量最小，适合配合数据库管理系统使用，
	                       便于直接以最小的容量存储在数据库中，而且生成速度最快，适合大
	                       批量生成条码。但需要通过报表控件做纵横向适当拉伸后，打印出来
	                       才可识读，不能直接打印识读或软解码；
	                  2--5 标准型条码，适合直接打印识读或软件解码，建议取3。
	nHeight		生成BMP图片高度,若为0则自动生成最合适的高度，否则按指定高度，保持长宽比例缩放生成的二维条码图片	 	                       
         		以上参数的设置将直接影响条码的可读性和条码图片的大小。
	 pHBitmap	 传出的HBITMAP句柄指针


如:
HINSTANCE hInst;
	typedef void  (__stdcall *MAKE)(unsigned char* ucData, long nDataLen, char* szBmpFileName, long nClumn, long nErr, long nHLRatio);
	typedef void (__stdcall *MAKETOBUFFER)(unsigned char* ucData, long nDataLen, long nClumn, long nErr, long nHLRatio, 
		   char** ppBuffer, long* pBufferLen);

	typedef void (__stdcall *FREEBUFFER)(char* pBuffer);
	typedef void (__stdcall *MAKETOHBITMAP)(unsigned char* ucData, long nDataLen, long nClumn, long nErr, long nHLRatio, 
		   HBITMAP* pHBitmap);

	MAKETOBUFFER MakeToBuffer;
	FREEBUFFER FreeBuffer;
	MAKETOHBITMAP MakeToHBitmap;	
	MAKE Make;

	hInst = LoadLibrary("MakeBar.dll");
	
	Make = (MAKE)GetProcAddress(hInst, "Make");	
	MakeToBuffer = (MAKETOBUFFER)GetProcAddress(hInst, "MakeToBuffer");
	FreeBuffer = (FREEBUFFER)GetProcAddress(hInst, "FreeBuffer");
	MakeToHBitmap = (MAKETOHBITMAP)GetProcAddress(hInst, "MakeToHBitmap");


	Make("海量HL", strlen("海量HL"),"c:\\abc.bmp",3, 3, 3, 0);
	
	lRet = MixText("c:\\abc.bmp", "c:\\abc.bmp", "ABCDEFGH", 0, 40
		, 10, 5, 8);
//***************Make--S*************/
//	Make("海量HL", strlen("海量HL"), szFileName, m_nV1, m_nV2, m_nV3,0);
//	m_bDraw = TRUE;
//	Invalidate();
//***************Make--E*************/
//***************MakeToBuffer--S*************/
	char* pBuffer=NULL;
	long nBufferLen;
	MakeToBuffer("海量HL", strlen("海量HL"),  m_nV1, m_nV2, m_nV3,0, &pBuffer, &nBufferLen);
	FreeBuffer(pBuffer);
//***************MakeToBuffer--E*************/

//***************MakeToHBitmap--S*************/
	HBITMAP hbitmap = NULL;
	MakeToHBitmap("海量HL", strlen("海量HL"),  m_nV1,m_nV2, m_nV3,0,
		   &hbitmap);





如：
HINSTANCE hInst;
hInst = LoadLibrary("MakeBar.dll");
typedef int  (__stdcall *SETCOLORDEPTH)(int nDepth);
SETCOLORDEPTH SetColorDepth = (SETCOLORDEPTH)GetProcAddress(hInst, "SetColorDepth");
typedef int  (__stdcall *GETCOLORDEPTH)();
GETCOLORDEPTH GetColorDepth = (GETCOLORDEPTH)GetProcAddress(hInst, "GetColorDepth");
int nret =  SetColorDepth(8);//设成256色
nret = GetColorDepth();//获取色彩深度

____________________________________________________________________________________________________

(VB)
Private Declare Sub Make Lib "makebar.dll" _
(ucData As Byte, ByVal nLen As Long, ByVal szFileName As String, ByVal nClumn As Long, ByVal nErr As Long, ByVal nHLRatio As Long)

如:
Dim a() As Byte
a = Text1.Text
Make a(0), UBound(a) - LBound(a) + 1, "abc.bmp", 3, 3, 3,0




//应用于机关公文二维条码系统时的参数说明
*************************************************************************************************
*********                      公文二维条码参数设置说明                              ************
*************************************************************************************************
*1、在WORD文档中直接插入本控件生成的条码图片，不要做任何缩放处理，否则会导致条码不可读；
*2、nClomn 设置为7，生成图片在word文件中打印出来刚好为50mm，如果要加宽或缩小宽度，只需调整本参数；
*3、nErr设置为3；
*4、nHLRatio固定为1；
*5、nHeight设置为38-94，设为38时生成的条码在WORD中打印出来高度刚好为10mm,设为94时生成高度为2.5cm,
    如果要调整本高度只需调整本参数;
*6、nDepth图片色彩设置为：24
**************************************************************************************************



演示版限制：
1、nDataLen 条码数据长度(是字节数) 长度<=20字节数；
2、nErr 纠错等级固定为1；
3、szBmpFileName 生成条码的图片文件，将随机插入"海量条码"符号串。
4、条码下显示文字长度限制为8字节



