VC++斑马打印机

MFC做斑马打印机二次开发,直接写了个函数给dlg.cpp调用了,有个能在线查看ZPL命令的网站挺不错的:http://labelary.com/viewer.html

#include "stdafx.h"
#include"ZBprinter.h"
void do_print(printdata data)
{
    HANDLE     hPrinter;
    DOC_INFO_1 DocInfo;
    DWORD      dwJob;
    DWORD      dwBytesWritten;

  //^PO+N正常,I旋转   ^LH0,0,定位
  //CString str = L"^XA,^PON,^LH10,10,^FO250,20,^A030,30,^FDFile-name:" + data.filename + L"^FS,^FO250,50,^A030,30,^FDNumber:" + data.number + L"^FS,^FO250,80,^A030,30,^FDBom:" + data.bom + L"^FS,^FO250,110,^A030,30,^FDOrder:" + data.order + L"^FS,^FO250,140,^A030,30,^FDTotal num of errs:" + data.err + L"^FS,^FO250,170,^A030,30,^FD1,2,3,4,5,6,7,8,9,10,11^FS,^XZ   ";

    CString str = L"^XA,^PON,^LH10,10,^FO250,20,^A030,30,^FDFile-name:" + data.filename + L"^FS,^FO250,50,^A030,30,^FDNumber:" + data.number + L"^FS,^FO250,80,^A030,30,^FDBom:" + data.bom + L"^FS,^FO250,110,^A030,30,^FDOrder:" + data.order + L"^FS,^FO250,140,^A030,30,^FDTotal num of errs:" + data.err + L"^FS,^FO250,170,^A030,30,"+data.errlist+"^FS,^XZ   ";

    CStringA strA(str.GetBuffer(0));
    str.ReleaseBuffer();
    std::string s = strA.GetBuffer(0);
    const char* pc = s.c_str();//这块是个数据格式转换,我弄得可能比较麻烦

    LPBYTE lpData = (LPBYTE)pc;
    DWORD dwCount = strlen(pc);

    LPTSTR szPrinterName = _T("ZDesigner GK888t (EPL)");//打印机名称,在打印设备属性里能找到,便于下面查找目标打印机
    if (!OpenPrinter(szPrinterName, &hPrinter, NULL))//MSDN里有说明,查找斑马打印机,找到了就返回指向它的句柄,以便调用
    {
        ClosePrinter(hPrinter);
    }

    // Fill in the structure with info about this "document."   
    DocInfo.pDocName = TEXT("My Document");
    DocInfo.pOutputFile = NULL;
    DocInfo.pDatatype = TEXT("RAW");
    // Inform the spooler the document is beginning.   
    if ((dwJob = StartDocPrinter(hPrinter, 1, (LPBYTE)&DocInfo)) == 0)//该StartDocPrinter函数通知后台打印程序,MSDN
    {

        ClosePrinter(hPrinter);

    }
    //下面就是关闭文档关闭打印机的一些判断操作了
    if (!StartPagePrinter(hPrinter))
    {

        EndDocPrinter(hPrinter);
        ClosePrinter(hPrinter);

    }  
    if (!WritePrinter(hPrinter, lpData, dwCount, &dwBytesWritten))
    {

        EndPagePrinter(hPrinter);
        EndDocPrinter(hPrinter);
        ClosePrinter(hPrinter);

    }  
    if (!EndPagePrinter(hPrinter))
    {

        EndDocPrinter(hPrinter);
        ClosePrinter(hPrinter);

    } 
    if (!EndDocPrinter(hPrinter))
    {

        ClosePrinter(hPrinter);

    }  
    ClosePrinter(hPrinter);
}

还有不使用ZPL的,那就更简单了,不过那个函数现在记不得了。。。
其实还是得多查查百度和Google,自己写写demo,写这个也是做个备份,距离当初写也有挺长时间了,自己都快忘了。。。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值