As List & Label cannot draw all possible objects - be they spline objects, statistic graphs or drawings with an unknown format - a function has been built into List & Label to offer the programmer so-called user objects, as even metafile variables cannot cover all areas.
If you have defined a variable in your program with
LlDefineVariableExt(hJob, <Name>, <Content>, LL_DRAWING_USEROBJ, NULL);
the user can define an object in the Designer which is connected to this variable. This takes place analogously to normal LL_DRAWING variables.
When List & Label needs to print this object, it calls your program using the callback LL_CMND_DRAW_USEROBJ to pass this task on to your program, as List & Label has no idea what kind of "visual" action needs to be taken.
The same can be done for table fields, so that the user has the capability of including an user object in a table:
LlDefineFieldExt(hJob, <Name>, <Content>, LL_DRAWING_USEROBJ, NULL);
For variables, but not for fields, it is also possible to define user objects whose parameters can be changed by the user in the Designer, just like the object properties of List & Label's own objects. These objects are defined with the LL_DRAWING_USEROBJ_DLG type:
LlDefineVariableExt(hJob, <Name>, <Content>, LL_DRAWING_USEROBJ_DLG, NULL);
(This means that editable user objects cannot be inserted in tables. Only non-editable user objects can be used as table field.)
If the user selects the image in the Designer and clicks on the Variable's "Properties" sub item in the property window, the callback LL_EDIT_USEROBJ is invoked to request a dialog in which the parameters belonging to the object can be changed. These parameters are automatically stored in the project definition file with the other object information and passed with the callback LL_DRAW_USEROBJ for evaluation, so that your program does not have to take care of further storage of the parameters.
Note that you should only work with DIB (device independent bitmaps) in callback objects, DDB (device dependent bitmaps) can be incompatible with the respective printer DC.