home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / docview.pak / ODLISTBX.H < prev    next >
C/C++ Source or Header  |  1997-07-23  |  7KB  |  201 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows - (C) Copyright 1992, 1993 by Borland International
  3. //   Defines class TODListBox
  4. //----------------------------------------------------------------------------
  5.  
  6. #ifndef __OWL_ODLISTBX_H
  7. #define __OWL_ODLISTBX_H
  8.  
  9. #ifndef __OWL_CONTROL_H
  10.   #include <owl\control.h>
  11. #endif
  12.  
  13. class TODListBox : public TControl {
  14.   public:
  15.  
  16.     struct ODItemInfo { // temporary information about current item
  17.                    // the following are supplied to the GetItemInfo function:
  18.       HDC    Hdc;       // display context for listbox
  19.       int    Index;     // index of current item, set by Draw/MeasureItem
  20.       void far* Data;   // user item data value,  set by Draw/MeasureItem
  21.       UINT   State;     // ODS_xxxx flags for new state, set by Draw/MeasureItem
  22.       TRect  Bound;     // actual drawing area bounds
  23.                    // the following are to be set by the GetItemInfo function:
  24.       TSize  Extent;    // cell size to display entire data
  25.       TPoint Offset;    // offset in rect of drawn data
  26.       char far* Text;   // pointer to text data to draw
  27.       int    TextLen;   // length of text data
  28.     };     
  29.  
  30.     TODListBox(int id);
  31.    ~TODListBox();
  32.  
  33.     //
  34.     // list box wrappers
  35.     //
  36.     virtual void  ClearList();
  37.     virtual int   GetCount() const;
  38.             int   GetTopIndex() const;
  39.             int   SetTopIndex(int index);
  40.             int   GetHorizontalExtent() const;
  41.             void  SetHorizontalExtent(int horzExtent);
  42.     virtual int   GetStringLen(int index) const;
  43.     virtual int   GetString(char far* str, int index) const;
  44.     virtual DWORD GetItemData(int index) const;
  45.     virtual int   SetItemData(int index, DWORD itemData);
  46.             int   GetItemRect(int index, TRect& rect) const;
  47.     virtual int   GetItemHeight(int index) const;
  48.     virtual int   SetItemHeight(int index, int height);
  49.     virtual int   AddString(const char far* str);
  50.     virtual int   InsertString(const char far* str, int index);
  51.     virtual int   DeleteString(int index);
  52.     virtual int   GetSelIndex() const;
  53.     virtual int   SetSelIndex(int index);
  54.  
  55.     //
  56.     // Override TWindow virtual member functions
  57.     //
  58.     char far     *GetClassName();
  59.  
  60.     virtual void ItemRedraw(int index);   // force item to be redrawn
  61.   protected:
  62.     int       MaxWidth; // maximum horizontal extent
  63.     char far* BufTemp;  // temporary buffer for returning strings
  64.     int       BufLen;      // allocated length of temporary buffer
  65.    
  66.     // calls eminating from TControl for WM_DRAWITEM and WM_MEASUREITEM
  67.     virtual void  DrawItem (DRAWITEMSTRUCT far &);
  68.     virtual void  MeasureItem (MEASUREITEMSTRUCT far &);
  69.  
  70.     // calls from TODListBox::DrawItem() which must be overridden if not text
  71.     virtual BOOL GetItemInfo  (ODItemInfo& item); // fill Offset, Text, TextLen
  72.     virtual void ChangeHilight(ODItemInfo& item);
  73.     virtual void ChangeFocus  (ODItemInfo& item);
  74.     virtual void DrawItemData (ODItemInfo& item);
  75.   private:
  76.     //
  77.     // hidden to prevent accidental copying or assignment
  78.     //
  79.     TODListBox(const TODListBox&);
  80.     TODListBox& operator=(const TODListBox&);
  81.  
  82.   DECLARE_STREAMABLE(, TODListBox, 1);
  83. };
  84.  
  85. //----------------------------------------------------------------------------
  86. // Inlines
  87. //----------------------------------------------------------------------------
  88.  
  89. inline TODListBox::~TODListBox() {
  90.   if (BufTemp) delete BufTemp;
  91. }
  92.  
  93. inline int TODListBox::GetTopIndex() const {
  94.   return (int)CONST_CAST(TODListBox*,this)->HandleMessage(LB_GETTOPINDEX);
  95. }
  96.  
  97. inline int TODListBox::SetTopIndex(int index) {
  98.   return (int)HandleMessage(LB_SETTOPINDEX, index);
  99. }
  100.  
  101. inline int TODListBox::GetHorizontalExtent() const {
  102.   return (int)CONST_CAST(TODListBox*,this)->HandleMessage(LB_GETHORIZONTALEXTENT);
  103. }
  104.  
  105. inline void TODListBox::SetHorizontalExtent(int horzExtent) {
  106.   HandleMessage(LB_SETHORIZONTALEXTENT, horzExtent);
  107. }
  108.  
  109. inline DWORD TODListBox::GetItemData(int index) const {
  110.   return CONST_CAST(TODListBox*,this)->HandleMessage(LB_GETITEMDATA, index);
  111. }
  112.  
  113. inline int TODListBox::SetItemData(int index, DWORD itemData) {
  114.   return (int)HandleMessage(LB_SETITEMDATA, index, itemData);
  115. }
  116.  
  117. inline int TODListBox::GetItemRect(int index, TRect& rect) const {
  118.   return (int)CONST_CAST(TODListBox*,this)->
  119.            HandleMessage(LB_GETITEMRECT, index, (LPARAM)(TRect FAR*)&rect);
  120. }
  121.  
  122. inline int TODListBox::GetItemHeight(int index) const {
  123.   return (int)CONST_CAST(TODListBox*,this)->
  124.            HandleMessage(LB_GETITEMHEIGHT, index);
  125. }
  126.  
  127. inline int TODListBox::SetItemHeight(int index, int height) {
  128.   return (int)HandleMessage(LB_SETITEMHEIGHT, index, MAKELPARAM(height, 0));
  129. }
  130.  
  131. // Adds a string to an associated listbox
  132. // Returns index of the string in the list(the first entry is at index 0),
  133. // a negative if an error occurs.
  134. //
  135. inline int TODListBox::AddString(const char far* str) {
  136.   return (int)HandleMessage(LB_ADDSTRING, 0, (LPARAM)str);
  137. }
  138.  
  139. // Inserts a string in the associated listbox at the passed index,
  140. // returns the index of the string in the list, a negative if an error occurs
  141. //
  142. inline int TODListBox::InsertString(const char far* str, int index) {
  143.   return (int)HandleMessage(LB_INSERTSTRING, index, (LPARAM)str);
  144. }
  145.  
  146. // Deletes the string at the passed index in the associated listbox
  147. // Returns a count of the entries remaining in the list, a negative
  148. // value if an error occurs
  149. //
  150. inline int TODListBox::DeleteString(int index) {
  151.   return (int)HandleMessage(LB_DELETESTRING, index);
  152. }
  153.  
  154. // Clears all the entries in the associated listbox
  155. //
  156. inline void TODListBox::ClearList() {
  157.   HandleMessage(LB_RESETCONTENT);
  158. }
  159.  
  160. // Returns the number of entries in the associated listbox, a negative
  161. // value if an error occurs
  162. //
  163. inline int TODListBox::GetCount() const {
  164.   return (int)CONST_CAST(TODListBox*,this)->HandleMessage(LB_GETCOUNT);
  165. }
  166.  
  167. // Retrieves the contents of the string at the passed index of the
  168. // associated listbox. Returns the length of the string (in bytes
  169. // excluding the terminating 0),  a negative if the passed index is not valid
  170. //
  171. // The buffer must be large enough for the string and the terminating 0
  172. //
  173. inline int TODListBox::GetString(char far* str, int index) const {
  174.   return (int)CONST_CAST(TODListBox*,this)->
  175.            HandleMessage(LB_GETTEXT, index, (LPARAM)str);
  176. }
  177.  
  178. // Returns the length of the string at the passed index in the associated
  179. // listbox excluding the terminating 0, a negative if an error occurs
  180. //
  181. inline int TODListBox::GetStringLen(int index) const {
  182.   return (int)CONST_CAST(TODListBox*,this)->HandleMessage(LB_GETTEXTLEN, index);
  183. }
  184.  
  185. inline int TODListBox::GetSelIndex() const {
  186.   return (int)CONST_CAST(TODListBox*,this)->HandleMessage(LB_GETCURSEL);
  187. }
  188.  
  189. // selects the string at passed index in the associated listbox and
  190. // forces the string into view
  191. //
  192. // clears selection when -1 is passed as the index. a negative value is
  193. // returned if an error occurs
  194. //
  195. inline int TODListBox::SetSelIndex(int index) {
  196.   return (int)HandleMessage(LB_SETCURSEL, index);
  197. }
  198.  
  199. #endif  // __OWL_ODLISTBX_H
  200.  
  201.