typedef struct dbox__str {
  struct dbox__str *next;  /* if user wants to link dboxes into a list */
  wimp_w w;                /* only used in live dialog boxes */
  int posatcaret;          /* Every time it is shown, it appears "near" the
                            * caret.
                            */
  int showing;
  wimp_caretstr caretstr;   /* save between fillin's. */
  dbox_handler_proc eventproc;
  void *eventprochandle;
  dbox_raw_handler_proc raweventproc;
  void *raweventprochandle;

  dbox_field field;     /* button last pressed */
  int fieldwaiting;     /* a button waiting to be picked up */
  int eventdepth;       /* for delaying disposal */
  int disposepending;

  char name[12];
  char *workspace;
  int workspacesize;
  wimp_wind window;
  /* any icons follow directly after this. */
} dbox__str;


dbox centre_dbox(dbox cd);
unsigned getbit(unsigned word, int n);
unsigned setbit(unsigned word, int n, unsigned v);
unsigned getbits(unsigned word, int n, int k);
unsigned setbits(unsigned word, int n, int k, unsigned v);
int mess_min(int a, int b);
char *last_2(char *s);
