原創(chuàng)|使用教程|編輯:郝浩|2013-09-26 11:11:35.000|閱讀 225 次
概述:在提供了容器支持如Visual Basic或Visual C++的開發(fā)環(huán)境中,barcode Xpress可以被作為一個(gè)ActiveX控件使用。在Visual C++中如何將Barcode Xpress作為一個(gè)導(dǎo)入的COM 對(duì)象使用呢?下面來(lái)具體的討論一下。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在前面的文章《Barcode Xpress 教程:如何在Visual C++ 中作為COM 對(duì)象使用》的前兩篇文章中,對(duì)于在Visual C++中如何將Barcode Xpress作為一個(gè)導(dǎo)入的COM 對(duì)象使用的給出了部分示例代碼,下面將給出最后的示例代碼。
五、使用BarcodeXpress的COM對(duì)象來(lái)設(shè)置屬性和調(diào)用方法
BarcodeXpress COM對(duì)象實(shí)例創(chuàng)建之后,這個(gè)對(duì)象可以用于設(shè)置BarcodeXpress屬性和調(diào)用BarcodeXpress方法。在ReadBarcodeFromDIB項(xiàng)目中,會(huì)在OnDetectButton函數(shù)中像下面這樣子說(shuō)明。當(dāng)用戶點(diǎn)擊Recognized Barcode 按鈕時(shí)就會(huì)調(diào)用這個(gè)函數(shù)。
void CReadBarcodeFromDIBDlg::OnDetectButton() { // TODO: Add your control notification handler code here // Set barcode classification type based on selected radio button switch(m_selection) { case 0: { barcodetype = 0; //1D break; } case 1: { barcodetype = 524288; //Patch break; } case 2: { barcodetype = 0x4000000; //OneCode break; } case 3: { barcodetype = 2097152; //PDF break; } case 4: { barcodetype = 4194304; //DataMatrix break; } case 5: { barcodetype = 0x8000000; //Royal Post break; } case 6: { barcodetype = 1048576; //Post net break; } case 7: { barcodetype = 0x2000000; //QR break; } case 8: { barcodetype = 0x10000000; //Aus break; } } m_pBarcodeXpress->BarcodeType = barcodetype; m_pBarcodeXpress->ImageSource = BC_ImageSourceDIB; m_pBarcodeXpress->hDIB = m_pImagXpress->CopyDIB(); m_pBarcodeXpress->AnalyzeBC(0,0,0,0); int numBC = m_pBarcodeXpress->NumBarcodes; CString bcName; CString bcResult; CString result; CString strBarcodeInformation; if ((m_pBarcodeXpress->SSError == 0) & (m_pBarcodeXpress->NumBarcodes > 0)) { int i; for (i = 0 ; i < numBC ; i++) { m_pBarcodeXpress->GetBarcode(i); bcName = (BSTR) m_pBarcodeXpress->BarcodeCodeName; bcResult = (BSTR) m_pBarcodeXpress->BarcodeResult; strBarcodeInformation.FormatMessage(szBarcodeInfoFormat, i, bcResult, bcName); result += strBarcodeInformation; } MessageBox(result,"Barcode Result", MB_OK); } else { if (m_pBarcodeXpress->SSError != 0) { MessageBox("Error #" + m_pBarcodeXpress->SSError,"Error",MB_OK); } else { MessageBox("No barcodes found","Barcode Result", MB_OK); } } //Must Free the DIB passed into the Analyze method to avoid memory issues GlobalFree((HGLOBAL)m_pBarcodeXpress->hDIB); }
六、刪除BarcodeXpress COM對(duì)象
當(dāng)不再需要BarcodeXpress COM對(duì)象時(shí),就必須刪除它。通常在應(yīng)用程序退出之前刪除這個(gè)對(duì)象。在ReadBarcodeFromDIB項(xiàng)目中,這個(gè)COM對(duì)象可以像下面這樣刪除。
BOOL CReadBarcodeFromDIBDlg::DestroyWindow() { // TODO: Add your specialized code here and/or call the base class CDialog::OnDestroy(); if (m_pImagXpress) { m_pImagXpress = NULL; if (m_ppCImagXpress) { delete m_ppCImagXpress; } } if (m_pBarcodeXpress) { m_pBarcodeXpress = NULL; if (m_ppIBarcodeXpress) { delete m_ppIBarcodeXpress; } } return CDialog::DestroyWindow(); }
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件