### IBaseComboBox

  The IBaseComboBox class creates and manages combination box control windows. The IBaseComboBox class combines an entry field and a list box to form one control containing the features of both. IBaseComboBox presents a general combination box interface except for population capability, such as add, remove, or replace items. The derived classes IComboBox and ICollectionViewComboBox supply these functions. IComboBox contains the add, remove, replace functions, while ICollectionViewComboBox populates a combination box's list box from collection elements via setItems. Typically, you use one of these derived classes of IBaseComboBox.

  Handlers derived from the following classes handle events for IBaseComboBox objects:

  - IEditHandler
  - IFocusHandler
  - IResizeHandler
  - IKeyboardHandler
  - IMouseHandler
  - IPaintHandler
  - ISelectHandler
  - IShowListHandler

#### Portability Considerations

  AIX only supports the constructor that creates an object of this class using the control ID, parent window, owner window, rectangle, and style parameters.

  To process keystrokes for the OS/2 platform, you must attach an IKeyboardHandler or IEditHandler to the entry field child of the combination box object. You must wrapper the entry field using one of the IEntryField constructors.

  For the AIX platform, you can attach an IKeyboardHandler or IEditHandler directly to the IBaseComboBox object. Do not wrapper the entry field within the combination box. You might want to use the IEditVerifyHandler instead of IKeyboardHandler for processing entry field changes.

#### AIX Considerations

  The IBaseComboBox constructor creates objects of this class using several Motif widgets. An XmForm widget is created with XmText, XmScrolledWindow, and XmList children. If the IBaseComboBox object has the dropDownType or the readOnlyDropDownType styles, an XmArrowButton is also created as a child of the XmForm widget. IWindow::handle returns the handle of the XmText widget.
  Note: The IBaseComboBox member functions use 0-based indexes, rather than the 1-based indexes used by the Motif XmList functions.

  The behavior of an IBaseComboBox object is provided by private callbacks and a default handler. The IBaseComboBox class uses a default handler attached to the IBaseComboBox object. Therefore, attach user-defined handlers to the IBaseComboBox rather than to its owner window. Doing so enables events to be dispatched to user-defined handlers before the default handler.

  Handlers derived from IEditVerifyHandler can be attached to IBaseComboBox objects.

#### OS/2 Considerations

  The parent of an IBaseComboBox should not set the IWindow::clipChildren style. This style prevents the OS/2 operating system from painting a small region below the list box portion of the IBaseComboBox object.

### IBaseComboBox - Member Functions and Data by Group

### Constructors & Destructor

You can construct and destruct objects of this class.

~IBaseComboBox

      public:
      virtual ~IBaseComboBox()

Supported Platforms

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

IBaseComboBox

  Overload 1

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

  You can construct objects of this class using the ID, parent, owner, size, position, and style parameters.

  id
    A combination box control ID.
  parent
    The parent window.
  owner
    The owner window.
  initial
    The initial position and size of the combination box you construct. The default is the rectangle constructed by the default IRectangle constructor. Optional.
  style
    The combination box's characteristics. Optional.

Exception

  IInvalidParameter | Either the parent was NULL or an invalid style was passed.

Supported Platforms

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

  Overload 2

      public:
      IBaseComboBox(const IWindowHandle& handle)

  You can construct objects of this class using the handle of an existing combination box window.

  handle
    The window handle of an existing combination box control.

Supported Platforms

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

AIX Considerations

  The Motif implementation of IBaseComboBox does not use a singular Motif widget; therefore, you cannot construct objects of this class from the handle of a combination box control in the AIX environment.

  Overload 3

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

  You can construct objects of this class using the parent window and a combination box ID.

  id
    A combination box control ID.
  parent
    The parent window.

Supported Platforms

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

### Attributes

Use these members to query and change characteristics of the entry field control.

hasFocus

      public:
      virtual bool hasFocus() const

  If the window has the input focus, true is returned. Otherwise, false is returned.

Supported Platforms

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

setFocus

      public:
      virtual IBaseComboBox& setFocus()

  Sets the input focus to the combination box.

Supported Platforms

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

