home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 August / PCWorld_2000-08_cd.bin / Software / TemaCD / xbasic / xbpro.exe / xb / xitmain.win < prev    next >
Text File  |  1996-02-15  |  17KB  |  350 lines

  1. '
  2. '
  3. ' ########################
  4. ' #####  XitMain ()  #####
  5. ' ########################
  6. '
  7. ' "Anatomy of Grid Functions" in the GuiDesigner Programmer Guide
  8. ' describes the operation and modification of grid functions in detail.
  9. '
  10. ' WindowFromFunction and/or WindowToFunction may not work, or may not generate the desired results if you:
  11. '   * Modify the kid constant definition improperly.
  12. '   * Modify the code in the Create subroutine improperly.
  13. '   * Imbed blank or comment lines in the Create subroutine.
  14. '   * Remove the GOSUB Resize line in the Create subroutine (comment out is okay).
  15. '   * Imbed special purpose code in the Create subroutine before the GOSUB Resize line.
  16. '   * Delete any of the four lines that assign values to designX, designY, designWidth, designHeight.
  17. '
  18. FUNCTION  XitMain (grid, message, v0, v1, v2, v3, r0, (r1, r1$, r1[], r1$[]))
  19.   STATIC  designX,  designY,  designWidth,  designHeight
  20.   STATIC  SUBADDR  sub[]
  21.   STATIC  upperMessage
  22.   STATIC  XitMain
  23. '
  24.   $XitMain              =   0  ' kid   0 grid type = XitMain
  25.   $MenuBar              =   1  ' kid   1 grid type = XuiMenu
  26.   $FileLabel            =   2  ' kid   2 grid type = XuiLabel
  27.   $TextUpper            =   3  ' kid   3 grid type = XuiTextArea
  28.   $FunctionLabel        =   4  ' kid   4 grid type = XuiLabel
  29.   $StatusLabel          =   5  ' kid   5 grid type = XuiLabel
  30.   $ErrorLabel           =   6  ' kid   6 grid type = XuiLabel
  31.   $HotStart             =   7  ' kid   7 grid type = XuiPushButton
  32.   $HotContinue          =   8  ' kid   8 grid type = XuiPushButton
  33.   $HotPause             =   9  ' kid   9 grid type = XuiPushButton
  34.   $HotKill              =  10  ' kid  10 grid type = XuiPushButton
  35.   $HotToCursor          =  11  ' kid  11 grid type = XuiPushButton
  36.   $HotStepLocal         =  12  ' kid  12 grid type = XuiPushButton
  37.   $HotStepGlobal        =  13  ' kid  13 grid type = XuiPushButton
  38.   $HotVariables         =  14  ' kid  14 grid type = XuiPushButton
  39.   $HotFrames            =  15  ' kid  15 grid type = XuiPushButton
  40.   $HotAssembly          =  16  ' kid  16 grid type = XuiPushButton
  41.   $HotFind              =  17  ' kid  17 grid type = XuiPushButton
  42.   $HotReplace           =  18  ' kid  18 grid type = XuiPushButton
  43.   $HotToggleBreakpoint  =  19  ' kid  19 grid type = XuiPushButton
  44.   $HotClearBreakpoints  =  20  ' kid  20 grid type = XuiPushButton
  45.   $HotGui               =  21  ' kid  21 grid type = XuiPushButton
  46.   $HotAbort             =  22  ' kid  22 grid type = XuiPushButton
  47.   $TextLower            =  23  ' kid  23 grid type = XuiTextArea
  48.   $UpperKid             =  23  ' kid maximum
  49. '
  50. '
  51.   IFZ sub[] THEN GOSUB Initialize
  52. ' XuiReportMessage (grid, message, v0, v1, v2, v3, r0, r1)
  53.   IF XuiProcessMessage (grid, message, @v0, @v1, @v2, @v3, @r0, @r1, XitMain) THEN RETURN
  54.   IF (message <= upperMessage) THEN GOSUB @sub[message]
  55.   RETURN
  56. '
  57. '
  58. ' *****  Callback  *****  message = Callback : r1 = original message
  59. '
  60. SUB Callback
  61.   message = r1
  62.   callback = message
  63.   IF (message <= upperMessage) THEN GOSUB @sub[message]
  64. END SUB
  65. '
  66. '
  67. ' *****  Create  *****  v0123 = xywh : r0 = window : r1 = parent
  68. '
  69. SUB Create
  70.   IF (v0 <= 0) THEN v0 = 0
  71.   IF (v1 <= 0) THEN v1 = 0
  72.   IF (v2 <= 0) THEN v2 = designWidth
  73.   IF (v3 <= 0) THEN v3 = designHeight
  74.   XuiCreateGrid (@grid, XitMain, @v0, @v1, @v2, @v3, r0, r1, &XitMain())
  75.   XuiSendMessage ( grid, #SetGridName, 0, 0, 0, 0, 0, @"XitMain")
  76.   XuiSendMessage ( grid, #SetBorder, $$BorderNone, $$BorderNone, $$BorderFrame, 0, 0, 0)
  77.   XuiMenu        (@g, #Create, 0, 0, 468, 24, r0, grid)
  78.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $MenuBar, grid)
  79.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"MenuBar")
  80.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"_File  _Edit  _View  _Option  _Run  _Debug  _Status  _Help  ")
  81.   DIM text$[61]
  82.   text$[ 0] = "_File  "
  83.   text$[ 1] = " _New"
  84.   text$[ 2] = " _TextLoad"
  85.   text$[ 3] = " _Load"
  86.   text$[ 4] = " _Save"
  87.   text$[ 5] = " _Mode"
  88.   text$[ 6] = " _Rename"
  89.   text$[ 7] = " _Quit"
  90.   text$[ 8] = "_Edit  "
  91.   text$[ 9] = " _Cut"
  92.   text$[10] = " _Grab"
  93.   text$[11] = " _Paste"
  94.   text$[12] = " _Delete"
  95.   text$[13] = " _Buffer"
  96.   text$[14] = " _Insert"
  97.   text$[15] = " _Erase"
  98.   text$[16] = " _Find"
  99.   text$[17] = " _Read"
  100.   text$[18] = " _Write"
  101.   text$[19] = " _Abandon"
  102.   text$[20] = "_View  "
  103.   text$[21] = " _Function"
  104.   text$[22] = " _PriorFunction"
  105.   text$[23] = " _NewFunction"
  106.   text$[24] = " _DeleteFunction"
  107.   text$[25] = " _RenameFunction"
  108.   text$[26] = " _CloneFunction"
  109.   text$[27] = " _LoadFunction"
  110.   text$[28] = " _SaveFunction"
  111.   text$[29] = " _Merge PROLOG"
  112.   text$[30] = "_Option  "
  113.   text$[31] = " _Compile"
  114.   text$[32] = " _TabWidth (pixels)"
  115.   text$[33] = "_Run  "
  116.   text$[34] = " _Start"
  117.   text$[35] = " _Continue"
  118.   text$[36] = " _Jump"
  119.   text$[37] = " _Pause"
  120.   text$[38] = " _Kill"
  121.   text$[39] = " _Recompile"
  122.   text$[40] = " _Assembly"
  123.   text$[41] = " _Library"
  124.   text$[42] = "_Debug  "
  125.   text$[43] = " _ToggleBreakpoint"
  126.   text$[44] = " _ClearAllBreakpoints"
  127.   text$[45] = " _EraseLocalBreakpoints"
  128.   text$[46] = " _Memory"
  129.   text$[47] = " _Assembly"
  130.   text$[48] = " _Registers"
  131.   text$[49] = "_Status  "
  132.   text$[50] = " _CompilationErrors"
  133.   text$[51] = " _RuntimeErrors"
  134.   text$[52] = "_Help  "
  135.   text$[53] = " _Message"
  136.   text$[54] = " _Language"
  137.   text$[55] = " _Operator"
  138.   text$[56] = " _DotCommand"
  139.   text$[57] = " MathLibrary"
  140.   text$[58] = " StandardLibrary"
  141.   text$[59] = " GraphicsLibrary"
  142.   text$[60] = " GuiDesignerLibrary"
  143.   text$[61] = " ComplexNumberLibrary"
  144.   XuiSendMessage ( g, #SetTextArray, 0, 0, 0, 0, 0, @text$[])
  145.   XuiLabel       (@g, #Create, 468, 0, 132, 24, r0, grid)
  146.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"FileLabel")
  147.   XuiSendMessage ( g, #SetAlign, $$AlignMiddleLeft, $$JustifyCenter, -1, -1, 0, 0)
  148.   XuiTextArea    (@g, #Create, 0, 24, 468, 72, r0, grid)
  149.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $TextUpper, grid)
  150.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"TextUpper")
  151.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"!!! Click right button on any grid for InstantHelp !!!\n.c\n")
  152.   DIM text$[0]
  153.   text$[0] = "!!!!!  This is awindow.x - not the PDE  !!!!!"
  154.   XuiSendMessage ( g, #SetTextArray, 0, 0, 0, 0, 0, @text$[])
  155.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"Area")
  156.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 2, @"ScrollH")
  157.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 3, @"ScrollV")
  158.   XuiLabel       (@g, #Create, 468, 24, 132, 24, r0, grid)
  159.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"FunctionLabel")
  160.   XuiSendMessage ( g, #SetAlign, $$AlignMiddleLeft, $$JustifyCenter, -1, -1, 0, 0)
  161.   XuiLabel       (@g, #Create, 468, 48, 132, 24, r0, grid)
  162.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"StatusLabel")
  163.   XuiSendMessage ( g, #SetAlign, $$AlignMiddleLeft, $$JustifyCenter, -1, -1, 0, 0)
  164.   XuiLabel       (@g, #Create, 468, 72, 132, 24, r0, grid)
  165.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"ErrorLabel")
  166.   XuiSendMessage ( g, #SetAlign, $$AlignMiddleLeft, $$JustifyCenter, -1, -1, 0, 0)
  167.   XuiPushButton  (@g, #Create, 0, 96, 32, 32, r0, grid)
  168.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotStart, grid)
  169.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotStart")
  170.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  171.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xstart.bmp")
  172.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  173.   XuiPushButton  (@g, #Create, 32, 96, 32, 32, r0, grid)
  174.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotContinue, grid)
  175.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotContinue")
  176.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  177.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xcontin.bmp")
  178.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  179.   XuiPushButton  (@g, #Create, 64, 96, 32, 32, r0, grid)
  180.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotPause, grid)
  181.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotPause")
  182.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  183.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xpause.bmp")
  184.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  185.   XuiPushButton  (@g, #Create, 96, 96, 32, 32, r0, grid)
  186.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotKill, grid)
  187.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotKill")
  188.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  189.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xkill.bmp")
  190.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  191.   XuiPushButton  (@g, #Create, 132, 96, 32, 32, r0, grid)
  192.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotToCursor, grid)
  193.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotToCursor")
  194.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  195.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xtocurs.bmp")
  196.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  197.   XuiPushButton  (@g, #Create, 164, 96, 32, 32, r0, grid)
  198.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotStepLocal, grid)
  199.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotStepLocal")
  200.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  201.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xsteploc.bmp")
  202.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  203.   XuiPushButton  (@g, #Create, 196, 96, 32, 32, r0, grid)
  204.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotStepGlobal, grid)
  205.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotStepGlobal")
  206.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  207.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xstepglo.bmp")
  208.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  209.   XuiPushButton  (@g, #Create, 232, 96, 32, 32, r0, grid)
  210.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotVariables, grid)
  211.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotVariables")
  212.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  213.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xvar.bmp")
  214.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  215.   XuiPushButton  (@g, #Create, 264, 96, 32, 32, r0, grid)
  216.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotFrames, grid)
  217.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotFrames")
  218.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  219.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xframe.bmp")
  220.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  221.   XuiPushButton  (@g, #Create, 296, 96, 32, 32, r0, grid)
  222.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotAssembly, grid)
  223.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotAssembly")
  224.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  225.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xasm.bmp")
  226.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  227.   XuiPushButton  (@g, #Create, 332, 96, 32, 32, r0, grid)
  228.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotFind, grid)
  229.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotFind")
  230.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  231.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xfind.bmp")
  232.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  233.   XuiPushButton  (@g, #Create, 364, 96, 32, 32, r0, grid)
  234.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotReplace, grid)
  235.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotReplace")
  236.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  237.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xreplace.bmp")
  238.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  239.   XuiPushButton  (@g, #Create, 400, 96, 32, 32, r0, grid)
  240.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotToggleBreakpoint, grid)
  241.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotToggleBreakpoint")
  242.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  243.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xtogbpt.bmp")
  244.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  245.   XuiPushButton  (@g, #Create, 432, 96, 32, 32, r0, grid)
  246.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotClearBreakpoints, grid)
  247.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotClearBreakpoints")
  248.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  249.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xclrbpts.bmp")
  250.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  251.   XuiPushButton  (@g, #Create, 468, 96, 32, 32, r0, grid)
  252.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotGui, grid)
  253.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotGui")
  254.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  255.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xtoolkit.bmp")
  256.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  257.   XuiPushButton  (@g, #Create, 568, 96, 32, 32, r0, grid)
  258.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $HotAbort, grid)
  259.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"HotAbort")
  260.   XuiSendMessage ( g, #SetBorder, $$BorderRaise1, $$BorderRaise1, $$BorderNone, 0, 0, 0)
  261.   XuiSendMessage ( g, #SetImage, 0, 0, 0, 0, 0, @"\\xb\\xxx\\xabort.bmp")
  262.   XuiSendMessage ( g, #SetImageCoords, 0, 0, 32, 32, 0, 0)
  263.   XuiTextArea    (@g, #Create, 0, 128, 600, 72, r0, grid)
  264.   XuiSendMessage ( g, #SetCallback, grid, &XitMain(), -1, -1, $TextLower, grid)
  265.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"TextLower")
  266.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"Area")
  267.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 2, @"ScrollH")
  268.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 3, @"ScrollV")
  269.   GOSUB Resize
  270. END SUB
  271. '
  272. '
  273. ' *****  CreateWindow  *****  v0123 = xywh : r0 = windowType : r1 = &WindowFunc()
  274. '
  275. SUB CreateWindow
  276.   IF (v0 =  0) THEN v0 = designX
  277.   IF (v1 =  0) THEN v1 = designY
  278.   IF (v2 <= 0) THEN v2 = designWidth
  279.   IF (v3 <= 0) THEN v3 = designHeight
  280.   XuiWindow (@window, #WindowCreate, v0, v1, v2, v3, r0, r1)
  281.   v0 = 0 : v1 = 0 : r0 = window : r1 = 0
  282.   GOSUB Create
  283.   XuiWindow (window, #WindowRegister, grid, -1, v2, v3, @r0, @"XitMain")
  284. END SUB
  285. '
  286. '
  287. ' *****  GetSmallestSize  *****  See "Anatomy of Grid Functions"
  288. '
  289. SUB GetSmallestSize
  290. END SUB
  291. '
  292. '
  293. ' *****  Resize  *****  See "Anatomy of Grid Functions"
  294. '
  295. SUB Resize
  296. END SUB
  297. '
  298. '
  299. ' *****  Selection  *****  See "Anatomy of Grid Functions"
  300. '
  301. SUB Selection
  302. END SUB
  303. '
  304. '
  305. ' *****  Initialize  *****  ' see "Anatomy of Grid Functions"
  306. '
  307. SUB Initialize
  308.   XuiGetDefaultMessageFuncArray (@func[])
  309.   XgrMessageNameToNumber (@"LastMessage", @upperMessage)
  310. '
  311.   func[#Callback]           = &XuiCallback ()               ' disable to handle Callback messages internally
  312. ' func[#GetSmallestSize]    = 0                             ' enable to add internal GetSmallestSize routine
  313. ' func[#Resize]             = 0                             ' enable to add internal Resize routine
  314. '
  315.   DIM sub[upperMessage]
  316. ' sub[#Callback]            = SUBADDRESS (Callback)         ' enable to handle Callback messages internally
  317.   sub[#Create]              = SUBADDRESS (Create)           ' must be internal routine
  318.   sub[#CreateWindow]        = SUBADDRESS (CreateWindow)     ' must be internal routine
  319. ' sub[#GetSmallestSize]     = SUBADDRESS (GetSmallestSize)  ' enable to add internal GetSmallestSize routine
  320. ' sub[#Resize]              = SUBADDRESS (Resize)           ' enable to add internal Resize routine
  321.   sub[#Selection]           = SUBADDRESS (Selection)        ' routes Selection callbacks to subroutine
  322. '
  323.   IF sub[0] THEN PRINT "XitMain(): Initialize: Error::: (Undefined Message)
  324.   IF func[0] THEN PRINT "XitMain(): Initialize: Error::: (Undefined Message)
  325.   XuiRegisterGridType (@XitMain, "XitMain", &XitMain(), @func[], @sub[])
  326. '
  327. ' Don't remove the following 4 lines, or WindowFromFunction/WindowToFunction will not work
  328. '
  329.   designX = 420
  330.   designY = 564
  331.   designWidth = 600
  332.   designHeight = 200
  333. '
  334.   gridType = XitMain
  335.   XuiSetGridTypeValue (gridType, @"x",                designX)
  336.   XuiSetGridTypeValue (gridType, @"y",                designY)
  337.   XuiSetGridTypeValue (gridType, @"width",            designWidth)
  338.   XuiSetGridTypeValue (gridType, @"height",           designHeight)
  339.   XuiSetGridTypeValue (gridType, @"maxWidth",         designWidth)
  340.   XuiSetGridTypeValue (gridType, @"maxHeight",        designHeight)
  341.   XuiSetGridTypeValue (gridType, @"minWidth",         designWidth)
  342.   XuiSetGridTypeValue (gridType, @"minHeight",        designHeight)
  343.   XuiSetGridTypeValue (gridType, @"border",           $$BorderFrame)
  344.   XuiSetGridTypeValue (gridType, @"can",              $$Focus OR $$Respond OR $$Callback OR $$InputTextString)
  345.   XuiSetGridTypeValue (gridType, @"focusKid",         $TextUpper)
  346.   XuiSetGridTypeValue (gridType, @"inputTextArray",   $TextUpper)
  347.   IFZ message THEN RETURN
  348. END SUB
  349. END FUNCTION
  350.