0 Replies Latest reply on Aug 2, 2016 8:00 PM by SEONKI MIN

    I need your help. Can I setup some properties without zdesigner printer driver's own property dialog?

    SEONKI MIN

      Thanks for your attention.

      I'm a developer from korea. and I need your help

       

      I need some label printing program supports richtext.

      so I'm developing with MFC

       

      the program is simple.

      edit labels with MFC's richedit control then print it with richedit's displayband method.

      I don't use CPrintDialog class.

      I open the printer with winspool.

      it works with normal label.

       

      I need to set up some properties like backfeeding, cutter, etc.

      but I don't want to fix it with printer driver

      I want to set up the property with the values that I threw

       

      I give some code

       

      LPDEVMODE GetPrinterMode(LPTSTR pszPrinterName)

      {

            HANDLE  hPrinter;

            LPDEVMODE pDevMode;

            DWORD  dwNeeded, dwRet;

       

            if(!OpenPrinter(pszPrinterName, &hPrinter, NULL))

                  return NULL;

       

            dwNeeded = DocumentProperties(NULL, hPrinter,pszPrinterName,NULL,NULL,0);

            pDevMode = (LPDEVMODE)malloc(dwNeeded);

       

            dwRet = DocumentProperties(NULL, hPrinter, pszPrinterName, pDevMode, NULL, DM_OUT_BUFFER);

            if(dwRet !=IDOK)

            {

                  free(pDevMode);

                  ClosePrinter(hPrinter);

                  return NULL;

            }

       

            ClosePrinter(hPrinter);

            return pDevMode;

      }

       

      void On Printer()

      {

           LPDEVMODE     pDevMode;

           HDC                    pritnerDC;

       

           pDevMode = GetPrinterMode("ZDesigner ZT410-203dpi ZPL");

           printerDC = CreateDC(_T("WINSPOOL"), "ZDesigner ZT410-203dpi ZPL", NULL, pDevMode);

          

           FORMATRANGE frmrange;

         

              int         nHorizRes   = GetDeviceCaps(printerDC, HORZRES);

              int         nVertRes    = GetDeviceCaps(printerDC, VERTRES);

              int         nLogPixelsX = GetDeviceCaps(printerDC, LOGPIXELSX);

              int         nLogPixelsY = GetDeviceCaps(printerDC, LOGPIXELSY);

       

           SetMapMode (printerDC, MM_TEXT);

           ZeroMemory(&frmrange, sizeof(frmrange));

           frmrange.hdc = frmrange.hdcTarget = printerDC;

          

           frmrange.rcPage.left = 0;

           frmrange.rcPage.top = 0;

           frmrange.rcPage.right = 500;

           frmrange.rcPage.bottom = 500;

       

           frmrange.rc.left = frmrange.rcPage.left;

           frmrange.rc.top = frmrange.rcPage.top;

           frmrange.rc.right = frmrange.rcPage.right;

           frmrange.rc.bottom = frmrange.rcPage.bottom;

           frmrange.chrg.cpMin = 0;

           frmrange.chrg.cpMax = -1;

          

           m_richedit.FormatRange(&frmrange, true);

       

           DOCINFO     di;

           ZeroMemory(&di, sizeof(di));

           di.cbSize = sizeof(DOCINFO);

           di.lpszDocName = "label";

           di.lpszOutput = NULL;

          

           StartDoc(printerDC, &di);

           StartPage(prinerDC);

           m_richedit.DisplayBand(&frmrange.rc);

           EndPage(printerDC);

       

           m_richedit.FormatRange(NULL, false);

           EndDoc(printerDC);

           DeleteDC(pritnerDC);

      }

       

      Can I set additional properties with driver?