Home Print dialogs 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)

With pdlg_add_sub_dialogs() an application can add its custom subdialogs to the printer dialog to offer special print options (e.g. watermarks, background images etc.).

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

Call:
ret = pdlg_add_sub_dialogs( prn_dialog, sub_dialogs );

Variable         Argument            Meaning
Inputs:

contrl[0]        205                 pdlg_set
contrl[1]        1                   Entries in intin
contrl[3]        2                   Entries in addrin

intin[0]         3                   pdlg_add_sub_dialog

addrin[0]        prn_dialog          Pointer to management structure
addrin[1]        sub_dialogs         List of subdialogs

Outputs:

contrl[2]        1                   Entries in intout
contrl[4]        0                   Entries in addrout

intout[0]        ret                 0: Error   1: All OK


Note:

The hooking in of an application's own dialogs is demonstrated in the 
sample programs PDLGSMP3.C and PDLGSMP4.C.

Structure description:

#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      /* Subdialog for setting device */
{
   struct _pdlg_sub *next;    /* Pointer to the successor in the list */
   int32       length;        /* Structure length */
   int32       format;        /* Data format */
   int32       reserved;      /* Reserved */

   void        *drivers;      /* Only for internal dialogs */
   int16       option_flags;  /* Flags, inc. PDLG_PRINTING, PDLG_PREFS */
   int16       sub_id;        /* Subdialog ID, entered for global 
                                 subdialogs of pdlg_add() */
   DIALOG      *dialog;       /* Pointer to the structure of the window
                                 dialog or 0L */
   OBJECT      *tree;         /* Pointer to the assembled object tree */
   int16       index_offset;  /* Index offset of the subdialog */
   int16       reserved1;
   int32       reserved2;
   int32       reserved3;
   int32       reserved4;

   PDLG_INIT   init_dlg;      /* Initialisation function */
   PDLG_HNDL   do_dlg;        /* Handling function */
   PDLG_RESET  reset_dlg;     /* Reset function */
   int32       reserved5;

   OBJECT      *sub_icon;     /* Pointer to the icon for the list box */
   OBJECT      *sub_tree;     /* Pointer to the object tree of the 
                                 subdialog */
   int32       reserved6;
   int32       reserved7;

   int32       private1;      /* Dialog's private information */
   int32       private2;
   int32       private3;
   int32       private4;

} PDLG_SUB;

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