BBjSysGui::addWindow

Description

Creates a top level GUI window in the current or specified context, depending on the syntax used.

Syntax

Return Value

Method

BBjTopLevelWindow

addWindow(int x, int y, int width, int height, string title)

BBjTopLevelWindow

addWindow(int x, int y, int width, int height, string title, string flags)

BBjTopLevelWindow

addWindow(int x, int y, int width, int height, string title, string flags, string event_mask)

BBjTopLevelWindow

addWindow(int context, int x, int y, int width, int height, string title)

BBjTopLevelWindow

addWindow(int context, int x, int y, int width, int height, string title, string flags)

BBjTopLevelWindow

addWindow(int context, int x, int y, int width, int height, string title, string flags, string event_mask)

Parameters

Variable

Description

context

Specifies a new SYSGUI device context in which to create the window.

x

Horizontal position of the upper-left corner of the window in current units.

y

Vertical position of the upper-left corner of the window in current units. This value does not take into account the space taken by menus or title bars. If a window is defined with a menu and a title bar and its y parameter is set to zero, the menu and title bar will not be visible when a BBj program displays the window. The y parameter should be adjusted by about 20 pixels to account for a menu and about 20 pixels for a title bar. For example, if a window has a menu and a title bar and the y parameter is set to 60, the top of the title bar will appear about 20 pixels from the top of the screen when a BBj program displays the window. See the Remarks section below.

width

Width of the window in current units.

height

Height of the window in current units.

title

The title of the new window. This is the initial title and can be changed at any time with the 'TITLE' mnemonic.

flags

Window flags, as follows:

 

Flag

Description

 

$00000001$

Allows the window to be resized.

 

$00000002$

Includes a close box with the window.

 

$00000004$

Causes a horizontal scroll bar to appear whenever the window is resized to be smaller than its initial size and setTrack(0) is specified.

 

$00000008$

Causes a vertical scroll bar to appear whenever the window is resized to be smaller than its initial size and setTrack(0) is specified.

 

$00000010$

Sets the window to be initially invisible.

 

$00000020$

Sets the window to be initially disabled.

 

$00000080$

Allows the window to be maximized or minimized.

 

$00000100$

Sets the window to be initially minimized.

 

$00000800$

Include menu bar. Creates a menu bar.

 

$00001000$

Sets the window to be initially maximized.

 

$00002000$

Prevents the separator line between the menu and client area of a window from being drawn

 

$00010000$

Activates keyboard navigation in the window. If this flag is specified, key pressed ("t") events for arrow keys and the tab key will not be reported.

 

$00020000$

Always positions the window on top of other windows.

 

$00040000$

Creates a border around the dialog.

 

$00080000$

Sets the window to behave as a dialog.

 

$00100000$

Automatically arranges all controls and child windows placed in the window to fit.

 

$00400000$

Allows use of a custom color palette. This provides a more accurate display of colors in bitmapped images.

 

$00800000$

Sets the <Enter> key to behave as a <Tab> key.

 

$01000000$

Creates the window without a title bar.

 

$04000000$

Sets the window to automatically manage SYSCOLOR events.

 

$08000000$

In BBj 8.0 and higher, causes the window to enforce unique control names. See BBjWindow::getControl.

 

$10000000$

In BBj 15.0 and higher, causes the window to report all mouse events for all controls.

 

$20000000$

In BBj 15.0 and higher, causes the window to report all keypress events for all controls.

 

$40000000$

Sets the window to be group-modal within an MDI group.

 

$80000000$

In BBj 17.0 and higher, creates the window with 'TRACK'(0) instead of the default 'TRACK'(1).

event_mask

Event masks to be applied to the window:

 

Flag

Description

 

$80000000$

User changed system colors.

 

$40000000$

Window Activation.

 

$20000000$

Right mouse button down.

 

$02000000$

Check or uncheck or check box or radio button.

 

$01000000$

Click or double click on list item.

 

None -

Always sent Close box operated.

 

$00400000$

Edit or list edit modified.

 

$00800000$

Edit, list edit, or text edit focus change.

 

$00000400$

Key pressed.

 

None -

Always sent Menu selection made.

 

$00000200$

Mouse button double click.

 

$00000020$

Mouse wheel scroll.

 

$00000040$

Mouse button down.

 

$00000080$

Mouse button up.

 

$00000100$

Mouse moved.

 

$10000000$

Mouse enter or exit control or window.

 

None -

Always sent Push button operated.

 

$00100000$

Scroll bar position changed.

 

None -

Always sent Tool button operated.

 

$00000008$

Window resized.

 

$00000004$

Window focus change

 

$00000001$

Popup request.

 

None -

Always Sent Popup Menu Selection.

Return Value

