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;