### IBaseListBox

  The IBaseListBox class creates and manages list box control windows. List boxes always have vertical scroll bars. Optionally, they can have horizontal scroll bars. IBaseListBox contains general list box function except for population capability, such as adding, removing, or replacing list box items. The derived classes IListBox and ICollectionViewListBox supply these functions. IListBox contains the add, remove, and replace functions, while ICollectionViewListBox populates a list box from collection elements via the setItems member function. Typically, you use one of these classes derived from IBaseListBox.

  You can enable a list box for the following types of item selection techniques:

  single selection
    The user can select only one item at a time.
  multiple selection
    The user can select any number of items or not select any.
  extended selection
    The user can extend selection to more than one item.
  These three techniques are mutually exclusive in one list box.

  A list box operates as if it is a 0-based array of items. The item index requested or returned is the 0-based index number of the location of the item in question.

  Handlers derived from the following classes handle events for IBaseListBox:

  - IFocusHandler
  - IKeyboardHandler
  - IListBoxDrawItemHandler
  - IMouseHandler
  - IPaintHandler
  - IResizeHandler
  - ISelectHandler

#### Portability Considerations

  Motif does not support owner-draw list boxes. This is because the underlying XmList widget treats the list box entries as an array of textual data. The OS/2 operating system Presentation Manager list box control, on the other hand, accesses each list box entry as a separate item.

#### AIX Considerations

  The Open Class Library implements the IBaseListBox class using the XmList widget. Motif application developers should note that the IBaseListBox member functions use 0-based indexes, unlike the Motif XmList functions, which use 1-based indexes.

  The library creates scrolled list box controls using the XmCreateScrolledList convenience function. This convenience function creates a composite control consisting of an XmScrolledWindow parent with an XmList child. The IBaseListBox control's handle is the widget ID of the XmList child, and any application utilizing native Motif functions should reflect this.

  Two selection styles, extendedSelect and multipleSelect, are available for IBaseListBox controls. There is no explicit single-selection mode style. In the AIX environment, the default selection style is the Motif XmList default selection policy, XmBROWSE_SELECT. This default selection policy is not forced by the Open Class Library. Therefore, you can use an application resource file to specify your desired XmNselectionPolicy. By using an application resource file, you can specify an XmNselectionPolicy of XmSINGLE_SELECT.

#### OS/2 Considerations

  When you add an IBaseListBox as a child window of a canvas and use ISetCanvas, ISplitCanvas, or IMultiCellCanvas, you must give it the style IBaseListBox::noAdjustPosition.

### IBaseListBox - Member Functions and Data by Group

### Constructors & Destructor

You can construct and destruct objects of this class.

~IBaseListBox

      public:
      virtual ~IBaseListBox()

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

IBaseListBox

  Overload 1

      public:
      IBaseListBox(unsigned long id, IWindow* parent)

  You can create a list box control object using the parent window and a list box control ID.

  id
    The ID of a list box control.
  parent
    The parent window.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

  Overload 2

      public:
      IBaseListBox(const IWindowHandle& handle)

  You can create a list box control object using the handle of an existing list box control.

  handle
    A window handle of an existing list box control.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

  Overload 3

      public:
      IBaseListBox( unsigned long id,
                    IWindow* parent,
                    IWindow* owner,
                    const IRectangle& initial = IRectangle ( ),
                    const Style& style = defaultStyle ( ) )

  You can create a list box control object using the parent window, owner window, optional size and location, and optional style arguments.

  id
    The ID of a list box control.
  parent
    The parent window.
  owner
    The owner window.
  initial
    A rectangle for the list box control. It specifies the initial position and size of the IBaseListBox you construct. The initial position is the lower-left corner of the list box relative to the lower-left corner of the parent window. The default is the rectangle constructed by the default IRectangle constructor. Optional.
  style
    The initial style for the list box control. The classDefaultStyle is used if no style is provided. Optional.

Exception

  IInvalidParameter | The parent window is not valid.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Colors

Use these members to access the colors of the IBaseListBox.

backgroundColor

      public:
      virtual IColor backgroundColor() const

  Returns the background color value of the list box area. If you have not set the color for the area, the default color is returned.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

Portability Considerations

  This member is overridden in this derived class for specific operating system behavior.

setBackgroundColor

      public:
      virtual IBaseListBox&
        setBackgroundColor( const IColor& color )

  Sets the background color to the specified color.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setForegroundColor

      public:
      virtual IBaseListBox&
        setForegroundColor( const IColor& color )

  Sets the foreground color to the specified color.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Content

Use these members to determine the number of items in the list box.

count

      public:
      virtual unsigned long count() const

  Returns the number of items in the list box.
  Note: You can use IBaseListBox::count and isSelected to process all of the selected list box items. However, it is easier to use the cursor facility provided by IBaseListBox::Cursor.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

