BUG: Print to File Fails to Request Output File Name (274523)



The information in this article applies to:

  • Microsoft Visual Basic Professional Edition for Windows 4.0, when used with:
    • the operating system: Microsoft Windows 95
    • the operating system: Microsoft Windows 98
    • Microsoft Windows Millennium Edition
  • Microsoft Visual Basic Professional Edition for Windows 5.0, when used with:
    • the operating system: Microsoft Windows 95
    • the operating system: Microsoft Windows 98
    • Microsoft Windows Millennium Edition
  • Microsoft Visual Basic Professional Edition for Windows 6.0, when used with:
    • the operating system: Microsoft Windows 95
    • the operating system: Microsoft Windows 98
    • Microsoft Windows Millennium Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 4.0, when used with:
    • the operating system: Microsoft Windows 95
    • the operating system: Microsoft Windows 98
    • Microsoft Windows Millennium Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 5.0, when used with:
    • the operating system: Microsoft Windows 95
    • the operating system: Microsoft Windows 98
    • Microsoft Windows Millennium Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0, when used with:
    • the operating system: Microsoft Windows 95
    • the operating system: Microsoft Windows 98
    • Microsoft Windows Millennium Edition

This article was previously published under Q274523

SYMPTOMS

When the Print to File checkbox is selected in the Print dialog box, the dialog box that allows an Output File Name to be specified is not displayed.

RESOLUTION

There are three possible workarounds for this behavior:
  • Check the Flags property of the CommonDialog control to see if the Print to File checkbox is marked. If the checkbox is marked, you can create a text file (without printer codes) with the Visual Basic Open, Write, and Close commands.

  • Configure a local printer to print to the FILE: port. This local printer can be used when a Print to File operation is required.

  • Open the Printer Common Dialog with WIN32 API functions, such as PrintDlg or PageSetupDlg, instead of with the comdlg32.ocx file. You can then print with API calls instead of the Printer object. See the "References" section of this article for more information.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Start a new Visual Basic Standard EXE project. Form1 is created by default.
  2. On the Project menu, select Components. In the Components dialog box, check the Microsoft Common Dialog Control component, and then click OK.
  3. Add a CommonDialog control to Form1.
  4. Add the following code to the General Declarations section of Form1:
    Private Sub Form_Click()
        Dim blnUseWorkaround As Boolean
    
        ' Uncomment the following line to examine a workaround
        'blnUseWorkaround = True
    
        CommonDialog1.ShowPrinter
        
        If blnUseWorkaround Then
            ' Test to see if the Print to File box is checked
            If (CommonDialog1.Flags And cdlPDPrintToFile) = cdlPDPrintToFile Then
                MsgBox "Create the Output file using the Open, Write, and Close commands"
            Else
                PrintText
            End If
        Else
            PrintText
        End If
    End Sub
    
    Sub PrintText()
        Printer.Print "Test Text"
        Printer.EndDoc
    End Sub
    					
  5. Press the F5 key to run the program.
  6. Click on Form1, and note that the Print dialog box appears.
  7. Check the Print to File checkbox.
  8. Click OK on the Print dialog box, and note that the dialog box that requests an Output File Name is not displayed.

REFERENCES

For additional information about using the WIN32 API functions for common dialog boxes and printing, click the article numbers below to view the articles in the Microsoft Knowledge Base:

175535 PRB: Printing Rotated Text with Visual Basic

180645 FIX: Cannot Change Page Settings During Print Job

173981 PRB: Behavior Differences of Print Dialog Box on Different Platforms


Modification Type:MinorLast Reviewed:9/28/2004
Keywords:kbBug kbCmnDlgPrint kbCtrl kbFileIO kbpending KB274523