### Colors

Use these members to access the colors of the IBaseComboBox.

backgroundColor

      public:
      virtual IColor backgroundColor() const

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

Supported Platforms

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

foregroundColor

      public:
      virtual IColor foregroundColor() const

  Returns the foreground color value of the window or the default if no foreground color for the window has been set.

Supported Platforms

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

setBackgroundColor

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

  Sets the background color to the specified color.

Supported Platforms

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

setForegroundColor

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

  Sets the foreground color to the specified color.

Supported Platforms

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

setColor

      protected:
      virtual IBaseComboBox&
        setColor( unsigned long colorArea,
                  const IColor& color )

  Sets the window area to the specified color. The override is used to set the foreground and background color of this object. All other color areas are passed up to the inherited implementation.

Supported Platforms

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

### Content

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

count

      public:
      virtual unsigned long count() const

  Returns the number of items in the list box.

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

### Get and Change Items

Use these members to retrieve or change a text item in the list box portion of the combination box.

elementAt

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

  Returns the string of the item at the cursor position.

Exception

  IInvalidRequest | The cursor is invalid

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 portion of the combination box.

  index
    Index of the item in a list box.

Exception

  IInvalidRequest | The index is invalid.

Supported Platforms

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

setItemText

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

  index
    Index of the item in a list box.
  string
    The new text.
  updateEntryField
    If the specified item in the list box is selected and this flag is true, the combination box entry field gets updated.

  Overload 1

      public:
      virtual IBaseComboBox&
        setItemText( unsigned long index,
                     const IResourceId& string,
                     bool updateEntryField = false )

Supported Platforms

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

  Overload 2

      public:
      virtual IBaseComboBox&
        setItemText( unsigned long index,
                     const char* string,
                     bool updateEntryField = false )

Exception

  IAccessError | The operating system is unable to set the text of the list box item.

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.

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 IBaseComboBox&
        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.

Exception

  IAccessError | The operating system is unable to set the 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 portion of the combination box. These members help track the validity of IBaseComboBox::Cursor objects.

changeCount

      protected:
      unsigned long changeCount() const

  Retrieves the number of changes to the combination box.

Supported Platforms

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

incrementChangeCount

      protected:
      void incrementChangeCount()

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

Supported Platforms

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

### Layout Support

Layout support members supply information used by the canvas classes to provide dialog-like behavior.

layoutAdjustment

      public:
      virtual IRectangle layoutAdjustment() const

  Returns the dimensions that a window should be moved or sized to after a canvas runs its layout routines. If the combination box has a drop-down list box, this function returns an IRectangle that adjusts the combination box by the size of the drop-down list box.

Supported Platforms

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

minimumRows

      public:
      unsigned long minimumRows() const

  Returns the number of visible rows in the list box portion of a minimum size combination box window.

Supported Platforms

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

setMinimumRows

      public:
      virtual IBaseComboBox&
        setMinimumRows( unsigned long minimumRows )

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

  This function has no affect on the size of the combination box unless the control is a child of a set canvas or a multicell canvas.

  minimumRows
    Minimum number of visible rows.

Supported Platforms

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

visibleRectangle

      public:
      virtual IRectangle visibleRectangle() const

  Returns the window rectangle that is painted by the control.

Supported Platforms

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

calcMinimumSize

      protected:
      virtual ISize calcMinimumSize() const

  Returns the minimum size of the combination box.

  The size dimensions are as follows:

  width
    The minimum entry field width.
  height
    The maximum character height multiplied by the minimum number of rows. The minimum number of rows is 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

setLayoutDistorted

      protected:
      virtual IBaseComboBox&
        setLayoutDistorted( unsigned long layoutAttributeOn,
                            unsigned long layoutAttributeOff )

  Indicates that changes have occurred in the window causing the layout of the window in a canvas to be updated.

Supported Platforms

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

### List Box Operations

Use these members to query, show, or hide the list box portion of the combination box.

hideList

      public:
      virtual IBaseComboBox& hideList()

  Hides the list box.

Supported Platforms

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

isListShowing

      public:
      bool isListShowing() const

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