isEmpty

      public:
      virtual bool isEmpty() const

  If the list box is empty, true is returned. Otherwise, false is returned.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Event-Handling Implementation

Event-handling implementation members provide the implementation of the event-handling mechanism.

passEventToOwner

      protected:
      virtual bool passEventToOwner(IEvent& event)

  Determines whether the event is be passed on to the owner.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | No | Yes

### Get and Change Items

Use these members to retrieve or change the text of an item in the list box.

elementAt

      public:
      virtual IString elementAt(const Cursor& cursor) const

  Returns the string of the item at the cursor position.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

itemText

      public:
      virtual IString itemText(unsigned long index) const

  Returns the text of the specified item in the list box.

  index
    Index of the item in a list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setItemText

  Changes the text of the specified item in the list box.

  index
    Index of the item in a list box.
  string
    The new text.

  Overload 1

      public:
      virtual IBaseListBox&
        setItemText( unsigned long index,
                     const IResourceId& string )

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

  Overload 2

      public:
      virtual IBaseListBox&
        setItemText( unsigned long index,
                     const char* string )

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Handle Members

Use these members to set or retrieve a handle of a list box item. A handle is an optional data field that is associated with each list box item.

itemHandle

      public:
      virtual unsigned long itemHandle(unsigned long index) const

  Returns the handle of the specified list box item. If the item does not have a handle, 0 is returned.

  index
    Index of the item in a list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setItemHandle

      public:
      virtual IBaseListBox&
        setItemHandle( unsigned long index,
                       unsigned long handle )

  Sets the handle of the specified list box item.

  index
    Index of the item in a list box.
  handle
    Handle of the list box item.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Item Changes

Use these members to set or retrieve the number of changes (add or remove items) that have occurred to the list box. These members help track the validity of IBaseListBox::Cursor objects.

changeCount

      protected:
      unsigned long changeCount() const

  Retrieves the number of changes to the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

incrementChangeCount

      protected:
      void incrementChangeCount()

  Increments the count of the number of list box changes. All IBaseListBox-derived classes add and remove functions should call this function because add and remove functions may cause an IBaseListBox::Cursor to become invalid.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Item Height

Use these members to set or retrieve a list box item's height.

itemHeight

      public:
      unsigned long itemHeight(unsigned long index = 0) const

  Returns the height, in pixels, of a list box item. This is not the font size. It is the height of the cell within which an item is displayed.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

Windows Considerations

  An index can be specified to retrieve the item height for a specific item when the listbox has the style LBS_OWNERDRAWVARIABLE.

setItemHeight

      public:
      virtual IBaseListBox&
        setItemHeight( unsigned long newHeight )

  Sets the height, in pixels, of a list box item. This does not change the font size. It changes the height of the cell within which an item is displayed.

Exception

  IAccessError | The operating system's request to set the height has failed.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Layout Support

Use these members to support canvases.

minimumCharacters

      public:
      unsigned long minimumCharacters() const

  Returns the maximum number of characters in an item of a minimum size list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

minimumRows

      public:
      unsigned long minimumRows() const

  Returns the number of visible rows of a minimum size list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setLayoutDistorted

      public:
      virtual IBaseListBox&
        setLayoutDistorted( unsigned long layoutAttributesOn,
                            unsigned long layoutAttributesOff )

  Causes a parent ISetCanvas or IMultiCellCanvas to update the size and position of the list box when it is assigned a new font.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setMinimumCharacters

      public:
      virtual IBaseListBox&
        setMinimumCharacters( unsigned long minimumCharacters )

  Sets the maximum number of characters in an item of a minimum size list box. If you do not call this function, an item width of 25 characters is used.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setMinimumRows

      public:
      virtual IBaseListBox&
        setMinimumRows( unsigned long minimumRows )

  Sets the number of rows in a minimum size list box. If you do not call this function, four rows are shown.

  minimumRows
    Minimum number of visible rows.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

calcMinimumSize

      protected:
      virtual ISize calcMinimumSize() const

  Returns the minimum size of the list box.

  The size dimensions are as follows:

  - For width, the average character width multiplied by the number of characters set by calling setMinimumCharacters. If you do not call setMinimumCharacters, a default of 25 characters is used.
  - For height, the maximum character height multiplied by the minimum number of rows set by calling setMinimumRows. If you do not call setMinimumRows, a default of four rows is used.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Notification Members

Use these members to identify and enable notifications sent to observer objects.

enableNotification

      public:
      virtual IBaseListBox&
        enableNotification( bool enable = true )

  Enables the list box to send notifications to any observer objects.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

enterId

      public:
      static INotificationId const enterId

  Notification identifier provided to observers when the user double-clicks on an item or presses Enter on an item with the cursor in a list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

