Home Druckdialoge PRINT DIALOG - UPDATE WINDOW (AES 205, 2) PRINT DIALOG - REMOVE PRIVATE DIALOGS (AES 205, 4)

2.6.11 PRINT DIALOG - ADD PRIVATE DIALOGS (AES 205, 3)

Mit pdlg_add_sub_dialogs() kann eine Anwendung eigene Unterdialoge zum Druckdialog hinzufügen, um besondere Druckoptionen anzubieten (z.B. Marken, Hintergrundbilder, etc.).

Deklaration:
WORD pdlg_add_sub_dialogs( PRN_DIALOG *prn_dialog,
                           PDLG_SUB *sub_dialog );

Aufruf:
ret = pdlg_add_sub_dialogs( prn_dialog, sub_dialogs );

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]         3                   pdlg_add_sub_dialog

addrin[0]        prn_dialog          Zeiger auf Verwaltungsstruktur
addrin[1]        sub_dialogs         Liste von Unterdialogen

Ausgaben:

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

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


Bemerkung:

Das Einhängen eigener Unterdialoge wird in den Beispielprogrammen PDLGSMP3.C und
PDLGSMP4.C demonstriert.

Strukturbeschreibung:

#define  PDLG_CHG_SUB   0x80000000L
#define  PDLG_IS_BUTTON 0x40000000L

#define  PDLG_PREBUTTON 0x20000000L
#define  PDLG_PB_OK     1
#define  PDLG_PB_CANCEL 2
#define  PDLG_PB_DEVICE 3

#define  PDLG_BUT_OK    ( PDLG_PREBUTTON + PDLG_PB_OK )
#define  PDLG_BUT_CNCL  ( PDLG_PREBUTTON + PDLG_PB_CANCEL )
#define  PDLG_BUT_DEV   ( PDLG_PREBUTTON + PDLG_PB_DEVICE )

typedef  int32 (cdecl *PDLG_INIT)( struct _prn_settings *settings, struct _pdlg_sub *sub );
typedef  int32 (cdecl *PDLG_HNDL)( struct _prn_settings *settings, struct _pdlg_sub *sub, int16 exit_obj );
typedef  int32 (cdecl *PDLG_RESET)( struct _prn_settings *settings, struct _pdlg_sub *sub );

typedef struct _pdlg_sub            /* Unterdialog für Geräteeinstellung */
{
   struct _pdlg_sub *next;          /* Zeiger auf den Nachfolger in der Liste */
   int32       length;              /* Strukturlänge */
   int32       format;              /* Datenformat */
   int32       reserved;            /* reserviert */

   void        *drivers;            /* nur für interne Dialoge */
   int16       option_flags;        /* Flags, u.a. PDLG_PRINTING, PDLG_PREFS */
   int16       sub_id;              /* Kennung des Unterdialogs, wird für globale Unterdialoge von pdlg_add() eingetragen */
   DIALOG      *dialog;             /* Zeiger auf die Struktur des Fensterdialogs oder 0L */
   OBJECT      *tree;               /* Zeiger auf den zusammengesetzen Objektbaum */
   int16       index_offset;        /* Indexverschiebung des Unterdialogs */
   int16       reserved1;
   int32       reserved2;
   int32       reserved3;
   int32       reserved4;

   PDLG_INIT   init_dlg;            /* Initialisierungsfunktion */
   PDLG_HNDL   do_dlg;              /* Behandlungsfunktion */
   PDLG_RESET  reset_dlg;           /* Zurücksetzfunktion */
   int32       reserved5;

   OBJECT      *sub_icon;           /* Zeiger auf das Icon für die Listbox */
   OBJECT      *sub_tree;           /* Zeiger auf den Objektbaum des Unterdialogs */
   int32       reserved6;
   int32       reserved7;

   int32       private1;            /* dialogeigene Informationen */
   int32       private2;
   int32       private3;
   int32       private4;

} PDLG_SUB;

Home Druckdialoge PRINT DIALOG - UPDATE WINDOW (AES 205, 2) PRINT DIALOG - REMOVE PRIVATE DIALOGS (AES 205, 4)