### IMessageWindow

  IMessageWindow is a customizable window for displaying simple to complex messages in your application. An IMessageWindow can be made to look similar to an IMessageBox using predefined settings, or can be customized by replacing or adding to components on the message window. The default message window contains the following:

  - an image in the upper left
  - message text in the center
  - a button area along the bottom
  - message ID text in the lower right

  Through various mechanisms, you can customize or replace any of these areas on the message window. In contrast, IMessageBox does not provide the message ID text area and is not customizable. Use IMessageWindow instead of IMessageBox when you want to take advantage of its additional capabilities. The appearance of the message window is platform independent, so it may look slightly different than the native controls supported by IMessageBox.

  You can use IMessageWindow without customization. There are five predefined message types, in the EMessageType enumeration, that you can specify on the IMessageWindow constructor that give the message window a certain image, certain buttons, and an appropriate beep. Using one of these predefined types gives you a message window that looks similar to an IMessageBox object, but the range of these types in IMessageWindow is not as great as in the IMessageBox class.

  In addition, there are degrees of customization you can use with IMessageWindow. The simplest customization is to create the message window with the kUserDefinedMessage type, which indicates no image and no buttons, and add your own image and buttons using setMessageImage and addButton, respectively. With these functions you can specify a predefined image or button and add them to the message window. This allows you to customize without deriving from IMessageWindow. You can also create your own buttons and have them appear on the message window by creating them with the parent window returned by buttonParent. All buttons are added left to right in the order that they are created. You can call addButton even if you used a message type other than kUserDefinedMessage on the constructor, and any buttons you add are placed to the right of the existing buttons. There is no limit on the number of buttons you can add, but take care not to impact the usability of your message window with too many buttons. If you use addButton to add a predefined button that already exists on the message window, the previous instance of the button is replaced.

  You can obtain a pointer to a predefined button you have added to the message window by calling the button function and passing one of the EButton enumeration. You can use the pointer returned to manipulate the appearance of the button, for example, by changing the text. One reason you may want to change the default buttons or add your own buttons to the message window is so you can provide translated text for them. The predefined button text is not translated into all languages on whose platforms you may want to run your application.

  Set the styles of buttons you add or change to obtain the desired behavior for your message window. If you want a button to be the default, you must give it the IButton::defaultButton style. Likewise, if you want a help button, you must give it the IPushButton::help and IButton::noPointerFocus styles. By default, the message window will do this for buttons you add with the kHelp button type.

  For further customization, you can derive from IMessageWindow and override one or more functions to provide your own controls to be placed in the message window. The message window allows you to provide controls for the image, the message text, and the message ID by overriding createMessageImage, createMessageText, and createMessageIdText, respectively. You must use the deferClientCreation style for your overrides of these functions to be called. The overridden functions are called the first time one of the following functions is called:

  - addButton
  - button
  - buttonParent
  - show
  - showModally

  You can provide any IBitmapControl or derived class for the image, and any ITextControl or derived class for the message text and message ID. The default image is an IIconControl, and the default message text and message ID are IStaticText controls. Any control you replace is positioned in the same place in the message window client area as a predefined control would be placed. However, you define the characteristics of the control such as minimum size, image, text, scrollability, or color.

  Note that you can still add or replace buttons if you derive from IMessageWindow by using the addButton interface.

  The most comprehensive way to customize IMessageWindow is to derive your own class and replace the entire client area by overriding createClient. You must use the deferClientCreation style for your override of createClient to be called. The function is called the first time one of the following functions is called:

  - addButton
  - button
  - buttonParent
  - show
  - showModally

  Whatever you return from this function is placed in the client area with no changes. You can obtain the default image, message text, and message ID controls to place in your client area by calling createMessageImage, createMessageText, or createMessageIdText. The characteristics of the controls returned from these functions are dependent on the message type indicated in the constructor and previous calls to setMessageText, setMessageImage, and setMessageId. To determine which buttons to place in your client area or any other characteristics you may want to add, call messageType to obtain the message type specified on the constructor.

  If you override createClient, you are responsible for placing and sizing the message window. Otherwise, the message window is sized based on the minimum sizes of all the contained controls and is centered on the desktop.

  Since IMessageWindow derives from IFrameWindow, you can use inherited functions and styles to manage the message window. The default style of the message window is a combination of IFrameWindow styles that give it an appearance similar to the native message box. You can override this appearance by providing a combination of IFrameWindow styles on the message window constructor.

  You must use an ICommandHandler to handle processing for buttons on your message window. By default, the message window does not do anything when any button is clicked. You should write your handler so that the message window is dismissed and closed when the appropriate button is pressed. The IDs for the predefined buttons provided by IMessageWindow are listed in the EButton enumeration.

  You provide help for your message window just as you would any other frame window. See the IHelpWindow class for more information.

