Annotation of mstools/samples/sdktools/capview/dispobj.h, revision 1.1

1.1     ! root        1: /*
        !             2: *
        !             3: */
        !             4: 
        !             5: #include "array_x.h"
        !             6: 
        !             7: #define spaceVertical 10
        !             8: #define spaceHorizontal 40
        !             9: 
        !            10: extern  CBrush  CbrushBackground;
        !            11: extern  CBrush  CbrushFrame;
        !            12: extern  LOGFONT DefaultFont;
        !            13: 
        !            14: extern CAaaArray  rgLoc;
        !            15: extern BOOL fXYZ;
        !            16: extern BOOL fTotal;
        !            17: 
        !            18: enum {
        !            19:     SET_COLORS=1,
        !            20:     SET_PERCENT=2,
        !            21:     SET_STRING=4,
        !            22:     SET_SIZE=8,
        !            23:     SET_LOCATION=16,
        !            24:     SET_LOCATIONPREP=32
        !            25: };
        !            26: 
        !            27: class DISPOBJ
        !            28: {
        !            29:     DISPOBJ *  pParent;
        !            30:     BOOL       fOpen;
        !            31:     DISPOBJ *  pChild;
        !            32:     DISPOBJ *  pSib;
        !            33:     CRect       rtChildren;
        !            34: 
        !            35:   public:
        !            36:     BOOL       fPrune;
        !            37:     POINT      ptRight;
        !            38:     POINT      ptLeft;
        !            39:     CRect      rtArea;
        !            40:     DISPOBJ *   pRoot;
        !            41:     int                iLevel;
        !            42:     CRect       rtTotal;
        !            43:     
        !            44:     DISPOBJ * Parent() { return pParent; }
        !            45:     DISPOBJ * Child() { return pChild; }
        !            46:     DISPOBJ * Sib() { return pSib; }
        !            47:     BOOL        IsOpen() { return fOpen; }
        !            48:     
        !            49:     DISPOBJ()
        !            50:     {
        !            51:        pParent = pChild = pSib = NULL;
        !            52:        fPrune = fOpen = FALSE;
        !            53:        iLevel = 0;
        !            54:        pRoot = this;
        !            55:     }
        !            56:     
        !            57:     void AddSibling(DISPOBJ * pNew) {
        !            58:        pNew->pParent = pParent;
        !            59:        pNew->iLevel = iLevel;
        !            60:        pNew->pRoot = pRoot;
        !            61:        
        !            62:        if (pSib == NULL) {
        !            63:            pSib = pNew;
        !            64:            return;
        !            65:        }
        !            66:        
        !            67:        DISPOBJ * p = pSib;
        !            68:        while (p->pSib != NULL) {
        !            69:            p = p->pSib;
        !            70:        }
        !            71:        
        !            72:        p->pSib = pNew;
        !            73:        
        !            74:        return;
        !            75:     }
        !            76:     
        !            77:     void AddChild(DISPOBJ * pNew)
        !            78:     {
        !            79:        pNew->pParent = this;
        !            80:        pNew->iLevel = iLevel + 1;
        !            81:        pNew->pRoot = pRoot;
        !            82:        
        !            83:        if (pChild == NULL) {
        !            84:            pChild = pNew;
        !            85:            return;
        !            86:        }
        !            87:        
        !            88:        pChild->AddSibling(pNew);
        !            89:        return;
        !            90:     }
        !            91:     
        !            92:     virtual void DoForeground(CDC * cdc, BOOL fZoom, RANGESTRUCT * prs) = 0;
        !            93:     
        !            94:     void PaintTree(CDC * cdc, BOOL fZoom, RANGESTRUCT * prs, RECT rt);
        !            95:     void DoBackground( CDC * cdc, CBrush * pBrushBack = &CbrushBackground,
        !            96:                       CBrush * pBrushFrame = &CbrushFrame) {
        !            97:        cdc->FillRect( &rtArea, pBrushBack );
        !            98:        cdc->FrameRect( &rtArea, pBrushFrame );
        !            99: 
        !           100:         return;
        !           101:     }
        !           102:     
        !           103:     
        !           104:     void Close()
        !           105:     {
        !           106:        DISPOBJ * p;
        !           107:        fOpen = FALSE;
        !           108:        
        !           109:        if (pChild && (pChild->fOpen)) {
        !           110:            p = pChild;
        !           111:            while (p != NULL) {
        !           112:                p->Close();
        !           113:                p = p->pSib;
        !           114:            }
        !           115:        }
        !           116:        return;
        !           117:     }
        !           118:     
        !           119:     void ExpandAll()
        !           120:     {
        !           121:        if (pSib) {
        !           122:            pSib->ExpandAll();
        !           123:        }
        !           124: 
        !           125:        if (pChild) {
        !           126:            pChild->ExpandAll();
        !           127:        }
        !           128:        
        !           129:        Open();
        !           130:     }
        !           131:     
        !           132:     void Open() {
        !           133:        
        !           134:        if (fOpen || (pChild == NULL)) {
        !           135:            return;
        !           136:        }
        !           137:        
        !           138:        fOpen = TRUE;
        !           139:     }
        !           140:     
        !           141:     virtual int Height(BOOL fZoom) = 0;
        !           142:     virtual int Width(BOOL fZoom) = 0;
        !           143:     
        !           144:   private:
        !           145:     void  SetPropOnOne(int flags, RANGESTRUCT * prs, CDC * pcdc, BOOL fZoom, TIMETYPE t);
        !           146:     
        !           147: public:
        !           148: 
        !           149:     void SetProperties(int flags, RANGESTRUCT * prs = 0, CDC * pcdc = 0, BOOL fZoom = FALSE, TIMETYPE progTime = 0);
        !           150:     virtual void DoSetPercents(TIMETYPE t) = 0;
        !           151:     virtual void DoSetColors(RANGESTRUCT * prs) = 0;
        !           152:     virtual void DoSetString(void) = 0;
        !           153:     virtual void DoAssignSize(CDC * pcdc) = 0;
        !           154:     void DoSetLocation(BOOL fZoom, BOOL fPrep);
        !           155:            
        !           156:      
        !           157:      BOOL DblClick( CPoint pt )
        !           158:      {
        !           159:         if (rtArea.PtInRect( pt )) {
        !           160:             if (fOpen) {
        !           161:                 Close();
        !           162:             } else {
        !           163:                 Open();
        !           164:             }
        !           165:             return TRUE;
        !           166:         }
        !           167:         
        !           168:         if (fOpen && pChild && pChild->DblClick( pt ) ) {
        !           169:             return TRUE;
        !           170:         }
        !           171:         
        !           172:         if (pSib && pSib->DblClick( pt ) ) {
        !           173:             return TRUE;
        !           174:         }
        !           175:         
        !           176:         return FALSE;
        !           177:      }
        !           178: };
        !           179:   

unix.superglobalmegacorp.com

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