title: Number of copies never passing from print dialog, always 1
body: <p>We have a VB6 application that uses the <code>vbprndlg.dll</code> library to show print selection dialogs to the user.  Here recently we've received reports from users on Windows Vista and 7 (both 32 and 64 bit) stating that the number of copies always stays 1 no matter what they put in the number of copies box on the dialog.  When running the exact same code on an XP Pro machine, the number of copies passes like it should to the reporting object.</p>
  
  <p>So far I've run tests using both the common dialog control and <code>vbprndlg.dll</code> to raise print dialogs on both a Vista and a 7 computer, and each time the number of copies is always reported to be 1 no matter if I type the number in the box or use the arrow toggle buttons to increase the number of copies.  Other properties - such as which printer is selected and the from and to page numbers report correctly.  </p>
  
  <p>When I hard code the number of copies to the Crystal Report object (shown below), the correct # of copies print - so this seems more of  a problem with the dialog control instead of the Crystal Report object.</p>
  
  <p>Here is a snippet of the code I'm using:</p>
  
  <pre><code>Dim PD As vbprndlglib.PrinterDlg
  Set PD = New vbprndlglib.PrinterDlg
  ''//load default settings
  PD.PrinterName = Printer.DeviceName
  PD.DriverName = Printer.DriverName
  PD.Port = Printer.Port
  PD.PaperBin = Printer.PaperBin
  PD.CancelError = True
  PD.Min = 1
  PD.Max = 32767
  PD.flags = (vbprndlglib.cdlPDNoSelection Or vbprndlglib.cdlPDHidePrintToFile)
  If PrintFlags And PrintDialogFlags.DisablePagesButton Then PD.flags = PD.flags Or
      vbprndlglib.cdlPDNoPageNums
      PD.ShowPrinter (hwnd)
      ''//cr is a reference to a CrystalReport object
      cr.PrinterPort = PD.Port
      cr.PrinterDriver = PD.DriverName
      cr.PrinterName = PD.PrinterName
      cr.CopiesToPrinter = PD.Copies ''//always 1 on Vista/7, correct # on XP
      If PD.flags And vbprndlglib.cdlPDPageNums Then
          cr.PrinterStartPage = PD.FromPage ''// these work fine
          cr.PrinterStopPage = PD.ToPage
      End If
      ''//... 
      cr.Action = 1 ''//prints report
  End If
  </code></pre>
  
  <p>I can't seem to find any information about known compatibility problems between raising print dialogs in VB6 and Windows Vista/7.  Is there anything else I can try with the dialog controls? </p>