### IMessageWindow - Member Functions and Data by Group

### Constructors & Destructor

Constructors for the message window.

~IMessageWindow

      public:
      virtual ~IMessageWindow()

Supported Platforms

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

IMessageWindow

      public:
      IMessageWindow( unsigned long id = IC_DEFAULT_FRAME_ID,
                      IWindow* owner = 0,
                      EMessageType type = kInformationMessage,
                      const Style& style = defaultStyle ( ) )

  Constructs an IMessageWindow from an ID, owner, message type, and style. The parent of the message window is always the desktop window.

Supported Platforms

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

### Buttons

Information about buttons used in the message window.

addButton

      public:
      virtual IPushButton*
        addButton( EButton buttonType,
                   bool isDefaultButton = false )

  Adds a push button to the message window. The button is added to the right of any push buttons already on the message window as a result of using one of the EMessageType enumerators on construction or previous calls to addButton. If you do not want any push buttons on the message window by default, then use the kUserDefinedMessage message type on construction.

Supported Platforms

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

button

      public:
      IPushButton* button(EButton buttonType)

  Returns a pointer to the push button with the specified EButton enumerators as an id. If you have created and added a button with this id, the pointer returned will be your button. Otherwise, it will be one of the default push buttons. If the message window does not contain the push button you request, a null pointer is returned.

  You can use this pointer to manipulate the button's attributes, for example, the text.

Supported Platforms

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

buttonParent

      public:
      virtual IWindow* buttonParent()

  Returns the window to be used as a parent for creating buttons to be added to the message window.

Supported Platforms

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

### Customization

Use these members to customize the message window.

createClient

      protected:
      virtual IWindow* createClient()

  Override this function to create and customize the client window of the message window yourself. You must use the deferClientCreation style for your override to be called. The function is called the first time one of the following functions is called:

  - addButton
  - button
  - buttonParent
  - show
  - showModally

  In this function you are responsible for building the message window based on criteria specific to your application and/or the EMessageType enumerator specified on construction. You can get the message type by calling the messageType function.

  The window you return from this function is placed in the client area of the message window with no changes. You control the amount and type of customization for your message window with the following options:

  - If you have not overridden the createMessageIdText function, you can call it to return the default control for holding the message id.
  - Likewise, if you have not overridden the createMessageImage or createMessageText functions, you can call them to return the default controls for the message image and the message text, respectively.
  - You can override the any of createMessageIdText, createMessageImage, or createMessageText to return a control of your choosing. You would typically do this if you have not overridden createClient. See those functions for discussion about when and how you would override them.

Supported Platforms

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

createMessageIdText

      protected:
      virtual ITextControl*
        createMessageIdText( IWindow* parentOwner )

  Override this function to return a text control for the message window to place the message ID text into. By default, the message window creates a static text control to contain the message ID. The message ID control is placed in the lower right corner of the default message window client area.

  If you override createClient, you would not typically override this function. Call the default implementation to obtain a pointer to the default static text control to place in your own customized client window.

  This function is called the first time one of the following functions is called:

  - addButton
  - button
  - buttonParent
  - show
  - showModally

Supported Platforms

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

createMessageImage

      protected:
      virtual IBitmapControl*
        createMessageImage( IWindow* parentOwner )

  Override this function to return a bitmap control for the message window to place in its client area. By default, the bitmap control is placed in the upper left corner of the default message window client area.

  If you override createClient, you would not typically override this function. Call the default implementation to obtain a pointer to the default bitmap control to place in your own customized client window.

  This function is called the first time one of the following functions is called:

  - addButton
  - button
  - buttonParent
  - show
  - showModally