extendedSelectChangedId

      public:
      static INotificationId const
        extendedSelectChangedId

  Notification identifier provided to observers when the extended select state of the list box changes.

  This ID is only used by collection view list boxes.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

itemChangedId

      public:
      static INotificationId const itemChangedId

  Notification identifier provided to observers when a list box item changes due to a change in the underlying collection element.

  This ID is only used by collection view list boxes.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

itemsId

      public:
      static INotificationId const itemsId

  Notification identifier provided to observers when the collection underlying the collection view list box is changed.

  This ID is only used by collection view list boxes.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

selectId

      public:
      static INotificationId const selectId

  Notification identifier provided to observers when an item is selected in a list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Scrolling Members

Use these members to scroll an item to the top of the list box or to return the item at the top of the list box.

scrollToItem

      public:
      virtual IBaseListBox& scrollToItem(unsigned long index)

  Scrolls the specified item into the listbox view. The item is scrolled to the top of the listbox if above the listbox view. If the item is below the view of the listbox, then the item is scrolled to the bottom of the listbox.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setTop

      public:
      virtual IBaseListBox& setTop(unsigned long index)

  Scrolls the specified item to the top of the list box.

Exception

  IAccessError | There are no items in the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

OS/2 Considerations

  The system scrolls the list box contents so that either the specified item appears at the top of the list box or the maximum scroll range has been reached.

Windows Considerations

  The system scrolls the list box contents so that either the specified item appears at the top of the list box or the maximum scroll range has been reached.

top

      public:
      virtual unsigned long top() const

  Returns the item number of the item currently at the top of the list box. If there are no items in the list box, an exception is thrown.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Search List

Use these members to search the list box portion of the combination box for a text string. The data structures aid that effort.

locateText

      public:
      virtual unsigned long
        locateText( const char* searchString,
                    bool caseSensitive = true,
                    SearchType search = exactMatch,
                    unsigned long index = first ) const

  Returns the item number of the list box item matching the search string. You can specify the type of search by using the enumeration SearchType. If no match is found, this function returns notFound. If there is an error, an exception is thrown.

  searchString
    String to search for.
  caseSensitive
    Indicator of whether the search is case-sensitive. The default of true means the search is case-sensitive.
  search
    Use the enumeration SearchType to specify the type of search to perform. The default is exactMatch.
  index
    Index of where to start the search. The default is first. When the search reaches the bottom of the list box, it continues from the top of the list box back to the item specified by the index parameter.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

first

      public:
      static const unsigned long first

  Searches from the beginning of the string. This is a value for the index parameter of IBaseListBox::locateText.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

notFound

      public:
      static const unsigned long notFound

  Indicates no match is found. IBaseListBox::locateText returns this value.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Selection

Use these members to set or query the list box's selection state.

deselect

      public:
      virtual IBaseListBox& deselect(unsigned long index)

  Removes the selection state from an item.

  index
    The index of the item.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

deselectAll

      public:
      virtual IBaseListBox& deselectAll()

  Removes the selection state from all items in the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

isSelected

      public:
      virtual bool isSelected(unsigned long index) const

  Returns the selection state of an item. If the item is selected, true is returned. Otherwise, false is returned.
  Note: You can use count and isSelected to process all of the selected list box items. However, it is easier to use the cursor facility provided by IBaseListBox::Cursor.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

numberOfSelections

      public:
      virtual unsigned long numberOfSelections() const

  For single-selection list boxes, if no item is selected, 0 is returned. Otherwise, 1 is returned.

  For multiple-selection or extended-selection list boxes, the number of selected items in the list box is returned.
  Note: In all cases, the current selection does not change.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

select

      public:
      virtual IBaseListBox&
        select( unsigned long index,
                bool select = true )

  Sets the selection state of an item based on the specified boolean value.

  index
    Index of the item.
  select
    If you specify true for a list box, based on its selection style, the following occurs:
    Single selection
      The specified item is selected and any previously selected item is deselected.
    Multiple selection
      The specified item is selected.
    Extended selection
      The specified item is selected.
    The default is true.
    Note: In all cases, if you specify false, the item is deselected.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

selectAll

      public:
      virtual IBaseListBox& selectAll()

  Sets the selection state for all items in the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

Portability Considerations

  An exception is thrown on OS/2 and Windows if the listbox is single-selection. On AIX, the last item in the listbox is selected.

selection

      public:
      virtual long selection() const

  Returns the 0-based index of the selected item. For single-selection list boxes, the index of the selected item is returned. For multiple-selection or extended-selection list boxes, the index of the first selected item is returned.
  Note: If no item is selected, the static constant notFound is returned.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Styles

These style members provide a set of valid styles for the IBaseListBox class. Use these members to set and query list box styles. You can use these styles with the styles in the IWindow Styles class.

