Home Druckdialoge PRINT DIALOG - GET SETTING STRUCTURE SIZE (AES 204, 0) PRINT DIALOG - REMOVE PRIVATE PRINTERS (AES 205, 1)

2.6.8 PRINT DIALOG - ADD PRIVATE PRINTERS (AES 205, 0)

Mit ADD PRIVATE PRINTERS kann ein Programm eigene Druckerbeschreibungen zum Dialog hinzufügen. <drv_info> enthält einen Zeiger auf die Liste der verfügbaren Drucker und der Rasterverfahren. Die Treibernummer sollte auf 0x7fff gesetzt werden, um den eigenen Treiber von OS-Treibern zu unterscheiden.

Deklaration:
WORD pdlg_add_printers( PRN_DIALOG *prn_dialog, DRV_INFO *drv_info );

Aufruf:
ret = pdlg_add_printers( prn_dialog, &drv_info );

Variable         Belegung            Bedeutung
Eingaben:

contrl[0]        205                 pdlg_set
contrl[1]        1                   Einträge in intin
contrl[3]        2                   Einträge in addrin

intin[0]         0                   pdlg_add_driver

addrin[0]        prn_dialog          Zeiger auf Verwaltungsstruktur
addrin[1]        driver

Ausgaben:

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

intout[0]        ret                 0: Fehler 1: alles in Ordnung

Strukturbeschreibung:

typedef struct
{
   LONG        magic;               /* 'pdnf' */
   LONG        length;              /* Strukturlänge */
   LONG        format;              /* Datenformat */
   LONG        reserved;            /* reserviert */

   WORD        driver_id;           /* Treibernummer fürs VDI */
   WORD        driver_type;         /* Treibertyp */
   LONG        reserved1;
   LONG        reserved2;
   LONG        reserved3;

   PRN_ENTRY   *printers;           /* Liste der zum Treiber gehörenden Drucker */
   DITHER_MODE *dither_modes;       /* Liste der vom Treiber unterstützten Rasterverfahren */
   LONG        reserved4;
   LONG        reserved5;

   LONG        reserved6;
   LONG        reserved7;
   LONG        reserved8;
   LONG        reserved9;

   BYTE        device[128];         /* Ausgabedatei des Druckertreibers */

} DRV_INFO;

typedef struct _dither_mode
{
   struct _dither_mode  *next;
   LONG        length;              /* Strukturlänge */
   LONG        format;              /* Datenformat */
   LONG        reserved;            /* reserviert */

   LONG        dither_id;           /* Kennung */
   LONG        color_modes;         /* unterstützte Farbtiefen */
   LONG        reserved1;
   LONG        reserved2;

   BYTE        name[32];            /* Name des Rasterverfahrens */
} DITHER_MODE;

typedef struct _prn_entry           /* Gerätebeschreibung */
{
   struct _prn_entry *next;         /* Zeiger auf die die nächste Gerätebeschreibung */
   LONG        length;              /* Strukturlänge */
   LONG        format;              /* Datenformat */
   LONG        reserved;            /* reserviert */

   WORD        driver_id;           /* Treiberkennung */
   WORD        driver_type;         /* Treibertyp */
   LONG        printer_id;          /* Druckerkennung */
   LONG        printer_capabilities; /* Druckereigenschaften */
   LONG        reserved1;

   LONG        flags;
   struct _pdlg_sub  *sub_dialogs;  /* Zeiger auf die Liste der Unterdialoge für diesen Drucker */
   PRN_SWITCH  setup_panel;         /* Unterdialog bei Druckerwechsel initialisieren */
   PRN_SWITCH  close_panel;         /* Unterdialog bei Druckerwechsel schließen */

   PRN_MODE    *modes;              /* Liste der vorhandenen Auflösungen */
   MEDIA_SIZE  *papers;             /* Liste der vorhandenen Papierformate */
   PRN_TRAY    *input_trays;        /* Liste der Einzüge */
   PRN_TRAY    *output_trays;       /* Liste der Auswürfe */

   BYTE        name[32];            /* Name des Druckers */
} PRN_ENTRY;

/* old_printer kann auch 0L sein */
typedef LONG  (cdecl *PRN_SWITCH)( struct _drv_entry *drivers, struct _prn_settings *settings, struct _prn_entry *old_printer, struct _prn_entry *new_printer );

#define  PRN_STD_SUBS   0x0001

typedef struct _prn_mode            /* Beschreibung eines Druckermodus */
{
   struct _prn_mode *next;          /* Zeiger auf den nächsten Druckermodus */

   LONG        mode_id;             /* Moduskennung (Index innerhalb der Datei) */
   WORD        hdpi;                /* horizontale Auflösung in dpi */
   WORD        vdpi;                /* vertikale Auflösung in dpi */
   LONG        mode_capabilities;   /* Moduseigenschaften */

   LONG        color_capabilities;  /* einstellbare Farbmodi */
   LONG        dither_flags;        /* Flags, die angeben, ob der korrespondierende Farbmodus mit oder ohne Dithern ansprechbar ist */
   MEDIA_TYPE  *paper_types;        /* geeignete Papiertypen */
   LONG        reserved;

   BYTE        name[32];            /* Modusname */
} PRN_MODE;

typedef struct _media_type          /* Beschreibung eines Papiertyps/Druckmediums */
{
   struct _media_type   *next;

   LONG        type_id;             /* Kennung des Papierformats */
   BYTE        name[32];            /* Name des Papierformats */
} MEDIA_TYPE;

typedef struct _media_size          /* Beschreibung eines Papierformats */
{
   struct _media_size   *next;

   LONG        size_id;             /* Kennung des Papierformats */
   BYTE        name[32];            /* Name des Papierformats */
} MEDIA_SIZE;

typedef struct _prn_tray            /* Beschreibung eines Einzugs/Auswurfs */
{
   struct _prn_tray  *next;

   LONG        tray_id;             /* Nummer des Einzugs oder Auswurfs */
   BYTE        name[32];            /* Name des Schachts */
} PRN_TRAY;


Home Druckdialoge PRINT DIALOG - GET SETTING STRUCTURE SIZE (AES 204, 0) PRINT DIALOG - REMOVE PRIVATE PRINTERS (AES 205, 1)