/* CPX DATA STRUCTURES *========================================================================== * XCPB structure is passed TO the CPX * CPXINFO structure pointer is returned FROM the CPX * * xcpb structure is initialized in XCONTROL.C */ typedef struct { short handle; short booting; short reserved; short SkipRshFix; BYTE *reserve1; BYTE *reserve2; void (*rsh_fix)(); void (*rsh_obfix)(); short (*Popup)(); void (*Sl_size)(); void (*Sl_x)(); void (*Sl_y)(); void (*Sl_arrow)(); void (*Sl_dragx)(); void (*Sl_dragy)(); WORD (*Xform_do)(); GRECT *(*GetFirstRect)(); GRECT *(*GetNextRect)(); void (*Set_Evnt_Mask)(); BOOLEAN (*XGen_Alert)(); BOOLEAN (*CPX_Save)(); BYTE *(*Get_Buffer)(); int (*getcookie)(); int Country_Code; void (*MFsave)(); } XCPB; typedef struct { BOOLEAN (*cpx_call)(); void (*cpx_draw)(); void (*cpx_wmove)(); void (*cpx_timer)(); void (*cpx_key)(); void (*cpx_button)(); void (*cpx_m1)(); void (*cpx_m2)(); BOOLEAN (*cpx_hook)(); void (*cpx_close)(); }CPXINFO; typedef struct { WORD x; WORD y; WORD buttons; WORD kstate; }MRETS; /* Object structure macros, useful in dealing with forms * ================================================================ * `tree' must be an OBJECT * */ #define SPECIAL 0x40 /* user defined object state */ #define ObNext(obj) ( tree[(obj)].ob_next ) #define ObHead(obj) ( tree[(obj)].ob_head ) #define ObTail(obj) ( tree[(obj)].ob_tail ) #define ObFlags(obj) ( tree[(obj)].ob_flags ) #define ObState(obj) ( tree[(obj)].ob_state ) #define ObSpec(obj) ( tree[(obj)].ob_spec ) #define TedText(obj) ( tree[(obj)].ob_spec->te_ptext ) #define TedTemp(obj) ( tree[(obj)].ob_spec->te_ptmplt ) #define TedLen(obj) ( tree[(obj)].ob_spec->te_txtlen ) #define TedTempLen(obj) ( tree[(obj)].ob_spec->te_tmplen ) #define TedJust( obj ) ( tree[(obj)].ob_spec->te_just ) #define TedFont( obj ) ( tree[(obj)].ob_spec->te_font ) #define TedColor( obj ) ( tree[(obj)].ob_spec->te_color ) #define ObString(obj) ( tree[(obj)].ob_spec.free_string ) #define ObX(obj) ( tree[(obj)].ob_x ) #define ObY(obj) ( tree[(obj)].ob_y ) #define ObW(obj) ( tree[(obj)].ob_width ) #define ObH(obj) ( tree[(obj)].ob_height ) #define ObRect(obj) ( *(GRECT *)(&(tree[(obj)].ob_x)) ) #define Set_tree(obj) ( rsrc_gaddr(R_TREE,(obj),&tree) ) #define Set_alert(num,s) ( rsrc_gaddr(R_STRING,(num),&((OBJECT *)(s)) ) #define Set_button(num,s) ( rsrc_gaddr(R_STRING,(num),&((OBJECT *)(s)) ) #define IsSelected(obj) ( ObState(obj) & SELECTED ) #define IsEditable(obj) ( ObFlags(obj) & EDITABLE ) #define IsSpecial(obj) ( ObState(obj) & SPECIAL ) #define ActiveTree( newtree ) ( tree = newtree ) #define IsDisabled(obj) ( ObState(obj) & DISABLED ) #define IsActiveTree( newtree ) ( tree == newtree ) /* macros ok when object is not on screen */ #define HideObj(obj) ( ObFlags(obj) |= HIDETREE ) #define ShowObj(obj) ( ObFlags(obj) &= ~HIDETREE ) #define MakeEditable(obj) ( ObFlags(obj) |= EDITABLE ) #define NoEdit(obj) ( ObFlags(obj) &= ~EDITABLE ) #define Select(obj) ( ObState(obj) |= SELECTED ) #define Deselect(obj) ( ObState(obj) &= ~SELECTED ) #define Disable(obj) ( ObState(obj) |= DISABLED ) #define Enable(obj) ( ObState(obj) &= ~DISABLED ) #define MarkObj(obj) ( ObState(obj) |= SPECIAL ) #define UnmarkObj(obj) ( ObState(obj) &= ~SPECIAL ) #define SetNormal(obj) ( ObState(obj) = NORMAL ) #define MakeDefault(obj) ( ObFlags(obj) |= DEFAULT ) #define NoDefault(obj) ( ObFlags(obj) &= ~DEFAULT ) #define MakeExit( obj ) ( ObFlags(obj) |= EXIT ) #define NoExit( obj ) ( ObFlags(obj) &= ~EXIT ) /* Shorthand macro to pass parameters for objc_draw() */ #define PTRS(r) r->g_x, r->g_y, r->g_w, r->g_h #define ELTS(r) r.g_x, r.g_y, r.g_w, r.g_h #define VERTICAL 0 #define HORIZONTAL 1 #define NULLFUNC ( void(*)())0L #define SAVE_DEFAULTS 0 #define MEM_ERR 1 #define FILE_ERR 2 #define FILE_NOT_FOUND 3 #define MFSAVE 1 #define MFRESTORE 0 /* Additional define from XFORM_DO() */ #define CT_KEY 53