Solved

How to print multiple copies?

Posted on 1998-10-05
4
238 Views
Last Modified: 2013-11-20
I'm using the GetDefaultDC (I think that's what it's called)... How do I print multiple copies of the document like this w/o displaying the printer dialog box. I set the number of pages var in the structure to the correct number of copies, but it always just prints one copy. Thanks.
0
Comment
Question by:maknight
  • 2
4 Comments
 
LVL 3

Expert Comment

by:plaroche
ID: 1322929
Can you paste some code of what you're doing? Are you doing this in the doc/view architecture?  Just give us more details and we'll do our best.
0
 
LVL 8

Accepted Solution

by:
Answers2000 earned 50 total points
ID: 1322930
1. You can test if your printer supports multiple copies using DeviceCapabilities.  [not all printers do]

2. You can set the number of copies for a Printer using the DocumentProperties API call

3. I don't think you mean GetDefaultDC
0
 

Author Comment

by:maknight
ID: 1322931
Here is some sample code of the section in question... Would DocumentProperties work with this method?

      // create the print object (display print dlg set, print all pages w/o page numbers, hide print to file, disable selection)
      CPrintDialog *PrintTheReportDlg = new CPrintDialog(FALSE,PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION | PD_RETURNDC);
      PrintTheReportDlg->m_pd.nCopies = numberofcopies;

      // display the Print Dialog where user can select their preferred settings if Print button was pressed
      if (showprintdlg)
            {
            int return_value = PrintTheReportDlg->DoModal();
            // if dialog did not return IDOK, then check for an error occurance
            if (return_value != IDOK)
                  {
                  if (return_value != IDCANCEL)
                        AfxMessageBox("The Printer Dialog Returned An Error.\nCannot Print Report.",MB_OK | MB_ICONEXCLAMATION);
                  delete PrintTheReportDlg;
                  return(FALSE);
                  }
            }
      // on AutoPrint, we just call for the default printer info
      else
            PrintTheReportDlg->GetDefaults();

0
 
LVL 3

Expert Comment

by:plaroche
ID: 1322932
Here's the doc for nCopies in the PRINTDLG structure:

nCopies
Contains the initial number of copies for the Copies edit control if hDevMode is NULL; otherwise, the dmCopies member of the DEVMODE structure contains the initial value. When PrintDlg returns, nCopies contains the actual number of copies to print. This value depends on whether the application or the printer driver is responsible for printing multiple copies. If the PD_USEDEVMODECOPIESANDCOLLATE flag is set in the Flags member, nCopies is always 1 on return, and the printer driver is responsible for printing multiple copies. If the flag is not set, the application is responsible for printing the number of copies specified by nCopies. For more information, see the description of the PD_USEDEVMODECOPIESANDCOLLATE flag.


As you can see sometimes the printer will be responsible for the copies and sometimes the APP will be responsible.  This means that your printer might not be able to handle mutliple copies. Check for the flag as explained up here and either print the copies yourself by placing your code in a for() statement or not, depending on the presence of the flag.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Define unique primary key 9 89
maxBlock challenge 30 111
notReplace  challenge 53 116
Smart Camera scanning and reading information 3 99
Introduction: Finishing the grid – keyboard support for arrow keys to manoeuvre, entering the numbers.  The PreTranslateMessage function is to be used to intercept and respond to keyboard events. Continuing from the fourth article about sudoku. …
Introduction: Dialogs (1) modal - maintaining the database. Continuing from the ninth article about sudoku.   You might have heard of modal and modeless dialogs.  Here with this Sudoku application will we use one of each type: a modal dialog …
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now