iii
4.8.2 attr-on! vs attr-set! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.8.3 attr-get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.8.4 chgat function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.9 Windows Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.9.1 The basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.9.2 Let there be a window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.9.3 Other functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.9.4 Other border functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.10 Colors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.10.1 The basics of color. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.10.2 Changing color definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.11 Interfacing with the keyboard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.11.1 The basics of keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.11.2 A simple key usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.12 Interfacing with the mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.12.1 The basics of the mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.12.2 Getting the events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.12.3 Miscellaneous functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.13 Panels Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.13.1 Panels Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.13.2 Compiling With the Panels Library . . . . . . . . . . . . . . . . . . . . . . 31
4.13.3 Moving and Resizing Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.14 Menu Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.14.1 Menu basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.14.2 Menu Driver: The work horse of the menu system . . . . . . . . 36
4.14.3 Menu Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.14.4 Scrolling Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.15 Forms Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.15.1 The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.15.2 A Form Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.15.3 Making it useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.15.4 Playing with fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.15.4.1 Fetching Size and Location of Field . . . . . . . . . . . . . . . . . 43
4.15.5 Field Display Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.15.6 Field Option Bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.15.7 Field Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.15.8 Variable-Sized Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.15.9 Form Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.15.10 Field Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.15.11 The Form Driver: The Work Horse of the System . . . . . . . 53
4.15.11.1 Page Navigation Requests . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.15.11.2 Inter-Field Navigation Requests. . . . . . . . . . . . . . . . . . . . 53