偶在实现一个页面打印多份.用for语句进行循环打印。每循环一次就startpage一次,导致内存空间内出现多份冗余数据。如何能打印多份只使用一页的内存空间呢?
希望高人回答

解决方案 »

  1.   

    如果你打印view的话,可直接在CPrintDialog中设打印份数
      

  2.   

    我猜想你打印是没有用CPrintDialog,因为CPrintDialog确实可以设置打印份数打印的时候有个结构DEVMODE ,这里面可以设置打印的一些参数typedef struct _devicemode {    /* dvmd */
        TCHAR  dmDeviceName[32];
        WORD   dmSpecVersion;
        WORD   dmDriverVersion;
        WORD   dmSize;
        WORD   dmDriverExtra;
        DWORD  dmFields;
        short  dmOrientation;
        short  dmPaperSize;
        short  dmPaperLength;
        short  dmPaperWidth;
        short  dmScale;
        short  dmCopies;//这个应该是你要的东西了吧...................................
        short  dmDefaultSource;
        short  dmPrintQuality;
        short  dmColor;
        short  dmDuplex;
        short  dmYResolution;
        short  dmTTOption;
        short  dmCollate;
        TCHAR  dmFormName[32];
        WORD   dmUnusedPadding;
        USHORT dmBitsPerPel;
        DWORD  dmPelsWidth;
        DWORD  dmPelsHeight;
        DWORD  dmDisplayFlags;
        DWORD  dmDisplayFrequency;
    } DEVMODE;在代码里面怎么实现呢,请看CPrintDialog printDlg(FALSE,PD_ALLPAGES|PD_NOPAGENUMS,NULL);
    DEVMODE * printMode;//指向打印机信息if(!printDlg.GetDefaults())//取默认打印机
    return FALSE;printMode=printDlg.GetDevMode();//取打印信息
    printMode->dmCopies=10;//打印十份HDC PrintDC = printDlg.CreatePrinterDC(); // 返回一个打印DC句柄
    ResetDC(PrintDC,printMode);//重新设置打印DC,这句很重要很重要,一定要写,开始我也是弄了很久不明白,为什么改了没有效果,加上这句东西改了才有效果的