Supported Platforms

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

showList

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

  Shows or hides the list box. This is only valid for combination boxes with the dropDownType or readOnlyDropDownType styles.

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 IBaseComboBox&
        enableNotification( bool enable = true )

  Enables or disables the combination 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 an item in the list box portion of a combination box is double-clicked on or Enter is pressed for a selected item.

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 the list box portion of a combination box.

Supported Platforms

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

### Read-Only Operation Overrides

These members query and modify the read-only mode in the entry field, which specifies if the user can change the entry field text.

enableDataUpdate

      public:
      virtual IBaseComboBox& enableDataUpdate(bool update = true)

  Enables or disables the read-only mode on the child entry field of the combination box.

Supported Platforms

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

isWriteable

      public:
      bool isWriteable() const

  If the contents of the child entry field can be modified, true is returned. Otherwise, false is returned.

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.

setTop

      public:
      virtual IBaseComboBox& setTop(unsigned long index)

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

  index
    Index of the item in a 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.

Exception

  IAccessError | There are no items in the list box.

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. The search starts after the specified index. If no match is found, notFound is returned.

  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.

Exception

  IAccessError | The operating system is unable to search the list box for the text.

Supported Platforms

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

first

      public:
      static const unsigned long first

  Searches from the beginning of the string. It is a value for the index parameter of IBaseComboBox::locateText.

Supported Platforms

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

notFound

      public:
      static const unsigned long notFound

  Indicates no match is found. IBaseComboBox::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 IBaseComboBox& deselect(unsigned long index)

  Removes the selection state from the specified item.

  index
    0-indexed reference to item.

Supported Platforms

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

deselectAll

      public:
      virtual IBaseComboBox& deselectAll()

  Removes the selection state from the currently selected item in the list box.

Exception

  IAccessError | The operating system is unable to deselect all of the items in the list box.

Supported Platforms

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

isSelected

      public:
      virtual bool isSelected(unsigned long index) const

  If the specified item is currently selected, true is returned. Otherwise, false is returned.

  index
    Index of the item in a list box.

Supported Platforms

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

numberOfSelections

      public:
      virtual unsigned long numberOfSelections() const

  If no item is selected, 0 is returned. Otherwise, 1 is returned. The current selection does not change.

Supported Platforms

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

select

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

  Sets the selection state of the specified item.

  index
    The index of the text item.
  select
    If you specify true, the item is selected and any previously selected item is deselected. If you specify false, the item is deselected. The default is true.

Exception

  IAccessError | The operating system is unable to select the list box item.

Supported Platforms

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

selection

      public:
      virtual long selection() const

  Returns the 0-based index of the selected item. If no item is selected, notFound is returned.

Supported Platforms

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

### Styles

These style members provide a set of valid styles for this class. Use these members to set and query combo box styles. You can use these styles with the styles in the following classes:

- IWindow Styles
- IEntryField Styles

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 it using setDefaultStyle.

Supported Platforms

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

isHorizontalScroll

      public:
      bool isHorizontalScroll() const

  If the list box part of the combination box has a horizontal scroll bar, true is returned. Otherwise, false is returned.

Supported Platforms

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

setDefaultStyle

      public:
      static void setDefaultStyle(const Style& style)

  Sets the default style for all subsequent combination boxes.

  style
    Use the styles provided by IBaseComboBox Styles to specify the default 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

anyData

      public:
      static const Style anyData

  Sets the combination box entry field to accept text that is a mixture of SBCS and DBCS characters.

  Note: If the text contains both single-byte and double-byte characters and will be converted from an ASCII code page into an EBCDIC code page, this style causes an entry field to ignore accounting for shift-in and shift-out characters that would be introduced into its text. This style is the opposite of mixedData.

Supported Platforms

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

autoScroll

      public:
      static const Style autoScroll

  If the user tries to move off the end of a line, the entry field automatically scrolls one-third the width of the window in the appropriate direction.

Supported Platforms

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

border3D

      public:
      static const Style border3D

  Adds an etched 3D border to the control.

Supported Platforms

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