convertToGUIStyle

      public:
      virtual unsigned long
        convertToGUIStyle( const IBitFlag& style,
                           bool extendedOnly = false ) const

  Converts a style object into a value appropriate for the presentation system. The default action is to return the base GUI styles for the platform. Extended styles, those defined by the application and the Open Class Library, are returned if you set extendedOnly to true.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

defaultStyle

      public:
      static Style defaultStyle()

  Returns the default style. The default style is classDefaultStyle unless you have changed the style using setDefaultStyle.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

disableDrawItem

      public:
      virtual IBaseListBox& disableDrawItem()

  Disables the style drawItem for the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Ignored

AIX Considerations

  The drawItem style is not supported on AIX.

disableExtendedSelect

      public:
      virtual IBaseListBox& disableExtendedSelect()

  Disables the style extendedSelect for the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Ignored | Yes | Yes

Windows Considerations

  An IBaseListBox::Style is used to control this behavior. This platform does not support dynamic change of behavior.

disableMultipleSelect

      public:
      virtual IBaseListBox& disableMultipleSelect()

  Disables the style multipleSelect for the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Ignored | Yes | Yes

Windows Considerations

  An IBaseListBox::Style is used to control this behavior. This platform does not support dynamic change of behavior.

disableNoAdjustPosition

      public:
      virtual IBaseListBox& disableNoAdjustPosition()

  Disables the style noAdjustPosition for the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Ignored

AIX Considerations

  The noAdjustPosition style is ignored on AIX.

enableDrawItem

      public:
      virtual IBaseListBox& enableDrawItem(bool enable = true)

  Enables or disables the style drawItem for the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Ignored

AIX Considerations

  The drawItem style is not supported on AIX.

enableExtendedSelect

      public:
      virtual IBaseListBox&
        enableExtendedSelect( bool enable = true )

  Enables or disables the style extendedSelect for the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Ignored | Yes | Yes

Windows Considerations

  An IBaseListBox::Style is used to control this behavior. This platform does not support dynamic change of behavior.

enableMultipleSelect

      public:
      virtual IBaseListBox&
        enableMultipleSelect( bool enable = true )

  Enables or disables the style multipleSelect for the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Ignored | Yes | Yes

Windows Considerations

  An IBaseListBox::Style is used to control this behavior. This platform does not support dynamic change of behavior.

enableNoAdjustPosition

      public:
      virtual IBaseListBox&
        enableNoAdjustPosition( bool enable = true )

  Enables or disables the style noAdjustPosition for the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Ignored

AIX Considerations

  The noAdjustPosition style is ignored on AIX.

isDrawItem

      public:
      bool isDrawItem() const

  If the style drawItem is set, true is returned. Otherwise, false is returned.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Ignored

AIX Considerations

  The drawItem style is not supported on AIX.

isExtendedSelect

      public:
      bool isExtendedSelect() const

  If the style extendedSelect is set, true is returned. Otherwise, false is returned.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

isHorizontalScroll

      public:
      bool isHorizontalScroll() const

  If the style horizontalScroll is set, true is returned. Otherwise, false is returned.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

isMultipleSelect

      public:
      bool isMultipleSelect() const

  If the style multipleSelect is set, true is returned. Otherwise, false is returned.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

isNoAdjustPosition

      public:
      bool isNoAdjustPosition() const

  If the style noAdjustPosition is set, true is returned. Otherwise, false is returned.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Ignored

AIX Considerations

  The noAdjustPosition style is ignored on AIX. This function always returns false.

setDefaultStyle

      public:
      static void setDefaultStyle(const Style& style)

  Sets the default style for all subsequent list boxes.

  style
    Use the styles provided by IBaseListBox Styles to specify the default list box style.

  This member function is not thread safe. In a multithreaded application, it should only be called when a conflict is not possible. A conflict can arise if you set the default style on one thread at the same time that it is being queried on another. In this situation, the query would take place while the style is in an unknown state.

  When you create a window class and do not specifically specify window styles in the constructor, the Open Class Library queries the default style. Therefore, the only safe place to call this member function is when no other application threads that create windows are active.

  Another way to avoid a conflict in a multithreaded application is to specifically specify window styles on window construction, rather than calling this member function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

border3D

      public:
      static const Style border3D

  Adds an etched 3D border to the control.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Ignored | Ignored

classDefaultStyle

      public:
      static const Style classDefaultStyle

  Provides the original default style for this class, which is the following: IBaseListBox::horizontalScroll | IBaseListBox::noAdjustPosition | IBaseListBox::border3D | IWindow::visible.

  If you do not specify either the extendedSelect or multipleSelect style, the list box is a single-selection list box by default.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

drawItem

      public:
      static const Style drawItem

  Draws list box items. It is typically used to display bitmaps.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

