zoukankan      html  css  js  c++  java
  • 兄弟打印机MFC代码示范

    
    

    m_strModel.LoadString(IDS_MODEL_STRING); //IDS_MODEL_STRING,字符串控件的ID,资源视图-String Table里面设置
    m_strSource.LoadString(IDS_SOURCE_STRING);//IDS_SOURCE_STRING
    m_strWaferlot.LoadString(IDS_WAFER_LOT_STRING);
    m_strWelding.LoadString(IDS_WELDING_STRING);
    m_strWaferID.LoadString(IDS_WAFER_ID_STRING);

    // PrintDlg.cpp : implementation file
    //
    
    #include "stdafx.h"
    #include "smw200.h"
    #include "PrintDlg.h"
    #include "Main.h"
    #include <fstream>
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // CPrintDlg dialog
    const CString TEMPLATE_PATH = _T("C:\Program Files\Brother bPAC3 SDK\Templates\");
    
    CPrintDlg::CPrintDlg(CWnd* pParent /*=NULL*/)
        : CDialog(CPrintDlg::IDD, pParent)
    {
        //{{AFX_DATA_INIT(CPrintDlg)
        m_strModel = _T("");
        m_strSource = _T("");
        m_strWaferlot = _T("");
        m_strWelding = _T("");
        m_strWaferID = _T("");
        //}}AFX_DATA_INIT
    }
    
    
    void CPrintDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CPrintDlg)
        DDX_Control(pDX, IDC_COMBO_TEMPLATE, m_cbTemplate);
        DDX_Text(pDX, IDC_EDIT_MODEL, m_strModel);
        DDX_Text(pDX, IDC_EDIT_SOURCE, m_strSource);
        DDX_Text(pDX, IDC_EDIT_WAFER_LOT, m_strWaferlot);
        DDX_Text(pDX, IDC_EDIT_WELDING, m_strWelding);
        DDX_Text(pDX, IDC_EDIT_WAFER_ID, m_strWaferID);
        //}}AFX_DATA_MAP
    }
    
    
    BEGIN_MESSAGE_MAP(CPrintDlg, CDialog)
        //{{AFX_MSG_MAP(CPrintDlg)
        ON_BN_CLICKED(IDC_BTN_PRINT, OnBtnPrint)
        ON_BN_CLICKED(IDC_BTN_SEARCH, OnBtnSearch)
        ON_WM_DESTROY()
        //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CPrintDlg message handlers
    
    
    
    BOOL CPrintDlg::OnInitDialog() 
    {
    
        CRect rectWnd;
        GetWindowRect(rectWnd);
        SetWindowPos(NULL, rectWnd.Width()/4, rectWnd.Height()/4,rectWnd.Width(),rectWnd.Height(),SWP_NOZORDER | SWP_NOACTIVATE);
    
    
        if (language == ENGLISH)
        {
            SetWindowText("Print Label");
            SetDlgItemText(IDC_STATIC_TEMPLATE,"Template :");
            SetDlgItemText(IDC_STATIC_WAFER_ID,"Wafer ID :");
            SetDlgItemText(IDC_STATIC_MODEL,"Wafer Model :");
            SetDlgItemText(IDC_STATIC_SOURCE,"Wafer Source :");
            SetDlgItemText(IDC_STATIC_WAFER_LOT,"Wafer Lot # :");
            SetDlgItemText(IDC_STATIC_WELDING,"Bonding Doc :");
    
            SetDlgItemText(IDC_BTN_SEARCH,"Search Label");
            SetDlgItemText(IDC_BTN_PRINT,"Print Label");
            SetDlgItemText(IDOK,"OK");
            SetDlgItemText(IDCANCEL,"Cancel");
        } 
        else
        {
            SetWindowText("打印标签");
            SetDlgItemText(IDC_STATIC_TEMPLATE,"模板选择 :");
            SetDlgItemText(IDC_STATIC_WAFER_ID,"晶圆识别符 :");
            SetDlgItemText(IDC_STATIC_MODEL,"晶圆型号 :");
            SetDlgItemText(IDC_STATIC_SOURCE,"晶圆来源 :");
            SetDlgItemText(IDC_STATIC_WAFER_LOT,"晶圆标识符 :");
            SetDlgItemText(IDC_STATIC_WELDING,"焊接图号 :");
            
            SetDlgItemText(IDC_BTN_SEARCH,"查询标签");
            SetDlgItemText(IDC_BTN_PRINT,"打印标签");
            SetDlgItemText(IDOK,"确定");
            SetDlgItemText(IDCANCEL,"取消");
    
        }
        // Set Paremeter
        m_strModel.LoadString(IDS_MODEL_STRING);
        m_strSource.LoadString(IDS_SOURCE_STRING);
        m_strWaferlot.LoadString(IDS_WAFER_LOT_STRING);
        m_strWelding.LoadString(IDS_WELDING_STRING);
        m_strWaferID.LoadString(IDS_WAFER_ID_STRING);
        CDialog::OnInitDialog();
        
        // TODO: Add extra initialization here
        
        m_cbTemplate.SetCurSel(0);
        StartClickNTypeKeyboard();
        
        return TRUE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX Property Pages should return FALSE
    }
    
    void print_label()
    {    
        if(!print_flag) return;
        print_flag = false;
        ::CoInitialize(NULL);//初始化COM库            
        CString strPath = _T("C:\Program Files\Brother bPAC3 SDK\Templates\APS200labelplate1.lbx");    
        
        if (CaliPrintLabelFlag)
        {
            waferchars[number_print] = _T("LMBT3906LT1G
    Y6027PA
    S5G34442-185-01
    88ASB00980L");
            waferqrcode[number_print] = _T("LMBT3906LT1G^Y6027PA^88ASB00980L^S5G34442-185-01");    
    
        }
        else
        {
            waferchars[number_print]    =    wafermodel[number_print] + '
    ' + wafersource[number_print] + '
    ' + waferlot[number_print] + '
    ' + waferwelding[number_print];
            waferqrcode[number_print]    =    wafermodel[number_print] + '^' + wafersource[number_print]  + '^' + waferwelding[number_print] + '^' + waferlot[number_print] ;    
        }
        
        
        print(strPath,waferchars[number_print],waferqrcode[number_print]);
    
        ::CoUninitialize();
        print_end = false;
    
    //    log_print_message();
    
    }
    
    void print(CString path,CString printChars,CString printQRcode)
    {
        
        try 
        {
            IDocumentPtr pObjDoc(__uuidof(Document));        
            if (pObjDoc->Open(path.AllocSysString()))
            {
                pObjDoc->GetObject(_bstr_t(_T("objWaferModel")))->PutText(printChars.AllocSysString());
                pObjDoc->GetObject(_bstr_t(_T("objWaferQRcode")))->PutText(printQRcode.AllocSysString());
                
                pObjDoc->SetMediaById(pObjDoc->Printer->GetMediaId(), true);
                pObjDoc->StartPrint(_bstr_t(_T("")), bpac::bpoDefault);
                pObjDoc->PrintOut(1, bpac::bpoDefault);
                pObjDoc->EndPrint();
                pObjDoc->Close();
            }
        }
        catch (_com_error e) 
        {
            AfxMessageBox(e.ErrorMessage());
        }
        remaining_label_life--;
        itoa(remaining_label_life, LRLText, 10);
    }
    
    void log_print_message()
    {
        using namespace std;
        std::string filename1 = "print.txt";
        std::ofstream outfile1( filename1.c_str(), std::ios_base::app );
        
        if( outfile1 )
        {
            outfile1 << "chars " << waferchars[number_print] << " qrcode " << waferqrcode[number_print] << std::endl;
        }    
        
        if (outfile1)
        {
            outfile1.close();
        }
    }
    
    
    void CPrintDlg::OnBtnPrint() 
    {
        UpdateData(TRUE);
        
        CString strPath,strWaferChars,strWaferQRcode;
        
        strPath = TEMPLATE_PATH;
        if (m_cbTemplate.GetCurSel() <= 0)
            strPath += _T("APS200labelplate1.lbx");
        else
            strPath += _T("APS200labelplate2.lbx");    
        
        strWaferChars = m_strModel + '
    ' + m_strSource + '
    ' + m_strWaferlot + '
    ' + m_strWelding;
        strWaferQRcode = m_strModel + '^' + m_strSource + '^' + m_strWelding + '^' + m_strWaferlot;    
        
        print(strPath,strWaferChars,strWaferQRcode);    
    }
    
    void CPrintDlg::OnBtnSearch() 
    {
        // TODO: Add your control notification handler code here
        if (!mes_success_flag)
        {
            AfxMessageBox("数据库未成功连接,请检查网络,自动配置IP,并重启软件进行连接!",MB_ICONSTOP | MB_OK | MB_TOPMOST);        
            return;
        }
    
        UpdateData(TRUE);
        m_strModel = "";
        m_strWaferlot = "";
        m_strSource = "";
        m_strWelding = "";
        
        searchmes(m_strWaferID);
    
        m_strWaferlot = waferlot[number_ocr];
        m_strModel = wafermodel[number_ocr];
        m_strSource = wafersource[number_ocr];        
        m_strWelding = waferwelding[number_ocr];
        
        
        UpdateData(FALSE);        
    
    
        
    }
    
    void CPrintDlg::OnDestroy() 
    {
        CDialog::OnDestroy();
        CloseKeyboard();
        
        // TODO: Add your message handler code here
        
    }
  • 相关阅读:
    利用树莓派把普通打印机变成网络打印机方法
    Python之datetime库
    CentOS7从默认/home中转移空间到根分区/
    更改Azure虚拟机账号密码
    创建一个托管磁盘的Windows定制镜像
    IO多路复用详解
    玩转redis
    EF Linq to Sql 多表left join查询并对结果group by分组之后进行count,max等处理
    免费,主流的在线办公/协作,会议,文档,调查,分享工具推荐(持续维护中)
    多sql查询count合并为一行
  • 原文地址:https://www.cnblogs.com/txwtech/p/12454928.html
Copyright © 2011-2022 走看看