Supported Platforms

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

createMessageText

      protected:
      virtual ITextControl*
        createMessageText( IWindow* parentOwner )

  Override this function to return a text control for the message window to place the message text into. By default, the message window creates a static text control to contain the message text. The message text control is placed in the center of the default message window client area above the buttons.

  If you override createClient, you would not typically override this function. Call the default implementation to obtain a pointer to the default static text control to place in your own customized client window.

  This function is called the first time one of the following functions is called:

  - addButton
  - button
  - buttonParent
  - show
  - showModally

Supported Platforms

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

### Images

Use these functions to set the image used in the message window.

setMessageImage

  Sets the message bitmap.

  Overload 1

      public:
      virtual IMessageWindow& setMessageImage(EImageType image)

  Sets the message bitmap using an image type from the EImageType enumeration.

Supported Platforms

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

  Overload 2

      public:
      virtual IMessageWindow&
        setMessageImage( const IBitmapHandle& bitmapHandle )

  Sets the message bitmap using an IBitmapHandle.

Supported Platforms

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

### Message Id

These functions set and get the message ID to be displayed.

messageId

      public:
      IText messageId() const

  Returns the message id text of the message window.

Supported Platforms

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

setMessageId

  Sets the message ID text. The message ID area is limited to twelve characters and will be truncated if the text is longer. If you want to provide a custom control for the message ID that will not have this limitation, you can override the createMessageIdText function.

  Overload 1

      public:
      virtual IMessageWindow&
        setMessageId( const IText& messageId )

  Sets the message ID text using an IText control.

Supported Platforms

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

  Overload 2

      public:
      virtual IMessageWindow&
        setMessageId( const IResourceId& messageId )

  Sets the message ID text using an IResourceId.

Supported Platforms

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

### Message Text

These functions set and get the message text.

messageText

      public:
      IText messageText() const

  Returns the message text of the message window.

Supported Platforms

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

setMessageText

  Sets the message text.

  Overload 1

      public:
      virtual IMessageWindow&
        setMessageText( const IText& message )

  Sets the message text using an IText control.

Supported Platforms

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

  Overload 2

      public:
      virtual IMessageWindow&
        setMessageText( const IResourceId& message )

  Sets the message text using an IResourceId.

Supported Platforms

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

  Overload 3

      public:
      virtual IMessageWindow&
        setMessageText( const IException& exception )

  Sets the message text using an IException. The text for the message is the text of the exception.

Supported Platforms

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

### Message Type

This function returns the message type.

messageType

      public:
      virtual EMessageType messageType() const

  Returns the EMessageType passed in on the IMessageWindow constructor.

Supported Platforms

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

### Showing the Message Window

Use these functions to show the message window.

show

      public:
      virtual IMessageWindow& show(bool showWindow = true)

  Shows or hides the message window. If you created the message window using the deferClientCreation style, the message window will be initialized when this function is called and your virtual function overrides (if any) will be called.

Supported Platforms

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

showModally

      public:
      virtual unsigned long showModally()

  Shows the message window modal to its owner. If you created the message window using the deferClientCreation style, the message window will be initialized when this function is called and your virtual function overrides (if any) will be called.

Supported Platforms

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

### Styles

Use these functions to set and get the style associated with the message window.

defaultStyle

      public:
      static Style defaultStyle()

  Returns the default style. This style is a combination of IFrameWindow::dialogBorder, IFrameWindow::windowList, IFrameWindow::appDBCSStatus, IFrameWindow::titleBar, IFrameWindow::systemMenu, and IFrameWindow::dialogBackground unless you have changed the style using setDefaultStyle.

Supported Platforms

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

setDefaultStyle

      public:
      static void setDefaultStyle(const Style& style)

  Sets the default style for all subsequent message windows.

Supported Platforms

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

deferClientCreation

      public:
      static const Style deferClientCreation

  Indicates that IMessageWindow should not create the client window and that the client area will be created by a subclass that has overridden the createClient function. When you use this style, the IMessageWindow will call the createClient function the first time one of the following functions is called:

  - addButton
  - button
  - buttonParent
  - show
  - showModally