extendedSelect

      public:
      static const Style extendedSelect

  Extends selection to more than one object. This style is a type of selection optimized for the selection of a single object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

horizontalScroll

      public:
      static const Style horizontalScroll

  Allows horizontal scrolling of the list box.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

multipleSelect

      public:
      static const Style multipleSelect

  Specifies that the user can select any number of objects at a time in the list box or not select any.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

noAdjustPosition

      public:
      static const Style noAdjustPosition

  Draws the list box control at the size specified. This can cause an item to be only partially shown.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Ignored

### Window Painting

Use these members to display a window.

show

      public:
      virtual IWindow& show(bool showList = true)

  Makes the window visible.
  Note: Another window occurring earlier in the Z-order might still obscure this window.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IBaseListBox - Enumerations

SearchType

      enum SearchType { prefix,
                        substring,
                        exactMatch }

  Use these enumerators to specify the type of search to perform:

  prefix
    Matching occurs if the leading characters of the item contain the specified characters.
  substring
    Matching occurs if the item contains a substring of the specified characters.
  exactMatch
    Matching occurs if the item is an exact match for the specified characters.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IBaseListBox - Inherited Member Functions and Data

#### Inherited Public Functions

  IControl

  -     virtual ~IControl()

  INotifier

  -     virtual ~INotifier()

  -     virtual INotifier& disableNotification() = 0

  -     virtual INotifier&
          enableNotification( bool enable = true ) = 0

  -     INotifier()

  -     virtual bool isEnabledForNotification() const = 0

  -     virtual INotifier&
          notifyObservers( const INotificationEvent& event ) = 0

  -     virtual INotifier&
          notifyObserversAsync( const INotificationEvent& event )

  -     const IThreadId& threadId() const

  IWindow

  -     virtual ~IWindow()

  -     IAccelTblHandle acceleratorHandle() const

  -     IAcceleratorTable acceleratorTable() const

  -     virtual IColor activeColor() const

  -     IWindow&
          addOrReplaceAttribute( const IAttributeName& name,
                                 const IAttribute& attribute )

  -     IWindow&
          adoptWindowData( const DataHandle& typeToken,
                           IWindowData* windowData )

  -     virtual IString asDebugInfo() const

  -     virtual IString asString() const

  -     IAttributeName
          attributeNameAt( const AttributeCursor& cursor ) const

  -     const IAttribute*
          attributeWithName( const IAttributeName& name,
                             ESearchType search = kWindowOnly ) const

  -     virtual IWindow& capturePointer(bool capture = true)

  -     ISize characterSize() const

  -     IWindowHandle childAt(const ChildCursor& cursor) const

  -     IWindow* childWindowAt(const ChildCursor& cursor) const

  -     virtual IArgList
          convertToArgList( const IBitFlag& style ) const

  -     static DataHandle
          dataHandleWithKey( const char* dataKeyName )

  -     virtual IWindowHandle defaultEmphasisButton() const

  -     static SiblingOrder defaultOrdering()

  -     virtual IWindowHandle defaultPushButton() const

  -     static IWindow* desktopWindow()

  -     virtual IWindow& disable()

  -     virtual IColor disabledBackgroundColor() const

  -     virtual IColor disabledForegroundColor() const

  -     virtual IWindow& disableGroup()

  -     IWindow& disableMinimumSizeCaching()

  -     virtual IWindow& disableNotification()

  -     virtual IWindow& disableTabStop()

  -     virtual IWindow& disableUpdate()

  -     bool
          dispatchRemainingHandlers( IEvent& event,
                                     bool callDefProc = true )

  -     virtual IWindow& enable(bool enableWindow = true)

  -     virtual IWindow& enableGroup(bool enable = true)

  -     IWindow&
          enableMinimumSizeCaching( bool enableCaching = true )

  -     virtual IWindow& enableNotification(bool enable = true)

  -     virtual IWindow& enableTabStop(bool enable = true)

  -     virtual IWindow& enableUpdate(bool enableWindow = true)

  -     static IWindow::ExceptionFn* exceptionFunction()

  -     virtual IFont font() const

  -     virtual IColor foregroundColor() const

  -     virtual IWindowHandle handle() const

  -     virtual bool
          handleException( IException& dispatcherException,
                           IEvent& exceptionEvent )

  -     virtual IWindowHandle handleForChildCreation() const

  -     static IWindowHandle
          handleWithParent( unsigned long identifier,
                            const IWindowHandle& parent )

  -     static IWindowHandle handleWithPointerCaptured()

  -     virtual bool hasFocus() const

  -     virtual bool hasPointerCaptured() const

  -     unsigned long helpId() const

  -     virtual IWindow& hide()

  -     virtual IWindow& hideSourceEmphasis()

  -     virtual IColor hiliteBackgroundColor() const

  -     virtual IColor hiliteForegroundColor() const

  -     virtual unsigned long id() const

  -     virtual IColor inactiveColor() const

  -     virtual IRectangle invalidatedRect() const

  -     virtual IRegionHandle invalidatedRegion() const

  -     bool isAutoDeleteObject() const

  -     bool isAutoDestroyWindow() const

  -     bool isEnabled() const

  -     virtual bool isEnabledForNotification() const

  -     virtual bool isFrameWindow() const

  -     virtual bool isGroup() const

  -     bool isHandling(const EventMask& events) const

  -     virtual bool
          isLayoutDistorted( unsigned long layoutAttribute ) const

  -     bool isMinimumSizeCachingEnabled() const

  -     bool isShowing() const

  -     virtual bool isTabStop() const

  -     bool isUpdateEnabled() const

  -     virtual bool isValid() const

  -     bool isVisible() const

  -     static bool isWindowValid(const IWindow* window)

  -     IDMItemProvider* itemProvider() const

  -     IWindow(const IWindowHandle& handle)

  -     IWindow(unsigned long identifier, IWindow* parent)

  -     virtual IRectangle layoutAdjustment() const

  -     static IPoint
          mapPoint( const IPoint& point,
                    const IWindowHandle& from,
                    const IWindowHandle& to )

  -     virtual IWindowHandle
          matchForMnemonic( unsigned short character ) const

  -     IMessageQueueHandle messageQueue() const

  -     ISize minimumSize(bool windowCalculatedSize = false) const

  -     virtual IPointerHandle mousePointer() const

  -     static void movePointerTo(const IPoint& position)

  -     virtual IWindow&
          moveSizeTo( const IRectangle& newSizeAndPosition )

  -     virtual IWindow& moveTo(const IPoint& newPosition)

  -     virtual IRectangle nativeRect() const

  -     virtual INotifierAddress notifierAddress() const

  -     virtual IWindow&
          notifyObservers( const INotificationEvent& event )

  -     virtual IWindow&
          notifyObserversAsync( const INotificationEvent& event )

  -     static IWindow* objectWindow()

  -     virtual IWindow* owner() const

  -     IWindow* parent() const

  -     static ISize parentSize(const IWindowHandle& windowHandle)

  -     virtual ISize parentSize() const

  -     static IPoint pointerPosition()

  -     virtual IPoint position() const

  -     virtual IWindow&
          positionBehindSibling( const IWindowHandle& siblingWindow )

  -     virtual IWindow& positionBehindSiblings()

  -     virtual IWindow& positionOnSiblings()

  -     virtual const IWindow& postEvent(const IEvent& event) const

  -     virtual const IWindow&
          postEvent( EventType eventType,
                     const IEventParameter1& parm1 = 0,
                     const IEventParameter2& parm2 = 0 ) const

  -     virtual const IWindow&
          postEvent( unsigned long eventId,
                     const IEventParameter1& parm1 = 0,
                     const IEventParameter2& parm2 = 0 ) const

  -     virtual IPresSpaceHandle presSpace() const

  -     virtual IRectangle rect() const

  -     virtual IWindow& refresh(RefreshType type = paintAll)

  -     virtual IWindow&
          refresh( const IRectangle& invalidRectangle,
                   bool immediate = false )

  -     virtual IWindow& releasePointer()

  -     virtual void
          releasePresSpace( const IPresSpaceHandle& presentationSpaceHandle ) const

  -     IWindow& removeAllAttributes()

  -     IWindow& removeAttribute(const IAttributeName& name)

  -     virtual IWindow& resetActiveColor()

  -     virtual IWindow& resetBackgroundColor()

  -     virtual IWindow& resetDisabledBackgroundColor()

  -     virtual IWindow& resetDisabledForegroundColor()

  -     virtual IWindow& resetFont()

  -     virtual IWindow& resetForegroundColor()

  -     virtual IWindow& resetHiliteBackgroundColor()

  -     virtual IWindow& resetHiliteForegroundColor()

  -     virtual IWindow& resetInactiveColor()

  -     IWindow& resetMinimumSize()

  -     virtual IWindow& resetShadowColor()

  -     virtual IEventResult sendEvent(const IEvent& event) const

  -     virtual IEventResult
          sendEvent( unsigned long eventId,
                     const IEventParameter1& parm1 = 0,
                     const IEventParameter2& parm2 = 0 ) const

  -     virtual IEventResult
          sendEvent( EventType eventType,
                     const IEventParameter1& parm1 = 0,
                     const IEventParameter2& parm2 = 0 ) const

  -     IWindow&
          setAcceleratorHandle( const IAccelTblHandle& handle )

  -     IWindow&
          setAcceleratorTable( const IAcceleratorTable* acceleratorTable )

  -     virtual IWindow& setActiveColor(const IColor& color)

  -     IWindow& setAutoDeleteObject(bool autoDelete = true)

  -     IWindow& setAutoDestroyWindow(bool autoDestroy = false)

  -     virtual IWindow& setBackgroundColor(const IColor& color)

  -     static void setDefaultOrdering(SiblingOrder order)

  -     virtual IWindow&
          setDisabledBackgroundColor( const IColor& color )

  -     virtual IWindow&
          setDisabledForegroundColor( const IColor& color )

  -     static IWindow::ExceptionFn*
          setExceptionFunction( IWindow::ExceptionFn* exceptionFunction )

  -     virtual IWindow& setFocus()

  -     virtual IWindow& setFont(const IFont& font)

  -     virtual IWindow& setForegroundColor(const IColor& color)

  -     IWindow& setHelpId(unsigned long helpTopicId)

  -     virtual IWindow&
          setHiliteBackgroundColor( const IColor& color )

  -     virtual IWindow&
          setHiliteForegroundColor( const IColor& color )

  -     virtual IWindow& setId(unsigned long newIdentifier)

  -     virtual IWindow& setInactiveColor(const IColor& color)

  -     IWindow& setItemProvider(IDMItemProvider* dragProvider)

  -     virtual IWindow&
          setLayoutDistorted( unsigned long layoutAttributesOn,
                              unsigned long layoutAttributesOff )

  -     IWindow& setMinimumSize(const ISize& size)

  -     virtual IWindow&
          setMousePointer( const IPointerHandle& mousePointer )

  -     virtual IWindow& setOwner(const IWindow* newOwner)

  -     virtual IWindow& setParent(const IWindow* newParent)

  -     virtual IWindow& setShadowColor(const IColor& color)

  -     virtual IColor shadowColor() const

  -     virtual IWindow& show(bool showWindow = true)

  -     virtual IWindow& showSourceEmphasis(bool show = true)

  -     virtual ISize size() const

  -     virtual IWindow& sizeTo(const ISize& newSize)

  -     IWindow& startHandling(const EventMask& events)

  -     IWindow& stopHandling(const EventMask& events)

  -     virtual IWindow&
          validateRect( const IRectangle& validatedRectangle )

  -     virtual IWindow&
          validateRegion( const IRegionHandle& validatedRegion )

  -     virtual IRectangle visibleRectangle() const

  -     IWindowData* windowData(const DataHandle& typeToken) const

  -     static IWindow*
          windowWithHandle( const IWindowHandle& windowHandle,
                            bool allThreads = true )

  -     static IWindow*
          windowWithOwner( unsigned long identifier,
                           const IWindow* owner,
                           bool allThreads = true )

  -     static IWindow*
          windowWithParent( unsigned long identifier,
                            const IWindow* parent,
                            bool allThreads = true )

