Wer cpx_init() als
CPX_INFO * cdecl cpx_init( XCPB *xcpb, LONG magic, LONG version);
definiert, kann anhand der Parameter <magic> und
<version> feststellen, ob das CPX unter COPS oder
XCONTROL läuft:
WORD is_COPS( LONG magic, LONG version )
{
if ((magic == 'COPS') && (version >= 0x10000L)) /* COPS? */
return( 1 );
return( 0 ); /* XCONTROL */
}
Wenn COPS erkannt wurde, kann das CPX einen bis zu 512 * 384 Pixel
großen Objektbaum zeichnen und bei Xform_do()
übergeben.
Wenn COPS vorhanden ist, gilt außerdem folgende Erweiterung
für cpx_call():
WORD cdecl cpx_call( GRECT *work, DIALOG *dialog );
Dabei enthält <dialog> den Zeiger auf die
Fensterdialogstruktur. Der Fensterdialog wird von COPS nach
cpx_init() mit wdlg_create() und wdlg_open()
geöffnet. Das GRECT <work> und der Objektbaum
liegen bis zum ersten Aufruf von Xform_do() bzw. bis zur
Rückkehr aus cpx_call() außerhalb des sichtbaren
Bildschirms.