如何在 Visual C++ (VC++) 中列印 Aztec 條碼

使用 Barcodesoft BCSAztec TrueType 字型與 COM 元件,將高速 Aztec 條碼生成功能整合到您的 Visual C++ 應用程式中。

所需核心元件

要在 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 的步驟:

  1. 從「專案」選單中選擇加入類別
  2. 選擇來自型別函式庫的 MFC 類別範本。
  3. 選擇登錄檔並找到 crUFLBCS
  4. IAztec 介面加入到您的專案中。
  5. 在使用以下程式碼片段前,請呼叫 OleInitialize(NULL)

// MFC 實作

CString strOutput;
IAztec *pAztecObj = new IAztec();
if (pAztecObj->CreateDispatch("cruflbcs.Aztec.1")) {
    strOutput = pAztecObj->Encode("Barcodesoft Sample");}