#### Inherited Public Data

  IWindow

  -     static INotificationId const activeColorId

  -     static const EventMask allMouseMoves

  -     static INotificationId const
          attributeAddReplaceId

  -     static INotificationId const attributeRemoveId

  -     static INotificationId const backgroundColorId

  -     static INotificationId const borderColorId

  -     static const Style clipChildren

  -     static const Style clipSiblings

  -     static const Style clipToParent

  -     static INotificationId const commandId

  -     static const Style disabled

  -     static INotificationId const
          disabledBackgroundColorId

  -     static INotificationId const
          disabledForegroundColorId

  -     static INotificationId const enableId

  -     static INotificationId const focusId

  -     static INotificationId const fontId

  -     static INotificationId const foregroundColorId

  -     static const Style group

  -     static INotificationId const
          hiliteBackgroundColorId

  -     static INotificationId const
          hiliteForegroundColorId

  -     static INotificationId const inactiveColorId

  -     static const Style leftToRight

  -     static const EventMask mouseEntersLeaves

  -     static const Style noStyle

  -     static INotificationId const positionId

  -     static const Style rightToLeft

  -     static const Style saveBits

  -     static INotificationId const shadowColorId

  -     static INotificationId const sizeId

  -     static const EventMask someMouseMoves

  -     static const Style synchPaint

  -     static INotificationId const systemCommandId

  -     static const Style tabStop

  -     static const Style visible

  -     static INotificationId const visibleId

  INotifier

  -     static INotificationId const allChangesId

  -     static INotificationId const deleteId

