Like other composite widgets, a main-window widget manages the geometry of
its children.
In order to manage its children correctly, a main-window widget must know which widget is the menu bar, which widget is the work region, and which widgets are the scroll bars. The setAreas:horizontalScrollbar:verticalScrollbar:workRegion: message explicitly tells the main window which of its child widgets are to be used for these purposes. In the following example, an empty menu bar and a drawing area widget are created as children of the main window. The setAreas: message is sent to the main window to explicitly set menuBar as the main window's menu bar, and drawingArea as the main window's work region. Because no scroll bars are being defined by the application, nil is passed in for the scroll bar arguments. For more information on menus and menu bars, see Menus.
| shell main menuBar drawingArea | shell := CwTopLevelShell createApplicationShell: 'shell' argBlock: nil.
main := shell createMainWindow: 'main' argBlock: nil. main manageChild.
menuBar := main createSimpleMenuBar: 'menu' argBlock: [:w | w buttons: #('')]. menuBar manageChild.
drawingArea := main createDrawingArea: 'draw' argBlock: [:w | w width: 300; height: 300]. drawingArea manageChild.
main setAreas: menuBar horizontalScrollbar: nil verticalScrollbar: nil workRegion: drawingArea. shell realizeWidget.