All versions of the addWindow method return a BBjWindow object.

Remarks

In BBj 15 and higher, the LEGACY_WINDOW_POSITION !COMPAT setting can be set to TRUE to position windows according to the documented Visual PRO/5 rules ("The x,y,w,h bounding rectangle of a window describes the location of the inside (the usable drawing area or client area) of the window. Note that if a window is placed at (0,0), the title bar will not be visible."). By default, BBj positions windows according to the rules defined by Java and the host operating system. This might differ from Visual PRO/5 by 20-30 pixels vertically and several pixels horizontally.

Example

rem ' BBjSysGui::addWindow
sysgui = unt
open (sysgui)"X0"
sysgui! = bbjapi().getSysGui()
window! = sysgui!.addWindow(300,300,400,400,"BBjSysGui::addWindow",$00010003$)
window!.setCallback(window!.ON_CLOSE,"eoj")
legacy$ = iff(pos("TRUE"=stbl("!COMPAT","LEGACY_WINDOW_POSITION")),$0004$,$0000$)
legacy! = window!.addCheckBox(101,25,25,350,25,"LEGACY_WINDOW_POSITION",legacy$)
legacy!.setCallback(legacy!.ON_CHECK_ON,"legacy_true")
legacy!.setCallback(legacy!.ON_CHECK_OFF,"legacy_false")
resizable! = window!.addCheckBox(102,25,75,350,25,"Resizable",$$)
resizable!.setCallback(resizable!.ON_CHECK_ON,"resizable_on")
resizable!.setCallback(resizable!.ON_CHECK_OFF,"resizable_off")
closebox! = window!.addCheckBox(103,25,125,350,25,"Close Box",$$)
closebox!.setCallback(closebox!.ON_CHECK_ON,"closebox_on")
closebox!.setCallback(closebox!.ON_CHECK_OFF,"closebox_off")
menubar! = window!.addCheckBox(104,25,175,350,25,"Menu Bar",$$)
menubar!.setCallback(menubar!.ON_CHECK_ON,"menubar_on")
menubar!.setCallback(menubar!.ON_CHECK_OFF,"menubar_off")
titlebar! = window!.addCheckBox(105,25,225,350,25,"Title Bar",$0004$)
titlebar!.setCallback(titlebar!.ON_CHECK_ON,"titlebar_on")
titlebar!.setCallback(titlebar!.ON_CHECK_OFF,"titlebar_off")
addWindow! = window!.addButton(1,25,350,350,25,"addWindow",$$)
addWindow!.setCallback(addWindow!.ON_BUTTON_PUSH,"addWindow")
x = 100
y = 100
w = 200
h = 200
title$ = "window"
flags$ = $00000000$
process_events
eoj:
release
legacy_true:
print stbl("!COMPAT","LEGACY_WINDOW_POSITION=TRUE")
return
legacy_false:
print stbl("!COMPAT","LEGACY_WINDOW_POSITION=FALSE")
return
resizable_on:
flags$ = ior(flags$,$00000001$)
print hta(flags$)
return
resizable_off:
flags$ = and(flags$,not($00000001$))
print hta(flags$)
return
closebox_on:
flags$ = ior(flags$,$00000002$)
print hta(flags$)
return
closebox_off:
flags$ = and(flags$,not($00000002$))
print hta(flags$)
return
menubar_on:
flags$ = ior(flags$,$00000800$)
print hta(flags$)
return
menubar_off:
flags$ = and(flags$,not($00000800$))
print hta(flags$)
return
titlebar_on: 
flags$ = and(flags$,not($01000000$))
print hta(flags$)
return
titlebar_off:
flags$ = ior(flags$,$01000000$)
print hta(flags$)
return
addWindow:
context = sysgui!.getAvailableContext()
addWindow! = sysgui!.addWindow(context,x,y,w,h,title$,flags$)
addWindow!.setCallback(addWindow!.ON_CLOSE,"destroy")
destroy! = addWindow!.addButton(2,25,25,100,25,"Destroy",$$)
destroy!.setCallback(destroy!.ON_BUTTON_PUSH,"destroy")
return
destroy:
event! = sysgui!.getLastEvent()
control! = event!.getControl()
if control!.isDestroyed() then return
window! = control!.getParentWindow()
if window!.isDestroyed() then return
window!.destroy()
return

See Also

BBjAPI

BBjWindow

WINDOW Mnemonic - Create a SYSGUI Window

Object Variables

EVENTMASK Mnemonic - Change Event Mask

See the BBj Object Diagram for an illustration of the relationship between BBj Objects.



______________________________________________________________________________________

Copyright BASIS International Ltd. BBj®, Visual PRO/5®, PRO/5®, and BBx® are registered trademarks.