Supported Platforms

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

### IMessageWindow - Enumerations

EButton

      enum EButton { kEnter=IC_ID_ENTER,
                     kOk=IC_ID_OK,
                     kCancel=IC_ID_CANCEL,
                     kAbort=IC_ID_ABORT,
                     kRetry=IC_ID_RETRY,
                     kIgnore=IC_ID_IGNORE,
                     kYes=IC_ID_YES,
                     kNo=IC_ID_NO,
                     kHelp=IC_ID_HELP }

  Use these enumerators to specify the type of button requested on a call to addButton.

Supported Platforms

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

EImageType

      enum EImageType { kInformationImage,
                        kQuestionImage,
                        kWarningImage,
                        kErrorImage }

  Use these enumerators to specify an image on the setMessageImage function.

  kInformationImage
    Provides an information image on the message window.
  kQuestionImage
    Provides a question image on the message window.
  kWarningImage
    Provides a warning image on the message window.
  kErrorImage
    Provides an error image on the message window.

Supported Platforms

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

EMessageType

      enum EMessageType { kUserDefinedMessage,
                          kInformationMessage,
                          kWarningMessage,
                          kConfirmationMessage,
                          kRetryMessage,
                          kCatastrophicMessage }

  Use these enumerators to specify a message type on the IMessageWindow constructor. You can retrieve the message type specified on the constructor using the messageType function. Each type of message provides an appropriate beep.

  kUserDefinedMessage
    Provides a message window with no default image and no default buttons. You can add them yourself using addButton and setMessageImage.
  kInformationMessage
    Provides a message window with an information image and an OK button.
  kWarningMessage
    Provides a message window with a warning image and OK and cancel buttons.
  kConfirmationMessage
    Provides a message window with a question image and retry and cancel buttons.
  kRetryMessage
    Provides a message window with an error image and retry and cancel buttons.
  kCatastrophicMessage
    Provides a message window with an error image and an OK button.

Supported Platforms

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

### IMessageWindow - Inherited Member Functions and Data

