所需核心组件
要在 VC++ 中实现 Aztec 编码,请确保以下文件存在:
-
1.
bcsaztec.ttf:用于条形码渲染的专用 TrueType 字体。
-
2.
cruflbcs.dll:提供
IAztec 接口的 COM 库。
注意: 安装后,DLL 通常位于:
C:\Program Files (x86)\Common Files\Barcodesoft\Fontutil\
方法 1:后期绑定 (Late Binding)
最适合版本独立的代码。当类型信息在编译时不可用时使用此方法。
CoInitialize(NULL);
CLSID clsid;
if (FAILED(::CLSIDFromProgID(L"cruflbcs.Aztec.1", &clsid))) return 0;
IDispatch* pIDispatch = NULL;
::CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void**)&pIDispatch);
// 调用 Encode 方法
LPOLESTR szNameEncode = L"Encode";
DISPID dispid_encode;
pIDispatch->GetIDsOfNames(IID_NULL, &szNameEncode, 1, LOCALE_SYSTEM_DEFAULT, &dispid_encode);
VARIANTARG v[1];
v[0].vt = VT_BSTR; v[0].bstrVal = SysAllocString(L"Barcodesoft Sample");
DISPPARAMS dispParams = { v, NULL, 1, 0 };
VARIANT vResult;
pIDispatch->Invoke(dispid_encode, IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD, &dispParams, &vResult, NULL, NULL);
pIDispatch->Release();
CoUninitialize();
方法 2:前期绑定 (Early Binding)
推荐用于追求最高性能的场景。需要在编译时访问类型库。
#include <atlbase.h>
#include <atlconv.h>
#import "cruflbcs.dll"
using namespace cruflBCS;
USES_CONVERSION;
CoInitialize(NULL);
_bstr_t bstrOutput;
char pszToEncode[] = "Barcodesoft Sample";
try {
cruflBCS::IAztecPtr pBcsAztec(__uuidof(CBcsAztec));
bstrOutput = pBcsAztec->Encode(T2OLE(pszToEncode));} catch (const _com_error& e) {
_tprintf(_T("错误: 0x%08x %s\n"), e.Error(), e.ErrorMessage());}
CoUninitialize();
使用 MFC 生成包装类 (Wrapper Classes)
现代 Visual Studio 的步骤:
- 从“项目”菜单中选择添加类。
- 选择从类型库添加 MFC 类模板。
- 选择注册表并找到 crUFLBCS。
- 将 IAztec 接口添加到您的项目中。
- 在使用以下代码片段前,请调用
OleInitialize(NULL)。
// MFC 实现
CString strOutput;
IAztec *pAztecObj = new IAztec();
if (pAztecObj->CreateDispatch("cruflbcs.Aztec.1")) {
strOutput = pAztecObj->Encode("Barcodesoft Sample");}