Home Druckdialoge PRINT DIALOG - DELETE (AES 201) PRINT DIALOG - CLOSE WINDOW (AES 203)

2.6.5 PRINT DIALOG - OPEN WINDOW (AES 202)

OPEN WINDOW öffnet ein Fenster mit dem Druckdialog. Das Handle des Fensters wird zurückgeliefert, wenn kein Fehler aufgetreten ist. Im Fehlerfall ist der Rückgabewert 0. Die Struktur <settings> enthält die Druckereinstellung, die mit jedem Dokument gespeichert werden sollte. Wenn zu einem Dokument noch keine Einstellung existiert, kann sie entweder mit pdlg_new_settings() erzeugt werden (der Speicherblock gehört dem System) oder die Applikation kann Malloc() und anschließend pdlg_dflt_settings() aufrufen, um den Speicher zu initialisieren.

In <option_flags> wird u.a. mitgeteilt, ob der Dialog als Einstell- (PDLG_PREFS) oder Druckdialog (PDLG_PRINT) angezeigt werden soll. Mit den Flags PDLG_ALWAYS_COPIES, PDLG_ALWAYS_SCALE und PDLG_ALWAYS_ORIENT kann außerdem festgelegt werden, daß Skalierung, Kopieroption und Querdruck auch dann angeboten werden, wenn ein Treiber sie nicht unterstützt, so daß die Applikation z.B. die Seite gedreht ausgeben muß. Durch PDLG_EVENDODD werden die Buttons für gerade/ungerade Seiten anwählbar.

Deklaration:
WORD pdlg_open( PRN_DIALOG *prn_dialog, PRN_SETTINGS *settings,
                BYTE *document_name, WORD option_flags,
                                        WORD x, WORD y );

Aufruf:
whdl = pdlg_open( prn_dialog, settings, "ohne Namen",
                                  PDLG_PREFS, -1, -1 );

Variable         Belegung         Bedeutung
Eingaben:

contrl[0]        202              pdlg_open
contrl[1]        3                Einträge in intin
contrl[3]        3                Einträge in addrin

intin[0]         option_flags
intin[1]         x                x-Koordinate des Fensters oder -1
                                  (zentriert)
intin[2]         y                y-Koordinate des Fensters oder -1
                                  (zentriert)

addrin[0]        prn_dialog       Zeiger auf Verwaltungsstruktur
addrin[1]        settings         Druckereinstellung
addrin[2]        document_name    Dokumentenname

Ausgaben:

contrl[2]        1                Einträge in intout
contrl[4]        0                Einträge in addrout

intout[0]        whdl             Handle des Fensters oder 0 (Fehler)


Beschreibung von <option_flags>:

#define PDLG_PREFS          0x0000  /* Einstelldialog anzeigen */
#define PDLG_PRINT          0x0001  /* Druckdialog anzeigen */

#define PDLG_ALWAYS_COPIES  0x0010  /* immer Kopien anbieten */
#define PDLG_ALWAYS_ORIENT  0x0020  /* immer Querformat anbieten */
#define PDLG_ALWAYS_SCALE   0x0040  /* immer Skalierung anbieten */

#define PDLG_EVENODD        0x0100  /* Option für gerade und ungerade
                                       Seiten anbieten */

Beschreibung von <settings>:

/* <page_flags> */
#define  PG_EVEN_PAGES  0x0001
  /* nur Seiten mit gerader Seitennummer ausgeben */
#define  PG_ODD_PAGES   0x0002
  /* nur Seiten mit ungerader Seitennummer ausgeben */

/* <first_page/last_page> */
#define  PG_MIN_PAGE    1
#define  PG_MAX_PAGE    9999

/* <orientation> */
#define  PG_UNKNOWN     0x0000
  /* Ausrichtung unbekannt und nicht verstellbar */
#define  PG_PORTRAIT    0x0001
  /* Seite im Hochformat ausgeben */
#define  PG_LANDSCAPE   0x0002
  /* Seite im Querformat ausgeben */


typedef struct _prn_settings
{
   LONG  magic;            /* 'pset' */
-->LONG  length;           /* Strukturlänge */
   LONG  format;           /* Strukturtyp */
   LONG  reserved;

-->LONG  page_flags;       /* Flags, u.a. gerade Seiten, ungerade Seiten */
-->WORD  first_page;       /* erste zu druckende Seite */
-->WORD  last_page;        /* letzte zu druckende Seite */
-->WORD  no_copies;        /* Anzahl der Kopien */
-->WORD  orientation;      /* Drehung */
-->LONG  scale;            /* Skalierung: 0x10000L entspricht 100% */

-->WORD  driver_id;        /* VDI-Gerätenummer */
   WORD  driver_type;      /* Typ des eingestellten Treibers */
   LONG  driver_mode;      /* Flags, u.a. für Hintergrunddruck */
   LONG  reserved1;
   LONG  reserved2;

   LONG  printer_id;       /* Druckernummer */
   LONG  mode_id;          /* Modusnummer */
   WORD  mode_hdpi;        /* horizontale Auflösung in dpi */
   WORD  mode_vdpi;        /* vertikale Auflösung in dpi */
   LONG  quality_id;       /* Druckmodus (hardwäremäßige Qualität,
                              z.B. Microweave oder Econofast) */

   LONG  color_mode;       /* Farbmodus */
   LONG  plane_flags;      /* Flags für auszugebende Farbebenen
                              (z.B. nur cyan) */
   LONG  dither_mode;      /* Rasterverfahren */
   LONG  dither_value;     /* Parameter für das Rasterverfahren */

   LONG  size_id;          /* Papierformat */
   LONG  type_id;          /* Papiertyp (normal, glossy) */
   LONG  input_id;         /* Papiereinzug */
   LONG  output_id;        /* Papierauswurf */

   LONG  contrast;         /* Kontrast: 0x10000L entspricht
                              Normaleinstellung */
   LONG  brightness;       /* Helligkeit: 0x1000L entspricht
                              Normaleinstellung */
   LONG  reserved3;
   LONG  reserved4;

   LONG  reserved5;
   LONG  reserved6;
   LONG  reserved7;
   LONG  reserved8;

   BYTE  device[128];      /* Dateiname für den Ausdruck */

#ifdef __PRINTING__
   TPrint   mac_settings;  /* Einstellung des Mac-Druckertreibers */
#else
   struct
   {
      UBYTE inside[120];
   } mac_settings;
#endif

} PRN_SETTINGS;

Die mit --> gekennzeichneten Strukturelemente können von der Applikation ausgelesen werden. Auf alle anderen Einträge sollte nicht zugegriffen werden. Daten wie z.B. die Druckerauflösung oder die Farbanzahl sollten nicht der Einstellstruktur entnommen werden, sondern beim Start des Ausdrucks vom Drucker erfragt werden (es wäre z.B. möglich, daß der Druckertreiber durch Speichermangel gezwungen wird, die Druckauflösung gegenüber der in PRN_SETTINGS eingetragenen Einstellung zu verringern).


Home Druckdialoge PRINT DIALOG - DELETE (AES 201) PRINT DIALOG - CLOSE WINDOW (AES 203)