#### Inherited Public Functions

  IFrameWindow

  -     virtual ~IFrameWindow()

  -     virtual IFrameWindow&
          addExtension( IWindow* newExtension,
                        Location location,
                        int widthOrHeight,
                        SeparatorType separator = thinLine )

  -     virtual IFrameWindow&
          addExtension( IWindow* newExtension,
                        Location location,
                        unsigned long widthOrHeight,
                        SeparatorType separator = thinLine )

  -     virtual IFrameWindow&
          addExtension( IWindow* newExtension,
                        Location location,
                        SeparatorType separator = thinLine )

  -     virtual IFrameWindow&
          addExtension( IWindow* newExtension,
                        Location location,
                        double percentage,
                        SeparatorType separator = thinLine )

  -     virtual IFrameWindow& addToWindowList()

  -     virtual IColor backgroundColor() const

  -     virtual IFrameWindow& beginFlashing()

  -     unsigned long borderHeight() const

  -     ISize borderSize() const

  -     unsigned long borderWidth() const

  -     virtual IWindow* client() const

  -     virtual IWindowHandle clientHandle() const

  -     virtual IRectangle
          clientRectFor( const IRectangle& frameRect ) const

  -     virtual IFrameWindow& close()

  -     IColorMap* colorMap() const

  -     virtual IArgList
          convertToArgList( const IBitFlag& style ) const

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

  -     virtual IWindowHandle defaultEmphasisButton() const

  -     static IWindow::SiblingOrder defaultOrdering()

  -     virtual IWindowHandle defaultPushButton() const

  -     virtual IColor disabledBackgroundColor() const

  -     virtual IFrameWindow& dismiss(unsigned long result = 0)

  -     virtual IFrameWindow&
          enableNotification( bool enable = true )

  -     virtual IFrameWindow& endFlashing()

  -     virtual IRectangle
          frameRectFor( const IRectangle& clientRect ) const

  -     virtual IWindowHandle
          handleFor( const Style& standardControl ) const

  -     virtual IWindowHandle handleForChildCreation() const

  -     virtual IPointerHandle icon() const

  -     IFrameWindow( unsigned long id = IC_DEFAULT_FRAME_ID,
                      FrameSource source = tryDialogResource )

  -     IFrameWindow(const IWindowHandle& hwnd)

  -     IFrameWindow( const IResourceId& resId,
                      IWindow* parent,
                      IWindow* owner,
                      const IRectangle& initRect,
                      const IFrameWindow::Style& style = defaultStyle ( ),
                      const char* title = 0 )

  -     IFrameWindow( const IFrameWindow::Style& style,
                      const IResourceId& resId = IC_DEFAULT_FRAME_ID )

  -     IFrameWindow( const IResourceId& resId,
                      IWindow* owner = 0,
                      FrameSource source = tryDialogResource )

  -     IFrameWindow( const IResourceId& resId,
                      IWindow* parent,
                      IWindow* owner,
                      FrameSource source = tryDialogResource )

  -     IFrameWindow( const char* title,
                      const IResourceId& resId = IC_DEFAULT_FRAME_ID,
                      const IFrameWindow::Style& style = defaultStyle ( ) )

  -     IFrameWindow( const IResourceId& resId,
                      const IFrameWindow::Style& style )

  -     virtual bool isAnExtension(const IWindow* window) const

  -     bool isFlashing() const

  -     bool isMaximized() const

  -     bool isMinimized() const

  -     bool isModal() const

  -     virtual IWindowHandle
          matchForMnemonic( unsigned short character ) const

  -     virtual IFrameWindow& maximize()

  -     virtual IRectangle maximizeRect() const

  -     virtual ISize maximumFrameSize() const

  -     virtual IFrameWindow& minimize()

  -     virtual IRectangle minimizeRect() const

  -     virtual ISize minimumFrameSize() const

  -     virtual IFrameWindow&
          moveSizeToClient( const IRectangle& clientRect )

  -     static IRectangle nextShellRect()

  -     virtual IFrameWindow&
          notifyOwner( unsigned long id,
                       ICommandEvent::Source source = ICommandEvent::unknown,
                       bool pointerDevice = false )

  -     virtual IFrameWindow&
          removeExtension( IWindow* extension,
                           bool updateDisplay = true )

  -     virtual IFrameWindow& removeFromWindowList()

  -     virtual IFrameWindow& resetBackgroundColor()

  -     virtual IFrameWindow& resetDisabledBackgroundColor()

  -     virtual IFrameWindow& restore()

  -     virtual IRectangle restoreRect() const

  -     virtual unsigned long result() const

  -     IFrameWindow& setBorderHeight(unsigned long cy)

  -     IFrameWindow&
          setBorderSize( unsigned long cx,
                         unsigned long cy )

  -     IFrameWindow& setBorderSize(const ISize& size)

  -     IFrameWindow& setBorderSize(unsigned long cxcy)

  -     IFrameWindow& setBorderWidth(unsigned long cx)

  -     virtual IFrameWindow& setClient(IWindow* newClient)

  -     virtual IFrameWindow& setColorMap(IColorMap* colorMap)

  -     static void
          setDefaultOrdering( IWindow::SiblingOrder ordering )

  -     virtual IFrameWindow&
          setDestroyOnClose( bool destroy = true )

  -     virtual IFrameWindow&
          setExtensionSize( IWindow* extension,
                            double widthOrHeight )

  -     virtual IFrameWindow&
          setExtensionSize( IWindow* extension,
                            unsigned long widthOrHeight )

  -     virtual IFrameWindow&
          setExtensionSize( IWindow* extension,
                            int widthOrHeight )

  -     virtual IWindow& setFont(const IFont& font)

  -     virtual IFrameWindow& setIcon(unsigned long iconResId)

  -     virtual IFrameWindow& setIcon(const IPointerHandle& icon)

  -     virtual IFrameWindow& setIcon(const IResourceId& iconResId)

  -     IFrameWindow&
          setLayoutDistorted( unsigned long layoutAttributesOn,
                              unsigned long layoutAttributesOff )

  -     virtual IFrameWindow&
          setMaximumFrameSize( const ISize& maximumFrameSize )

  -     virtual IFrameWindow&
          setMinimumFrameSize( const ISize& minimumFrameSize )

  -     virtual IFrameWindow&
          setRestoreRect( const IRectangle& rect )

  -     virtual IFrameWindow& setResult(unsigned long result)

  -     virtual IFrameWindow&
          setTitleText( const IResourceId& titleResId )

  -     virtual IFrameWindow& setTitleText(const char* titleText)

  -     IFrameWindow& setToolBarList(IToolBarList* toolBarList)

  -     virtual IFrameWindow& shareParentDBCSStatus()

  -     virtual IFrameWindow& show(bool showWindow = true)

  -     virtual IString titleText() const

  -     IToolBarList* toolBarList() const

  -     virtual IFrameWindow& update(bool forceUpdate = false)

  -     virtual IFrameWindow&
          useExtensionMinimumSize( IWindow* extension )

  -     bool usesDialogBackground() const

  -     bool willDestroyOnClose() 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

  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

  -     static DataHandle
          dataHandleWithKey( const char* dataKeyName )

  -     static SiblingOrder defaultOrdering()

  -     static IWindow* desktopWindow()

  -     virtual IWindow& disable()

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

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

  -     IWindow(const IWindowHandle& handle)

  -     virtual IRectangle layoutAdjustment() const

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

  -     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( 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 const IWindow& postEvent(const IEvent& event) 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& 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

  IFrameWindow

  -     static const Style accelerator

  -     static INotificationId const activateId

  -     static const Style alignNoAdjust

  -     static const Style animated

  -     static const Style appDBCSStatus

  -     static const Style border

  -     static const Style classDefaultStyle

  -     static INotificationId const closeId

  -     static INotificationId const deactivateId

  -     static const Style dialogBackground

  -     static const Style dialogBorder

  -     static const Style hideButton

  -     static const Style horizontalScroll

  -     static const Style maximizeButton

  -     static const Style maximized

  -     static const Style menuBar

  -     static const Style minimizeButton

  -     static const Style minimized

  -     static const Style minimizedIcon

  -     static const Style noMoveWithOwner

  -     static const Style shellPosition

  -     static const Style sizingBorder

  -     static const Style systemMenu

  -     static const Style systemModal

  -     static const Style titleBar

  -     static INotificationId const titleTextId

  -     static const Style verticalScroll

  -     static const Style windowList

  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

  IFrameWindow

  -     IFrameWindow& addDefaultHandler()

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

  -     IWindowHandle
          create( unsigned long id,
                  const char* title,
                  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 ( ) )

  -     IWindowHandle
          create( unsigned long id,
                  const char* title,
                  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 )

  -     IWindowHandle
          create( unsigned long id,
                  const char* title,
                  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 )

  -     IFrameExtensions* extensions() const

  -     unsigned findExtension(IWindow* window)

  -     IFrameWindow&
          initialize( const IResourceId& resId,
                      const Style& style,
                      IWindow* parent = 0,
                      IWindow* owner = 0,
                      const IRectangle& initRect = nextShellRect ( ),
                      const char* title = 0 )

  -     virtual bool passEventToOwner(IEvent& event)

  -     unsigned long
          registerFrameClass( const Style& style,
                              const IResourceId& resId )

  -     IFrameWindow& removeDefaultHandler()

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

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

  -     virtual IFrameWindow&
          setDefaultPushButton( const IWindowHandle& defaultPushButton )

  -     IFrameWindow& setExtensions(IFrameExtensions* extensions)

  -     IFrameWindow& start(const IWindowHandle& hwnd)

  -     IFrameWindow&
          tryToLoadDialog( const IResourceId& resId,
                           IWindow* parent = 0,
                           IWindow* owner = 0,
                           FrameSource source = tryDialogResource )

  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)

  -     virtual ISize calcMinimumSize() const

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

  -     IColor color(unsigned long colorArea) 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( unsigned long identifier,
                                  IWindow* parent )

  -     IWindow&
          startHandlingEventsFor( const IWindowHandle& windowHandle )

  -     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

#### Inherited Protected Data

  IFrameWindow

  -     static const Style deferCreation