home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / NOTEBOOK.PAK / NOTEBOOK.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  5.6 KB  |  131 lines

  1. //----------------------------------------------------------------------------
  2. //    notebook.h - defines TNotebook class
  3. //----------------------------------------------------------------------------
  4. //    copyright (c) 1993 Borland International
  5. //----------------------------------------------------------------------------
  6. #ifndef NOTEBOOKINC
  7.  
  8. #define NOTEBOOKINC
  9. #include "hscroll.h"
  10. #include "vscroll.h"
  11.  
  12. #define MAXTABNAMELEN   30
  13. #define MAXTABSSHOWN    99
  14.  
  15. #define NB_TABCHANGED   20099
  16.  
  17. #define ID_TABSB        3001
  18. #define ID_WINHSB       0
  19. #define ID_WINVSB       0
  20.  
  21. #define NBC_PAINTALL    0
  22. #define NBC_PAINTTABS   1
  23.  
  24. #define TABSAFETY       8               // pixels after last tab
  25.  
  26. // values for tabloc
  27. #define LOC_TOP         0
  28. #define LOC_RIGHT       1
  29. #define LOC_BOTTOM      2
  30. #define LOC_LEFT        3
  31. //----------------------------------------------------------------------------
  32. class TNotebook : public virtual TWindow
  33. {
  34.   public:
  35.     //--- redefined functions ---
  36.     TNotebook(int TabLoc = 0);
  37.     ~TNotebook();
  38.     void SetTabCnt(int tabcnt, int firsttab = 0, int activetab = 0);
  39.  
  40.     int GetScrollPos(int bar);
  41.     void GetScrollRange(int bar, int &low, int &high);
  42.     int SetScrollPos(int bar, int pos, BOOL redraw = TRUE);
  43.     void SetScrollRange(int  bar, int  minPos, int  maxPos, BOOL redraw = TRUE);
  44.  
  45.   protected:
  46.     TRect nbcrect;              // current rect for notebook control area
  47.     TRect vsbrect;              // rect for vertical scroll bar
  48.     TRect hsbrect;              // rect for horizontal scroll bar
  49.     TRect tsbrect;              // rect for tabs scroll bar
  50.     TRect tabsrect;             // rect for set of tabs
  51.     TRect clientrect;           // size of client area after our controls
  52.     TRect clientprev;           // to detect window size changes
  53.     TSize Frame;                // actual window frame sizes
  54.     POINT tabpoints[MAXTABSSHOWN] [5];
  55.     int tabcnt;                 // # of tabs to move thru
  56.     int firsttab;               // # of first tab displayed (0-rel)
  57.     int activetab;              // # of active tab (0-rel)
  58.     int nbcheight;              // height of notebook control area
  59.     int textextra;
  60.     int fillmode;               // polygon fill mode used
  61.     int rgncnt;                 // number of tabs showing & regions allocated
  62.     int toffs[MAXTABSSHOWN];    // toffset (x or y) of each tab drawing
  63.     int defer_ncpaint;          // if nonzero, don't paint nonclient area
  64.     int tabloc;                 // position of tabs on client rectangle
  65.     BOOL tabhorz;               // TRUE if tabloc is LOC_TOP or LOC_BOTTOM
  66.     BOOL wanthscroll;           // TRUE if WS_HSCROLL specified in style bits
  67.     BOOL wantvscroll;           // TRUE if WS_VSCROLL specified in style bits
  68.     BOOL hscrollon;             // TRUE if horz scrollbar being shown now
  69.     BOOL vscrollon;             // TRUE if vert scrollbar being shown now
  70.     BOOL erasetabs;             // TRUE if tabs should be erased as drawn
  71.     TPen *framepen;             // for drawing gray stuff over and over
  72.     TPen *shadowpen;            // for drawing gray stuff over and over
  73.     TFont *tabfont;             // font for tabs
  74.     TBrush *bgbrush;            // white/ltgray dither pattern brush
  75.     TBrush *framebrush;
  76.     TBrush *hilitebrush;
  77.     TBrush *shadowbrush;
  78.     TBrush *facebrush;
  79.     TBrush *trackbrush;
  80.     TBrush *tabbrush;           // bg color of current tab
  81.     TBrush *default_tabbrush;   // bg color of most tabs
  82.     THScroll *tabhscroll;       // horizontal scrollbar for tabs
  83.     TVScroll *tabvscroll;       // vertical scrollbar for tabs
  84.     THScroll *winhscroll;       // horizontal scrollbar for window
  85.     TVScroll *winvscroll;       // vertical scrollbar for window
  86.     //------------------------------------------
  87.     bool EvNCCreate(CREATESTRUCT far& createStruct);
  88.     void EvSize(UINT sizeType, TSize& newsize);
  89.     void EvGetMinMaxInfo(MINMAXINFO far& minmaxinfo);
  90.     uint EvNCCalcSize(bool calcValidRects, NCCALCSIZE_PARAMS far& calcSize);
  91.     UINT EvNCHitTest(TPoint& screenPt);
  92. #if defined(BI_PLAT_WIN32)
  93.     void EvNCPaint(HRGN);
  94. #else
  95.     void EvNCPaint();
  96. #endif
  97.     void EvNCLButtonDown(UINT hitTest, TPoint& screenPt);
  98.     void EvNCLButtonDblClk(UINT hitTest, TPoint& screenPt);
  99.     void EvMouseMove(UINT hitTest, TPoint& clientpt);
  100.     void EvLButtonUp(UINT hitTest, TPoint& clientpt);
  101.     void EvSysColorChange();
  102.     //------------------------------------------
  103.     void virtual GetTabName(int tabnum, char *tabname);
  104.     void virtual ActivateTab(int tabnum);
  105.     //------------------------------------------
  106.     void BuildPaintObjects();
  107.     void DeletePaintObjects();
  108.     void ComputeSizes();
  109.     void CalcTabRects();
  110.     void ForceResize(BOOL repaint);
  111.     void CreateScrollBars();
  112.     BOOL MyLButtonDown(UINT hitTest, TPoint& screenPt);
  113.     LRESULT NWHscroll(WPARAM wparam, LPARAM lparam);
  114.     void ScrollTabs(int delta);
  115.     void PaintNBC(int paintcontrol);
  116.     void DrawShadeFrame(TDC &mydc, TRect &myrect);
  117.     void DrawDownFrame(TDC &mydc, TRect &myrect);
  118.     void DrawTabs(TDC &mydc);
  119.     int DrawHorzTab(TDC &mydc, int tabnum, int rgnnum, int xoff);
  120.     int DrawVertTab(TDC &mydc, int tabnum, int rgnnum, int xoff);
  121.     void EraseLastHorz(TDC &mydc, int toff);
  122.     void EraseLastVert(TDC &mydc, int toff);
  123.     void DrawBackground(TDC &mydc, TRect &myrect, int paintcontrol);
  124.     void DrawTabLines(TDC &mydc, TRect &myrect, BOOL shadowline);
  125.     void BuildBgBrush();
  126.     //------------------------------------------
  127.     DECLARE_RESPONSE_TABLE(TNotebook);
  128. };
  129. //----------------------------------------------------------------------------
  130. #endif
  131.