Windows Considerations

  This style is always present in the Windows NT and Windows 95 environments.

classDefaultStyle

      public:
      static const Style classDefaultStyle

  Provides the original default style for this class, which is the following: IBaseComboBox::simpleType | IBaseComboBox::anyData | IBaseComboBox::border3D | IBaseComboBox::autoScroll | IWindow::visible.

Supported Platforms

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

dbcsData

      public:
      static const Style dbcsData

  Sets the combination box's entry field to accept double-byte characters only.

Supported Platforms

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

dropDownType

      public:
      static const Style dropDownType

  Specifies the drop-down variation of the combination box, which is the same as simpleType except that the list box control is hidden until the user requests that it be displayed.

Supported Platforms

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

horizontalScroll

      public:
      static const Style horizontalScroll

  Provides horizontal scrolling for the list box control.

Supported Platforms

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

mixedData

      public:
      static const Style mixedData

  Sets the combination box's entry field to accept text that is a mixture of SBCS and DBCS characters. Conversion from an ASCII DBCS code page to an EBCDIC DBCS code page can result in a possible increase in the length of the data because of the addition of shift in/shift out (SI/SO) characters, but it will not exceed the text limit of the entry field.
  Note: This style is the opposite of anyData.

Supported Platforms

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

oemData

      public:
      static const Style oemData

  Allows Windows to properly convert the text into a specific character set when a new code page is used.

Supported Platforms

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

readOnlyDropDownType

      public:
      static const Style readOnlyDropDownType

  Specifies the drop-down list variation of the combination box. The drop-down list does not allow a user to type information into the entry field. The drop-down list only displays one item in the entry field until the user causes the display of the list box control to make alternative selections in the list box. The entry field control is replaced by a static control that displays the current selection from the list box.

Supported Platforms

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

sbcsData

      public:
      static const Style sbcsData

  Sets the combination box's entry field to accept single-byte characters only.

Supported Platforms

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

simpleType

      public:
      static const Style simpleType

  Specifies that both the entry field control and the list box control are visible. When the selection changes in the list box control, the text of the selected item in the list box control is placed in the entry field. Also, the user can select an item from the list box control by typing a portion of the item into the entry field. The entry field is filled with the closest match from the list box.

Supported Platforms

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

### Text Limit

Use these members to set and query the text limit of the entry field.

limit

      public:
      virtual unsigned long limit() const

  Returns the length, in bytes, of the longest text the entry field can hold.
  Note: The default value for the limit differs from system to system in accordance with the look-and-feel of that system. If your application requires a specific limit for an entry field, you must set that limit using setLimit to ensure portability of your application.

Supported Platforms

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

setLimit

  Sets the maximum number of bytes the entry field can contain.

  The calcMinimumSize function uses the text limit to determine the minimum size of the entry field.
  Note: The default value for the limit differs from system to system in accordance with the look-and-feel of that system. If your application requires a specific limit for an entry field, you must set that limit using setLimit to ensure portability of your application.

  Overload 1

      public:
      virtual IBaseComboBox& setLimit(unsigned long textLimit)

Supported Platforms

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

  Overload 2

      public:
      virtual IBaseComboBox&
        setLimit( const IResourceId& textLimit )

Supported Platforms

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

### Type Members

Use these members to query the type of the combination box. The types correspond to similarly named styles.

type

      public:
      ControlType type() const

  Returns the ControlType enumerator for the type of combination box.

Supported Platforms

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

### Window Positioning

Use these members to set and query the size and position of windows.

nativeRect

      public:
      virtual IRectangle nativeRect() const

  Returns a rectangle representing the position and size of the window. Unlike IWindow::rect, this function always returns the position in the native GUI orientation.

Supported Platforms

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

Portability Considerations

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

position

      public:
      virtual IPoint position() const

  Returns the combination box window's position using the coordinate system specified by the application.

Supported Platforms

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

Portability Considerations

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

size

      public:
      virtual ISize size() const

  Returns the current size of the combination box.

Supported Platforms

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

Portability Considerations

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

### Miscellaneous Members

