Newsgroup: it.comp.lang.visual-basic
Titolo: Landscape Printing in VB3.0

I have a VB 3.0 program, which works on Windows NT, Windows 95 and Windows
3.x platforms. Now I need the printer to print one output page in Landscape
mode. I am not using dialog boxes. Can someone please tell me how to do
this. I know that VB 5 has a Printer Orientation property, but VB 3.0 has
not.
Does one of you know the answer?
Thanks in advance.
Hans

...

I have this information but I don't know where. Please wait some day that I
find this documantation.
Thanks ;-)
Marco
icv...@box1.tin.it

...
this is the way to do what you want
Marco 
icv...@box1.tin.it
--------------------------------------------------------------------
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.
The 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.
Example
-------
1. Start Visual Basic or from the File menu, choose New Project (ALT, F, N)
   if Visual Basic is already running. 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
      Const NULL = 0&
      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
--