#### Inherited Protected Functions

  IWindow

  -     IWindow& addHandler(IHandler* newHandler)

  -     virtual IWindow&
          addObserver( IObserver& observer,
                       const IInterest& interest )

  -     static void
          addToWindowSet( IWindow* window,
                          const IWindowHandle& windowHandle )

  -     IWindow& bindMessageQueue(bool bindToMessageQueue = true)

  -     IColor color(unsigned long colorArea) const

  -     IColor
          color( unsigned long colorArea,
                 const IColor& defaultColor ) const

  -     virtual IWindowHandle
          create( unsigned long id,
                  const char* text,
                  unsigned long style,
                  IXmCreateFunction createFunction,
                  const IWindowHandle& parent,
                  const IWindowHandle& owner,
                  const IRectangle& initRect,
                  const void* callerArgList,
                  unsigned int callerNumberArguments,
                  IWindow::SiblingOrder ordering = defaultOrdering ( ),
                  unsigned long extendedStyle = 0 )

  -     virtual IWindowHandle
          create( unsigned long id,
                  const char* text,
                  unsigned long style,
                  const char* windowClass,
                  const IWindowHandle& parent,
                  const IWindowHandle& owner,
                  const IRectangle& initRect,
                  const void* ctlData,
                  const void* presParams,
                  IWindow::SiblingOrder ordering = defaultOrdering ( ),
                  unsigned long extendedStyle = 0 )

  -     virtual IWindowHandle
          create( unsigned long id,
                  const char* text,
                  const IBitFlag& style,
                  IXmCreateFunction createFunction,
                  const IWindow* parent,
                  const IWindow* owner,
                  const IRectangle& initRect,
                  IWindow::SiblingOrder ordering = defaultOrdering ( ) )

  -     virtual IWindowHandle
          create( unsigned long id,
                  const char* text,
                  const IBitFlag& style,
                  const char* windowClass,
                  const IWindow* parent,
                  const IWindow* owner,
                  const IRectangle& initRect,
                  const void* ctlData,
                  const void* presParams,
                  IWindow::SiblingOrder ordering = defaultOrdering ( ) )

  -     IWindow& defaultProcedure(IEvent& event)

  -     bool deleteIsInProcess() const

  -     bool dispatch(IEvent& event)

  -     virtual unsigned long extendedStyle() const

  -     bool isBoundToMessageQueue() const

  -     virtual bool isDragStarting(IEvent& event)

  -     bool isPrimaryWindow() const

  -     bool isUserWindowWordReserved() const

  -     IWindow()

  -     IWindowNotifyHandler* notificationHandler() const

  -     virtual IWindow&
          notifyObservers( const INotificationId& notification )

  -     IObserverList&
          observerList( const IInterest* interest = 0 ) const

  -     virtual IWindow&
          prepareForUse( const IWindowHandle& windowHandle )

  -     virtual IWindow& removeAllObservers()

  -     static void removeFromWindowSet(IWindow* window)

  -     IWindow& removeHandler(IHandler* oldHandler)

  -     virtual IWindow& removeObserver(IObserver& observer)

  -     virtual IWindow&
          removeObserver( IObserver& observer,
                          const IInterest& interest )

  -     IWindow& reserveUserWindowWord(bool reserve = true)

  -     virtual IWindow& resetColor(unsigned long colorArea)

  -     ISize savedMinimumSize() const

  -     IWindow& saveMinimumSize(const ISize& size)

  -     virtual IWindow&
          setBidiSettings( const IBidiSettings& bidiSettings,
                           bool childInherit,
                           bool refresh )

  -     virtual IWindow&
          setColor( unsigned long colorArea,
                    const IColor& color )

  -     virtual IWindow&
          setDefaultEmphasisButton( const IWindowHandle& defaultEmphasisButton,
                                    bool enable )

  -     virtual IWindow&
          setDefaultPushButton( const IWindowHandle& defaultPushButton )

  -     virtual IWindow&
          setExtendedStyle( unsigned long extendedStyle )

  -     IWindow&
          setNotificationHandler( IWindowNotifyHandler* notifyHandler )

  -     virtual IWindow& setStyle(unsigned long style)

  -     IWindow& setWindowData(long index, unsigned long dataValue)

  -     IWindow&
          setWindowData( long index,
                         unsigned short dataValue )

  -     IWindow&
          startHandlingEventsFor( const IWindowHandle& windowHandle )

  -     IWindow&
          startHandlingEventsFor( unsigned long identifier,
                                  IWindow* parent )

  -     virtual unsigned long style() const

  -     IWindow& unbindMessageQueue()

  -     unsigned long windowULong(long index) const

  -     unsigned short windowUShort(long index) const

  INotifier

  -     virtual INotifier&
          addObserver( IObserver& observer,
                       const IInterest& interest )

  -     virtual INotifier&
          notifyObservers( const INotificationId& id ) = 0

  -     virtual IObserverList&
          observerList( const IInterest* anInterest = 0 ) const = 0

  -     virtual INotifier& removeAllObservers() = 0

  -     virtual INotifier& removeObserver(IObserver& observer) = 0

  -     virtual INotifier&
          removeObserver( IObserver& observer,
                          const IInterest& interest )

  IControl

  -     IControl()

#### Inherited Protected Data

  - None