Landscape Printing 
Author Message
 Landscape Printing

I need to switch printer settings between landscape and portrait within a
Visual Basic program (I don't want to make the user select it in a
Printer Setup).  I found something on MicroSoft's Knowledge Base, but I
was unable to get that to work.

Does anyone know of a way to switch between Portrait and Landscape within
Visual Basic or through a DLL?  I'm not proficient enough with Windows
programming to write my own DLL.

Our news server has been going crazy lately, so please direct replies to

Thanks!



Tue, 08 Jul 1997 15:20:53 GMT  
 Landscape Printing

applies to MY post #3319]

Quote:

>I need to switch printer settings between landscape and portrait within
a
>visual basic program (I don't want to make the user select it in a
>Printer Setup).  I found something on MicroSoft's Knowledge Base, but I
>was unable to get that to work.

>Does anyone know of a way to switch between Portrait and Landscape
within
>Visual Basic or through a DLL?  I'm not proficient enough with Windows
>programming to write my own DLL.

>Our news server has been going crazy lately, so please direct replies
to

>Thanks!

I used this article, copied the code and it worked for me.
Scott

PSS ID Number: Q80185
Article last modified on 05-31-1994

1.00 2.00 3.00

WINDOWS

---------------------------------------------------------------------

The information in this article applies to:

- Standard and Professional Editions of Microsoft Visual Basic for

  Windows, versions 2.0 and 3.0

- Microsoft Visual Basic programming system for Windows, version 1.0

---------------------------------------------------------------------

SUMMARY

=======

Some printers support changing the orientation of the paper output to

landscape. With the Windows API Escape() function, you can change

the settings of the printer to either landscape or portrait. In
addition,

if you have one of the following products, you can use the Common Dialog

box to allow users to set the mode inside a Visual Basic Application:

 - Visual Basic version 1.0 Professional Toolkit

 - Professional Edition of Visual Basic version 2.0

 - Standard or Professional Edition of Visual Basic version 3.0

Below is an example showing how to invoke the Windows API Escape()

function from Microsoft Visual Basic.

Note that the Windows API Escape() function is provided in Windows
versions

3.0 and 3.1 for backward compatibility with earlier versions of
Microsoft

Windows. Applications are supposed to use the GDI DeviceCapabilities()
and

ExtDeviceMode() functions instead of the Escape() function, but neither

DeviceCapabilities() nor ExtDeviceMode() can be called directly from
Visual

Basic. This is because they are exported by the printer driver, not by
the

Windows GDI. The only way to use ExtDeviceMode() or DeviceCapabilities()

in Visual Basic is to create a DLL and call them from there.

MORE INFORMATION

================

Normally, output for the printer is in portrait mode, where output is

printed horizontally across the narrower dimension of a paper. In

landscape mode, the output is printed horizontally across the longer

dimension of the paper.

You can use the Escape() function to change the orientation of the

printer by passing GETSETPAPERORIENT as an argument. When you

initially print text to the printer, Visual Basic will use the

currently selected orientation. Sending the Escape() function will not

take effect until you perform a Printer.EndDoc. After you perform a

Printer.EndDoc, output will print in the orientation that you have

selected.

To determine if your printer supports landscape mode, do the

following:

1. From the Windows Program Manager, run Control Panel.

2. From the Control Panel, select the Printers icon.

3. From the Printers dialog box, choose the Configure button.

4. The Configure dialog box will contain an option for landscape

   orientation if landscape is supported on your printer.

How to Check the Current Orientation of the Printer

---------------------------------------------------

To check the current orientation of the printer, use the following code:

' Enter the following Declare statement as one, single line:

Declare Function Escape% Lib "GDI" (ByVal hDC%, ByVal nEsc%, ByVal
nLen%,

   lpData As Any, lpOut As Any)

Sub Command1_Click ()

   Const PORTRAIT = 1

   Const LANDSCAPE = 2

   Const GETSETPAPERORIENT = 30

   Dim Orient As OrientStructure

   Printer.Print ""

   Orient.Orientation = LANDSCAPE

   x% = Escape(Printer.hDC, GETSETPAPERORIENT, Len(Orient), "", Null)

   Print x%

End Sub

How to Change the Printer Orientation to Landscape

--------------------------------------------------

The following example below demonstrates how to change the printer

orientation to landscape. Please note that your printer must support

landscape mode for these commands to have any effect.

1. Start a new project in Visual Basic (ALT, F, N). Form1 is created by

   default.

2. Add a command button (Command1) to Form1.

3. Add the following code to the global module:

   Type OrientStructure

      Orientation As Long

      Pad As String * 16

   End Type

   ' Enter the following Declare statement on one, single line:

   Declare Function Escape% Lib "GDI" (ByVal hDc%, ByVal nEsc%,

               ByVal nLen%, lpData As OrientStructure, lpOut As Any)

4. Add the following code to the Command1_Click event procedure of the

   Command1 button:

   Sub Command1_Click ()

      Const PORTRAIT = 1

      Const LANDSCAPE = 2

      Const GETSETPAPERORIENT = 30

      Dim Orient As OrientStructure

      '* Start the printer

      Printer.Print ""

      '* Specify the orientation

      Orient.Orientation = LANDSCAPE

      '* Send escape sequence to change orientation

      x% = Escape(Printer.hDC, GETSETPAPERORIENT,

                Len(Orient), Orient, NULL)

      '* The EndDoc will now re-initialize the printer

      Printer.EndDoc

      Printer.Print "Should print in landscape mode"

      Printer.EndDoc

   End Sub

Additional reference words: 1.00 2.00 3.00

KBCategory:

KBSubcategory: APrgPrint

========================================================================
=====

Copyright Microsoft Corporation 1994.



Wed, 09 Jul 1997 01:05:00 GMT  
 Landscape Printing

Quote:

> I need to switch printer settings between landscape and portrait within a
> visual basic program
[stuff left out]
> Does anyone know of a way to switch between Portrait and Landscape within
> Visual Basic or through a DLL?

Check out pprtr44.zip in any cica, garbo or simtel mirror
(pprtr4.zip on CIS or AOL), e.g. in /simtel/win3/dll on
oak.oakland.edu  ...

  Windows DLL providing higher-level language access via functions to
  retrieve and change all printer attributes available via  ExtDevMode in
  DEVMODE structure (orientation, pagesize, etc).  Also  get list of
  available printers, get/change default printer, get port, get printer
  device capabilities.  Shareware $10. CIS SWREG available (#1462).

---------------------
"Programming is the art of debugging a blank sheet of paper"
Paul F Poellinger              2019 Round Lake Drive
Silent O Software              Houston, TX  77077



Fri, 11 Jul 1997 03:01:34 GMT  
 
 [ 3 post ] 

 Relevant Pages 

1. Crystal Reports Printing to the not-default printer sq Landscape printing

2. Dot Matrix Landscape Printing in QBasic

3. Landscape Printing

4. Landscape Printing in QBasic

5. Landscape printing in VB 5.0

6. Mixing portrait and landscape printing in VB5

7. Crystal Reports- landscape printing

8. Landscape Printing in VB

9. Landscape printing problem

10. Visual-Basic Landscape printing

11. landscape print

12. DataReport and landscape printing

 

 
Powered by phpBB® Forum Software