typedef struct tagREBARBAND
{
    UINT        fStyle;
    COLORREF    clrFore;
    COLORREF    clrBack;
    LPTSTR      lpText;
    UINT        cxText;         // width of header text
    int         iImage;
    HWND        hwndChild;
    UINT        cxMinChild;     // min width for hwndChild
    UINT        cyMinChild;     // min height for hwndChild
    UINT        cxBmp;
    UINT        cyBmp;
    HBITMAP     hbmBack;
    int         x;              // left edge of band, relative to rebar
    int         y;              // top edge of band, relative to rebar
    int         cx;             // total width of band
    int         cy;             // height of band
    int         cxRequest;      // 'requested' width for band; either requested by host or 
                                // used as temp var during size recalculation
    int         cxMin;          // min width for band
    int         cxIdeal;        // hwndChild's desired width
    UINT        wID;
    UINT        cyMaxChild;     // hwndChild's max height
    UINT        cyIntegral;     // ??
    UINT        cyChild;        // this differs from cyMinChild only in RBBS_VARIABLEHEIGHT mode
    LPARAM      lParam;

    BITBOOL     fChevron:1;     // band is showing chevron button
    RECT        rcChevron;      // chevron button rect
    UINT        wChevState;     // chevron button state (DFCS_PUSHED, etc.)
} RBB, NEAR *PRBB;

typedef struct tagREBAR
{
    CONTROLINFO ci;
    HPALETTE    hpal;
    BITBOOL     fResizeRecursed:1;
    BITBOOL     fResizePending:1;
    BITBOOL     fResizeNotify:1;
    BITBOOL     fRedraw:1;
    BITBOOL     fRecalcPending:1;
    BITBOOL     fRecalc:1;
    BITBOOL     fParentDrag:1;
    BITBOOL     fRefreshPending:1;
    BITBOOL     fResizing:1;
    BITBOOL     fUserPalette:1;
    BITBOOL     fFontCreated:1;
    BITBOOL     fFullOnDrag:1;
    HDRAGPROXY  hDragProxy;
    HWND        hwndToolTips;
    UINT        cBands;
    int         xBmpOrg;
    int         yBmpOrg;
    HIMAGELIST  himl;
    UINT        cxImage;
    UINT        cyImage;
    HFONT       hFont;
    UINT        cyFont;
    UINT        cy;
    int         iCapture;
    POINT       ptCapture;
    int         xStart;
    PRBB        rbbList;
    COLORREF    clrBk;
    COLORREF    clrText;
    UINT        uResizeNext;    // this marks the next band to resize vertically if needed and allowed (VARIABLEHEIGHT set)
    DWORD       dwStyleEx;
    COLORSCHEME clrsc;
    POINT       ptLastDragPos;
    PRBB        prbbHot;        // band w/ hot chevron
} RB, NEAR *PRB;

void NEAR PASCAL RBPaint(PRB prb, HDC hdc);
void NEAR PASCAL RBDrawBand(PRB prb, PRBB prbb, HDC hdc);
void NEAR PASCAL RBResize(PRB prb, BOOL fForceHeightChange);
BOOL NEAR PASCAL RBSetFont(PRB prb, WPARAM wParam);

BOOL NEAR PASCAL RBGetBandInfo(PRB prb, UINT uBand, LPREBARBANDINFO lprbbi);
BOOL NEAR PASCAL RBSetBandInfo(PRB prb, UINT uBand, LPREBARBANDINFO lprbbi, BOOL fAllowRecalc);
BOOL NEAR PASCAL RBInsertBand(PRB prb, UINT uBand, LPREBARBANDINFO lprbbi);
BOOL NEAR PASCAL RBDeleteBand(PRB prb, UINT uBand);