用这个函数打印文件,那么打印的页数  和一些其他的设置 怎么控制呢?

解决方案 »

  1.   

    我没有用shell,用的是CPaintDlg来做的。
    如果不想弹出对话框,设置一下属性就可以了
      

  2.   

    CPrintDialog dlg(FALSE,PD_ALLPAGES|PD_NOPAGENUMS,NULL);
    DEVMODE * printMode;//指向打印机信息 if(!dlg.GetDefaults())//取默认打印机
    return FALSE; printMode=dlg.GetDevMode();//取打印信息
    printMode->dmCopies=1;//打印十份 HDC hDC = dlg.CreatePrinterDC(); // 返回一个打印DC句柄
    ResetDC(hDC,printMode);//
    // 返回一个打印DC句柄 
    hDC=dlg.GetPrinterDC(); DOCINFO docin;
    memset(&docin, 0, sizeof(DOCINFO));
    docin.cbSize = sizeof(DOCINFO);
    docin.lpszDocName = _T("条形码打印");
    //SetMapMode(hDC,MM_HIENGLISH);
    // 启动打印工作 
    StartDoc(hDC,&docin); 
    // 一页开始 
    StartPage(hDC); 
    .....//我的打印操作
    // 一页结束 
    EndPage(hDC); 
    // 终止打印工作 
    EndDoc(hDC); 
    // 删除句柄 
    if(DeleteDC(hDC))

    return TRUE; 
    }
    else

    AfxMessageBox("Error");
    EndDoc(hDC); 
    } 打印多页的时候,加个循环就可以了
      

  3.   

    谢谢大家请问 firstofworld(天下第一)  我现在要打印的文件类型不确定,有WORD 或文本,或图形格式的,我用虚拟打印机打印的.在这种情况下编程应该是直接把文件名提供给系统,系统调用虚拟打印机打印文件.
    你说的是不是要手动读文件到内存中,然后再控制打印?如果这样我的虚拟打印机就没什么意义了.我在WORD里点打印,弹出的对话框就可以随意的设置打印的页数,而且打印正确,WORD里怎么实现的呢?还有就是我想知道怎样判断虚拟打印机什么时候打印完毕?