Skip to main content
Skip table of contents

Dialog structures: DoobriPrivate and DialogSpec

This page applies to Harlequin v13.1r0 and later; and to Harlequin MultiRIP but not Harlequin Core

The DoobriPrivate and DialogSpec definitions for Win32 plugins are given in psdevdlg.h as follows:

TEXT
      typedef struct DoobriPrivate { int idc;
      int idc2;
      int idcLabel; int idcReserved;
    } DoobriPrivate; typedef int DialogSpec;

For example, when the RIP needs to identify the device configuration dialog for a device the user selects in page setup's Configure Device dialog, it uses the D_GETDLGDEFN selector, passing a PluginDialogDefn structure with pdc set to pdcPageSetup .

The plugin can respond by setting dlgspec with the dialog's identifier. (Recall from page 320 that these identifiers are manifest constants in a header file written by the dialog / resource editor which is included in the plugin build.)

Later, when the RIP asks for the identifiers for the individual components of the dialog in D_GETDOOBRIS , each of the Doobri structures in pdoobri can have its DoobriPrivate field dp assigned from the identifiers given them by the dialog editor, and according to the types assigned by the plugin to the dc field. It is up to the plugin to ensure that the type of the Doobri agrees with the dialog elements assigned, and that the elements are appropriate for that type of dialog. The second output plugin example (OPEG2) illustrates this further.

At minimum, every dialog must contain OK and a Cancel buttons. These buttons do not appear in the Doobri list, and so that the RIP can recognize them, they must always have the resource identifiers IDOK and IDCANCEL (defined in windows.h ) respectively.

Dialogs may have other arbitrary elements not listed as part of a Doobri , for example descriptive strings, pictures, rules and so on, but interactive elements which do not form part of a Doobri will not be able to affect the RIP or the plugin, and so would be confusing.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.