八达网

标题: 求助编程达人 二维码打印 [打印本页]

作者: outmylife    时间: 2013-6-5 22:33
标题: 求助编程达人 二维码打印
想把二维码打印出来,打印机提供的函数的参数是字节数组.各位大大给个编程思路 谢谢

作者: Pentium9    时间: 2013-6-5 22:41
@临空一刀
作者: lucifer520    时间: 2013-6-5 22:49
....是一定要通过 程序实现? 还是只要能打印出来?
作者: 晶の老友    时间: 2013-6-5 22:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: outmylife    时间: 2013-6-6 20:35
谢谢各位

作者: 刁总书记    时间: 2013-6-7 12:34
//先读取BMP关联到memDC上
        CDC   memDC;   
        CClientDC   dc(this);   
   
        int   bmpWidth   =   1024;   
        int   bmpHeight   =   768;   
        memDC.CreateCompatibleDC(   &dc   );   
        CBitmap*   bitmap   =   new   CBitmap();   
   
        HBITMAP hBitmap = NULL;     
        hBitmap = (HBITMAP)LoadImage(NULL,   "1.bmp",   IMAGE_BITMAP,   0,   0,     
        LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);     
        bitmap->Attach(hBitmap);   
                CBitmap* pOldBitmap = (CBitmap*)memDC.SelectObject(bitmap);   

//再创建一个用于打印的DC
                                CDC   prtDC;
                                CPrintInfo   printInfo;   
                HDC   hDC   =   printInfo.m_pPD->m_pd.hDC;   
                if   (hDC   ==   NULL)   
                hDC   =   printInfo.m_pPD->CreatePrinterDC();   
                if(hDC   !=NULL)   
                {   
                        prtDC.Attach(hDC);          
                         }  

//然后你去看看StretchBlt这个函数,参数要怎么配,自己查下MSDN。       
prtDC.StretchBlt(0,   0,   last_bmpWidth   *   ratio_x,   bmpHeight*   ratio_y,   &memDC,  
                                  paper_width   *   i   /   ratio_x,   0,   last_bmpWidth,   bmpHeight,   SRCCOPY);  

//最后
                  DOCINFO   di;  
                memset(&di,   0,   sizeof(DOCINFO));   
                di.cbSize   =   sizeof(DOCINFO);   
                di.lpszDocName   =   szAppName;   
                szPortName   =   prtDlg.GetPortName();   
                di.lpszOutput   =   szPortName;   
                prtDC.m_bPrinting   =   TRUE;   
                                if(prtDC.StartDoc(&di)   ==   -1)   
                               {   
                            AfxMessageBox("Printing   error   occured.   Unable   to   find   printer.");   
                            prtDC.DeleteDC();
                               }  
                               prtDC.EndDoc();  
                               prtDC.DeleteDC();
                       memDC.SelectObject(pOldBitmap);   
                       delete   bitmap;   
                       memDC.DeleteDC();  
作者: 刁总书记    时间: 2013-6-7 12:35
代码不能直接拿来用 我只是大致说下思路
作者: Mr.Red    时间: 2013-6-7 14:31
HDC hDC = CreateDC(NULL,"你的打印机名称",NULL,NULL);
if(hDC)
{
        DOCINFO DocInfo = {sizeof(DOCINFO),"二维条码",NULL,NULL,0};
        StartDoc(hDC,&DocInfo);
        {
                StartPage(hDC);
                MoveToEx(hDC,0,0,NULL);
                //画线
                LineTo(hDC,0,400);
                //写字
                TextOut(hDC,0,10,"这里是0,10",11);
                //贴图用BitBlt,代码略……
                EndPage(hDC);
        }
        EndDoc(hDC);
}
作者: 刁总书记    时间: 2013-6-7 14:35
Mr.Red 发表于 2013-6-7 14:31
HDC hDC = CreateDC(NULL,"你的打印机名称",NULL,NULL);
if(hDC)
{


作者: outmylife    时间: 2013-6-7 16:10
刁总书记 发表于 2013-6-7 14:35

谢谢呢  研究下先
作者: outmylife    时间: 2013-6-7 16:14
偶是在android下写的  这个可能用不了 谢谢各位




欢迎光临 八达网 (https://www.8-da.com/) Powered by Discuz! X2.5