home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 August / PCWorld_2000-08_cd.bin / Software / TemaCD / xbasic / xbpro.exe / xb / afirst.x < prev    next >
Text File  |  1996-01-19  |  33KB  |  678 lines

  1. '
  2. ' ####################
  3. ' #####  PROLOG  #####
  4. ' ####################
  5. '
  6. PROGRAM "afirst"
  7. VERSION "0.0001"
  8. '
  9. ' You can stop GuiDesigner from inserting the following PROLOG comment lines
  10. ' by removing them from the gprolog.xxx file in your \xb\xxx directory.
  11. '
  12. ' Programs contain:  1: PROLOG          - no executable code - see below
  13. '                    2: Entry function  - start execution at 1st declared func
  14. ' * = optional       3: Other functions - everything else - all other functions
  15. '
  16. ' The PROLOG contains (in this order):
  17. ' * 1. Program name statement             PROGRAM "progname"
  18. ' * 2. Version number statement           VERSION "0.0000"
  19. ' * 3. Import library statements          IMPORT  "libName"
  20. ' * 4. Composite type definitions         TYPE <typename> ... END TYPE
  21. '   5. Internal function declarations     DECLARE/INTERNAL FUNCTION Func (args)
  22. ' * 6. External function declarations     EXTERNAL FUNCTION FuncName (args)
  23. ' * 7. Shared constant definitions        $$ConstantName = literal or constant
  24. ' * 8. Shared variable declarations       SHARED  variable
  25. '
  26. ' ******  Comment libraries in/out as needed  *****
  27. '
  28. ' IMPORT "xma"   ' Math library     : SIN/ASIN/SINH/ASINH/LOG/EXP/SQRT...
  29. ' IMPORT "xcm"   ' Complex library  : complex number library  (trig, etc)
  30.   IMPORT "xst"   ' Standard library : required by most programs
  31.   IMPORT "xgr"   ' GraphicsDesigner : required by GuiDesigner programs
  32.   IMPORT "xui"   ' GuiDesigner      : required by GuiDesigner programs
  33. '
  34. INTERNAL FUNCTION  Entry         ()
  35. INTERNAL FUNCTION  InitGui       ()
  36. INTERNAL FUNCTION  InitProgram   ()
  37. INTERNAL FUNCTION  CreateWindows ()
  38. INTERNAL FUNCTION  First         (grid, message, v0, v1, v2, v3, r0, ANY)
  39. INTERNAL FUNCTION  FirstCode     (grid, message, v0, v1, v2, v3, kid, ANY)
  40. '
  41. '
  42. ' ######################
  43. ' #####  Entry ()  #####
  44. ' ######################
  45. '
  46. FUNCTION  Entry ()
  47.     SHARED  terminateProgram
  48.     STATIC    entry
  49. '
  50.     IF entry THEN RETURN                    ' enter once
  51.     entry =  $$TRUE                                ' enter occured
  52. '
  53.     InitGui ()                                        ' initialize messages
  54.     InitProgram ()                                ' initialize this program
  55.     CreateWindows ()                            ' create main window and others
  56.     IF LIBRARY(0) THEN RETURN            ' main program has message loop
  57. '
  58.     DO                                                        ' the message loop
  59.         XgrProcessMessages (1)            ' process one message
  60.     LOOP UNTIL terminateProgram        ' and repeat until program is terminated
  61. END FUNCTION
  62. '
  63. '
  64. ' ########################
  65. ' #####  InitGui ()  #####
  66. ' ########################
  67. '
  68. ' InitGui() initializes cursor, icon, message, and display variables.
  69. ' Programs can reference these variables, but must never change them.
  70. '
  71. FUNCTION  InitGui ()
  72. '
  73. ' ***************************************
  74. ' *****  Register Standard Cursors  *****
  75. ' ***************************************
  76. '
  77.     XgrRegisterCursor (@"Arrow",            @#cursorArrow)
  78.     XgrRegisterCursor (@"UpArrow",        @#cursorArrowN)
  79.     XgrRegisterCursor (@"Arrow",            @#cursorArrowNW)
  80.     XgrRegisterCursor (@"SizeNS",            @#cursorArrowsNS)
  81.     XgrRegisterCursor (@"SizeWE",            @#cursorArrowsWE)
  82.     XgrRegisterCursor (@"SizeNWSE",        @#cursorArrowsNWSE)
  83.     XgrRegisterCursor (@"SizeNESW",        @#cursorArrowsNESW)
  84.     XgrRegisterCursor (@"SizeAll",        @#cursorArrowsAll)
  85.     XgrRegisterCursor (@"CrossHair",    @#cursorCrosshair)
  86.     XgrRegisterCursor (@"Arrow",            @#cursorDefault)
  87.     XgrRegisterCursor (@"Wait",                @#cursorHourglass)
  88.     XgrRegisterCursor (@"Insert",            @#cursorInsert)
  89.     XgrRegisterCursor (@"No",                    @#cursorNo)
  90.     XgrRegisterCursor (@"Arrow",            @#defaultCursor)
  91. '
  92. '
  93. ' ********************************************
  94. ' *****  Register Standard Window Icons  *****
  95. ' ********************************************
  96. '
  97.     XgrRegisterIcon (@"hand",                    @#iconHand)
  98.     XgrRegisterIcon (@"asterisk",            @#iconAsterisk)
  99.     XgrRegisterIcon (@"question",            @#iconQuestion)
  100.     XgrRegisterIcon (@"exclamation",    @#iconExclamation)
  101.     XgrRegisterIcon (@"application",    @#iconApplication)
  102. '
  103.     XgrRegisterIcon (@"hand",                    @#iconStop)                        ' alias
  104.     XgrRegisterIcon (@"asterisk",            @#iconInformation)        ' alias
  105.     XgrRegisterIcon (@"application",  @#iconBlank)                    ' alias
  106. '
  107.     XgrRegisterIcon (@"window",                @#iconWindow)                    ' custom
  108. '
  109. '
  110. ' ******************************
  111. ' *****  Register Messages *****  Create message numbers for message names
  112. ' ******************************
  113. '
  114.     XgrRegisterMessage (@"Blowback",                                        @#Blowback)
  115.     XgrRegisterMessage (@"Callback",                                        @#Callback)
  116.     XgrRegisterMessage (@"Cancel",                                            @#Cancel)
  117.     XgrRegisterMessage (@"Change",                                            @#Change)
  118.     XgrRegisterMessage (@"CloseWindow",                                    @#CloseWindow)
  119.     XgrRegisterMessage (@"ContextChange",                                @#ContextChange)
  120.     XgrRegisterMessage (@"Create",                                            @#Create)
  121.     XgrRegisterMessage (@"CreateValueArray",                        @#CreateValueArray)
  122.     XgrRegisterMessage (@"CreateWindow",                                @#CreateWindow)
  123.     XgrRegisterMessage (@"CursorH",                                            @#CursorH)
  124.     XgrRegisterMessage (@"CursorV",                                            @#CursorV)
  125.     XgrRegisterMessage (@"Deselected",                                    @#Deselected)
  126.     XgrRegisterMessage (@"Destroy",                                            @#Destroy)
  127.     XgrRegisterMessage (@"Destroyed",                                        @#Destroyed)
  128.     XgrRegisterMessage (@"DestroyWindow",                                @#DestroyWindow)
  129.     XgrRegisterMessage (@"Disable",                                            @#Disable)
  130.     XgrRegisterMessage (@"Disabled",                                        @#Disabled)
  131.     XgrRegisterMessage (@"Displayed",                                        @#Displayed)
  132.     XgrRegisterMessage (@"DisplayWindow",                                @#DisplayWindow)
  133.     XgrRegisterMessage (@"Enable",                                            @#Enable)
  134.     XgrRegisterMessage (@"Enabled",                                            @#Enabled)
  135.     XgrRegisterMessage (@"Enter",                                                @#Enter)
  136.     XgrRegisterMessage (@"ExitMessageLoop",                            @#ExitMessageLoop)
  137.     XgrRegisterMessage (@"Find",                                                @#Find)
  138.     XgrRegisterMessage (@"FindForward",                                    @#FindForward)
  139.     XgrRegisterMessage (@"FindReverse",                                    @#FindReverse)
  140.     XgrRegisterMessage (@"Forward",                                            @#Forward)
  141.     XgrRegisterMessage (@"GetAlign",                                        @#GetAlign)
  142.     XgrRegisterMessage (@"GetBorder",                                        @#GetBorder)
  143.     XgrRegisterMessage (@"GetBorderOffset",                            @#GetBorderOffset)
  144.     XgrRegisterMessage (@"GetCallback",                                    @#GetCallback)
  145.     XgrRegisterMessage (@"GetCallbackArgs",                            @#GetCallbackArgs)
  146.     XgrRegisterMessage (@"GetCan",                                            @#GetCan)
  147.     XgrRegisterMessage (@"GetCharacterMapArray",                @#GetCharacterMapArray)
  148.     XgrRegisterMessage (@"GetClipGrid",                                    @#GetClipGrid)
  149.     XgrRegisterMessage (@"GetColor",                                        @#GetColor)
  150.     XgrRegisterMessage (@"GetColorExtra",                                @#GetColorExtra)
  151.     XgrRegisterMessage (@"GetCursor",                                        @#GetCursor)
  152.     XgrRegisterMessage (@"GetCursorXY",                                    @#GetCursorXY)
  153.     XgrRegisterMessage (@"GetDisplay",                                    @#GetDisplay)
  154.     XgrRegisterMessage (@"GetEnclosedGrids",                        @#GetEnclosedGrids)
  155.     XgrRegisterMessage (@"GetEnclosingGrid",                        @#GetEnclosingGrid)
  156.     XgrRegisterMessage (@"GetFocusColor",                                @#GetFocusColor)
  157.     XgrRegisterMessage (@"GetFocusColorExtra",                    @#GetFocusColorExtra)
  158.     XgrRegisterMessage (@"GetFont",                                            @#GetFont)
  159.     XgrRegisterMessage (@"GetFontNumber",                                @#GetFontNumber)
  160.     XgrRegisterMessage (@"GetGridFunction",                            @#GetGridFunction)
  161.     XgrRegisterMessage (@"GetGridFunctionName",                    @#GetGridFunctionName)
  162.     XgrRegisterMessage (@"GetGridName",                                    @#GetGridName)
  163.     XgrRegisterMessage (@"GetGridNumber",                                @#GetGridNumber)
  164.     XgrRegisterMessage (@"GetGridType",                                    @#GetGridType)
  165.     XgrRegisterMessage (@"GetGridTypeName",                            @#GetGridTypeName)
  166.     XgrRegisterMessage (@"GetGroup",                                        @#GetGroup)
  167.     XgrRegisterMessage (@"GetHelp",                                            @#GetHelp)
  168.     XgrRegisterMessage (@"GetHelpFile",                                    @#GetHelpFile)
  169.     XgrRegisterMessage (@"GetHelpString",                                @#GetHelpString)
  170.     XgrRegisterMessage (@"GetHelpStrings",                            @#GetHelpStrings)
  171.     XgrRegisterMessage (@"GetHintString",                                @#GetHintString)
  172.     XgrRegisterMessage (@"GetImage",                                        @#GetImage)
  173.     XgrRegisterMessage (@"GetImageCoords",                            @#GetImageCoords)
  174.     XgrRegisterMessage (@"GetIndent",                                        @#GetIndent)
  175.     XgrRegisterMessage (@"GetInfo",                                            @#GetInfo)
  176.     XgrRegisterMessage (@"GetJustify",                                    @#GetJustify)
  177.     XgrRegisterMessage (@"GetKeyboardFocus",                        @#GetKeyboardFocus)
  178.     XgrRegisterMessage (@"GetKeyboardFocusGrid",                @#GetKeyboardFocusGrid)
  179.     XgrRegisterMessage (@"GetKidNumber",                                @#GetKidNumber)
  180.     XgrRegisterMessage (@"GetKids",                                            @#GetKids)
  181.     XgrRegisterMessage (@"GetKidArray",                                    @#GetKidArray)
  182.     XgrRegisterMessage (@"GetKind",                                            @#GetKind)
  183.     XgrRegisterMessage (@"GetMaxMinSize",                                @#GetMaxMinSize)
  184.     XgrRegisterMessage (@"GetMessageFunc",                            @#GetMessageFunc)
  185.     XgrRegisterMessage (@"GetMessageFuncArray",                    @#GetMessageFuncArray)
  186.     XgrRegisterMessage (@"GetMessageSub",                                @#GetMessageSub)
  187.     XgrRegisterMessage (@"GetMessageSubArray",                    @#GetMessageSubArray)
  188.     XgrRegisterMessage (@"GetModalInfo",                                @#GetModalInfo)
  189.     XgrRegisterMessage (@"GetModalWindow",                            @#GetModalWindow)
  190.     XgrRegisterMessage (@"GetParent",                                        @#GetParent)
  191.     XgrRegisterMessage (@"GetPosition",                                    @#GetPosition)
  192.     XgrRegisterMessage (@"GetProtoInfo",                                @#GetProtoInfo)
  193.     XgrRegisterMessage (@"GetRedrawFlags",                            @#GetRedrawFlags)
  194.     XgrRegisterMessage (@"GetSize",                                            @#GetSize)
  195.     XgrRegisterMessage (@"GetSmallestSize",                            @#GetSmallestSize)
  196.     XgrRegisterMessage (@"GetState",                                        @#GetState)
  197.     XgrRegisterMessage (@"GetStyle",                                        @#GetStyle)
  198.     XgrRegisterMessage (@"GetTabArray",                                    @#GetTabArray)
  199.     XgrRegisterMessage (@"GetTabWidth",                                    @#GetTabWidth)
  200.     XgrRegisterMessage (@"GetTextArray",                                @#GetTextArray)
  201.     XgrRegisterMessage (@"GetTextArrayBounds",                    @#GetTextArrayBounds)
  202.     XgrRegisterMessage (@"GetTextArrayLine",                        @#GetTextArrayLine)
  203.     XgrRegisterMessage (@"GetTextArrayLines",                        @#GetTextArrayLines)
  204.     XgrRegisterMessage (@"GetTextCursor",                                @#GetTextCursor)
  205.     XgrRegisterMessage (@"GetTextFilename",                            @#GetTextFilename)
  206.     XgrRegisterMessage (@"GetTextPosition",                            @#GetTextPosition)
  207.     XgrRegisterMessage (@"GetTextSelection",                        @#GetTextSelection)
  208.     XgrRegisterMessage (@"GetTextString",                                @#GetTextString)
  209.     XgrRegisterMessage (@"GetTextStrings",                            @#GetTextStrings)
  210.     XgrRegisterMessage (@"GetTexture",                                    @#GetTexture)
  211.     XgrRegisterMessage (@"GetTimer",                                        @#GetTimer)
  212.     XgrRegisterMessage (@"GetValue",                                        @#GetValue)
  213.     XgrRegisterMessage (@"GetValues",                                        @#GetValues)
  214.     XgrRegisterMessage (@"GetValueArray",                                @#GetValueArray)
  215.     XgrRegisterMessage (@"GetWindow",                                        @#GetWindow)
  216.     XgrRegisterMessage (@"GetWindowFunction",                        @#GetWindowFunction)
  217.     XgrRegisterMessage (@"GetWindowGrid",                                @#GetWindowGrid)
  218.     XgrRegisterMessage (@"GetWindowIcon",                                @#GetWindowIcon)
  219.     XgrRegisterMessage (@"GetWindowSize",                                @#GetWindowSize)
  220.     XgrRegisterMessage (@"GetWindowTitle",                            @#GetWindowTitle)
  221.     XgrRegisterMessage (@"GotKeyboardFocus",                        @#GotKeyboardFocus)
  222.     XgrRegisterMessage (@"GrabArray",                                        @#GrabArray)
  223.     XgrRegisterMessage (@"GrabTextArray",                                @#GrabTextArray)
  224.     XgrRegisterMessage (@"GrabTextString",                            @#GrabTextString)
  225.     XgrRegisterMessage (@"GrabValueArray",                            @#GrabValueArray)
  226.     XgrRegisterMessage (@"Help",                                                @#Help)
  227.     XgrRegisterMessage (@"Hidden",                                            @#Hidden)
  228.     XgrRegisterMessage (@"HideTextCursor",                            @#HideTextCursor)
  229.     XgrRegisterMessage (@"HideWindow",                                    @#HideWindow)
  230.     XgrRegisterMessage (@"Initialize",                                    @#Initialize)
  231.     XgrRegisterMessage (@"Initialized",                                    @#Initialized)
  232.     XgrRegisterMessage (@"Inline",                                            @#Inline)
  233.     XgrRegisterMessage (@"InquireText",                                    @#InquireText)
  234.     XgrRegisterMessage (@"KeyboardFocusBackward",                @#KeyboardFocusBackward)
  235.     XgrRegisterMessage (@"KeyboardFocusForward",                @#KeyboardFocusForward)
  236.     XgrRegisterMessage (@"KeyDown",                                            @#KeyDown)
  237.     XgrRegisterMessage (@"KeyUp",                                                @#KeyUp)
  238.     XgrRegisterMessage (@"LostKeyboardFocus",                        @#LostKeyboardFocus)
  239.     XgrRegisterMessage (@"LostTextSelection",                        @#LostTextSelection)
  240.     XgrRegisterMessage (@"Maximized",                                        @#Maximized)
  241.     XgrRegisterMessage (@"MaximizeWindow",                            @#MaximizeWindow)
  242.     XgrRegisterMessage (@"Maximum",                                            @#Maximum)
  243.     XgrRegisterMessage (@"Minimized",                                        @#Minimized)
  244.     XgrRegisterMessage (@"MinimizeWindow",                            @#MinimizeWindow)
  245.     XgrRegisterMessage (@"Minimum",                                            @#Minimum)
  246.     XgrRegisterMessage (@"MonitorContext",                            @#MonitorContext)
  247.     XgrRegisterMessage (@"MonitorHelp",                                    @#MonitorHelp)
  248.     XgrRegisterMessage (@"MonitorKeyboard",                            @#MonitorKeyboard)
  249.     XgrRegisterMessage (@"MonitorMouse",                                @#MonitorMouse)
  250.     XgrRegisterMessage (@"MouseDown",                                        @#MouseDown)
  251.     XgrRegisterMessage (@"MouseDrag",                                        @#MouseDrag)
  252.     XgrRegisterMessage (@"MouseEnter",                                    @#MouseEnter)
  253.     XgrRegisterMessage (@"MouseExit",                                        @#MouseExit)
  254.     XgrRegisterMessage (@"MouseMove",                                        @#MouseMove)
  255.     XgrRegisterMessage (@"MouseUp",                                            @#MouseUp)
  256.     XgrRegisterMessage (@"MuchLess",                                        @#MuchLess)
  257.     XgrRegisterMessage (@"MuchMore",                                        @#MuchMore)
  258.     XgrRegisterMessage (@"OneLess",                                            @#OneLess)
  259.     XgrRegisterMessage (@"OneMore",                                            @#OneMore)
  260.     XgrRegisterMessage (@"PokeArray",                                        @#PokeArray)
  261.     XgrRegisterMessage (@"PokeTextArray",                                @#PokeTextArray)
  262.     XgrRegisterMessage (@"PokeTextString",                            @#PokeTextString)
  263.     XgrRegisterMessage (@"PokeValueArray",                            @#PokeValueArray)
  264.     XgrRegisterMessage (@"Print",                                                @#Print)
  265.     XgrRegisterMessage (@"Redraw",                                            @#Redraw)
  266.     XgrRegisterMessage (@"RedrawGrid",                                    @#RedrawGrid)
  267.     XgrRegisterMessage (@"RedrawLines",                                    @#RedrawLines)
  268.     XgrRegisterMessage (@"RedrawText",                                    @#RedrawText)
  269.     XgrRegisterMessage (@"RedrawWindow",                                @#RedrawWindow)
  270.     XgrRegisterMessage (@"Replace",                                            @#Replace)
  271.     XgrRegisterMessage (@"ReplaceForward",                            @#ReplaceForward)
  272.     XgrRegisterMessage (@"ReplaceReverse",                            @#ReplaceReverse)
  273.     XgrRegisterMessage (@"Reset",                                                @#Reset)
  274.     XgrRegisterMessage (@"Resize",                                            @#Resize)
  275.     XgrRegisterMessage (@"Resized",                                            @#Resized)
  276.     XgrRegisterMessage (@"ResizeNot",                                        @#ResizeNot)
  277.     XgrRegisterMessage (@"ResizeWindow",                                @#ResizeWindow)
  278.     XgrRegisterMessage (@"ResizeWindowToGrid",                    @#ResizeWindowToGrid)
  279.     XgrRegisterMessage (@"Resized",                                            @#Resized)
  280.     XgrRegisterMessage (@"Reverse",                                            @#Reverse)
  281.     XgrRegisterMessage (@"ScrollH",                                            @#ScrollH)
  282.     XgrRegisterMessage (@"ScrollV",                                            @#ScrollV)
  283.     XgrRegisterMessage (@"Select",                                            @#Select)
  284.     XgrRegisterMessage (@"Selected",                                        @#Selected)
  285.     XgrRegisterMessage (@"Selection",                                        @#Selection)
  286.     XgrRegisterMessage (@"SelectWindow",                                @#SelectWindow)
  287.     XgrRegisterMessage (@"SetAlign",                                        @#SetAlign)
  288.     XgrRegisterMessage (@"SetBorder",                                        @#SetBorder)
  289.     XgrRegisterMessage (@"SetBorderOffset",                            @#SetBorderOffset)
  290.     XgrRegisterMessage (@"SetCallback",                                    @#SetCallback)
  291.     XgrRegisterMessage (@"SetCan",                                            @#SetCan)
  292.     XgrRegisterMessage (@"SetCharacterMapArray",                @#SetCharacterMapArray)
  293.     XgrRegisterMessage (@"SetClipGrid",                                    @#SetClipGrid)
  294.     XgrRegisterMessage (@"SetColor",                                        @#SetColor)
  295.     XgrRegisterMessage (@"SetColorAll",                                    @#SetColorAll)
  296.     XgrRegisterMessage (@"SetColorExtra",                                @#SetColorExtra)
  297.     XgrRegisterMessage (@"SetColorExtraAll",                        @#SetColorExtraAll)
  298.     XgrRegisterMessage (@"SetCursor",                                        @#SetCursor)
  299.     XgrRegisterMessage (@"SetCursorXY",                                    @#SetCursorXY)
  300.     XgrRegisterMessage (@"SetDisplay",                                    @#SetDisplay)
  301.     XgrRegisterMessage (@"SetFocusColor",                                @#SetFocusColor)
  302.     XgrRegisterMessage (@"SetFocusColorExtra",                    @#SetFocusColorExtra)
  303.     XgrRegisterMessage (@"SetFont",                                            @#SetFont)
  304.     XgrRegisterMessage (@"SetFontNumber",                                @#SetFontNumber)
  305.     XgrRegisterMessage (@"SetGridFunction",                            @#SetGridFunction)
  306.     XgrRegisterMessage (@"SetGridFunctionName",                    @#SetGridFunctionName)
  307.     XgrRegisterMessage (@"SetGridName",                                    @#SetGridName)
  308.     XgrRegisterMessage (@"SetGridType",                                    @#SetGridType)
  309.     XgrRegisterMessage (@"SetGridTypeName",                            @#SetGridTypeName)
  310.     XgrRegisterMessage (@"SetGroup",                                        @#SetGroup)
  311.     XgrRegisterMessage (@"SetHelp",                                            @#SetHelp)
  312.     XgrRegisterMessage (@"SetHelpFile",                                    @#SetHelpFile)
  313.     XgrRegisterMessage (@"SetHelpString",                                @#SetHelpString)
  314.     XgrRegisterMessage (@"SetHelpStrings",                            @#SetHelpStrings)
  315.     XgrRegisterMessage (@"SetHintString",                                @#SetHintString)
  316.     XgrRegisterMessage (@"SetImage",                                        @#SetImage)
  317.     XgrRegisterMessage (@"SetImageCoords",                            @#SetImageCoords)
  318.     XgrRegisterMessage (@"SetIndent",                                        @#SetIndent)
  319.     XgrRegisterMessage (@"SetInfo",                                            @#SetInfo)
  320.     XgrRegisterMessage (@"SetJustify",                                    @#SetJustify)
  321.     XgrRegisterMessage (@"SetKeyboardFocus",                        @#SetKeyboardFocus)
  322.     XgrRegisterMessage (@"SetKeyboardFocusGrid",                @#SetKeyboardFocusGrid)
  323.     XgrRegisterMessage (@"SetMaxMinSize",                                @#SetMaxMinSize)
  324.     XgrRegisterMessage (@"SetMessageFunc",                            @#SetMessageFunc)
  325.     XgrRegisterMessage (@"SetMessageFuncArray",                    @#SetMessageFuncArray)
  326.     XgrRegisterMessage (@"SetMessageSub",                                @#SetMessageSub)
  327.     XgrRegisterMessage (@"SetMessageSubArray",                    @#SetMessageSubArray)
  328.     XgrRegisterMessage (@"SetModalWindow",                            @#SetModalWindow)
  329.     XgrRegisterMessage (@"SetParent",                                        @#SetParent)
  330.     XgrRegisterMessage (@"SetPosition",                                    @#SetPosition)
  331.     XgrRegisterMessage (@"SetRedrawFlags",                            @#SetRedrawFlags)
  332.     XgrRegisterMessage (@"SetSize",                                            @#SetSize)
  333.     XgrRegisterMessage (@"SetState",                                        @#SetState)
  334.     XgrRegisterMessage (@"SetStyle",                                        @#SetStyle)
  335.     XgrRegisterMessage (@"SetTabArray",                                    @#SetTabArray)
  336.     XgrRegisterMessage (@"SetTabWidth",                                    @#SetTabWidth)
  337.     XgrRegisterMessage (@"SetTextArray",                                @#SetTextArray)
  338.     XgrRegisterMessage (@"SetTextArrayLine",                        @#SetTextArrayLine)
  339.     XgrRegisterMessage (@"SetTextArrayLines",                        @#SetTextArrayLines)
  340.     XgrRegisterMessage (@"SetTextCursor",                                @#SetTextCursor)
  341.     XgrRegisterMessage (@"SetTextFilename",                            @#SetTextFilename)
  342.     XgrRegisterMessage (@"SetTextSelection",                        @#SetTextSelection)
  343.     XgrRegisterMessage (@"SetTextString",                                @#SetTextString)
  344.     XgrRegisterMessage (@"SetTextStrings",                            @#SetTextStrings)
  345.     XgrRegisterMessage (@"SetTexture",                                    @#SetTexture)
  346.     XgrRegisterMessage (@"SetTimer",                                        @#SetTimer)
  347.     XgrRegisterMessage (@"SetValue",                                        @#SetValue)
  348.     XgrRegisterMessage (@"SetValues",                                        @#SetValues)
  349.     XgrRegisterMessage (@"SetValueArray",                                @#SetValueArray)
  350.     XgrRegisterMessage (@"SetWindowFunction",                        @#SetWindowFunction)
  351.     XgrRegisterMessage (@"SetWindowIcon",                                @#SetWindowIcon)
  352.     XgrRegisterMessage (@"SetWindowTitle",                            @#SetWindowTitle)
  353.     XgrRegisterMessage (@"ShowTextCursor",                            @#ShowTextCursor)
  354.     XgrRegisterMessage (@"ShowWindow",                                    @#ShowWindow)
  355.     XgrRegisterMessage (@"SomeLess",                                        @#SomeLess)
  356.     XgrRegisterMessage (@"SomeMore",                                        @#SomeMore)
  357.     XgrRegisterMessage (@"StartTimer",                                    @#StartTimer)
  358.     XgrRegisterMessage (@"SystemMessage",                                @#SystemMessage)
  359.     XgrRegisterMessage (@"TextDelete",                                    @#TextDelete)
  360.     XgrRegisterMessage (@"TextEvent",                                        @#TextEvent)
  361.     XgrRegisterMessage (@"TextInsert",                                    @#TextInsert)
  362.     XgrRegisterMessage (@"TextModified",                                @#TextModified)
  363.     XgrRegisterMessage (@"TextReplace",                                    @#TextReplace)
  364.     XgrRegisterMessage (@"TimeOut",                                            @#TimeOut)
  365.     XgrRegisterMessage (@"Update",                                            @#Update)
  366.     XgrRegisterMessage (@"WindowClose",                                    @#WindowClose)
  367.     XgrRegisterMessage (@"WindowCreate",                                @#WindowCreate)
  368.     XgrRegisterMessage (@"WindowDeselected",                        @#WindowDeselected)
  369.     XgrRegisterMessage (@"WindowDestroy",                                @#WindowDestroy)
  370.     XgrRegisterMessage (@"WindowDestroyed",                            @#WindowDestroyed)
  371.     XgrRegisterMessage (@"WindowDisplay",                                @#WindowDisplay)
  372.     XgrRegisterMessage (@"WindowDisplayed",                            @#WindowDisplayed)
  373.     XgrRegisterMessage (@"WindowGetDisplay",                        @#WindowGetDisplay)
  374.     XgrRegisterMessage (@"WindowGetFunction",                        @#WindowGetFunction)
  375.     XgrRegisterMessage (@"WindowGetIcon",                                @#WindowGetIcon)
  376.     XgrRegisterMessage (@"WindowGetKeyboardFocusGrid",    @#WindowGetKeyboardFocusGrid)
  377.     XgrRegisterMessage (@"WindowGetSelectedWindow",            @#WindowGetSelectedWindow)
  378.     XgrRegisterMessage (@"WindowGetSize",                                @#WindowGetSize)
  379.     XgrRegisterMessage (@"WindowGetTitle",                            @#WindowGetTitle)
  380.     XgrRegisterMessage (@"WindowHelp",                                    @#WindowHelp)
  381.     XgrRegisterMessage (@"WindowHide",                                    @#WindowHide)
  382.     XgrRegisterMessage (@"WindowHidden",                                @#WindowHidden)
  383.     XgrRegisterMessage (@"WindowKeyDown",                                @#WindowKeyDown)
  384.     XgrRegisterMessage (@"WindowKeyUp",                                    @#WindowKeyUp)
  385.     XgrRegisterMessage (@"WindowMaximize",                            @#WindowMaximize)
  386.     XgrRegisterMessage (@"WindowMaximized",                            @#WindowMaximized)
  387.     XgrRegisterMessage (@"WindowMinimize",                            @#WindowMinimize)
  388.     XgrRegisterMessage (@"WindowMinimized",                            @#WindowMinimized)
  389.     XgrRegisterMessage (@"WindowMonitorContext",                @#WindowMonitorContext)
  390.     XgrRegisterMessage (@"WindowMonitorHelp",                        @#WindowMonitorHelp)
  391.     XgrRegisterMessage (@"WindowMonitorKeyboard",                @#WindowMonitorKeyboard)
  392.     XgrRegisterMessage (@"WindowMonitorMouse",                    @#WindowMonitorMouse)
  393.     XgrRegisterMessage (@"WindowMouseDown",                            @#WindowMouseDown)
  394.     XgrRegisterMessage (@"WindowMouseDrag",                            @#WindowMouseDrag)
  395.     XgrRegisterMessage (@"WindowMouseEnter",                        @#WindowMouseEnter)
  396.     XgrRegisterMessage (@"WindowMouseExit",                            @#WindowMouseExit)
  397.     XgrRegisterMessage (@"WindowMouseMove",                            @#WindowMouseMove)
  398.     XgrRegisterMessage (@"WindowMouseUp",                                @#WindowMouseUp)
  399.     XgrRegisterMessage (@"WindowRedraw",                                @#WindowRedraw)
  400.     XgrRegisterMessage (@"WindowRegister",                            @#WindowRegister)
  401.     XgrRegisterMessage (@"WindowResize",                                @#WindowResize)
  402.     XgrRegisterMessage (@"WindowResized",                                @#WindowResized)
  403.     XgrRegisterMessage (@"WindowResizeToGrid",                    @#WindowResizeToGrid)
  404.     XgrRegisterMessage (@"WindowSelect",                                @#WindowSelect)
  405.     XgrRegisterMessage (@"WindowSelected",                            @#WindowSelected)
  406.     XgrRegisterMessage (@"WindowSetFunction",                        @#WindowSetFunction)
  407.     XgrRegisterMessage (@"WindowSetIcon",                                @#WindowSetIcon)
  408.     XgrRegisterMessage (@"WindowSetKeyboardFocusGrid",    @#WindowSetKeyboardFocusGrid)
  409.     XgrRegisterMessage (@"WindowSetTitle",                            @#WindowSetTitle)
  410.     XgrRegisterMessage (@"WindowShow",                                    @#WindowShow)
  411.     XgrRegisterMessage (@"WindowSystemMessage",                    @#WindowSystemMessage)
  412.     XgrRegisterMessage (@"LastMessage",                                    @#LastMessage)
  413. '
  414.     XgrGetDisplaySize ("", @#displayWidth, @#displayHeight, @#windowBorderWidth, @#windowTitleHeight)
  415. END FUNCTION
  416. '
  417. '
  418. ' ############################
  419. ' #####  InitProgram ()  #####
  420. ' ############################
  421. '
  422. ' Add code to InitProgram() to initialize whatever needs initialization.
  423. ' Do not delete this function - leave it empty if not needed.
  424. '
  425. FUNCTION  InitProgram ()
  426.  
  427. END FUNCTION
  428. '
  429. '
  430. ' ##############################
  431. ' #####  CreateWindows ()  #####
  432. ' ##############################
  433. '
  434. ' GuiDesigner puts code in CreateWindows() to create, initialize, display
  435. ' every window you design graphically.  Don't modify this function unless
  436. ' absolutely necessary - GuiDesigner needs to read and update it at times.
  437. '
  438. ' CreateWindows() usually should not be executed when compiled as library.
  439. ' Start CreateWindows() with "IF LIBRARY(0) THEN RETURN" to assure this.
  440. '
  441. FUNCTION  CreateWindows ()
  442. '
  443.   IF LIBRARY(0) THEN RETURN
  444. '
  445.   First         (@First, #CreateWindow, 0, 0, 0, 0, 0, 0)
  446.   XuiSendMessage (First, #SetCallback, First, &FirstCode(), -1, -1, -1, 0)
  447.   XuiSendMessage (First, #Initialize, 0, 0, 0, 0, 0, 0)
  448.   XuiSendMessage (First, #DisplayWindow, 0, 0, 0, 0, 0, 0)
  449. END FUNCTION
  450. '
  451. '
  452. ' ######################
  453. ' #####  First ()  #####
  454. ' ######################
  455. '
  456. ' "Anatomy of Grid Functions" in the GuiDesigner Programmer Guide
  457. ' describes the operation and modification of grid functions in detail.
  458. '
  459. ' WindowFromFunction and/or WindowToFunction may not work, or may not generate the desired results if you:
  460. '   * Modify the kid constant definition improperly.
  461. '   * Modify the code in the Create subroutine improperly.
  462. '   * Remove the GOSUB Resize line in the Create subroutine (comment out is okay).
  463. '   * Imbed special purpose code in the Create subroutine before the GOSUB Resize line.
  464. '   * Delete any of the four lines that assign values to designX, designY, designWidth, designHeight.
  465. '
  466. FUNCTION  First (grid, message, v0, v1, v2, v3, r0, (r1, r1$, r1[], r1$[]))
  467.   STATIC  designX,  designY,  designWidth,  designHeight
  468.   STATIC  SUBADDR  sub[]
  469.   STATIC  upperMessage
  470.   STATIC  First
  471. '
  472.   $First         =  0  ' kid  0 grid type = First
  473.   $FirstButton   =  1  ' kid  1 grid type = XuiPushButton
  474.   $SecondButton  =  2  ' kid  2 grid type = XuiPushButton
  475.   $ThirdButton   =  3  ' kid  3 grid type = XuiPushButton
  476.   $UpperKid      =  3  ' kid maximum
  477. '
  478. '
  479.   IFZ sub[] THEN GOSUB Initialize
  480. ' XuiReportMessage (grid, message, v0, v1, v2, v3, r0, r1)
  481.   IF XuiProcessMessage (grid, message, @v0, @v1, @v2, @v3, @r0, @r1, First) THEN RETURN
  482.   IF (message <= upperMessage) THEN GOSUB @sub[message]
  483.   RETURN
  484. '
  485. '
  486. ' *****  Callback  *****  message = Callback : r1 = original message
  487. '
  488. SUB Callback
  489.   message = r1
  490.   IF (message <= upperMessage) THEN GOSUB @sub[message]
  491. END SUB
  492. '
  493. '
  494. ' *****  Create  *****  v0123 = xywh : r0 = window : r1 = parent
  495. '
  496. SUB Create
  497.   IF (v0 <= 0) THEN v0 = 0
  498.   IF (v1 <= 0) THEN v1 = 0
  499.   IF (v2 <= 0) THEN v2 = designWidth
  500.   IF (v3 <= 0) THEN v3 = designHeight
  501.   XuiCreateGrid (@grid, First, @v0, @v1, @v2, @v3, r0, r1, &First())
  502.   XuiSendMessage ( grid, #SetGridName, 0, 0, 0, 0, 0, @"First")
  503.   XuiPushButton  (@g, #Create, 92, 28, 144, 48, r0, grid)
  504.   XuiSendMessage ( g, #SetCallback, grid, &First(), -1, -1, $FirstButton, grid)
  505.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"FirstButton")
  506.   XuiSendMessage ( g, #SetColor, 16, $$Black, $$Black, $$White, 0, 0)
  507.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"First")
  508.   XuiPushButton  (@g, #Create, 92, 76, 144, 48, r0, grid)
  509.   XuiSendMessage ( g, #SetCallback, grid, &First(), -1, -1, $SecondButton, grid)
  510.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"SecondButton")
  511.   XuiSendMessage ( g, #SetColor, 17, $$Black, $$Black, $$White, 0, 0)
  512.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Second")
  513.   XuiPushButton  (@g, #Create, 92, 124, 144, 56, r0, grid)
  514.   XuiSendMessage ( g, #SetCallback, grid, &First(), -1, -1, $ThirdButton, grid)
  515.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"ThirdButton")
  516.   XuiSendMessage ( g, #SetColor, 110, $$Black, $$Black, $$White, 0, 0)
  517.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Third")
  518.   GOSUB Resize
  519. END SUB
  520. '
  521. '
  522. ' *****  CreateWindow  *****  v0123 = xywh : r0 = windowType : r1$ = display$
  523. '
  524. SUB CreateWindow
  525.   IF (v0  = 0) THEN v0 = designX
  526.   IF (v1  = 0) THEN v1 = designY
  527.   IF (v2 <= 0) THEN v2 = designWidth
  528.   IF (v3 <= 0) THEN v3 = designHeight
  529.   XuiWindow (@window, #WindowCreate, v0, v1, v2, v3, r0, @r1$)
  530.   v0 = 0 : v1 = 0 : r0 = window : ATTACH r1$ TO display$
  531.   GOSUB Create
  532.     r1 = 0 : ATTACH display$ TO r1$
  533.   XuiWindow (window, #WindowRegister, grid, -1, v2, v3, @r0, @"First")
  534. END SUB
  535. '
  536. '
  537. ' *****  GetSmallestSize  *****  See "Anatomy of Grid Functions"
  538. '
  539. SUB GetSmallestSize
  540. END SUB
  541. '
  542. '
  543. ' *****  Resize  *****  See "Anatomy of Grid Functions"
  544. '
  545. SUB Resize
  546. END SUB
  547. '
  548. '
  549. ' *****  Selection  *****  See "Anatomy of Grid Functions"
  550. '
  551. SUB Selection
  552. END SUB
  553. '
  554. '
  555. ' *****  Initialize  *****  ' see "Anatomy of Grid Functions"
  556. '
  557. SUB Initialize
  558.   XuiGetDefaultMessageFuncArray (@func[])
  559.   XgrMessageNameToNumber (@"LastMessage", @upperMessage)
  560. '
  561.   func[#Callback]           = &XuiCallback ()               ' disable to handle Callback messages internally
  562. ' func[#GetSmallestSize]    = 0                             ' enable to add internal GetSmallestSize routine
  563. ' func[#Resize]             = 0                             ' enable to add internal Resize routine
  564. '
  565.   DIM sub[upperMessage]
  566. ' sub[#Callback]            = SUBADDRESS (Callback)         ' enable to handle Callback messages internally
  567.   sub[#Create]              = SUBADDRESS (Create)           ' must be internal routine
  568.   sub[#CreateWindow]        = SUBADDRESS (CreateWindow)     ' must be internal routine
  569. ' sub[#GetSmallestSize]     = SUBADDRESS (GetSmallestSize)  ' enable to add internal GetSmallestSize routine
  570. ' sub[#Resize]              = SUBADDRESS (Resize)           ' enable to add internal Resize routine
  571.   sub[#Selection]           = SUBADDRESS (Selection)        ' routes Selection callbacks to subroutine
  572. '
  573.   IF sub[0] THEN PRINT "First(): Initialize: Error::: (Undefined Message)"
  574.   IF func[0] THEN PRINT "First(): Initialize: Error::: (Undefined Message)"
  575.   XuiRegisterGridType (@First, "First", &First(), @func[], @sub[])
  576. '
  577. ' Don't remove the following 4 lines, or WindowFromFunction/WindowToFunction will not work
  578. '
  579.   designX = 696
  580.   designY = 23
  581.   designWidth = 324
  582.   designHeight = 260
  583. '
  584.   gridType = First
  585.   XuiSetGridTypeValue (gridType, @"x",                designX)
  586.   XuiSetGridTypeValue (gridType, @"y",                designY)
  587.   XuiSetGridTypeValue (gridType, @"width",            designWidth)
  588.   XuiSetGridTypeValue (gridType, @"height",           designHeight)
  589.   XuiSetGridTypeValue (gridType, @"maxWidth",         designWidth)
  590.   XuiSetGridTypeValue (gridType, @"maxHeight",        designHeight)
  591.   XuiSetGridTypeValue (gridType, @"minWidth",         designWidth)
  592.   XuiSetGridTypeValue (gridType, @"minHeight",        designHeight)
  593.   XuiSetGridTypeValue (gridType, @"border",           $$BorderFrame)
  594.   XuiSetGridTypeValue (gridType, @"can",              $$Focus OR $$Respond OR $$Callback)
  595.   XuiSetGridTypeValue (gridType, @"focusKid",         $FirstButton)
  596.   IFZ message THEN RETURN
  597. END SUB
  598. END FUNCTION
  599. '
  600. '
  601. ' ##########################
  602. ' #####  FirstCode ()  #####
  603. ' ##########################
  604. '
  605. ' You can stop GuiDesigner from putting the following comment
  606. ' lines in callback functions by removing the comment lines in
  607. ' the code.xxx file in your \xb\xxx directory.
  608. '
  609. ' This is a callback function that supports the grid function
  610. ' of the same name less the last 4 letters (FirstCode).
  611. '
  612. ' When an important event occurs in the grid function created
  613. ' from your design window, is sends a callback message to this
  614. ' function, with the original message in r1.
  615. '
  616. ' Most callback functions process only Selection messages
  617. ' because usually that's enough to perform their function.
  618. '
  619. ' When keystrokes are entered into a TextLine or TextArea grid,
  620. ' this callback function receives a TextEvent callback message.
  621. ' This function can prevent Keystrokes from inserting characters
  622. ' in the TextLine or TextArea grid by returning a -1 in kid.
  623. '
  624. ' The first time GuiDesigner generates this function, it puts
  625. ' a "SUB Selection" subroutine at the bottom of the function.
  626. ' It contains a SELECT CASE block with kid constants named the
  627. ' same as the grids you put in the design window.  For grids
  628. ' you didn't give a name (with the AppearanceWindow), a not
  629. ' very useful default name is substituted, so be sure to enter
  630. ' good GridNames in the Appearance window for every grid in
  631. ' your design windows.  If you change the GridNames later, the
  632. ' names in the SELECT CASE block are NOT updated, and you'll
  633. ' get "Undefined Constant" errors on lines with obsolete constant
  634. ' names when you recompile the program.  Then you'll have to
  635. ' update the names in the SELECT CASE block by hand.
  636. '
  637. ' It's easy to find out what your code has to respond to...
  638. ' just run your program!  When you operate the grids in the
  639. ' window, the XuiReportMessage() call in this function prints
  640. ' the entry arguments in a ReportMessage window.  You can
  641. ' comment out this lines to disable this feature, but don't
  642. ' remove them entirely - it might come in handy later.
  643. '
  644. '
  645. FUNCTION  FirstCode (grid, message, v0, v1, v2, v3, kid, r1)
  646. '
  647.   $First         =  0  ' kid  0 grid type = First
  648.   $FirstButton   =  1  ' kid  1 grid type = XuiPushButton
  649.   $SecondButton  =  2  ' kid  2 grid type = XuiPushButton
  650.   $ThirdButton   =  3  ' kid  3 grid type = XuiPushButton
  651.   $UpperKid      =  3  ' kid maximum
  652. '
  653. '    XuiReportMessage (grid, message, v0, v1, v2, v3, kid, r1)
  654.     IF (message = #Callback) THEN message = r1
  655. '
  656.   SELECT CASE message
  657.     CASE #Selection: GOSUB Selection   ' Common callback message
  658. '   CASE #TextEvent: GOSUB TextEvent   ' KeyDown in TextArea or TextLine
  659.   END SELECT
  660.   RETURN
  661. '
  662. '
  663. ' *****  Selection  *****
  664. '
  665. SUB Selection
  666.   SELECT CASE kid
  667.     CASE $First         :
  668.     CASE $FirstButton   : XuiSendMessage (grid, #SetTextString, 0, 0, 0, 0, kid, "Hello")
  669.                                                     XuiSendMessage (grid, #Redraw, 0, 0, 0, 0, kid, 0)
  670.     CASE $SecondButton  : XuiSendMessage (grid, #SetTextString, 0, 0, 0, 0, kid, "World")
  671.                                                     XuiSendMessage (grid, #Redraw, 0, 0, 0, 0, kid, 0)
  672.     CASE $ThirdButton   : XuiSendMessage (grid, #SetTextString, 0, 0, 0, 0, kid, "Champ")
  673.                                                     XuiSendMessage (grid, #Redraw, 0, 0, 0, 0, kid, 0)
  674.   END SELECT
  675. END SUB
  676. END FUNCTION
  677. END PROGRAM
  678.