#### AIX Considerations

  The IBaseComboBox constructor creates objects of this class using several Motif widgets. An XmForm widget is created with XmText, XmScrolledWindow, and XmList children. If the IBaseComboBox object has the dropDownType or the readOnlyDropDownType styles, an XmArrowButton is also created as a child of the XmForm widget. IWindow::handle returns the handle of the XmText widget.
  Note: The IBaseComboBox member functions use 0-based indexes, rather than the 1-based indexes used by the Motif XmList functions.

  The behavior of an IBaseComboBox object is provided by private callbacks and a default handler. The IBaseComboBox class uses a default handler attached to the IBaseComboBox object. Therefore, attach user-defined handlers to the IBaseComboBox rather than to its owner window. Doing so enables events to be dispatched to user-defined handlers before the default handler.

  Handlers derived from IEditVerifyHandler can be attached to IBaseComboBox objects.

#### OS/2 Considerations

  The parent of an IBaseComboBox should not set the IWindow::clipChildren style. This style prevents the OS/2 operating system from painting a small region below the list box portion of the IBaseComboBox object.

itemChangedId

      public:
      static INotificationId const itemChangedId

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

  This ID is only used for collection view combination 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 combination box is changed.

  This ID is only used for collection view combination boxes.

Supported Platforms

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

### IBaseComboBox - Enumerations

ControlType

      enum ControlType { simple,
                         dropDown,
                         dropDownList,
                         readOnlyDropDown=dropDownList }

  Use these enumerators to specify the types of combination boxes:

  simple
    Specifies that both the entry field control and the list box control are visible.

    When the user selects an item in the list box, the IComboBox object places the text of the selected item in the entry field. The user can also select an item in the list box by typing a portion of the item into the entry field. IComboBox completes the entry with the closest matching item in the list box.

  dropDown
    Specifies the drop-down variation of the combination box. In addition to all of the properties of a simple combination box control, the drop-down list box is hidden until the user requests that it be displayed.
  readOnlyDropDown
    Specifies the read-only drop-down variation of the combination box. The read-only drop-down does not let a user type information into the entry field.

Supported Platforms

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

SearchType

      enum SearchType { prefix,
                        substring,
                        exactMatch }

  Use these enumerators to specify the type of search:

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

Supported Platforms

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

### IBaseComboBox - Inherited Member Functions and Data

