
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, byte[] flags) |
BBjTopLevelWindow | addWindow(int x, int y, int width, int height, string title, byte[] flags, byte[] 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, byte[] flags) |
BBjTopLevelWindow | addWindow(int context, int x, int y, int width, int height, string title, byte[] flags, byte[] event_mask) |
BBjTopLevelWindow | addWindow(string title) |
BBjTopLevelWindow | addWindow(string title, byte[] flags) |
BBjTopLevelWindow | addWindow(string title, byte[] flags, byte[] event_mask) |
BBjTopLevelWindow | addWindow(int context, string title) |
BBjTopLevelWindow | addWindow(int context, string title, byte[] flags) |
BBjTopLevelWindow | addWindow(int context, byte[] flags, byte[] 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:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
event_mask |
Event masks to be applied to the window:
|
Return Value
All versions of the addWindow method return a BBjTopLevelWindow 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.
If the x, y, width, and height parameters are not specified, they're all initialized to 0. This is typically for use with DWC windows that dynamically arrange their contents (window creation flag $00100000$).
Example 1
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
Example 2: DWC Dynamic Flow Layout (BBj 22.01 and higher)
BBjSysGui::addWindow Example 2
rem ' hello.txt
sysgui = unt
open (sysgui)"X0"
bbjapi! = bbjapi()
sysgui! = bbjapi!.getSysGui()
flow = info(3,6)="6" and msgbox("Dynamic Flow Layout?",4+32+256)=6
flags$ = iff(flow,$00190083$,$00090083$)
title$ = "Hello"
if flow then
window! = sysgui!.addWindow(title$,flags$)
else
window! = sysgui!.addWindow(25,25,275,125,title$,flags$)
endif
window!.setCallback(bbjapi!.ON_CLOSE,"eoj")
if flow then
hello! = window!.addButton(1,"Hello!")
else
hello! = window!.addButton(1,25,25,100,25,"Hello!")
endif
hello!.focus()
hello!.setCallback(bbjapi!.ON_BUTTON_PUSH,"msgbox")
if flow then
goodbye! = window!.addButton(2,"Goodbye!")
else
goodbye! = window!.addButton(2,150,25,100,25,"Goodbye!")
endif
goodbye!.setCallback(bbjapi!.ON_BUTTON_PUSH,"eoj")
if flow then
console! = window!.addButton("Console")
else
console! = window!.addButton(3,25,75,100,25,"Console")
endif
console!.setCallback(bbjapi!.ON_BUTTON_PUSH,"console")
process_events
eoj:
release
msgbox:
i = msgbox(info(1,4),64,fnmode$(info(3,6)))
hello!.focus()
return
def fnmode$(mode$)
if mode$="0" then return "Fat Client"
if mode$="1" then return "Thin Client"
if mode$="2" then return "Java Applet"
if mode$="3" then return "Java Web Start"
if mode$="4" then return "JavaBBjBridge"
if mode$="5" then return "BUI (Browser)"
if mode$="6" then return "DWC (Browser)"
return mode$
fnend
console:
escape
return
See Also
WINDOW Mnemonic - Create a SYSGUI Window
EVENTMASK Mnemonic - Change Event Mask
See the BBj Object Diagram for an illustration of the relationship between BBj Objects.