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;