#### Inherited Public Functions

  IControl

  -     virtual ~IControl()

  IEntryField

  -     virtual ~IEntryField()

  -     Alignment alignment() const

  -     CharType charType() const

  -     virtual IEntryField& clear(unsigned long timestamp = 0)

  -     virtual IEntryField& copy(unsigned long timestamp = 0)

  -     unsigned long cursorPosition() const

  -     virtual IEntryField& cut(unsigned long timestamp = 0)

  -     virtual IEntryField& disable()

  -     virtual IEntryField& disableAutoScroll()

  -     virtual IEntryField& disableAutoTab()

  -     virtual IEntryField& disableCommand()

  -     virtual IEntryField& disableDataUpdate()

  -     virtual IEntryField& disableInsertMode()

  -     virtual IEntryField& disableMargin()

  -     virtual IEntryField& discard()

  -     virtual IEntryField& enable(bool enable = true)

  -     virtual IEntryField& enableAutoScroll(bool enable = true)

  -     virtual IEntryField& enableAutoTab(bool enable = true)

  -     virtual IEntryField& enableCommand(bool enable = true)

  -     virtual IEntryField& enableDataUpdate(bool update = true)

  -     virtual IEntryField& enableInsertMode(bool insert = true)

  -     virtual IEntryField& enableMargin(bool enable = true)

  -     virtual IEntryField& enableNotification(bool enable = true)

  -     bool hasSelectedText() const

  -     bool hasTextChanged() const

  -     IEntryField(const IWindowHandle& handle)

  -     IEntryField( unsigned long id,
                     IWindow* parent,
                     IWindow* owner,
                     const IRectangle& initial = IRectangle ( ),
                     const Style& style = defaultStyle ( ) )

  -     IEntryField(unsigned long id, IWindow* parent)

  -     bool isAutoScroll() const

  -     bool isAutoTab() const

  -     bool isCommand() const

  -     bool isEmpty() const

  -     bool isInsertMode() const

  -     bool isMargin() const

  -     unsigned long leftIndex() const

  -     virtual IEntryField& paste()

  -     virtual IEntryField& removeAll()

  -     virtual IEntryField& resetTextChangedFlag()

  -     IRange selectedRange() const

  -     IString selectedText() const

  -     unsigned long selectedTextLength() const

  -     virtual IEntryField&
          selectRange( const IRange& range = IRange ( 0 , end ),
                       unsigned long timestamp = 0 )

  -     virtual IEntryField& setAlignment(Alignment alignment)

  -     virtual IEntryField& setCharType(CharType type)

  -     virtual IEntryField&
          setCursorPosition( unsigned long newCursorPos )

  -     virtual IEntryField& setLeftIndex(unsigned long index)

  -     virtual IEntryField& setLimit(const IResourceId& textLimit)

  -     virtual IEntryField& setLimit(unsigned long textLimit)

  -     virtual IEntryField& setText(const char* text)

  -     virtual IEntryField& setText(const IResourceId& text)

  -     virtual IEntryField&
          setTextChangedFlag( bool changed = true )

  -     virtual IString text() const

  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

  ITextControl

  -     virtual ~ITextControl()

  -     static bool clipboardHasTextFormat()

  -     virtual ISize displaySize(const char* text = 0) const

  -     virtual ITextControl&
          setLayoutDistorted( unsigned long layoutAttributeOn,
                              unsigned long layoutAttributeOff )

  -     virtual ITextControl& setText(const IResourceId& text)

  -     virtual ITextControl& setText(const char* text)

  -     virtual unsigned long textLength() 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 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 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(unsigned long identifier, IWindow* parent)

  -     IWindow(const IWindowHandle& handle)

  -     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 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 IWindow&
          positionBehindSibling( const IWindowHandle& siblingWindow )

  -     virtual IWindow& positionBehindSiblings()

  -     virtual IWindow& positionOnSiblings()

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

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

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

  -     virtual IPresSpaceHandle presSpace() const

  -     virtual IRectangle rect() const

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

  -     virtual IWindow& refresh(RefreshType type = paintAll)

  -     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( 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

  -     virtual IEventResult sendEvent(const IEvent& event) 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 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 )

  -     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

  IEntryField

  -     static const Style autoTab

  -     static const Style centerAlign

  -     static INotificationId const characterTypeId

  -     static const Style command

  -     static INotificationId const dataUpdateId

  -     static const long end

  -     static INotificationId const insertModeId

  -     static const Style leftAlign

  -     static INotificationId const limitId

  -     static const Style margin

  -     static const Style readOnly

  -     static const Style rightAlign

  -     static const Style unreadable

  ITextControl

  -     static INotificationId const textId

#### 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,
                  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,
                  const char* windowClass,
                  const IWindow* parent,
                  const IWindow* owner,
                  const IRectangle& initRect,
                  const void* ctlData,
                  const void* presParams,
                  IWindow::SiblingOrder ordering = defaultOrdering ( ) )

  -     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,
                  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 )

  -     IWindow& defaultProcedure(IEvent& event)

  -     bool deleteIsInProcess() const

  -     bool dispatch(IEvent& event)

  -     virtual unsigned long extendedStyle() const

  -     bool isBoundToMessageQueue() const

  -     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,
                          const IInterest& interest )

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

  IControl

  -     IControl()

  IEntryField

  -     IEntryField()

  -     IEntryField&
          initialize( unsigned long style,
                      const IWindowHandle& wh )

  -     virtual bool isDragStarting(IEvent& event)

  -     virtual bool passEventToOwner(IEvent& event)

  -     virtual IEntryField&
          setLayoutDistorted( unsigned long layoutAttributeOn,
                              unsigned long layoutAttributeOff )

  -     virtual IEntryField& setStyle(unsigned long style)

  ITextControl

  -     ITextControl()

#### Inherited Protected Data

  - None