请教?
我要在程序中套打19.1*10.1厘米的普通发票,但在我的操作系统win2000中打印机中找不到自定义纸张这一块,请教,该如何做?

解决方案 »

  1.   

    不知这一段是否有用:
    BOOL CMyDialog::DoPreparePrintDC() //准备打印场景
    {
      #define FONTSIZE 14
      //获取打印机的设备属性
      CPrintDialog dlgPrint(FALSE);
      //得到当前系统缺省打印机设置
      if(!dlgprint.GetDefau1ts())return FALSE;
      LPDEVMODE pDM=dlgPrint.GetDevMode();
      if (pDM==NULL)return FALSE;
      //调整打印方向
      //pDM->dm0rientation=DMORIENT_LANDSCAPE(横向)‖
      DMORIENT_PORTRAIT(纵向);
      //调整纸张大小
      //制式纸张:pDM->dmPaperSize=DMPAPER_A3等;
      //或自定义大小:单位:1/10毫米
      //pDM->dmPaperSize=DMPAPER_USER;
      //pDM->dmPaperLength=纸张高度;
      //pDM->dmPaperWidth=纸张宽度;
      //解锁由CPrintDialog::GetDevMode()封锁的内存
      ::GlobalUn1ock(pDM);
      //联结打印DC,m_hDC是定义为HDC m_hDC的类成员变量
      m_hDC=dlgPrint.CreatePrinterDC();
      //m_DC是定义为CDC m_DC的类成员变量
      if (!m_DC.Attach(m_hDC))return FALSE;
      //设置打印标志
      m_DC.m_bPrinting=TRUE;
      //根据打印机分辨率建立打印字体
      //得到每英寸点数
      short cxInch=m_DC.GetDeviceCaps(LOGPIXELSX);
      short cyInch=m_DC.GetDeviceCaps(LOGPIXELSY);
      //建立打印字体,m_fontPrint是定义为CFont m_fontPrint的类成员变量
      if(!m_fontPrint.CreateFont(MulDiv(FONTSIZE,-cyInch,
    72),
      0,0,0,FW_NORMAL,0,0,0,
      GB2312_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHA
    RACTER_PRECIS,
      DEFAULT_QUALITY,DEFAULT_PITCH|FF—DONTCARE,HFONTNAME)
      return FALSE;
      return TRUE;
    }
      

  2.   

    为什么在win2000中不能象win98一样,在打印机属性中,自定义纸张大小?
      

  3.   

    pDM->dmPaperLength=1910;
    pDM->dmPaperWidth=1010;//打印纸张为19.1*10.1
    运行后,出现下列错误提示,请教这是为什么?error C2018: unknown character '0xa1'
     error C2018: unknown character '0xa1'
     error C2018: unknown character '0xa1'
     error C2018: unknown character '0xa1'
    error C2018: unknown character '0xa1'
     error C2018: unknown character '0xa1'
    error C2018: unknown character '0xa1'
      

  4.   

    BOOL CSSP2Dlg::DoPreparePrintDC()
    {
    CPrintDialog dlgPrint(FALSE);// 得到当前系统缺省打印机设置 
     if(!dlgPrint.GetDefaults())
     return FALSE; 
     LPDEVMODE pDM=dlgPrint.GetDevMode(); 
     if(pDM==NULL) return FALSE; 
     //////////////////////
     pDM->dmOrientation = DMORIENT_PORTRAIT;
     pDM->dmPaperSize = DMPAPER_USER;
     pDM->dmPaperLength=1910;
     pDM->dmPaperWidth = 1010;
     //////////////////////
     ::GlobalUnlock(pDM); // 联结打印DC,hDC是定义为HDC hDC的类成员变量 
     hDC = dlgPrint.CreatePrinterDC(); // DC是定义为CDC DC的类成员变量 
         if(!DC.Attach(hDC)) return FALSE;// 设置打印标志 
     return TRUE; }调试通过,为什么还是走纸
      

  5.   

    我做过了,每次打印完要删除
    LPDEVMODE pDM=dlgPrint.GetDevMode(); 
    的pDM,然后在下次打时重建
      

  6.   

    你所更改的实际上是打印的区域。windows下走纸是必然的,不过我测试通过了一个方法可以解决这个问题
      

  7.   

    看看我的代码
    BOOL CSSP2Dlg::DoPreparePrintDC()
      

  8.   

    http://www.0mai.com/bbs 上有这问题的解答 我把我做的例子放到 http://www.0mai.com/bbs/down_default.asp 上了你可以看一看我OICQ:9199333
      

  9.   

    BOOL CSSP2Dlg::DoPreparePrintDC()
    {
    CPrintDialog dlgPrint(FALSE);// 得到当前系统缺省打印机设置 
     if(!dlgPrint.GetDefaults())
     return FALSE; 
     LPDEVMODE pDM=dlgPrint.GetDevMode(); 
     if(pDM==NULL) return FALSE; 
     //////////////////////
     pDM->dmOrientation = DMORIENT_PORTRAIT;
     pDM->dmPaperSize = DMPAPER_USER;
     pDM->dmPaperLength=1910;
     pDM->dmPaperWidth = 1010;
     //////////////////////
     ::GlobalUnlock(pDM); // 联结打印DC,hDC是定义为HDC hDC的类成员变量 
     hDC = dlgPrint.CreatePrinterDC(); // DC是定义为CDC DC的类成员变量 
         if(!DC.Attach(hDC)) return FALSE;// 设置打印标志 
     return TRUE; }调试通过,为什么还是走纸?
    代码中是否有错
      

  10.   

    u can change the corresponding settings in DEVMODE structure.the following article teaches us how to implement HOWTO: Overriding Initial Setting on Print Setup Dialog
    http://support.microsoft.com/default.aspx?scid=kb;en-us;166130&Product=vcc
      

  11.   

    我也测试过了,也还是走纸~~跟yuanl(鹰) 的一样
      

  12.   

    1、首先确定不是打印机的问题
    2、仔细检查你的代码,DEVMODE的结构用法仔细研究一下吧