Annotation of mstools/samples/sdktools/windiff/table.h, revision 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.