home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / OWLSCR / USERWIN.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-09-26  |  1.8 KB  |  78 lines

  1. /*
  2.     userwin.c        9/24/88
  3.  
  4.     % user paint window object
  5.     for custimized painting by users via the aux func
  6.  
  7.     OWL 1.2
  8.     Copyright (c) 1990, by Oakland Group, Inc.
  9.     ALL RIGHTS RESERVED.
  10.  
  11.     Revision History:
  12.     -----------------
  13. */
  14.  
  15. #include "oakhead.h"
  16. #include "disppriv.h"
  17. #include "winod.h"
  18.  
  19. /* -------------------------------------------------------------------------- */
  20. /* The user window class */
  21.  
  22. typedef struct _userwinod {
  23.     win_od    wd;                  /* window super class */
  24. } userwin_od;
  25.  
  26. #define userwinod_GetSelf(userwd)        (winod_GetSelf(&(userwd)->wd))
  27.  
  28. /* -------------------------------------------------------------------------- */
  29.  
  30. int userwin_Class(VOID *objdata, int msg, VOID *indata, VOID *outdata)
  31. /* 
  32.     userwin object dispatch function
  33. */
  34. {
  35.     userwin_od *userwd;
  36.     win_type    win;
  37.     int            rval;
  38.  
  39.     userwd = (userwin_od *) objdata;
  40.  
  41.     switch(msg) {
  42.  
  43.     case OBJM_GETDATASIZE:
  44.         ((ogds_struct *) outdata)->odsize = sizeof(userwin_od);
  45.         ((ogds_struct *) outdata)->xdsize = sizeof(userwin_xd);
  46.         ((ogds_struct *) outdata)->id = ID_USERWIN;
  47.         break;
  48.  
  49.     case OBJM_OPEN:
  50.         /* Send OPEN to win superclass */
  51.         rval = win_Class(&(userwd->wd), msg, indata, outdata);
  52.  
  53.         /* Override default: allow any pix size for userwin's */
  54.         win = userwinod_GetSelf(userwd);
  55.         win_SetCharSize(win, FALSE);
  56.  
  57.         /* automatically enable user paint */
  58.         win_SetUserPaint(win, TRUE);
  59.  
  60.         return(rval);
  61.  
  62.     case OBJM_WHO:
  63.         /* Identify ourselves */
  64.         if (*((int *) indata) == ID_USERWIN) {
  65.             return(TRUE);
  66.         }
  67.         return(win_Class(&(userwd->wd), msg, indata, outdata));
  68.  
  69.     default:
  70.         /* pass all other messages to win superclass */
  71.         return(win_Class(&(userwd->wd), msg, indata, outdata));
  72.     }
  73.     return(TRUE);
  74. }
  75. /* -------------------------------------------------------------------------- */
  76.  
  77.  
  78.