Annotation of mstools/samples/sdktools/windiff/table.h, revision 1.1.1.1

1.1       root        1: 
                      2: /******************************************************************************\
                      3: *       This is a part of the Microsoft Source Code Samples. 
                      4: *       Copyright (C) 1993 Microsoft Corporation.
                      5: *       All rights reserved. 
                      6: *       This source code is only intended as a supplement to 
                      7: *       Microsoft Development Tools and/or WinHelp documentation.
                      8: *       See these sources for detailed information regarding the 
                      9: *       Microsoft samples programs.
                     10: \******************************************************************************/
                     11: 
                     12: /*
                     13:  * TABLE.H
                     14:  *
                     15:  * public interface definition for table window class.
                     16:  *
                     17:  * include after gutils.h and commdlg.h
                     18:  */
                     19: 
                     20: /* -------class and message names --------------------------------------*/
                     21: 
                     22: /* create a window of this class */
                     23: #define  TableClassName "GTableClass"
                     24: 
                     25: 
                     26: /* all messages to the owner window are sent with this message.
                     27:  * call RegisterWindowsMessage with this string for the message UINT.
                     28:  */
                     29: #define TableMessage  "GTableQuery"
                     30: 
                     31: /* -------- messages to and from table class  --------------------------*/
                     32: 
                     33: /* messages to owner window are:
                     34:  *      message:        TableMessage
                     35:  *      wParam:         command code (below)
                     36:  * lParam:              struct pointer according to code
                     37:  * below is list of wParam codes & associated lParam struct
                     38:  */
                     39: #define TQ_GETSIZE      1       /* lParam: lpTableHdr */
                     40: #define TQ_GETCOLPROPS  2       /* lParam: lpColPropList */
                     41: #define TQ_GETDATA      3       /* lParam: lpCellDataList */
                     42: #define TQ_PUTDATA      4       /* lParam: lpCellDataList */
                     43: #define TQ_SELECT       5       /* lParam: lpTableSelection */
                     44: #define TQ_ENTER        6       /* lParam: lpTableSelection */
                     45: #define TQ_CLOSE        7       /* lParam: the data id to be closed */
                     46: 
                     47: /* optional */
                     48: #define TQ_SCROLL       8       /* lParam: the new top row nr */
                     49: 
                     50: 
                     51: /* messages to Table class */
                     52: 
                     53: /* data, or nrows has changed  wParam/lParam null*/
                     54: #define TM_REFRESH      (WM_USER)
                     55: 
                     56: /* nr cols/props/layout has changed  - wparam/lparam null */
                     57: #define TM_NEWLAYOUT    (WM_USER+1)
                     58: 
                     59: /* Close old id, and display new - wParam null, lParam has new id */
                     60: #define TM_NEWID        (WM_USER+2)
                     61: 
                     62: /* Select and show this area - wParam null, lParam is lpTableSelection */
                     63: #define TM_SELECT       (WM_USER+3)
                     64: 
                     65: /* Print current table - wParam null, lParam either null
                     66:  * or lpPrintContext.
                     67:  */
                     68: #define TM_PRINT        (WM_USER+4)
                     69: 
                     70: /* Return the top row in the window. If wParam is TRUE, then set
                     71:  * lParam to be the new toprow. top row is the number of rows scrolled down
                     72:  * from the top. Thus the first visible non-fixed row is toprow+fixedrows
                     73:  */
                     74: #define TM_TOPROW       (WM_USER+5)
                     75: 
                     76: 
                     77: /* Return the end row visible. This is the 0-based rownr of the last
                     78:  * visible row in the window
                     79:  */
                     80: #define TM_ENDROW       (WM_USER+6)
                     81: 
                     82: /* New rows have been added to the end of the table, but no other
                     83:  * rows or cols or properties have been changed.
                     84:  * wParam contains the new total nr of rows. lParam contains the id
                     85:  * in case this has changed.
                     86:  */
                     87: #define TM_APPEND       (WM_USER+7)
                     88: 
                     89: /*-----display properties -------------------------------------------------*/
                     90: 
                     91: /*
                     92:  * Display properties struct. can be set for whole table, for
                     93:  * each column, or for each cell. When looking for
                     94:  * a property, we search cell->column->table
                     95:  */
                     96: typedef struct {
                     97:         UINT valid;             /* flags (below) for what props we set */
                     98: 
                     99: /* remaining fields only valid when corresponding flag set in valid */
                    100: 
                    101:         DWORD forecolour;       /* RGB colour value */
                    102:         DWORD backcolour;       /* ditto */
                    103:         /* font to use - also set through WM_SETFONT. owner application
                    104:          * is responsible for DeleteObject call when no longer used
                    105:          */
                    106:         HFONT hFont;            /* handle to font  - caller should delete*/
                    107:         UINT alignment;         /* flags below */
                    108:         UINT box;               /* whether cell boxed (see below) */
                    109: 
                    110:         /* width/height settings not valid at cell level - only table or col.*/
                    111:         int width;              /* pixel width of this cell/column */
                    112:         int height;             /* pixel cell height */
                    113: } Props, FAR * lpProps;
                    114: 
                    115: /* Valid flags for fields that are changed in this Props struct */
                    116: #define P_FCOLOUR       1
                    117: #define P_BCOLOUR       2
                    118: #define P_FONT          4
                    119: #define P_ALIGN         8
                    120: #define P_BOX           0x20
                    121: #define P_WIDTH         0x40
                    122: #define P_HEIGHT        0x80
                    123: 
                    124: /* Box settings  or-ed together */
                    125: #define P_BOXTOP        1
                    126: #define P_BOXBOTTOM     2
                    127: #define P_BOXLEFT       4
                    128: #define P_BOXRIGHT      8
                    129: #define P_BOXALL        0xF
                    130: 
                    131: /* Alignment settings (expand later to include various tab-align settings */
                    132: #define P_LEFT          0
                    133: #define P_RIGHT         1
                    134: #define P_CENTRE        2
                    135: 
                    136: /* This struct is the master information about a table. It is
                    137:  * passed to the owner window with the id field filled in; fill in
                    138:  * all remaining fields and return.
                    139:  */
                    140: typedef struct {
                    141:         DWORD id;               /* owner's data id */
                    142: 
                    143:         long nrows;             /* how many rows ? TM_REFRESH to change */
                    144:         int ncols;              /* how many columns ? TM_NEWLAYOUT to chg */
                    145: 
                    146:         int fixedrows;          /* for headers - usually 0 or 1 */
                    147:         int fixedcols;          /* for hdrs - 0 or 1 normally */
                    148:         BOOL fixedselectable;   /* is fixed area selectable ? */
                    149:         BOOL hseparator;        /* is there a horz. line after fixed rows */
                    150:         BOOL vseparator;        /* is there a vert. line after fixed rows */
                    151: 
                    152:         UINT selectmode;        /* multiple/single selection - flags below*/
                    153:         BOOL sendscroll;        /* TRUE if TQ_SCROLL to be sent on scrolling*/
                    154: 
                    155:         Props props;
                    156: } TableHdr, FAR * lpTableHdr;
                    157: 
                    158: /*
                    159:  * selection mode;
                    160:  *
                    161:  * choose TM_CELL or TM_ROW, and TM_SINGLE or TM_MANY, and
                    162:  * TM_SOLID or TM_FOCUS and or them together.
                    163:  *
                    164:  * current implementation does not support TM_MANY !!
                    165:  */
                    166: #define TM_ROW          1       /* selectable items are rows */
                    167: #define TM_CELL         0       /* selectable items are cells */
                    168: 
                    169: #define TM_MANY         2       /* multiple selects possible */
                    170: #define TM_SINGLE       0       /* single item selectable at once only */
                    171: 
                    172: #define TM_SOLID        0       /* (default) use a solid black for selection*/
                    173: #define TM_FOCUS        4       /* use a dotted focus rect for selection */
                    174: 
                    175: 
                    176: /* --------- column header structs --------------------------------------*/
                    177: 
                    178: /*
                    179:  * This struct is sent to request column width and properties -
                    180:  * owner window must fill nchars and props.valid, at minimum.
                    181:  */
                    182: typedef struct {
                    183:         int nchars;     /* expected text width in chars */
                    184:         Props props;
                    185: } ColProps, FAR * lpColProps;
                    186: 
                    187: 
                    188: /* This is a set of column requests - owner should fill each one*/
                    189: typedef struct {
                    190:         DWORD id;               /* caller's id for data */
                    191:         int startcol;           /* zero-based column nr of first request */
                    192:         int ncols;              /* nr of columns in this set */
                    193:         lpColProps plist;       /* ptr to _array_ of ColProps */
                    194: } ColPropsList, FAR * lpColPropsList;
                    195: 
                    196: 
                    197: /* --- cell data structs ---------------------------------------------*/
                    198: 
                    199: /* This is the per-cell data struct.
                    200:  * When providing data (responding to TQ_GETDATA), fill out ptext[] and
                    201:  * props as appropriate. ptext will be pre-allocated with nchars bytes of
                    202:  * space. This may be larger than ColProps->nchars if the user has
                    203:  * stretched this column's width on screen
                    204:  *
                    205:  * Don't re-alloc ptext, or change flags.
                    206:  */
                    207: typedef struct {
                    208:         int nchars;             /* space in buffer */
                    209:         LPSTR ptext;            /* ptr to nchars of text space */
                    210:         Props props;            /* per-cell props */
                    211:         DWORD flags;            /* private table class flags */
                    212: } CellData, FAR * lpCellData;
                    213: 
                    214: /* List of cell data structures - please fill out all of these*/
                    215: typedef struct {
                    216:         DWORD id;               /* caller's id for data */
                    217:         long row;               /* zero-based row nr to fetch */
                    218:         int startcell;          /* zero-based cell nr on this row */
                    219:         int ncells;             /* count of cells to fetch */
                    220:         lpCellData plist;       /* ptr to array CellData[ncells] */
                    221: } CellDataList, FAR * lpCellDataList;
                    222: 
                    223: 
                    224: /*----- current selection----------------------------------------------*/
                    225: 
                    226: /* Describes the current selection - a rectangular selection area */
                    227: typedef struct {
                    228:         DWORD id;               /* caller's id for data */
                    229:         long startrow;          /* zero-based row nr of start of sel. */
                    230:         long startcell;         /* zero-based col nr of  start of sel */
                    231:         long nrows;             /* vertical depth of selection */
                    232:         long ncells;            /* horz width of selection */
                    233: } TableSelection, FAR * lpTableSelection;
                    234: 
                    235: 
                    236: 
                    237: /*----- print context -----------------------------------------------*/
                    238: 
                    239: /* Describes the margin settings for the print job - these are in CMs*/
                    240: typedef struct {
                    241:         int left;               /* edge of paper to start of print area */
                    242:         int right;              /* edge of paper to start of print area */
                    243:         int top;                /* edge of paper to start of hdr */
                    244:         int bottom;             /* end of hdr to end of paper */
                    245:         int topinner;           /* start of hdr to start of data */
                    246:         int bottominner;        /* end of data to start of hdr */
                    247: } Margin, FAR * lpMargin;
                    248: 
                    249: /* Position and clipping info - only used by table class
                    250:  */
                    251: typedef struct {
                    252:         int start;              /* co-ord of cell start (left or top) */
                    253:         int clipstart;          /* start of clipping (vis area) */
                    254:         int clipend;            /* end of clipping (vis area) */
                    255:         int size;               /* pixel size of cell (width or height) */
                    256: } CellPos, FAR * lpCellPos;
                    257: 
                    258: 
                    259: /* One of these for each header lines (top and bottom) */
                    260: typedef struct {
                    261:         CellPos xpos, ypos;     /* private: for table-class use only */
                    262:         Props props;
                    263:         LPSTR ptext;
                    264: } Title, FAR * lpTitle;
                    265: 
                    266: /* Print context data structure - any or all 4 pointers may be null */
                    267: typedef struct {
                    268:         DWORD id;               /* id of table to print */
                    269:         lpTitle head;
                    270:         lpTitle foot;
                    271:         lpMargin margin;
                    272:         PRINTDLG FAR * pd;
                    273: } PrintContext, FAR * lpPrintContext;
                    274: 
                    275: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.