home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vp21beta.zip / OAPIINF.RAR / VPPM5.INF (.txt) < prev   
OS/2 Help File  |  2000-09-07  |  579KB  |  21,152 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Keyboard Accelerators ΓòÉΓòÉΓòÉ
  3.  
  4. A keyboard accelerator (shortcut key to the user) is a keystroke that generates 
  5. a command message for an application.  This chapter describes how to use 
  6. keyboard accelerators in your PM applications. 
  7.  
  8.  
  9. ΓòÉΓòÉΓòÉ 1.1. About Keyboard Accelerators ΓòÉΓòÉΓòÉ
  10.  
  11. Using a keyboard accelerator has the same effect as choosing a menu item. 
  12. While menus provide an easy way to learn an application's command set, 
  13. accelerators provide quick access to those commands. 
  14.  
  15. Without accelerators, a user might generate commands by pressing the Alt key to 
  16. access the menu bar, using the Arrow keys to select an item, then pressing the 
  17. Enter key to choose the item.  In contrast, accelerators allow the user to 
  18. generate commands with a single keystroke. 
  19.  
  20. Like menu items, accelerators can generate WM_COMMAND, WM_HELP, and 
  21. WM_SYSCOMMAND messages.  Although, normally, accelerators are used to generate 
  22. existing commands as menu items, they also can send commands that have no 
  23. menu-item equivalent. 
  24.  
  25.  
  26. ΓòÉΓòÉΓòÉ 1.1.1. Accelerator Tables ΓòÉΓòÉΓòÉ
  27.  
  28. An accelerator table contains an array of accelerators.  Accelerator tables 
  29. exist at two levels within the operating system: a single accelerator table for 
  30. the system queue and individual accelerator tables for application windows. 
  31. Accelerators in the system queue apply to all applications-for example, the F1 
  32. key always generates a WM_HELP message.  Having accelerators for individual 
  33. application windows ensures that an application can define its own accelerators 
  34. without interfering with other applications.  An accelerator for an application 
  35. window can override the accelerator in the system queue.  An application can 
  36. modify both its own accelerator table and the system's accelerator table. 
  37.  
  38. The application can set and query the accelerator table for a specific window 
  39. or for the entire system.  For example, an application can query the system 
  40. accelerator table, copy it, modify the copied data structures; and then, use 
  41. the modified copy to set the system accelerator table.  An application also can 
  42. modify its window's accelerator table at run time to respond more appropriately 
  43. to the current environment. 
  44.  
  45. Note:  An application that modifies any accelerator table other than its own 
  46. should maintain the original accelerator table; and, before terminating, 
  47. restore that table. 
  48.  
  49.  
  50. ΓòÉΓòÉΓòÉ 1.1.2. Accelerator-Table Resources ΓòÉΓòÉΓòÉ
  51.  
  52. You can use accelerators in an application by creating an accelerator-table 
  53. resource in a resource-definition file.  Then, when the application creates a 
  54. standard frame window, the application can associate that window with the 
  55. resource. 
  56.  
  57. As specified in a resource-definition file, an accelerator table consists of a 
  58. list of accelerator items, each defining the keystroke that triggers the 
  59. accelerator, the command the accelerator generates, and the accelerator's 
  60. style.  The style specifies whether the keystroke is a virtual key, a 
  61. character, or a scan code, and whether the generated message is WM_COMMAND, 
  62. WM_SYSCOMMAND, or WM_HELP; WM_COMMAND is the default. 
  63.  
  64.  
  65. ΓòÉΓòÉΓòÉ 1.1.3. Accelerator-Table Handles ΓòÉΓòÉΓòÉ
  66.  
  67. Applications that use accelerator tables refer to them with a 32-bit handle. 
  68. An application using this handle, by default, can make most API function calls 
  69. for accelerators without having to account for the internal structures that 
  70. define the accelerator table.  When an application needs to dynamically create 
  71. or change an accelerator table, it must use the ACCEL and ACCELTABLE data 
  72. structures. 
  73.  
  74.  
  75. ΓòÉΓòÉΓòÉ 1.1.4. Accelerator-Table Data Structures ΓòÉΓòÉΓòÉ
  76.  
  77. An accelerator table consists of individual accelerator items.  Each item in 
  78. the table is represented by an ACCEL structure that defines the accelerator's 
  79. style, keystroke, and command identifier.  Typically, an application defines 
  80. these aspects of an accelerator in a resource-definition file, but the ACCEL 
  81. structure also can be built in memory at run time. An accelerator table is 
  82. represented by an ACCELTABLE structure that specifies the number of accelerator 
  83. items in the table, the code page used for the keystrokes in the accelerator 
  84. items, and an array of ACCEL structures (one for each item in the table). 
  85. Applications that use ACCELTABLE structures directly must allocate sufficient 
  86. memory to hold all the items in the table. 
  87.  
  88.  
  89. ΓòÉΓòÉΓòÉ 1.1.5. Accelerator-Item Styles ΓòÉΓòÉΓòÉ
  90.  
  91. An accelerator item has a style that determines what combination of keys 
  92. produces the accelerator and what command message is generated by the 
  93. accelerator.  An application can specify the following accelerator-item styles 
  94. in the fs field of the ACCEL structure: 
  95.  
  96. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  97. ΓöéStyle          ΓöéDescription                                  Γöé
  98. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  99. ΓöéAF_ALT         ΓöéSpecifies that the user must hold down the   Γöé
  100. Γöé               ΓöéAlt key while pressing the accelerator key.  Γöé
  101. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  102. ΓöéAF_CHAR        ΓöéSpecifies that the keystroke is a character  Γöé
  103. Γöé               Γöéthat is translated using the code page for   Γöé
  104. Γöé               Γöéthe accelerator table. (This is the default  Γöé
  105. Γöé               Γöéstyle.)                                      Γöé
  106. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  107. ΓöéAF_CONTROL     ΓöéSpecifies that the user must hold down the   Γöé
  108. Γöé               ΓöéCtrl key while pressing the accelerator key. Γöé
  109. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  110. ΓöéAF_HELP        ΓöéSpecifies that the accelerator generates a   Γöé
  111. Γöé               ΓöéWM_HELP message instead of a WM_COMMAND      Γöé
  112. Γöé               Γöémessage.                                     Γöé
  113. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  114. ΓöéAF_LONEKEY     ΓöéSpecifies that the user need not press       Γöé
  115. Γöé               Γöéanother key while the accelerator key is     Γöé
  116. Γöé               Γöédown.  Typically, this style is used with theΓöé
  117. Γöé               ΓöéAlt key to specify that simply pressing and  Γöé
  118. Γöé               Γöéreleasing that key triggers the accelerator. Γöé
  119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  120. ΓöéAF_SCANCODE    ΓöéSpecifies that the keystroke is an           Γöé
  121. Γöé               Γöéuntranslated scan code from the keyboard.    Γöé
  122. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  123. ΓöéAF_SHIFT       ΓöéSpecifies that the user must hold down the   Γöé
  124. Γöé               ΓöéShift key when pressing the accelerator key. Γöé
  125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  126. ΓöéAF_SYSCOMMAND  ΓöéSpecifies that the accelerator generates a   Γöé
  127. Γöé               ΓöéWM_SYSCOMMAND message instead of a WM_COMMANDΓöé
  128. Γöé               Γöémessage.                                     Γöé
  129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  130. ΓöéAF_VIRTUALKEY  ΓöéSpecifies that the keystroke is a virtual    Γöé
  131. Γöé               Γöékey-for example, the F1 function key.        Γöé
  132. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  133.  
  134.  
  135. ΓòÉΓòÉΓòÉ 1.2. Using Keyboard Accelerators ΓòÉΓòÉΓòÉ
  136.  
  137. This section explains how to perform the following tasks: 
  138.  
  139.      Create an accelerator-table resource 
  140.      Include an accelerator table in a frame window 
  141.      Modify an accelerator table 
  142.  
  143.  
  144. ΓòÉΓòÉΓòÉ 1.2.1. Creating an Accelerator-Table Resource ΓòÉΓòÉΓòÉ
  145.  
  146. The following code fragment shows a typical accelerator-table resource: 
  147.  
  148.  
  149.     ACCELTABLE ID_ACCEL_RESOURCE
  150.     BEGIN
  151.         VK_ESC,    IDM_ED_UNDO,  AF_VIRTUALKEY Or AF_SHIFT
  152.         VK_DELETE, IDM_ED_CUT,   AF_VIRTUALKEY
  153.         VK_F2,     IDM_ED_COPY,  AF_VIRTUALKEY
  154.         VK_INSERT, IDM_ED_PASTE, AF_VIRTUALKEY
  155.     END
  156.  
  157. This accelerator table has four accelerator items. The first one is triggered 
  158. when the user presses Shift+Esc, which sends a WM_COMMAND message (the 
  159. default). 
  160.  
  161. An accelerator table in a resource-definition file has an identifier 
  162. (ID_ACCEL_RESOURCE in the previous example).  You can associate an 
  163. accelerator-table resource with a standard frame window by specifying the 
  164. table's resource identifier as the idResources parameter of the 
  165. WinCreateStdWindow function. 
  166.  
  167. An application can load an accelerator table resource-definition file 
  168. automatically when creating a standard frame window, or it can load the 
  169. resource independently and associate it with a window or with the entire 
  170. system. 
  171.  
  172.  
  173. ΓòÉΓòÉΓòÉ 1.2.2. Including an Accelerator Table in a Frame Window ΓòÉΓòÉΓòÉ
  174.  
  175. You can add an accelerator table to a frame window either by using the 
  176. WinSetAccelTable function or by defining an accelerator-table resource (as 
  177. shown in the previous section) and creating a frame window with the 
  178. FCF_ACCELTABLE frame style. The second method is shown in the following code 
  179. fragment: 
  180.  
  181. Uses
  182.   Os2Def,Os2Base,Os2PmApi;
  183.  
  184. Var
  185.   HwndFrame,hwndClient : HWND; (* ╨ísken var tom!! *)
  186.   SzClassName          : PCHAR; (* ╨ísken var tom!! *)
  187.   SzTitle              : PCHAR; (* ╨ísken var tom!! *)
  188.   FlControlStyle       : ULONG; (* ╨ísken var tom!! *)
  189.  
  190. Begin
  191.   SzClassName := 'MyClass';
  192.   SzTitle     := 'MyWindow';
  193.  
  194.   FlControlStyle :=
  195.     FCF_MINMAX        Or      (* Min and max buttons      *)
  196.     FCF_SHELLPOSITION Or      (* System size and position *)
  197.     FCF_SIZEBORDER    Or      (* Size border              *)
  198.     FCF_TITLEBAR      Or      (* Title bar                *)
  199.     FCF_TASKLIST      Or      (* Task list                *)
  200.     FCF_ACCELTABLE    Or      (* Accelerator table        *)
  201.     FCF_SYSMENU       Or      (* System menu              *)
  202.     FCF_MENU;                (* Menu                     *)
  203.  
  204.   hwndFrame := WinCreateStdWindow(HWND_DESKTOP,
  205.     WS_VISIBLE,
  206.     &flControlStyle,
  207.     szClassName,
  208.     szTitle,
  209.     0,
  210.     nil,
  211.     ID_MENU_RESOURCE,
  212.     &hwndClient);
  213.  
  214. Notice that if you set the flControlStyle parameter to the FCF_STANDARD flag, 
  215. you must define an accelerator-table resource, because FCF_STANDARD includes 
  216. the FCF_ACCELTABLE flag. 
  217.  
  218. If the window being created also has a menu, the menu resource and accelerator 
  219. resource must have the same resource identifier; this is because the 
  220. WinCreateStdWindow function has only one input parameter to specify the 
  221. resource identifiers for menus, accelerator tables, and icons.  If an 
  222. application creates an accelerator table resource-definition file; then, opens 
  223. a standard frame window (as shown in the preceding example), the accelerator 
  224. table is installed automatically in the window's message queue, and keyboard 
  225. events are translated during the normal processing of events.  The application 
  226. simply responds to WM_COMMAND, WM_SYSCOMMAND, and WM_HELP messages; it does not 
  227. matter whether these messages come from a menu or an accelerator. 
  228.  
  229. An application also can add an accelerator table to a window by calling the 
  230. WinSetAccelTable function with an accelerator-table handle and a frame-window 
  231. handle.  The application can call either the WinLoadAccelTable function to 
  232. retrieve an accelerator table from a resource file or the WinCreateAccelTable 
  233. function to create an accelerator table from an accelerator-table data 
  234. structure in memory. 
  235.  
  236.  
  237. ΓòÉΓòÉΓòÉ 1.2.3. Modifying an Accelerator Table ΓòÉΓòÉΓòÉ
  238.  
  239. You can modify an accelerator table, for either your application windows or the 
  240. system, by doing the following: 
  241.  
  242.    1. Retrieve the handle of the accelerator table. 
  243.  
  244.    2. Use that handle to copy the accelerator-table data to an 
  245.       application-supplied buffer. 
  246.  
  247.    3. Change the data in the buffer. 
  248.  
  249.    4. Use the changed data to create a new accelerator table. 
  250.  
  251.  Then you can use the new accelerator-table handle to set the accelerator 
  252.  table, as outlined in the following list: 
  253.  
  254.    1. Call WinQueryAccelTable to retrieve an accelerator-table handle. 
  255.  
  256.    2. Call WinCopyAccelTable with a NULL buffer handle to determine how many 
  257.       bytes are in the table. 
  258.  
  259.    3. Allocate sufficient memory for the accelerator-table data. 
  260.  
  261.    4. Call WinCopyAccelTable, with a pointer to the allocated memory. 
  262.  
  263.    5. Modify the data in the buffer (assuming it has the form of an ACCELTABLE 
  264.       structure). 
  265.  
  266.    6. Call WinCreateAccelTable, passing a pointer to the buffer with the 
  267.       modified accelerator-table data. 
  268.  
  269.    7. Call WinSetAccelTable with the handle returned by WinCreateAccelTable. 
  270.  
  271.  
  272. ΓòÉΓòÉΓòÉ 2. List-Box Controls ΓòÉΓòÉΓòÉ
  273.  
  274. A list box is a control window that displays several text items at a time, one 
  275. or more of which can be selected by the user.  This chapter explains how to 
  276. create and use list-box controls in PM applications. 
  277.  
  278.  
  279. ΓòÉΓòÉΓòÉ 2.1. About List Boxes ΓòÉΓòÉΓòÉ
  280.  
  281. An application uses a list box when it requires a list of selectable fields 
  282. that is too large for the display area or a list of choices that can change 
  283. dynamically.  Each list item contains a text string and a handle.  Usually, the 
  284. text string is displayed in the list-box window; but the handle is available to 
  285. the application to reference other data associated with each of the items in 
  286. the list. 
  287.  
  288. A list box always is owned by another window that receives messages from the 
  289. list box when events occur, such as when a user selects an item from the list 
  290. box.  Typically, the owner is a dialog window (as shown in the following 
  291. figure,) or the client window of an application frame window.  The client- or 
  292. dialog-window procedure defined by the application responds to messages sent 
  293. from the list box. 
  294.  
  295. A list box always contains a scroll bar for use when the list box contains more 
  296. items than can be displayed in the list-box window. The list box responds to 
  297. mouse clicks in the scroll bar by scrolling the list; otherwise, the scroll bar 
  298. is disabled. 
  299.  
  300. The maximum number of items permitted in a list box is 32767. 
  301.  
  302.  
  303. ΓòÉΓòÉΓòÉ 2.2. Using List Boxes ΓòÉΓòÉΓòÉ
  304.  
  305. An application uses a list-box control to display a list in a window.  List 
  306. boxes can be displayed in standard application windows, although they are more 
  307. commonly used in dialog windows.  In either case, notification messages are 
  308. sent from the list box to its owner window, enabling the application to respond 
  309. to user actions in the list. 
  310.  
  311. Once a list box is created, the application controls the insertion and deletion 
  312. of list items.  Items can be inserted at the end of the list, automatically 
  313. sorted into the list, or inserted at a specified index position.  Applications 
  314. can turn list drawing on and off to speed up the process of inserting numerous 
  315. items into a list. 
  316.  
  317. The owner-window procedure of the list box receives messages when a user 
  318. manipulates the list-box data.  Most default list actions (for example, 
  319. highlighting selections and scrolling) are handled automatically by the list 
  320. box itself.  The application controls the responses when the user chooses an 
  321. item in the list, either by double-clicking the item or by pressing Enter after 
  322. an item is highlighted.  The list box also notifies the application when the 
  323. user changes the selection or scrolls the list. 
  324.  
  325. Normally, list items are text strings drawn by a list box. An application also 
  326. can draw and highlight the items in a list.  This enables the application to 
  327. create customized lists that contain graphics.  When an application creates a 
  328. list box with the LS_OWNERDRAW style, the owner of the list box receives a 
  329. WM_DRAWITEM message for each item that should be drawn or highlighted.  This is 
  330. similar to the owner-drawn style for menus, except that the owner-drawn style 
  331. applies to the entire list rather than to individual items. 
  332.  
  333.  
  334. ΓòÉΓòÉΓòÉ 2.2.1. Creating a List-Box Window ΓòÉΓòÉΓòÉ
  335.  
  336. List boxes are WC_LISTBOX class windows and are predefined by the system. 
  337. Applications can create list boxes by calling WinCreateWindow, using WC_LISTBOX 
  338. as the window-class parameter. 
  339.  
  340. A list box passes notification messages to its owner window, so an application 
  341. uses its client window, rather than the frame window, as the owner of the list. 
  342. The client-window procedure receives the messages sent from the list box. For 
  343. example, to create a list box that completely fills the client area of a frame 
  344. window, an application would make the client window the owner and parent of the 
  345. list-box window, and make the list-box window the same size as the client 
  346. window.  This is shown in the following code fragment. 
  347.  
  348.  
  349. Uses
  350.   Os2Def,Os2Base,Os2PmApi;
  351.  
  352. Var
  353.   HwndClient,hwndList : HWND;  (* ╨ísken var tom!! *)
  354.   Rcl                 : RECTL; (* ╨ísken var tom!! *)
  355.  
  356. Begin
  357.  
  358.                                             (* How big is the
  359.                                                client window? *)
  360.   WinQueryWindowRect(hwndClient, &rcl);
  361.  
  362.                                             (* Make a list-box
  363.                                                window.        *)
  364.   hwndList := WinCreateWindow(hwndClient,   (* Parent         *)
  365.       WC_LISTBOX,                           (* Class        *)
  366.       '',                                   (* Name         *)
  367.       WS_VISIBLE Or LS_NOADJUSTPOS,         (* Style        *)
  368.       0, 0,                                 (* x, y         *)
  369.       rcl.xRight, rcl.yTop,                 (* cx, cy       *)
  370.       hwndClient,                           (* Owner        *)
  371.       HWND_TOP,                             (* Behind       *)
  372.       ID_LISTWINDOW,                        (* ID           *)
  373.       nil,                                  (* Control data *)
  374.       nil);                                 (* parameters   *)
  375.  
  376. Because the list box draws its own border, and a frame-window border already 
  377. surrounds the client area of a frame window due to the adjacent frame controls, 
  378. the effect is a double-thick border around the list box.  You can change this 
  379. effect by calling WinInflateRect to overlap the list-box border with the 
  380. surrounding frame-window border, resulting in only one list-box border. 
  381.  
  382. Notice that the code specifies the list-box window style LS_NOADJUSTPOS.  This 
  383. ensures that the list box is created exactly the specified size.  If the 
  384. LS_NOADJUSTPOS style is not specified, the list-box height is rounded down, if 
  385. necessary, to make it a multiple of the item height.  Enabling a list box to 
  386. adjust its height automatically is useful for preventing partial items being 
  387. displayed at the bottom of a list box. 
  388.  
  389.  
  390. ΓòÉΓòÉΓòÉ 2.2.2. Using a List Box in a Dialog Window ΓòÉΓòÉΓòÉ
  391.  
  392. List boxes most commonly are used in dialog windows.  A list box in a dialog 
  393. box is a control window, like a push button or an entry field.  Typically, the 
  394. application defines a list box as one item in a dialog template in the 
  395. resource-definition file, as shown in the following resource compiler 
  396. source-code fragment. 
  397.  
  398.  
  399.     DLGTEMPLATE IDD_OPEN
  400.     BEGIN
  401.        DIALOG "Open...", IDD_OPEN, 35, 35, 150, 135,
  402.                 FS_DLGBORDER, FCF_TITLEBAR
  403.           BEGIN
  404.               LISTBOX        IDD_FILELIST, 15, 15, 90, 90
  405.               PUSHBUTTON     "Drive", IDD_DRIVEBUTTON, 115, 70, 30, 14
  406.               DEFPUSHBUTTON  "Open", IDD_OPENBUTTON, 115, 40, 30, 14
  407.               PUSHBUTTON     "Cancel", IDD_CANCELBUTTON, 115, 15, 30, 14
  408.           END
  409.     END
  410.  
  411. Once the dialog resource is defined, the application loads and displays the 
  412. dialog box as it would normally.  The application inserts items into the list 
  413. when processing the WM_INITDLG message. 
  414.  
  415. A dialog window with a list box usually has an OK button.  The user can select 
  416. items in the list, and then indicate a final selection by double-clicking, 
  417. pressing Enter, or clicking the OK button.  When the dialog-window procedure 
  418. receives a message indicating that the user has clicked the OK button, it 
  419. queries the list box to determine the current selection (or selections, if the 
  420. list allows multiple selections), and then responds as though it had received a 
  421. WM_CONTROL message with the LN_ENTER notification code. 
  422.  
  423.  
  424. ΓòÉΓòÉΓòÉ 2.2.3. Adding or Deleting an Item in a List Box ΓòÉΓòÉΓòÉ
  425.  
  426. Applications can add items to a list box by sending an LM_INSERTITEM or 
  427. LM_INSERTMULTITEMS message to the list-box window; items are deleted using the 
  428. LM_DELETEITEM message. Items in a list are specified with a 0-based index 
  429. (beginning at the top of the list).  A new list is created empty; the 
  430. application initializes the list by inserting items.  LM_INSERTMULTITEMS allows 
  431. up to 32767 items to be inserted as a group, while LM_INSERTITEM adds items 
  432. one-by-one to a list. 
  433.  
  434. The application specifies the text and position for each new item.  It can 
  435. specify an absolute-position index or one of the following predefined index 
  436. values: 
  437.  
  438. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  439. ΓöéValue               ΓöéMeaning                                 Γöé
  440. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  441. ΓöéLIT_END             ΓöéInsert item at end of list.             Γöé
  442. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  443. ΓöéLIT_SORTASCENDING   ΓöéInsert item alphabetically ascending    Γöé
  444. Γöé                    Γöéinto list.                              Γöé
  445. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  446. ΓöéLIT_SORTDESCENDING  ΓöéInsert item alphabetically descending   Γöé
  447. Γöé                    Γöéinto list.                              Γöé
  448. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  449.  
  450. If a large number of items are to be inserted into a list box at one time, use 
  451. of LM_INSERTMULTITEMS is more efficient than use of LM_INSERTITEM.  The same 
  452. positioning flags are used. When LIT_SORTASCENDING or LIT_SORTDESCENDING is 
  453. specified with LM_INSERTMULTITEMS, new items are inserted before the updated 
  454. list is sorted.  If items are being added using several LM_INSERTMULTITEMS 
  455. messages, LIT_END should be specified for all messages except the last; this 
  456. will avoid unnecessary multiple sorts of the list. 
  457.  
  458. If no text array is specified, empty items are inserted into the list.  This is 
  459. very useful for list boxes created with LS_OWNERDRAW style, which do not use 
  460. text strings. 
  461.  
  462. The application must send an LM_DELETEITEM message and supply the 
  463. absolute-position index of the item when deleting items from a list.  The 
  464. LM_DELETEALL message deletes all items in a list. 
  465.  
  466. One way an application can speed up the insertion of list items is to suspend 
  467. drawing until it has finished inserting items.  This is a particularly valuable 
  468. approach when using a sorted insertion process (when inserting one item can 
  469. cause rearrangement of the entire list).  You can turn off list drawing by 
  470. calling WinEnableWindowUpdate, specifying FALSE for the enable parameter, and 
  471. then calling WinShowWindow.  This forces a total update when insertion is 
  472. complete.  The following code fragment illustrates this concept: 
  473.  
  474. Uses
  475.   Os2Def,Os2Base,Os2PmApi;
  476.  
  477. Var
  478.   HwndFileList : HWND; (* ╨ísken var tom!! *)
  479.  
  480. Begin
  481.  
  482.   (* Disable updates while filling the list. *)
  483.   WinEnableWindowUpdate(hwndFileList, Ord(False));
  484.   .
  485.   . (* Send LM_INSERTITEM messages to insert all new items. *)
  486.   .
  487.  
  488.   (* Now cause the window to update and show the new information.  *)
  489.   WinShowWindow(hwndFileList, Ord(True));
  490.  
  491. Notice that this optimization is unnecessary if an application is adding list 
  492. items while processing a WM_INITDLG message, because the list box is not 
  493. visible, and the list-box routines are internally optimized. 
  494.  
  495.  
  496. ΓòÉΓòÉΓòÉ 2.2.4. Responding to a User Selection in a List Box ΓòÉΓòÉΓòÉ
  497.  
  498. When a user chooses an item in a list, the primary notification an application 
  499. receives is a WM_CONTROL message, with the LN_ENTER control code sent to the 
  500. owner window of the list.  Within the window procedure for the owner window, 
  501. the application responds to the LN_ENTER control code by querying the list box 
  502. for the current selection (or selections, in the case of an LS_MULTIPLESEL or 
  503. LS_EXTENDEDSEL list box). 
  504.  
  505. The LN_ENTER control code notifies the application that the user has selected a 
  506. list item.  A WM_CONTROL message with an LN_SELECT control code is sent to the 
  507. list-box owner whenever a selection in a list changes, such as when a user 
  508. moves the mouse pointer up and down a list while pressing the mouse button.  In 
  509. this case, items are selected but not yet chosen.  An application can ignore 
  510. LN_SELECT control codes when the selection changes, responding only when the 
  511. item is actually chosen.  Or an application can use LN_SELECT to display 
  512. context-dependent information that changes rapidly with each selection made by 
  513. the user. 
  514.  
  515.  
  516. ΓòÉΓòÉΓòÉ 2.2.5. Handling Multiple Selections ΓòÉΓòÉΓòÉ
  517.  
  518. When a list box has the style LS_MULTIPLESEL or LS_EXTENDEDSEL, the user can 
  519. select more than one item at a time.  An application must use different 
  520. strategies when working with these types of lists.  For example, when 
  521. responding to an LN_ENTER control code, it is not sufficient to send a single 
  522. LM_QUERYSELECTION message, because that message will find only the first 
  523. selection.  To find all current selections, an application must continue 
  524. sending LM_QUERYSELECTION messages, using the return index of the previous 
  525. message as the starting index of the next message, until no items are returned. 
  526.  
  527.  
  528. ΓòÉΓòÉΓòÉ 2.2.6. Creating an Owner-Drawn List Item ΓòÉΓòÉΓòÉ
  529.  
  530. To draw its own list items, an application must create a list that has the 
  531. style LS_OWNERDRAW:  the owner window of the list box must respond to the 
  532. WM_MEASUREITEM and WM_DRAWITEM messages. 
  533.  
  534. When the owner window receives a WM_MEASUREITEM message, it must return the 
  535. height of the list item.  All items in a list must have the same height 
  536. (greater than or equal to 1).  The WM_MEASUREITEM message is sent when the list 
  537. box is created, and every time an item is added.  You can change the item 
  538. height by sending an LM_SETITEMHEIGHT message to the list-box window. The 
  539. maximum width of a list box created with the LM_HORZSCROLL style can be set 
  540. using an LM_SETITEMWIDTH message. 
  541.  
  542. The owner window receives a WM_DRAWITEM message whenever an item in an 
  543. owner-drawn list should be drawn or highlighted.  Although it is quite common 
  544. for an owner-drawn list to draw items, it is less common to override the 
  545. system-default method of highlighting.  (This method inverts the rectangle that 
  546. contains the item.)  Do not create your own highlighting unless, for some 
  547. reason, the system-default method is unacceptable to you. 
  548.  
  549. The WM_DRAWITEM message contains a pointer to an OWNERITEM data structure.  The 
  550. OWNERITEM structure contains the window identifier for the list box, a 
  551. presentation-space handle, a bounding rectangle for the item, the position 
  552. index for the item, and the application-defined item handle.  This structure 
  553. also contains two fields that determine whether a message draws, highlights, or 
  554. removes the highlighting from an item.  The OWNERITEM structure has the 
  555. following form: 
  556.  
  557. Type
  558.   OWNERITEM = Record
  559.     Hwnd           : HWND;  (* ╨ísken var tom!! *)
  560.     Hps            : HPS;   (* ╨ísken var tom!! *)
  561.     FsState        : ULONG; (* ╨ísken var tom!! *)
  562.     FsAttribute    : ULONG; (* ╨ísken var tom!! *)
  563.     FsStateOld     : ULONG; (* ╨ísken var tom!! *)
  564.     FsAttributeOld : ULONG; (* ╨ísken var tom!! *)
  565.     RclItem        : RECTL; (* ╨ísken var tom!! *)
  566.     IdItem         : LONG;  (* ╨ísken var tom!! *)
  567.     HItem          : ULONG; (* ╨ísken var tom!! *)
  568.   End;
  569.  
  570. When the item must be drawn, the owner window receives a WM_DRAWITEM message 
  571. with the fsState field set differently from the fsStateOld field.  If the owner 
  572. window draws the item in response to this message, it returns TRUE, telling the 
  573. system not to draw the item.  If the owner window returns FALSE, the system 
  574. draws the item, using the default list-item drawing method. 
  575.  
  576. You can get the text of a list item by sending an LM_QUERYITEMTEXT message to 
  577. the list-box window.  You should draw the item using the hps and rclItem 
  578. arguments provided in the OWNERITEM structure. 
  579.  
  580. If the item being drawn is currently selected, the fsState and fsStateOld 
  581. fields are both TRUE; they both will be FALSE if the item is not currently 
  582. selected.  The window receiving a WM_DRAWITEM message can use this information 
  583. to highlight the selected item at the same time it draws the item.  If the 
  584. owner window highlights the item, it must leave the fsState and fsStateOld 
  585. fields equal to each other.  If the system provides default highlighting for 
  586. the item (by inverting the item rectangle), the owner window must set the 
  587. fsState field to 1 and the fsStateOld field to 0 before returning from the 
  588. WM_DRAWITEM message. 
  589.  
  590. The owner window also receives a WM_DRAWITEM message when the highlight state 
  591. of a list item changes.  For example, when a user clicks an item, the 
  592. highlighting must be removed from the currently selected item, and the new 
  593. selection must be highlighted.  If these items are owner-drawn, the owner 
  594. window receives one WM_DRAWITEM message for each unhighlighted item and one 
  595. message for the newly highlighted item.  To highlight an item, the fsState 
  596. field must equal TRUE, and the fsStateOld field must equal FALSE.  In this 
  597. case, the application should highlight the item and return the fsState and 
  598. fsStateOld fields equal to FALSE, which tells the system not to highlight the 
  599. item.  The application also can return the fsState and fsStateOld fields with 
  600. two different (unequal) values and the list box will highlight the item (the 
  601. default action). 
  602.  
  603. To remove highlighting from an item, the fsState field must equal FALSE and the 
  604. fsStateOld field must equal TRUE.  In this case, the application removes the 
  605. highlighting and returns both the fsState and the fsStateOld fields equal to 
  606. FALSE.  This tells the system not to attempt to remove the highlighting.  The 
  607. application also can return the fsState and fsStateOld fields with two 
  608. different (unequal) values, and the list box will remove the highlighting (the 
  609. default response). The following code fragment shows these selection processes: 
  610.  
  611. Uses
  612.   Os2Def,Os2Base,Os2PmApi;
  613.  
  614. Var
  615.   poi : ^OWNERITEM; (* ╨ísken var tom!! *)
  616.  
  617.   (* Case Of *)
  618.   WM_DRAWITEM:
  619.     poi := mp2;
  620.  
  621.     (* Test to see If this is drawing or highlighting/unhighlighting.  *)
  622.     If (poi->.fsState <> poi->.fsStateOld) Then Begin
  623.  
  624.       (* This is either highlighting or unhighlighting.              *)
  625.       If (poi->.fsState) Then Begin
  626.         .
  627.         . (* Highlight the item.                                   *)
  628.         .
  629.       End;
  630.       Else Begin
  631.         .
  632.         . (* Remove the highlighting.                              *)
  633.         .
  634.       End;
  635.  
  636.       (* Set fsState := fsStateOld to tell system you did it.         *)
  637.       poi->.fsState := poi->.fsStateOld = 0;
  638.  
  639.       (* Return Ord(True) here, to tell list box you did the highlighting. *)
  640.       Exit;
  641.  
  642.     End;
  643.     Else Begin
  644.       .
  645.       . (* Draw the item.                                            *)
  646.       .
  647.       If (poi->.fsState) Then Begin   (* Checks to see if item is selected     *)
  648.         .
  649.         . (* Highlight the item.                                   *)
  650.         .
  651.         (* Set fsState := fsStateOld to tell system you did it.     *)
  652.     End;
  653.     (* Return Ord(True) here, to tell list box you did the highlighting. *)
  654.     Exit;
  655.   (* End of case WM_DRAWITEM *)
  656.  
  657.  
  658. ΓòÉΓòÉΓòÉ 2.2.7. Default List-Box Behavior ΓòÉΓòÉΓòÉ
  659.  
  660. The following table lists all the messages handled by the predefined list-box 
  661. window-class procedure. 
  662.  
  663. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  664. ΓöéMessage                  ΓöéDescription                        Γöé
  665. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  666. ΓöéLM_DELETEALL             ΓöéDeletes all items in the list.     Γöé
  667. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  668. ΓöéLM_DELETEITEM            ΓöéRemoves the specified item from theΓöé
  669. Γöé                         Γöélist, redrawing the list as        Γöé
  670. Γöé                         Γöénecessary. Returns the number of   Γöé
  671. Γöé                         Γöéitems remaining in the list.       Γöé
  672. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  673. ΓöéLM_INSERTITEM            ΓöéInserts a new item into the list   Γöé
  674. Γöé                         Γöéaccording to the position          Γöé
  675. Γöé                         Γöéinformation passed with the        Γöé
  676. Γöé                         Γöémessage.                           Γöé
  677. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  678. ΓöéLM_INSERTMULTITEMS       ΓöéInserts one or more items into a   Γöé
  679. Γöé                         Γöélist box at one time.              Γöé
  680. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  681. ΓöéLM_QUERYITEMCOUNT        ΓöéReturns the number of items in the Γöé
  682. Γöé                         Γöélist.                              Γöé
  683. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  684. ΓöéLM_QUERYITEMHANDLE       ΓöéReturns the specified item handle. Γöé
  685. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  686. ΓöéLM_QUERYITEMTEXT         ΓöéCopies the text of the specified   Γöé
  687. Γöé                         Γöéitem to a buffer supplied by the   Γöé
  688. Γöé                         Γöémessage sender.                    Γöé
  689. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  690. ΓöéLM_QUERYITEMTEXTLENGTH   ΓöéReturns the text length of the     Γöé
  691. Γöé                         Γöéspecified item.                    Γöé
  692. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  693. ΓöéLM_QUERYSELECTION        ΓöéFor a single-selection list box,   Γöé
  694. Γöé                         Γöéreturns the zero-based index of theΓöé
  695. Γöé                         Γöécurrently selected item. For a     Γöé
  696. Γöé                         Γöémultiple-selection list box,       Γöé
  697. Γöé                         Γöéreturns the next selected item or  Γöé
  698. Γöé                         ΓöéLIT_NONE if no more items are      Γöé
  699. Γöé                         Γöéselected.                          Γöé
  700. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  701. ΓöéLM_QUERYTOPINDEX         ΓöéReturns the zero-based index to theΓöé
  702. Γöé                         Γöéitem currently visible at the top  Γöé
  703. Γöé                         Γöéof the list.                       Γöé
  704. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  705. ΓöéLM_SEARCHSTRING          ΓöéSearches the list for a match to   Γöé
  706. Γöé                         Γöéthe specified string.              Γöé
  707. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  708. ΓöéLM_SELECTITEM            ΓöéSelects the specified item.  If theΓöé
  709. Γöé                         Γöélist is a single-selection list,   Γöé
  710. Γöé                         Γöédeselects the previous selection.  Γöé
  711. Γöé                         ΓöéSends a WM_CONTROL message (with   Γöé
  712. Γöé                         Γöéthe LN_SELECT code) to the owner   Γöé
  713. Γöé                         Γöéwindow.                            Γöé
  714. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  715. ΓöéLM_SETITEMHANDLE         ΓöéSets the specified item handle.    Γöé
  716. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  717. ΓöéLM_SETITEMHEIGHT         ΓöéSets the item height for the list. Γöé
  718. Γöé                         ΓöéAll items in the list have the sameΓöé
  719. Γöé                         Γöéheight.                            Γöé
  720. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  721. ΓöéLM_SETITEMTEXT           ΓöéSets the text for the specified    Γöé
  722. Γöé                         Γöéitem.                              Γöé
  723. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  724. ΓöéLM_SETITEMWIDTH          ΓöéSets the maximum width of a list   Γöé
  725. Γöé                         Γöébox created with the LS_HORZSCROLL Γöé
  726. Γöé                         Γöéstyle.                             Γöé
  727. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  728. ΓöéLM_SETTOPINDEX           ΓöéShows the specified item as the topΓöé
  729. Γöé                         Γöéitem in the list window, scrolling Γöé
  730. Γöé                         Γöéthe list as necessary.             Γöé
  731. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  732. ΓöéWM_ADJUSTWINDOWPOS       ΓöéIf the list box has the style      Γöé
  733. Γöé                         ΓöéLS_NOADJUSTPOS, makes no changes toΓöé
  734. Γöé                         Γöéthe SWP structure and returns      Γöé
  735. Γöé                         ΓöéFALSE. Otherwise, adjusts the      Γöé
  736. Γöé                         Γöéheight of the list box so that a   Γöé
  737. Γöé                         Γöépartial item is not shown at the   Γöé
  738. Γöé                         Γöébottom of the list.  Returns TRUE  Γöé
  739. Γöé                         Γöéif the SWP structure is changed.   Γöé
  740. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  741. ΓöéWM_BUTTON2DOWN           ΓöéReturns TRUE; the message is       Γöé
  742. Γöé                         Γöéignored.                           Γöé
  743. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  744. ΓöéWM_BUTTON3DOWN           ΓöéReturns TRUE; the message is       Γöé
  745. Γöé                         Γöéignored.                           Γöé
  746. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  747. ΓöéWM_CHAR                  ΓöéProcesses virtual keys for line andΓöé
  748. Γöé                         Γöépage scrolling.  Sends an LN_ENTER Γöé
  749. Γöé                         Γöénotification code for the Enter    Γöé
  750. Γöé                         Γöékey.  Returns TRUE if the key is   Γöé
  751. Γöé                         Γöéprocessed; otherwise, passes the   Γöé
  752. Γöé                         Γöémessage to the WinDefWindowProc    Γöé
  753. Γöé                         Γöéfunction.                          Γöé
  754. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  755. ΓöéWM_CREATE                ΓöéCreates an empty list box with a   Γöé
  756. Γöé                         Γöéscroll bar.                        Γöé
  757. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  758. ΓöéWM_DESTROY               ΓöéDestroys the list and deallocates  Γöé
  759. Γöé                         Γöéany memory allocated during its    Γöé
  760. Γöé                         Γöéexistence.                         Γöé
  761. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  762. ΓöéWM_ENABLE                ΓöéEnables the scroll bar if there areΓöé
  763. Γöé                         Γöémore items than can be displayed inΓöé
  764. Γöé                         Γöéa list-box window.                 Γöé
  765. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  766. ΓöéWM_MOUSEMOVE             ΓöéSets the mouse pointer to the arrowΓöé
  767. Γöé                         Γöéshape and returns TRUE to show thatΓöé
  768. Γöé                         Γöéthe message was processed.         Γöé
  769. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  770. ΓöéWM_PAINT                 ΓöéDraws the list box and its items.  Γöé
  771. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  772. ΓöéWM_HSCROLL               ΓöéHandles scrolling indicated by the Γöé
  773. Γöé                         Γöélist-box horizontal scroll bar.    Γöé
  774. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  775. ΓöéWM_VSCROLL               ΓöéHandles scrolling indicated by the Γöé
  776. Γöé                         Γöélist-box vertical scroll bar.      Γöé
  777. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  778. ΓöéWM_SETFOCUS              ΓöéIf the list box is gaining the     Γöé
  779. Γöé                         Γöéfocus, creates a cursor and sends  Γöé
  780. Γöé                         Γöéan LN_SETFOCUS notification code toΓöé
  781. Γöé                         Γöéthe owner window.  If the list box Γöé
  782. Γöé                         Γöéis losing the focus, this message  Γöé
  783. Γöé                         Γöédestroys the cursor and sends an   Γöé
  784. Γöé                         ΓöéLN_KILLFOCUS notification code to  Γöé
  785. Γöé                         Γöéthe owner window.                  Γöé
  786. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  787. ΓöéWM_TIMER                 ΓöéUses timers to control automatic   Γöé
  788. Γöé                         Γöéscrolling that occurs when a user  Γöé
  789. Γöé                         Γöédrags the mouse pointer outside theΓöé
  790. Γöé                         Γöéwindow.                            Γöé
  791. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  792.  
  793.  
  794. ΓòÉΓòÉΓòÉ 3. Menus ΓòÉΓòÉΓòÉ
  795.  
  796. A menu is a window that contains a list of items-text strings, bit maps, or 
  797. images drawn by the application-that enables the user, by mouse or keyboard, to 
  798. choose from these predetermined choices.  This chapter describes how to use 
  799. menus in your PM applications. 
  800.  
  801.  
  802. ΓòÉΓòÉΓòÉ 3.1. About Menus ΓòÉΓòÉΓòÉ
  803.  
  804. A menu always is owned by another window, usually a frame window.  When a user 
  805. makes a choice from a menu, the menu posts a message containing the unique 
  806. identifier for the menu item to its owner by way of the owner window's window 
  807. procedure. 
  808.  
  809. An application typically defines its menus using Resource Compiler, and then 
  810. associates the menus with a frame window when the frame window is created. 
  811. Applications also can create menus by filling in menu-template data structures 
  812. and creating windows with the WC_MENU class.  Either way, applications can add, 
  813. delete, or change menu items dynamically by issuing messages to menu windows. 
  814.  
  815.  
  816. ΓòÉΓòÉΓòÉ 3.1.1. Menu Bar and Pull-Down Menus ΓòÉΓòÉΓòÉ
  817.  
  818. A typical application uses a menu bar and several pull-down submenus.  The 
  819. pull-down submenus ordinarily are hidden, but become visible when the user 
  820. makes selections in the menu bar.  Pull-down submenus always are attached to 
  821. the menu bar. 
  822.  
  823. The menu bar is a child of the frame window; the menu bar window handle is the 
  824. key to communicating with the menu bar and its submenus.  You can retrieve this 
  825. handle by calling WinWindowFromID, with the handle of the parent window and the 
  826. FID_MENU frame-control identifier.  Most messages for the menu bar and its 
  827. submenus can be issued to the menu-bar window.  Flags in the messages tell the 
  828. window whether to search submenus for requested menu items. 
  829.  
  830.  
  831. ΓòÉΓòÉΓòÉ 3.1.2. Pop-Up Menus ΓòÉΓòÉΓòÉ
  832.  
  833. A pop-up menu is like a pull-down submenu, except that it is not attached to 
  834. the menu bar; it can appear anywhere in its parent window.  A pop-up menu 
  835. usually is associated with a portion of a window, such as the client window, or 
  836. it is associated with a specific object, such as an icon. 
  837.  
  838. A pop-up menu remains hidden until the user selects it (either by moving the 
  839. cursor to the appropriate location and pressing Enter or clicking on the 
  840. location with the mouse).  Typically, pop-up menus are displayed at the 
  841. position of the cursor or mouse pointer; they provide a quick mechanism for 
  842. selecting often-used menu items. 
  843.  
  844. To include a pop-up menu in an application, you first must define a menu 
  845. resource in a resource-definition file, then load the resource using the 
  846. WinLoadMenu or WinCreateMenu functions.  You must call WinPopupMenu to create 
  847. the pop-up menu and display it in the parent window.  Applications typically 
  848. call WinPopupMenu in a window procedure in response to a user-generated 
  849. message, such as WM_BUTTON2DBLCLK or WM_CHAR. 
  850.  
  851. WinPopupMenu requires that you specify the pop-up menu's handle and also the 
  852. handles of the parent and owner windows of the pop-up menu.  WinLoadMenu and 
  853. WinCreateMenu return the handle of the pop-up menu window, but you must obtain 
  854. the handles of the parent and owner by using WinQueryWindow. 
  855.  
  856. You determine the position of the pop-up menu in relation to its parent by 
  857. specifying coordinates and style flags in WinPopupMenu.  The x and y 
  858. coordinates determine the position of the lower-left corner of the menu 
  859. relative to the lower-left corner of the parent.  The system may adjust this 
  860. position, however, if you include the PU_HCONSTRAIN or PU_VCONSTRAIN style 
  861. flags in the call to WinPopupMenu.  If necessary, PU_HCONSTRAIN adjusts the 
  862. horizontal position of the menu so that its left and right edges are within the 
  863. borders of the desktop window.  PU_VCONSTRAIN makes the same adjustments 
  864. vertically.  Without these flags, a desktop-level pop-up menu can lie partially 
  865. off the screen, with some items not visible nor selectable. 
  866.  
  867. The PU_POSITIONONITEM flag also can affect the position of the pop-up menu. 
  868. This flag positions the pop-up menu so that, when the pop-up menu appears, the 
  869. specified item lies directly under the mouse pointer.  Also, PU_POSITIONONITEM 
  870. automatically selects the item.  PU_POSITIONONITEM is useful for placing the 
  871. current menu selection under the pointer so that, if the user releases the 
  872. mouse button without selecting a new item, the current selection remains 
  873. unchanged. 
  874.  
  875. The PU_SELECTITEM flag is similar to PU_POSITIONONITEM except that it just 
  876. selects the specified item; it does not affect the position of the menu. 
  877.  
  878. You can enable the user to choose an item from a pop-up menu by using the same 
  879. mouse button that was used to display the menu.  To do this, specify the 
  880. PU_MOUSEBUTTONn flag, where n corresponds to the mouse button used to display 
  881. the menu.  This flag specifies the mouse buttons for the user to interact with 
  882. a pop-up menu once it is displayed. 
  883.  
  884. By using the PU_MOUSEBUTTONn flag, you can enable the user to display the 
  885. pop-up menu, select an item, and dismiss the menu, all in one operation.  For 
  886. example, if your window procedure displays the pop-up window when the user 
  887. double-clicks mouse button 2, specify the PU_MOUSEBUTTON2DOWN flag in the 
  888. WinPopupMenu function.  Then, the user can display the menu with mouse button 
  889. 2; and, while holding the button down, select an item.  When the user releases 
  890. the button, the item is chosen and the menu dismissed. 
  891.  
  892.  
  893. ΓòÉΓòÉΓòÉ 3.1.3. System Menu ΓòÉΓòÉΓòÉ
  894.  
  895. The system menu in the upper-left corner of a standard frame window is 
  896. different from the menus defined by the application.  The system menu is 
  897. controlled and defined almost exclusively by the system; your only decision 
  898. about it is whether to include it when creating a frame window.  (It is unusual 
  899. for a frame window not to include a system menu.)  The system menu generates 
  900. WM_SYSCOMMAND messages instead of WM_COMMAND messages.  Most applications 
  901. simply use the default behavior for WM_SYSCOMMAND messages, although 
  902. applications can add, delete, and change system-menu entries. 
  903.  
  904.  
  905. ΓòÉΓòÉΓòÉ 3.1.4. Menu Items ΓòÉΓòÉΓòÉ
  906.  
  907. All menus can contain two main types of menu items: command items and submenu 
  908. items.  When the user chooses a command item, the menu immediately posts a 
  909. message to the parent window.  When the user selects a submenu item, the menu 
  910. displays a submenu from which the user may choose another item.  Since a 
  911. submenu window also can contain a submenu item, submenus can originate from 
  912. other submenus. 
  913.  
  914. When the user chooses a command item from a menu, the menu system posts a 
  915. WM_COMMAND, WM_SYSCOMMAND, or WM_HELP message to the owner window, depending on 
  916. the style bits of the menu item. 
  917.  
  918. Applications can change the attributes, style, and contents of menu items, and 
  919. insert and delete items at run time, to reflect changes in the command 
  920. environment.  An application also can add items to or delete items from the 
  921. menu bar, a pop-up menu, or a submenu.  For example, an application might 
  922. maintain a menu of the fonts currently available in the system.  This 
  923. application would use graphics programming interface (GPI) calls to determine 
  924. which fonts were available and, then, insert a menu item for each font into a 
  925. submenu.  Furthermore, the application might set the check-mark attribute of 
  926. the menu item for the currently chosen font.  When the user chose a new font, 
  927. the application would remove the check-mark attribute from the previous choice 
  928. and add it to the new choice. 
  929.  
  930.  
  931. ΓòÉΓòÉΓòÉ 3.1.4.1. The Help Item ΓòÉΓòÉΓòÉ
  932.  
  933. To present a standard interface to the novice user, all applications must have 
  934. a Help item in their menu bars.  The Help item is defined with a particular 
  935. style, attributes, and position in the menu.  When the user chooses the Help 
  936. item, the menu posts a WM_HELP message to the owner window, enabling the 
  937. application to respond appropriately. 
  938.  
  939. The item should read Help, have an identifier of 0, and have the 
  940. MIS_BUTTONSEPARATOR or MIS_HELP item styles.  The Help menu item should be the 
  941. last item in the menu template, so that it is displayed as the rightmost item 
  942. in the menu bar. 
  943.  
  944. If an application uses the system default accelerator table, the user can 
  945. select the Help item using either a mouse or the F1 key. 
  946.  
  947.  
  948. ΓòÉΓòÉΓòÉ 3.1.4.2. Menu-Item Styles ΓòÉΓòÉΓòÉ
  949.  
  950. All menu items have a combination of style bits that determine what kind of 
  951. data the item contains and what kind of message it generates when the user 
  952. selects it.  For example, a menu item can have the MIS_TEXT, MIS_BITMAP, or 
  953. other styles that specify the visual representation of the menu item on the 
  954. screen.  Other styles determine what kinds of messages the item sends to its 
  955. owner and whether the owner draws the item.  Menu-item styles typically do not 
  956. change during program execution, but you can query and set them dynamically by 
  957. sending MM_QUERYITEM and MM_SETITEM messages with the menu-item identifier to 
  958. the menu-bar window.  For text menu items (MIS_TEXT), an MM_SETITEMTEXT message 
  959. sets the text.  The MM_QUERYITEMTEXT message queries the text of the item.  For 
  960. non-text menu items, the hItem field of the MENUITEM structure typically 
  961. contains the handle of a display object, such as a bit-map handle for 
  962. MIS_BITMAP menu items. 
  963.  
  964. An application can draw a menu item by setting the style MIS_OWNERDRAW for the 
  965. menu item.  This usually is done by specifying the MIS_OWNERDRAW style for the 
  966. menu item in the resource-definition file; but it also can be done at run time. 
  967. When the application draws a menu item, it must respond to messages from the 
  968. menu each time the item must be drawn. 
  969.  
  970.  
  971. ΓòÉΓòÉΓòÉ 3.1.4.3. Menu-Item Attributes ΓòÉΓòÉΓòÉ
  972.  
  973. Menu items have attributes that determine how the items are displayed and 
  974. whether or not the user can choose them.  An application can set and query 
  975. menu-item attributes by sending MM_SETITEMATTR and MM_QUERYITEMATTR messages, 
  976. with the menu-item identifier, to the menu-bar window.  If the specified item 
  977. is in a submenu, there are two methods of determining its attributes.  The 
  978. first is to send MM_SETITEMATTR and MM_QUERYITEMATTR messages to the top-level 
  979. menu, specifying the identifier of the item and setting a flag so that the 
  980. message searches all submenus for the item.  Then, you can retrieve the handle 
  981. of the menu-bar by calling WinWindowFromID, with the handle of the frame window 
  982. and the FID_MENU frame-control identifier. 
  983.  
  984. The second method, which is more efficient if you want to either work with more 
  985. than one submenu item or set the same item several times, involves two steps: 
  986.  
  987.    1. Send an MM_QUERYITEM message to the menu, with the identifier of the 
  988.       submenu.  The updated MENUITEM structure contains the window handle of 
  989.       the submenu. 
  990.  
  991.    2. Send an MM_QUERYITEMATTR (or MM_SETITEMATTR) message to the submenu 
  992.       window, specifying the identifier of the item in the submenu. 
  993.  
  994.  
  995. ΓòÉΓòÉΓòÉ 3.1.4.4. Menu-Item Structure ΓòÉΓòÉΓòÉ
  996.  
  997. A single menu item is defined by the MENUITEM data structure.  This structure 
  998. is used with the MM_INSERTITEM message to insert items in a menu or to query 
  999. and set item characteristics with the MM_QUERYITEM and MM_SETITEM messages. 
  1000. The MENUITEM structure has the following form: 
  1001.  
  1002. Type
  1003.   MENUITEM = Record        (* mi *)
  1004.     IPosition   : SHORT;  (* ╨ísken var tom!! *)
  1005.     AfStyle     : USHORT; (* ╨ísken var tom!! *)
  1006.     AfAttribute : USHORT; (* ╨ísken var tom!! *)
  1007.     Id          : USHORT; (* ╨ísken var tom!! *)
  1008.     HwndSubMenu : HWND;   (* ╨ísken var tom!! *)
  1009.     HItem       : ULONG;  (* ╨ísken var tom!! *)
  1010.   End;
  1011.  
  1012. You can derive the values of most of the fields in this structure directly from 
  1013. the resource-definition file.  However, the last field in the structure, hItem, 
  1014. depends on the style of the menu item. 
  1015.  
  1016. The iPosition field specifies the ordinal position of the item within its menu 
  1017. window.  If the item is part of the menu bar, iPosition specifies its relative 
  1018. left-to-right position, with 0 being the leftmost item.  If the item is part of 
  1019. a submenu, iPosition specifies its relative top-to-bottom and left-to-right 
  1020. positions, with 0 being the upper-left item.  An item with the 
  1021. MIS_BREAKSEPARATOR style in a pull-down menu causes a new column to begin. 
  1022.  
  1023. The afStyle field contains the style bits of the item.  The afAttribute field 
  1024. contains the attribute bits. 
  1025.  
  1026. The id field contains the menu-item identifier.  The identifier should be 
  1027. unique but does not have to be.  Just remember that, when multiple items have 
  1028. the same identifier, they post the same command number in the WM_COMMAND, 
  1029. WM_SYSCOMMAND, and WM_HELP messages.  Also, any message that specifies a menu 
  1030. item with a non-unique identifier will find the first item that has that 
  1031. identifier. 
  1032.  
  1033. The hwndSubMenu field contains the window handle of a submenu window (if the 
  1034. item is a submenu item).  The hwndSubMenu field is NULL for command items. 
  1035.  
  1036. The hItem field contains a handle to the display object for the item, unless 
  1037. the item has the MIS_TEXT style, in which case, hItem is 0.  For example, a 
  1038. menu item with the MIS_BITMAP style has an hItem field that is equal to its 
  1039. bit-map handle. 
  1040.  
  1041.  
  1042. ΓòÉΓòÉΓòÉ 3.1.5. Menu Access ΓòÉΓòÉΓòÉ
  1043.  
  1044. The OS/2 operating system is designed to work with or without a mouse or other 
  1045. pointing device.  The system provides default behavior that enables a user to 
  1046. interact with menus without a mouse.  Following are the keystrokes that produce 
  1047. this default behavior: 
  1048.  
  1049. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1050. ΓöéKeystroke           ΓöéAction                                  Γöé
  1051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1052. ΓöéAlt                 ΓöéToggles in and out of menu-bar mode.    Γöé
  1053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1054. ΓöéAlt+Spacebar        ΓöéShows the system menu.                  Γöé
  1055. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1056. ΓöéF10                 ΓöéBacks up one level. If a submenu is     Γöé
  1057. Γöé                    Γöédisplayed, it is canceled. If no submenuΓöé
  1058. Γöé                    Γöéis displayed, this keystroke exits the  Γöé
  1059. Γöé                    Γöémenu.                                   Γöé
  1060. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1061. ΓöéShift+Esc           ΓöéShows the system menu.                  Γöé
  1062. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1063. ΓöéRight Arrow         ΓöéCycles to the next top-level menu item. Γöé
  1064. Γöé                    ΓöéIf the selected item is at the far-left Γöé
  1065. Γöé                    Γöéside of the menu, the menu code sends a Γöé
  1066. Γöé                    ΓöéWM_NEXTMENU message to the frame window.Γöé
  1067. Γöé                    ΓöéThe default processing by the frame     Γöé
  1068. Γöé                    Γöéwindow is to cycle between the          Γöé
  1069. Γöé                    Γöéapplication and system menus. (An       Γöé
  1070. Γöé                    Γöéapplication can modify this behavior by Γöé
  1071. Γöé                    Γöésubclassing the frame window.) If the   Γöé
  1072. Γöé                    Γöéselected item is in a submenu, the next Γöé
  1073. Γöé                    Γöécolumn in the submenu is selected, or   Γöé
  1074. Γöé                    Γöéthe next top-level menu item is         Γöé
  1075. Γöé                    Γöéselected; this keystroke also can send  Γöé
  1076. Γöé                    Γöéor process a WM_NEXTMENU message.       Γöé
  1077. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1078. ΓöéLeft Arrow          ΓöéWorks like the Right Arrow key, except  Γöé
  1079. Γöé                    Γöéin the opposite direction. In submenus, Γöé
  1080. Γöé                    Γöéthis keystroke backs up one column,     Γöé
  1081. Γöé                    Γöéexcept when the currently selected item Γöé
  1082. Γöé                    Γöéis in the far-left column, in which caseΓöé
  1083. Γöé                    Γöéthe previous submenu is selected.       Γöé
  1084. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1085. ΓöéUp Arrow or Down    ΓöéWhen pressed in a top-level menu,       Γöé
  1086. ΓöéArrow               Γöéactivates a submenu. When pressed in a  Γöé
  1087. Γöé                    Γöésubmenu, this keystroke selects the     Γöé
  1088. Γöé                    Γöéprevious or next or item, respectively. Γöé
  1089. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1090. ΓöéEnter               ΓöéActivates a submenu, and highlights the Γöé
  1091. Γöé                    Γöéfirst item if an item has a submenu     Γöé
  1092. Γöé                    Γöéassociated with it; otherwise, this     Γöé
  1093. Γöé                    Γöékeystroke chooses the item as though theΓöé
  1094. Γöé                    Γöéuser released the mouse button while theΓöé
  1095. Γöé                    Γöéitem was selected.                      Γöé
  1096. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1097. ΓöéAlphabetic characterΓöéSelects the first menu item with the    Γöé
  1098. Γöé                    Γöéspecified character as its mnemonic key.Γöé
  1099. Γöé                    ΓöéA mnemonic is defined for a menu item byΓöé
  1100. Γöé                    Γöéplacing a tilde (~) before the characterΓöé
  1101. Γöé                    Γöéin the menu text.  If the selected item Γöé
  1102. Γöé                    Γöéhas a submenu associated with it, the   Γöé
  1103. Γöé                    Γöémenu is displayed, and the first item isΓöé
  1104. Γöé                    Γöéhighlighted; otherwise, the item is     Γöé
  1105. Γöé                    Γöéchosen.                                 Γöé
  1106. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1107.  
  1108. An application does not support the default keyboard behavior with any unusual 
  1109. code; instead, the application receives a message when a menu item is chosen by 
  1110. the keyboard just as though it had been chosen by a mouse. 
  1111.  
  1112.  
  1113. ΓòÉΓòÉΓòÉ 3.1.5.1. Mnemonics ΓòÉΓòÉΓòÉ
  1114.  
  1115. Adding mnemonics to menu items is one way of providing the user with keyboard 
  1116. access to menus.  You can indicate a mnemonic keystroke for a menu item by 
  1117. preceding a character in the item text with a tilde, as in ~nFile. Then, the 
  1118. user can choose that item by pressing the mnemonic key when the menu is active. 
  1119.  
  1120. The menu bar is active when the user presses and releases the Alt key, and the 
  1121. first item in the menu bar is highlighted. A pop-up or pull-down menu is active 
  1122. when it is open. 
  1123.  
  1124.  
  1125. ΓòÉΓòÉΓòÉ 3.1.5.2. Accelerators ΓòÉΓòÉΓòÉ
  1126.  
  1127. In addition to mnemonics, a menu item can have an associated keyboard 
  1128. accelerator.  Accelerators are different from mnemonics in that the menu need 
  1129. not be active for the accelerator key to work.  If you have associated a menu 
  1130. item with a keyboard accelerator, display the accelerator to the right of the 
  1131. menu item.  Do this in the resource-definition file by placing a tab character 
  1132. (\t) in the menu text before the characters that will be displayed on the 
  1133. right.  For example, if the Close item had the F3 function key as its keyboard 
  1134. accelerator, the text for the item would be Close\tF3. 
  1135.  
  1136.  
  1137. ΓòÉΓòÉΓòÉ 3.2. Using Menus ΓòÉΓòÉΓòÉ
  1138.  
  1139. This section explains how to perform the following tasks: 
  1140.  
  1141.      Define menu items in a resource file 
  1142.      Include a menu bar in a standard window 
  1143.      Create a pop-up menu 
  1144.      Add a menu to a dialog window 
  1145.      Access the system menu 
  1146.      Respond to a the menu choice of a user 
  1147.      Set and query menu-item attributes 
  1148.      Add and delete menu items 
  1149.      Create a custom menu item 
  1150.  
  1151.  
  1152. ΓòÉΓòÉΓòÉ 3.2.1. Defining Menu Items in a Resource File ΓòÉΓòÉΓòÉ
  1153.  
  1154. Typically, a menu resource represents the menu bar or pop-up menu and all the 
  1155. related submenus.  A menu-item definition is organized as shown in the 
  1156. following code: 
  1157.  
  1158.  
  1159.     MENUITEM item text, item identifier, item style, item attributes
  1160.  
  1161. The menu resource-definition file specifies the text of each item in the menu, 
  1162. its unique identifier, its style and attributes, and whether it is a command 
  1163. item or a submenu item.  A menu item that has no specification for style or 
  1164. attributes has the default style of MIS_TEXT and all attribute bits off, 
  1165. indicating that the item is enabled.  The MIS_SEPARATOR style identifies 
  1166. nonselectable lines between menu items. The following figure is sample Resource 
  1167. Compiler source code that defines a menu resource. The code defines a menu with 
  1168. three submenu items in the menu bar (File, Edit, and Font) and a command item 
  1169. (Help).  Each submenu has several command items, and the Font submenu has two 
  1170. other submenus within it. 
  1171.  
  1172.  
  1173.     MENU ID_MENU_RESOURCE
  1174.     BEGIN
  1175.         SUBMENU "&tilde.File", IDM_FILE
  1176.             BEGIN
  1177.                 MENUITEM "&tilde.Open...",       IDM_FI_OPEN
  1178.                 MENUITEM "&tilde.Close\tF3",     IDM_FI_CLOSE, 0, MIA_DISABLED
  1179.                 MENUITEM "&tilde.Quit",          IDM_FI_QUIT
  1180.                 MENUITEM "",               IDM_FI_SEP1, MIS_SEPARATOR
  1181.                 MENUITEM "&tilde.About Sample",  IDM_FI_ABOUT
  1182.             END
  1183.         SUBMENU "&tilde.Edit", IDM_EDIT
  1184.             BEGIN
  1185.                 MENUITEM "&tilde.Undo",          IDM_ED_UNDO, 0, MIA_DISABLED
  1186.                 MENUITEM "",               IDM_ED_SEP1, MIS_SEPARATOR
  1187.                 MENUITEM "&tilde.Cut",           IDM_ED_CUT
  1188.                 MENUITEM "C&tilde.opy",          IDM_ED_COPY
  1189.                 MENUITEM "&tilde.Paste",         IDM_ED_PASTE
  1190.                 MENUITEM "C&tilde.lear",         IDM_ED_CLEAR
  1191.             END
  1192.         SUBMENU "Font", IDM_FONT
  1193.             BEGIN
  1194.                 SUBMENU "Style",           IDM_FONT_STYLE
  1195.                     BEGIN
  1196.                         MENUITEM "Plain",  IDM_FONT_STYLE_PLAIN
  1197.                         MENUITEM "Bold",   IDM_FONT_STYLE_BOLD
  1198.                         MENUITEM "Italic", IDM_FONT_STYLE_ITALIC
  1199.                     END
  1200.                 SUBMENU "Size",            IDM_FONT_SIZE
  1201.                     BEGIN
  1202.                         MENUITEM "10",     IDM_FONT_SIZE_10
  1203.                         MENUITEM "12",     IDM_FONT_SIZE_12
  1204.                         MENUITEM "14",     IDM_FONT_SIZE_14
  1205.                     END
  1206.             END
  1207.         MENUITEM "F1=Help", 0x00, MIS_TEXT Or MIS_BUTTONSEPARATOR Or MIS_HELP
  1208.     END
  1209.  
  1210. To define a menu item with the MIS_BITMAP style, an application must use a tool 
  1211. such as Icon Editor to create a bit map, include the bit map in its 
  1212. resource-definition file, and define a menu in the file (as shown in the 
  1213. following figure). The text for the bit map menu items is an ASCII 
  1214. representation of the resource identifier of the bit map resource to be 
  1215. displayed for that item. 
  1216.  
  1217.  
  1218.     (* Bring externally created bit maps into the resource file. *)
  1219.     BITMAP 101 button.bmp
  1220.     BITMAP 102 hirest.bmp
  1221.     BITMAP 103 hizoom.bmp
  1222.     BITMAP 104 hired.bmp
  1223.  
  1224.     (* Connect a menu item with a bit map.                       *)
  1225.     SUBMENU "&tilde.Bitmaps", IDM_BITMAP
  1226.         BEGIN
  1227.             MENUITEM "#101", IDM_BM_01, MIS_BITMAP
  1228.             MENUITEM "#102", IDM_BM_02, MIS_BITMAP
  1229.             MENUITEM "#103", IDM_BM_03, MIS_BITMAP
  1230.             MENUITEM "#104", IDM_BM_04, MIS_BITMAP
  1231.         END
  1232.  
  1233.  
  1234. ΓòÉΓòÉΓòÉ 3.2.2. Including a Menu Bar in a Standard Window ΓòÉΓòÉΓòÉ
  1235.  
  1236. If you have defined a menu resource in a resource-definition file, you can use 
  1237. the menu resource to create a menu bar in a standard window.  You include the 
  1238. menu bar by using the FCF_MENU attribute flag and specifying the menu-resource 
  1239. identifier in a call to WinCreateStdWindow, as shown in the following code 
  1240. fragment: 
  1241.  
  1242.  
  1243. Uses
  1244.   Os2Def,Os2Base,Os2PmApi;
  1245.  
  1246. Var
  1247.   HwndFrame      : HWND; (* ╨ísken var tom!! *)
  1248.   SzClassName    : PCHAR; (* ╨ísken var tom!! *)
  1249.   SzTitle        : PCHAR; (* ╨ísken var tom!! *)
  1250.   FlControlStyle : ULONG; (* ╨ísken var tom!! *)
  1251.  
  1252. Begin
  1253.   SzClassName := 'MyClass';
  1254.   SzTitle     := 'My Title';
  1255.  
  1256.   FlControlStyle := FCF_MENU Or FCF_SIZEBORDER Or
  1257.                     FCF_TITLEBAR Or FCF_ACCELTABLE;
  1258.  
  1259.   hwndFrame := WinCreateStdWindow(HWND_DESKTOP,
  1260.       WS_VISIBLE,
  1261.       &flControlStyle,
  1262.       szClassName,
  1263.       szTitle,
  1264.       0, nil,
  1265.       ID_MENU_RESOURCE,
  1266.       nil);
  1267.  
  1268. End.
  1269.  
  1270. After you make this call, the operating system automatically includes the menu 
  1271. in the window, drawing the menu bar across the top of the window.  When the 
  1272. user chooses an item from the menu, the menu posts the message to the frame 
  1273. window.  The frame window passes any WM_COMMAND messages to the client window. 
  1274. (The frame window does not pass WM_SYSCOMMAND messages to the client window.) 
  1275. WM_HELP messages are posted to the focus window.  The WinDefWindowProc function 
  1276. passes WM_HELP messages to the parent window.  If a WM_HELP message is passed 
  1277. to a frame window, the frame window calls the HK_HELP hook.  Your client window 
  1278. procedure must process these messages to respond to the user's actions. 
  1279.  
  1280.  
  1281. ΓòÉΓòÉΓòÉ 3.2.3. Creating a Pop-up Menu ΓòÉΓòÉΓòÉ
  1282.  
  1283. The following code fragment shows how to make a pop-up menu appear when the 
  1284. user double-clicks mouse button 2 anywhere in the parent window.  The menu is 
  1285. positioned with the mouse pointer located on the item having the IDM_OPEN 
  1286. identifier and is constrained horizontally and vertically.  Then, the user can 
  1287. select an item from the pop-up menu using mouse button 2. 
  1288.  
  1289.  
  1290. Uses
  1291.   Os2Def,Os2Base,Os2PmApi;
  1292.  
  1293. Var
  1294.   HwndFrame : HWND; (* ╨ísken var tom!! *)
  1295.  
  1296. Function ClientWndProc( hwnd : HWND,
  1297.                         msg  : ULONG,
  1298.                         mp1  : MPARAM,
  1299.                         mp2  : MPARAM): MRESULT;
  1300. Var
  1301.   HwndMenu : HWND; (* ╨ísken var tom!! *)
  1302.   FSuccess : BOOL; (* ╨ísken var tom!! *)
  1303.  
  1304. Begin
  1305.   Case msg Of
  1306.      .
  1307.      .   (* Process other messages. *)
  1308.      .
  1309.     WM_BUTTON2DBLCLK:
  1310.       hwndMenu := WinLoadMenu(hwnd, nil, ID_MENU_RESOURCE);
  1311.       fSuccess := WinPopupMenu(hwnd,
  1312.                                hwndFrame,
  1313.                                hwndMenu,
  1314.                                20,
  1315.                                50,
  1316.                                IDM_OPEN,
  1317.                                PU_POSITIONONITEM   Or
  1318.                                PU_HCONSTRAIN       Or
  1319.                                PU_VCONSTRAIN       Or
  1320.                                PU_MOUSEBUTTON2DOWN Or
  1321.                                PU_MOUSEBUTTON2);
  1322.  
  1323.       .
  1324.       .
  1325.       .
  1326.  
  1327. End.
  1328.  
  1329.  
  1330. ΓòÉΓòÉΓòÉ 3.2.4. Adding a Menu to a Dialog Window ΓòÉΓòÉΓòÉ
  1331.  
  1332. You might want to use menus in windows that were not created using the 
  1333. WinCreateStdWindow function.  For these windows, you can load a menu resource 
  1334. by using the WinLoadMenu function and specifying the parent window for the 
  1335. menu.  WinLoadMenu assigns the specified menu resource to the parent.  To see 
  1336. the menu in the window, you must send a WM_UPDATEFRAME message to the parent 
  1337. after loading the menu resource.  This strategy is especially useful for adding 
  1338. menus to a window created as a dialog window, but it can be used no matter what 
  1339. type of window is specified as the parent. 
  1340.  
  1341.  
  1342. ΓòÉΓòÉΓòÉ 3.2.5. Accessing the System Menu ΓòÉΓòÉΓòÉ
  1343.  
  1344. Although most applications do not alter the system menu, you can obtain the 
  1345. handle of the system menu by calling WinWindowFromID with a frame-window handle 
  1346. (or dialog-window handle) and the identifier FID_SYSMENU.  Once you have the 
  1347. handle of the system menu, you can access the individual menu items by using 
  1348. predefined constants.  For example, the following code fragment shows how to 
  1349. disable the Close menu item in the system menu of a window: 
  1350.  
  1351. Uses
  1352.   Os2Def,Os2Base,Os2PmApi;
  1353.  
  1354. Var
  1355.   HwndSysMenu : HWND; (* ╨ísken var tom!! *)
  1356.   HwndFrame   : HWND; (* ╨ísken var tom!! *)
  1357.  
  1358. Begin
  1359.  
  1360.   hwndSysMenu := WinWindowFromID(hwndFrame, FID_SYSMENU);
  1361.  
  1362.   WinSendMsg(hwndSysMenu, MM_SETITEMATTR,
  1363.   MPFROM2SHORT(SC_CLOSE, Ord(True)),
  1364.   MPFROM2SHORT(MIA_DISABLED, MIA_DISABLED));
  1365.  
  1366. End.
  1367.  
  1368.  
  1369. ΓòÉΓòÉΓòÉ 3.2.6. Responding to a User's Menu Choice ΓòÉΓòÉΓòÉ
  1370.  
  1371. When a user chooses a menu item, the client window procedure receives a 
  1372. WM_COMMAND message with SHORT1FROMMP(mp1) equal to the menu identifier of the 
  1373. chosen item.  Your application must use the menu identifier to guide its 
  1374. response to the choice.  Typically, the code in the client window procedure 
  1375. resembles the following code fragment: 
  1376.  
  1377.   (* Case Of *)
  1378.   WM_COMMAND:
  1379.     DoMenuCommand(hwnd, SHORT1FROMMP(mp1));
  1380.     Halt(0);
  1381.  
  1382. The function that translates the menu identifier into an action typically 
  1383. resembles the following code fragment: 
  1384.  
  1385. Uses
  1386.   Os2Def,Os2Base,Os2PmApi;
  1387.  
  1388. Procedure DoMenuCommand(
  1389.                         hwnd     : HWND,
  1390.                         usItemID : USHORT);
  1391.  
  1392. Begin
  1393.   (* Test the menu item. *)
  1394.   Case usItemId Of
  1395.     IDM_FI_NEW:
  1396.       DoNew(hwnd);
  1397.  
  1398.     .
  1399.     . (* etc. *)
  1400.     .
  1401.   End;
  1402.  
  1403. End.
  1404.  
  1405. The menu window sends a WM_MENUSELECT message every time the menu selection 
  1406. changes.  SHORT1FROMMP(mp1) contains the identifier of the item that is 
  1407. changing state, and SHORT2FROMMP(mp2) is a 16-bit Boolean value that describes 
  1408. whether or not the item is chosen; the mp2 parameter contains the handle of the 
  1409. menu. 
  1410.  
  1411. If the Boolean value is FALSE, the item is selected but not chosen; for 
  1412. example, the user may have moved the cursor or mouse pointer over the item 
  1413. while the button was down.  An application can use this message to display Help 
  1414. information at the bottom of the application window.  The return value is 
  1415. ignored. 
  1416.  
  1417. If the Boolean value is TRUE, the item is chosen-that is, the user pressed 
  1418. Enter or released the mouse button while an item was selected.  If the 
  1419. application returns FALSE, the menu does not generate a WM_COMMAND, 
  1420. WM_SYSCOMMAND, or WM_HELP message, and the menu is not dismissed. 
  1421.  
  1422.  
  1423. ΓòÉΓòÉΓòÉ 3.2.7. Setting and Querying Menu-Item Attributes ΓòÉΓòÉΓòÉ
  1424.  
  1425. Menu-item attributes are represented in the fAttribute field of the MENUITEM 
  1426. data structure.  Typically, attributes are set in the resource-definition file 
  1427. of the menu and are changed at run time as required.  Applications can use the 
  1428. MM_SETITEMATTR and MM_QUERYITEMATTR messages to set and query attributes for a 
  1429. particular menu item.  One of the most common uses of these messages is to 
  1430. check and uncheck menu items to let the user know what option is selected 
  1431. currently.  For example, if you have a menu item that should toggle between 
  1432. checked and unchecked each time the user selects it, you can use the following 
  1433. figure to change the checked attribute. In this example, you send an 
  1434. MM_QUERYITEMATTR message to the menu item to obtain its current checked 
  1435. attribute; then, you use the exclusive OR operator to toggle the state; and 
  1436. finally, you send the new attribute state back to the item using an 
  1437. MM_SETITEMATTR message. 
  1438.  
  1439.  
  1440.   usAttrib := SHORT1FROMMR(
  1441.           WinSendMsg(hwndMenu,           (* Submenu window        *)
  1442.           MM_QUERYITEMATTR,              (* Message               *)
  1443.           itemID,                        (* Item identIfier       *)
  1444.           MIA_CHECKED));                 (* Attribute mask        *)
  1445.  
  1446.   usAttrib := MIA_CHECKED;        (* XOR to toggle checked attribute *)
  1447.  
  1448.   WinSendMsg(hwndMenu,                      (* Submenu window        *)
  1449.       MM_SETITEMATTR,                       (* Message               *)
  1450.       itemID,                               (* Item identIfier       *)
  1451.       MPFROM2SHORT(MIA_CHECKED, usAttrib)); (* Attribute mask, value *)
  1452.  
  1453.  
  1454. ΓòÉΓòÉΓòÉ 3.2.8. Adding and Deleting Menu Items ΓòÉΓòÉΓòÉ
  1455.  
  1456. An application can add and delete items from its menus dynamically by sending 
  1457. MM_INSERTITEM and MM_DELETEITEM messages to the menu window.  Any item, 
  1458. including those in submenus, can be deleted by sending a message to the menu 
  1459. window.  Messages to insert items in submenus must be sent to the submenu's 
  1460. window (rather than to the window of the top-level menu).  You can retrieve the 
  1461. handle of a submenu of the menu bar by sending an MM_QUERYITEM message to the 
  1462. menu-bar and specifying the identifier of the submenu item for the submenu, as 
  1463. shown in the following code fragment: 
  1464.  
  1465. (* IDM_MYMENUID is the identIfier of the submenu containing the item. *)
  1466.  
  1467. Uses
  1468.   Os2Def,Os2Base,Os2PmApi;
  1469.  
  1470. Var
  1471.   mi                                            : MENUITEM;
  1472.   hwndMenu, hwndSubMenu, hwndPullDown,hwndFrame : HWND;
  1473.  
  1474. Begin
  1475.   hwndMenu := WinWindowFromID(hwndFrame, FID_MENU);
  1476.   WinSendMsg(hwndMenu,                           (* Handle of menu bar  *)
  1477.       MM_QUERYITEM,                              (* Message             *)
  1478.       MPFROM2SHORT(IDM_MYMENUID, Ord(True)),     (* Submenu identIfier  *)
  1479.       &mi);                                      (* Pointer to MENUITEM *)
  1480.  
  1481.   hwndPullDown := mi.hwndSubMenu;                 (* Handle to submenu   *)
  1482.  
  1483. Once the application has the handle of the submenu, it can insert an item by 
  1484. filling in a MENUITEM structure and sending an MM_INSERTITEM message to the 
  1485. submenu.  For text-menu items, the application must send a pointer to the text 
  1486. string as well as to the MENUITEM structure, as shown in the following figure. 
  1487.  
  1488.  
  1489. Uses
  1490.   Os2Def,Os2Base,Os2PmApi;
  1491.  
  1492. Var
  1493.   PszNewItemString : PSZ; (* ╨ísken var tom!! *)
  1494.  
  1495. Begin
  1496.   mi.iPosition := MIT_END;
  1497.   mi.afStyle := MIS_TEXT;
  1498.   mi.afAttribute := 0;
  1499.   mi.id := IDM_MYMENU_FIRST;
  1500.   mi.hwndSubMenu := nil;
  1501.   mi.hItem := 0;
  1502.  
  1503.   WinSendMsg(hwndPullDown, MM_INSERTITEM, &mi,
  1504.              pszNewItemString);
  1505.  
  1506. To delete an item, the application sends an MM_DELETEITEM message to the menu 
  1507. bar, specifying the identifier of the item to delete.  For example, to clear 
  1508. all the items following IDM_MYMENU_FIRST in a submenu in which the items are 
  1509. numbered sequentially, use the following code: 
  1510.  
  1511.  
  1512. Uses
  1513.   Os2Def,Os2Base,Os2PmApi;
  1514.  
  1515. Var
  1516.   UsItemNum : USHORT; (* ╨ísken var tom!! *)
  1517.  
  1518. Begin
  1519.   (* Clear all the items in MYMENU.                 *)
  1520.   hwndMenu := WinWindowFromID(hwndFrame, FID_MENU);
  1521.   usItemNum := IDM_MYMENU_FIRST;
  1522.   While (WinSendMsg(hwndMenu, MM_DELETEITEM,
  1523.          MPFROM2SHORT(usItemNum, Ord(True)), nil) <> 0) Do
  1524.     Inc(usItemNum);
  1525.  
  1526. Adding a complete submenu to the menu bar is a more complicated procedure than 
  1527. that shown in the previous examples.  There are two strategies.  The 
  1528. recommended technique is to define all possible submenus in your 
  1529. resource-definition file; and then, as your application runs, selectively 
  1530. remove and insert the submenus as needed. 
  1531.  
  1532. For example, assume that your application has a submenu that you want to be 
  1533. displayed only when a particular application tool is in use.  You must first 
  1534. define the submenu as part of the main menu resource in your 
  1535. resource-definition file, so that the system reads in the resource menu 
  1536. template and creates the submenu window along with the rest of the menu.  You 
  1537. then can remove the submenu from the menu bar, saving the title of the submenu 
  1538. and the MENUITEM structure that defines the submenu, as shown in the following 
  1539. figure: 
  1540.  
  1541.  
  1542. Uses
  1543.   Os2Def,Os2Base,Os2PmApi;
  1544.  
  1545. Var
  1546.   HwndMenu,                   : HWND;     (* ╨ísken var tom!! *)
  1547.   Mi                          : MENUITEM; (* ╨ísken var tom!! *)
  1548.   SzMenuTitle : Array[0..MAX_STRINGSIZE] of CHAR;     (* ╨ísken var tom!! *)
  1549.  
  1550. Begin
  1551.   (* Remove a submenu so that you can replace it later.           *)
  1552.  
  1553.   (* Obtain the handle of a menu.                                 *)
  1554.   hwndMenu := WinWindowFromID(WinQueryWindow(hwndClient, QW_PARENT),
  1555.                               FID_MENU);
  1556.  
  1557.   (* Obtain information on the item to remove.                    *)
  1558.   WinSendMsg(hwndMenu, MM_QUERYITEM,
  1559.       MPFROM2SHORT(IDM_MENUID, Ord(True)),  (* Ord(True) to search submenus *)
  1560.       &mi);
  1561.  
  1562.   (* Save the text for the submenu item.                          *)
  1563.   WinSendMsg(hwndMenu, MM_QUERYITEMTEXT,
  1564.       MPFROM2SHORT(IDM_FONT, MAX_STRINGSIZE),
  1565.       szMenuTitle);
  1566.  
  1567.   (* Remove the item, but retain mi and szMenuTitle.              *)
  1568.   WinSendMsg(hwndMenu, MM_REMOVEITEM,
  1569.              MPFROM2SHORT(IDM_FONT, Ord(True)), nil);
  1570.  
  1571. It is important to use the MM_REMOVEITEM message, rather than MM_DELETEITEM, to 
  1572. remove the item; deleting the item destroys the submenu window-removing it does 
  1573. not.  The submenu should remain intact so that you can insert it later. 
  1574.  
  1575. To reinsert the submenu, send an MM_INSERTITEM message to the menu bar, passing 
  1576. the MENUITEM structure and menu title that you saved when you removed the item. 
  1577. The following code fragment shows how to insert a submenu that was removed by 
  1578. using the previous code example. 
  1579.  
  1580.  
  1581.   (* Put the submenu back in and obtain the handle of the menu bar. *)
  1582.   hwndMenu := WinWindowFromID(
  1583.                   WinQueryWindow(hwndClient, QW_PARENT), FID_MENU);
  1584.  
  1585.   (* Use the information that you saved when you removed the menu.  *)
  1586.   WinSendMsg(hwndMenu, MM_INSERTITEM, &mi,
  1587.             szMenuTitle);
  1588.  
  1589. The other technique that you can use to insert a submenu in the menu bar is to 
  1590. build up, in memory, a data structure as a menu template and use that template 
  1591. and WinCreateWindow to create a submenu.  The resultant submenu window handle 
  1592. then is placed in the hwndSubMenu field of a MENUITEM structure, and the menu 
  1593. item is sent to the menu bar with an MM_INSERTITEM message. 
  1594.  
  1595. You also can create an empty submenu window by using WinCreateWindow.  Pass 
  1596. NULL for the pCtlData and pPresParams parameters, instead of building the menu 
  1597. template in memory.  Then insert a new menu item in the menu bar by using the 
  1598. MM_INSERTITEM message, setting the MIS_SUBMENU style, and putting the window 
  1599. handle of the created menu into the hwndSubMenu field.  Then use the 
  1600. MM_INSERTITEM message to insert the items in the new pull-down menu. 
  1601.  
  1602.  
  1603. ΓòÉΓòÉΓòÉ 3.2.9. Creating a Custom Menu Item ΓòÉΓòÉΓòÉ
  1604.  
  1605. Applications can customize the appearance of an individual menu item by setting 
  1606. the MIS_OWNERDRAW style bit for the item.  The operating system sends two 
  1607. different messages to an application that include owner-drawn menu items: 
  1608. WM_MEASUREITEM and WM_DRAWITEM.  Both messages include a pointer to an 
  1609. OWNERITEM data structure. 
  1610.  
  1611. WM_MEASUREITEM is sent only once for each owner-drawn item when the menu is 
  1612. initialized.  The message is sent to the owner of the menu (typically, a frame 
  1613. window), which forwards the message to its client window.  Typically, the 
  1614. client window procedure processes WM_MEASUREITEM by filling in the yTop and 
  1615. Right fields of the RECTL structure, specified by the rclItem field of this 
  1616. OWNERITEM structure; this specifies the size of the rectangle needed to enclose 
  1617. the item when it is drawn. The following code fragment responds to a 
  1618. WM_MEASUREITEM message. 
  1619.  
  1620.   (* Case Of *)
  1621.   WM_MEASUREITEM:
  1622.     (mp2)->.rclItem.xRight := 26;
  1623.     (mp2)->.rclItem.yTop := 10;
  1624.     Halt(0);
  1625.  
  1626. If a menu item has the MIS_OWNERDRAW style, the owner window receives a 
  1627. WM_DRAWITEM message every time the menu item needs to be drawn.  You process 
  1628. this message by using the hps and rclItem fields of the OWNERITEM structure to 
  1629. draw the item.  There are two situations in which the owner window receives a 
  1630. WM_DRAWITEM message: 
  1631.  
  1632.      When the item must be redrawn completely 
  1633.      When the item must be highlighted or have its highlight removed 
  1634.  
  1635.  You can choose to handle one or both of these situations.  Typically, you 
  1636.  handle the drawing of the item.  You may not want to handle the second 
  1637.  situation, however, since the system-default behavior (inverting the bits in 
  1638.  the item rectangle) often is acceptable. The two situations in which a 
  1639.  WM_DRAWITEM message is received are detected by comparing the values of the 
  1640.  fsState and fsStateOld fields of the OWNERITEM structure that is sent as part 
  1641.  of the message.  If the two fields are the same, draw the item.  Before 
  1642.  drawing the item, however, check its attributes to see whether it has the 
  1643.  attributes MIA_CHECKED, MIA_FRAMED, or MIA_DISABLED.  Then draw the item 
  1644.  according to the attributes. 
  1645.  
  1646.  For example, when the checked attribute of an owner-drawn menu item changes, 
  1647.  the system sends a WM_DRAWITEM message to the item so that it can redraw 
  1648.  itself and either draw or remove the check mark.  If you want the 
  1649.  system-default check mark, simply draw the item and leave the fsAttribute and 
  1650.  fsAttributeOld fields unchanged; the system draws the check mark if necessary. 
  1651.  If you draw the check mark yourself, clear the MIA_CHECKED bit in both 
  1652.  fsAttribute and fsAttributeOld so that the system does not attempt to draw a 
  1653.  check mark. 
  1654.  
  1655.  In the same example, if fsAttribute and fsAttributeOld are not equal, the 
  1656.  highlight showing that an item is selected needs to change.  The MIA_HILITED 
  1657.  bit of the fsAttribute field is set if the item needs to be highlighted and is 
  1658.  not set if the highlight needs to be removed.  If you do not want to provide 
  1659.  your own highlighting, you should ignore any WM_DRAWITEM message in which 
  1660.  fsAttribute and fsAttributeOld are not equal.  If you do not alter these two 
  1661.  fields, the system performs its default highlighting operation.  If you want 
  1662.  to provide your own visual cue that an item is selected, respond to a 
  1663.  WM_DRAWITEM message in which the fsAttribute and fsAttributeOld fields are not 
  1664.  equal by providing the cue and clearing the MIA_HILITED bit of both fields 
  1665.  before returning from the message. 
  1666.  
  1667.  Likewise, the MIA_CHECKED and MIA_FRAMED bits of fsAttribute and 
  1668.  fsAttributeOld either can be used to perform the corresponding action or 
  1669.  passed on, unchanged, so that the system performs the action. The following 
  1670.  code fragment shows how to respond to a WM_DRAWITEM message when you want to 
  1671.  draw the item and also be responsible for its highlighted state. 
  1672.  
  1673.  
  1674.   Var
  1675.     Poi : POWNERITEM; (* ╨ísken var tom!! *)
  1676.     Rcl : RECTL;      (* ╨ísken var tom!! *)
  1677.     Mp2 : MPARAM;     (* ╨ísken var tom!! *)
  1678.  
  1679.   Begin
  1680.     (* Case Of *)
  1681.     WM_DRAWITEM:
  1682.       poi := mp2;
  1683.  
  1684.       (*
  1685.        * If the new attribute equals the old attribute,
  1686.        * redraw the entire item.
  1687.        *)
  1688.  
  1689.       If (poi->.fsAttribute = poi->.fsAttributeOld) Then Begin
  1690.  
  1691.         (*
  1692.          * Draw the item in poi->.hps and poi->.rclItem, and check the
  1693.          * attributes for check marks. If you produce your own check marks,
  1694.          * use this line of code:
  1695.          *
  1696.          *     poi->.fsAttributeOld := (poi->.fsAttribute &= &tilde.MIA_CHECKED;
  1697.          *)
  1698.  
  1699.       End
  1700.  
  1701.         (* Else highlight the item or remove its highlight. *)
  1702.  
  1703.       Else If ((poi->.fsAttribute AND MIA_HILITED) <>
  1704.                (poi->.fsAttributeOld AND MIA_HILITED)) Then Begin
  1705.  
  1706.         (*
  1707.          * Set bits the same so that the menu window does not highlight
  1708.          * the item or remove its highlight.
  1709.         *)
  1710.  
  1711.         poi->.fsAttribute := poi->.fsAttribute AND &tilde.MIA_HILITED;
  1712.         poi->.fsAttributeOld := poi->.fsAttribute;
  1713.       End;
  1714.       Halt(Ord(True)); (* Ord(True) means the item is drawn. *)
  1715.     End; (* endcase *)
  1716.  
  1717.  
  1718.  Responding to WM_DRAWITEM Message 
  1719.  
  1720.  
  1721. ΓòÉΓòÉΓòÉ 4. Messages and Message Queues ΓòÉΓòÉΓòÉ
  1722.  
  1723. The OS/2 operating system uses messages and message queues to communicate with 
  1724. applications and the windows belonging to those applications.  This chapter 
  1725. explains how to create and use messages and message queues in PM applications. 
  1726.  
  1727.  
  1728. ΓòÉΓòÉΓòÉ 4.1. About Messages and Message Queues ΓòÉΓòÉΓòÉ
  1729.  
  1730. Unlike traditional applications that take complete control of the computer's 
  1731. keyboard, mouse, and screen, PM applications must share these resources with 
  1732. other applications that are running at the same time.  All applications run 
  1733. independently and rely on the operating system to help them manage shared 
  1734. resources.  The operating system does this by controlling the operation of each 
  1735. application, communicating with each application when there is keyboard or 
  1736. mouse input or when an application must move and size its windows. 
  1737.  
  1738.  
  1739. ΓòÉΓòÉΓòÉ 4.1.1. Messages ΓòÉΓòÉΓòÉ
  1740.  
  1741. A message is information, a request for information, or a request for an action 
  1742. to be carried out by a window in an application. 
  1743.  
  1744. The operating system, or an application, sends or posts a message to a window 
  1745. so that the window can use the information or respond to the request. 
  1746.  
  1747. There are three types of messages: 
  1748.  
  1749.      User-initiated 
  1750.      Application-initiated 
  1751.      System-initiated 
  1752.  
  1753.  A user-initiated message is the direct result of a user action, such as 
  1754.  selecting a menu item or pressing a key.  An application-initiated message is 
  1755.  generated by one window in the application to communicate with another window. 
  1756.  System-initiated messages are generated by the interface as the indirect 
  1757.  result of a user action (for example, resizing a window) or as the direct 
  1758.  result of a system event (such as creating a window). 
  1759.  
  1760.  A message that requires an immediate response from a window is sent directly 
  1761.  to the window by passing the message data as arguments to the window 
  1762.  procedure.  The window procedure carries out the request or lets the operating 
  1763.  system carry out default processing for the message. 
  1764.  
  1765.  A message that does not require an immediate response from a window is posted 
  1766.  (the message data is copied) to the application's message queue.  The message 
  1767.  queue is a storage area that the application creates to receive and hold its 
  1768.  posted messages.  Then, the application can retrieve a message at the 
  1769.  appropriate time, sending it to the addressed window for processing. 
  1770.  
  1771.  Every message contains a message identifier, which is a 16-bit integer that 
  1772.  indicates the purpose of the message.  When a window processes a message, it 
  1773.  uses the message identifier to determine what to do. 
  1774.  
  1775.  Every message contains a window handle, which identifies the window the 
  1776.  message is for.  The window handle is important because most message queues 
  1777.  and window procedures serve more than one window.  The window handle ensures 
  1778.  that the application forwards the message to the proper window. 
  1779.  
  1780.  A message contains two message parameters-32-bit values that specify data or 
  1781.  the location of data that a window uses when processing the message.  The 
  1782.  meaning and value of a message parameter depend on the message.  A message 
  1783.  parameter can contain an integer, packed bit flags, a pointer to a structure 
  1784.  that contains additional data, and so forth.  Some messages do not use message 
  1785.  parameters and, typically, set the parameters to NULL.  An application always 
  1786.  checks the message identifier to determine how to interpret the message 
  1787.  parameters. 
  1788.  
  1789.  A queue message is a QMSG data structure that contains six data items, 
  1790.  representing the window handle, message identifier, two message parameters, 
  1791.  message time, and mouse-pointer position.  The time and position are included 
  1792.  because most queue messages are input messages, representing keyboard or mouse 
  1793.  input from the user.  The time and position also help the application identify 
  1794.  the context of the message.  The operating system posts a queue message by 
  1795.  filling the QMSG structure and copying it to a message queue. 
  1796.  
  1797.  A window message consists of the window handle, the message identifier, and 
  1798.  two message parameters.  A window message does not include the message time 
  1799.  and mouse-pointer position, because most window messages are requests to 
  1800.  perform a task that is not related to the current time or mouse-pointer 
  1801.  position.  The operating system sends a window message by passing these 
  1802.  values, as individual arguments, to a window procedure. 
  1803.  
  1804.  
  1805. ΓòÉΓòÉΓòÉ 4.1.2. Message Queues ΓòÉΓòÉΓòÉ
  1806.  
  1807. Every PM application must have a message queue. A message queue is the only 
  1808. means an application has to receive input from the keyboard or mouse.  Only 
  1809. applications that create message queues can create windows. 
  1810.  
  1811. An application creates a message queue by using the WinCreateMsgQueue function. 
  1812. This function returns a handle that the application can use to access the 
  1813. message queue.  After an application creates a message queue, the system posts 
  1814. messages intended for windows in the application to that queue.  The 
  1815. application can retrieve queue messages by specifying the message-queue handle 
  1816. in the WinGetMsg function. It also can examine messages, without retrieving 
  1817. them, by using the WinPeekMsg function. When an application no longer needs the 
  1818. message queue, it can destroy the queue by using the WinDestroyMsgQueue 
  1819. function. 
  1820.  
  1821. One message queue serves all the windows in a thread. This means a queue can 
  1822. hold messages for several windows. A message specifies the handle of the window 
  1823. to which it belongs so the application can forward a message easily to the 
  1824. appropriate window. The message loop recognizes a NULL window handle and the 
  1825. message is processed within the message loop rather than passed to 
  1826. WinDispatchMessage. See the following figure for an example of an input-message 
  1827. processing loop. 
  1828.  
  1829. An application that has more than one thread can create more than one message 
  1830. queue.  The system allows one message queue for each thread.  A message queue 
  1831. created by a thread belongs to that thread and has no connection to other 
  1832. queues in the application.  When an application creates a window in a given 
  1833. thread, the system associates the window with the message queue in that thread. 
  1834. The system then posts all subsequent messages intended for that window to that 
  1835. queue. 
  1836.  
  1837. Note:  The recommended way to structure PM applications is to have at least two 
  1838.        threads and two message queues.  The first thread and message queue 
  1839.        control all the user-interface windows, and the second thread and 
  1840.        message queue control all the object windows. 
  1841.  
  1842.  Several windows can use one message queue; it is important that the message 
  1843.  queue be large enough to hold all messages that possibly can be posted to it. 
  1844.  An application can set the size of the message queue when it creates the queue 
  1845.  by specifying the maximum number of messages the queue can hold.  The default 
  1846.  maximum number of messages is 10. 
  1847.  
  1848.  To minimize queue size, several types of posted messages are not actually 
  1849.  stored in a message queue.  Instead, the operating system keeps a record in 
  1850.  the queue of the message being posted and combines any information contained 
  1851.  in the message with information from previous messages.  Timer, semaphore, and 
  1852.  paint messages are handled this way.  For example, if more than one WM_PAINT 
  1853.  message is posted, the operating system combines the update regions for each 
  1854.  into a single update region.  Although there is no actual WM_PAINT message in 
  1855.  the queue, the operating system constructs one WM_PAINT message with the 
  1856.  single update region when an application uses the WinGetMsg function. 
  1857.  
  1858.  The operating system handles mouse and keyboard input messages differently 
  1859.  from the way it handles other types of messages.  The operating system 
  1860.  receives all keyboard and mouse events, such as keystrokes and mouse 
  1861.  movements, into the system message queue.  The operating system converts these 
  1862.  events into messages and posts them, one at a time, to the appropriate 
  1863.  application message queue.  The application retrieves the messages from its 
  1864.  queue and dispatches them to the appropriate window, which processes the 
  1865.  messages. 
  1866.  
  1867.  The operating system message queue usually is large enough to hold all input 
  1868.  messages, even if the user types or moves the mouse very quickly.  If the 
  1869.  operating system message queue does run out of space, the system ignores the 
  1870.  most recent keyboard input (usually by beeping to indicate the input is 
  1871.  ignored) and collects mouse motions into a WM_MOUSEMOVE message. 
  1872.  
  1873.  Every message queue has a corresponding MQINFO data structure that specifies 
  1874.  the identifiers of the process and thread that own the message queue and gives 
  1875.  a count of the maximum number of messages the queue can receive.  An 
  1876.  application can retrieve the structure by using the WinQueryQueueInfo 
  1877.  function. 
  1878.  
  1879.  A message queue also has a current status that indicates the types of messages 
  1880.  currently in the queue.  An application can retrieve the queue status by using 
  1881.  the WinQueryQueueStatus function.  An application also can use the WinPeekMsg 
  1882.  function to examine the contents of a message queue.  WinPeekMsg checks for a 
  1883.  specific message or range of messages in the queue and gives the application 
  1884.  the option of removing messages from the queue.  An application can call the 
  1885.  WinQueryQueueStatus function to determine the contents of the queue before 
  1886.  calling the WinPeekMsg or WinGetMsg function to remove a message from the 
  1887.  queue. 
  1888.  
  1889.  
  1890. ΓòÉΓòÉΓòÉ 4.1.3. Message Handling ΓòÉΓòÉΓòÉ
  1891.  
  1892. To handle and process messages, an application can use a message loop and the 
  1893. window procedure. These terms are explained in the following two sections. 
  1894.  
  1895.  
  1896. ΓòÉΓòÉΓòÉ 4.1.3.1. Message Loops ΓòÉΓòÉΓòÉ
  1897.  
  1898. Every application with a message queue is responsible for retrieving the 
  1899. messages from that queue.  An application can do this by using a message loop, 
  1900. usually in the application's main function, that retrieves messages from the 
  1901. message queue and dispatches them to the appropriate windows.  The message loop 
  1902. consists of two calls: one to the WinGetMsg function; the other to the 
  1903. WinDispatchMsg function.  The message loop has the following form: 
  1904.  
  1905. Uses
  1906.   Os2Def,Os2Base,Os2PmApi;
  1907.  
  1908. Var
  1909.   Hab  : HAB;  (* ╨ísken var tom!! *)
  1910.   Qmsg : QMSG; (* ╨ísken var tom!! *)
  1911.  
  1912. Begin
  1913.  
  1914.   While (WinGetMsg(hab, &qmsg, nil, 0, 0)<>0) Do
  1915.     WinDispatchMsg(hab, &qmsg);
  1916.  
  1917. An application starts the message loop after creating the message queue and at 
  1918. least one application window.  Once started, the message loop continues to 
  1919. retrieve messages from the message queue and to dispatch (send) them to the 
  1920. appropriate windows.  WinDispatchMsg sends each message to the window specified 
  1921. by the window handle in the message. 
  1922.  
  1923. The following figure illustrates the typical routing of an input message 
  1924. through the operating system's and application's message loops. 
  1925.  
  1926.             Mouse ΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇ Keystrokes
  1927.                         
  1928.                    ΓöîΓöÇΓö£ΓöÇΓöÇΓöÇΓö£ΓöÇΓöÉ
  1929.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1930.  System
  1931.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1932.  Event (time ordered)
  1933.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1934.  Queue
  1935.                    ΓööΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÿ
  1936.                        Γöé
  1937.                        
  1938.                   ΓöîΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÉ
  1939.                   Γöé Input  Γöé Scancode
  1940.            ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇ
  1941.  Router Γöé Translation
  1942.            Γöé      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1943.            
  1944.    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1945.    Γöé Message      Γöé Accelerator
  1946.    Γöé Preprocessor Γöé Key Translation
  1947.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1948.  ΓöîΓöÇ  ΓöÇΓöÇ  ΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÉ
  1949.        ΓöîΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÉ
  1950.  Γöé     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1951.  Appl    Priority         Γöé
  1952.        Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1953.  MssgQ   Ordered
  1954.  Γöé     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1955.                           Γöé
  1956.        ΓööΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÿ
  1957.  Γöé         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                     Γöé
  1958.                     
  1959.  Γöé          ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇWinGetMsgQ          Γöé
  1960.                         WinDispatchMsg
  1961.  Γöé          Γöé               Γöé             Γöé
  1962.     App's   Γöé               
  1963.  Γöé  Message Γöé         Window Procedure    Γöé
  1964.     Loop    Γöé               Γöé
  1965.  Γöé          Γöé                            Γöé
  1966.             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇreturn;
  1967.  ΓööΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÿ
  1968.  
  1969. Input Message Processing Loop Only one message loop is needed for a message 
  1970. queue, even if the queue contains messages for more than one window. Each queue 
  1971. message is a QMSG structure that contains the handle of the window to which the 
  1972. message belongs.  WinDispatchMsg always dispatches the message to the proper 
  1973. window.  WinGetMsg retrieves messages from the queue in first-in, first-out 
  1974. (FIFO) order, so the messages are dispatched to windows in the same order they 
  1975. are received. 
  1976.  
  1977. If there are no messages in the queue, the operating system temporarily stops 
  1978. processing the WinGetMsg function until a message arrives.  This means that 
  1979. processor time that, otherwise, would be spent waiting for a message can be 
  1980. given to the applications (or threads) that do have messages in their queues. 
  1981.  
  1982. The message loop continues to retrieve and dispatch messages until WinGetMsg 
  1983. retrieves a WM_QUIT message.  This message causes the function to return FALSE, 
  1984. terminating the loop.  In most cases, terminating the message loop is the first 
  1985. step in terminating the application.  An application can terminate its own loop 
  1986. by posting the WM_QUIT message in its own queue. 
  1987.  
  1988. An application can modify its message loop in a variety of ways.  For example, 
  1989. it can retrieve messages from the queue without dispatching them to a window. 
  1990. This is useful for applications that post messages without specifying a window. 
  1991. (These messages apply to the application rather than a specific window; they 
  1992. have NULL window handles.)  Also, an application can direct the WinGetMsg 
  1993. function to search for specific messages, leaving other messages in the queue. 
  1994. This is useful for applications that temporarily need to bypass the usual FIFO 
  1995. order of the message queue. 
  1996.  
  1997.  
  1998. ΓòÉΓòÉΓòÉ 4.1.3.2. Window Procedures ΓòÉΓòÉΓòÉ
  1999.  
  2000. A window procedure is a function that receives and processes all input and 
  2001. requests for action sent to the windows.  Every window class has a window 
  2002. procedure; every window created using that class uses that window procedure to 
  2003. respond to messages. 
  2004.  
  2005. The system sends a message to the window procedure by passing the message data 
  2006. as arguments.  The window procedure takes the appropriate action for the given 
  2007. message.  Most window procedures check the message identifier, then use the 
  2008. information specified by the message parameters to carry out the request.  When 
  2009. it has completed processing the message, the window procedure returns a message 
  2010. result.  Each message has a particular set of possible return values.  The 
  2011. window procedure must return the appropriate value for the processing it 
  2012. performed. 
  2013.  
  2014. A window procedure cannot ignore a message.  If it does not process a message, 
  2015. it must pass the message back to the operating system for default processing. 
  2016. The window procedure does this by calling the WinDefWindowProc function to 
  2017. carry out a default action and return the message result.  Then, the window 
  2018. procedure must return this value as its own message result. 
  2019.  
  2020. A window procedure commonly processes messages for several windows.  It uses 
  2021. the window handle specified in the message to identify the appropriate window. 
  2022. Most window procedures process just a few types of messages and pass the others 
  2023. on to the operating system by calling WinDefWindowProc. 
  2024.  
  2025.  
  2026. ΓòÉΓòÉΓòÉ 4.1.4. Posting and Sending Messages ΓòÉΓòÉΓòÉ
  2027.  
  2028. Any application can post and send messages.  Like the operating system, an 
  2029. application posts a message by copying it to a message queue.  It sends a 
  2030. message by passing the message data as arguments to a window procedure.  To 
  2031. post and send messages, an application uses the WinPostMsg and WinSendMsg 
  2032. functions. 
  2033.  
  2034. An application posts a message to notify a specific window to perform a task. 
  2035. The WinPostMsg function creates a QMSG structure for the message and copies the 
  2036. message to the message queue corresponding to the given window.  The 
  2037. application's message loop eventually retrieves the message and dispatches it 
  2038. to the appropriate window procedure.  For example, one message commonly posted 
  2039. is WM_QUIT.  This message terminates the application by terminating the message 
  2040. loop. 
  2041.  
  2042. An application sends a message to cause a specific window procedure to carry 
  2043. out a task immediately.  The WinSendMsg function passes the message to the 
  2044. window procedure corresponding to the given window.  The function waits until 
  2045. the window procedure completes processing and then returns the message result. 
  2046. Parent and child windows often communicate by sending messages to each other. 
  2047. For example, a parent window that has an entry-field control as its child 
  2048. window can set the text of the control by sending a message to the child 
  2049. window.  The control can notify the parent window of changes to the text 
  2050. (carried out by the user) by sending messages back to the parent window. 
  2051.  
  2052. Occasionally, an application might need to send or post a message to all 
  2053. windows in the system.  For example, if the application changes a system value, 
  2054. it must notify all windows about the change by sending a WM_SYSVALUECHANGED 
  2055. message.  An application can send or post messages to any number of windows by 
  2056. using the WinBroadcastMsg function.  The options in WinBroadcastMsg determine 
  2057. whether the message is sent or posted and specify the windows that will receive 
  2058. the message. 
  2059.  
  2060. Any thread in the application can post a message to a message queue, even if 
  2061. the thread has no message queue of its own.  However, only a thread that has a 
  2062. message queue can send a message.  Sending a message between threads is 
  2063. relatively uncommon.  For one reason, sending a message is costly in terms of 
  2064. system performance.  If an application posts a message between threads, it is 
  2065. likely to be a semaphore message, which permits window procedures to manage a 
  2066. shared resource jointly. 
  2067.  
  2068. An application can post a message without specifying a window.  If the 
  2069. application supplies a NULL window handle when it calls the WinPostMsg 
  2070. function, the function posts the message to the queue associated with the 
  2071. current thread.  The application must process the message in the message loop. 
  2072. This is one way to create a message that applies to the entire application 
  2073. instead of to a specific window. 
  2074.  
  2075. A window procedure can determine whether it is processing a message sent by 
  2076. another thread by using the WinInSendMsg function.  This is useful when message 
  2077. processing depends on the origin of the message. 
  2078.  
  2079. A common programming error is to assume that the WinPostMsg function always 
  2080. succeeds.  It fails when the message queue is full.  An application should 
  2081. check the return value of the WinPostMsg function to see whether the message 
  2082. was posted.  In general, if an application intends to post many messages to the 
  2083. queue, it should set the message queue to an appropriate size when it creates 
  2084. the queue.  The default message-queue size is 10 messages. 
  2085.  
  2086.  
  2087. ΓòÉΓòÉΓòÉ 4.1.5. Message Types ΓòÉΓòÉΓòÉ
  2088.  
  2089. This section describes the three types of OS/2 messages: 
  2090.  
  2091.      System-defined 
  2092.      Application-defined 
  2093.      Semaphore 
  2094.  
  2095.  
  2096. ΓòÉΓòÉΓòÉ 4.1.5.1. System-Defined Messages ΓòÉΓòÉΓòÉ
  2097.  
  2098. There are many system-defined messages that are used to control the operations 
  2099. of applications and to provide input and other information for applications to 
  2100. process.  The system sends or posts a system-defined message when it 
  2101. communicates with an application.  An application also can send or post 
  2102. system-defined messages.  Usually, applications use these messages to control 
  2103. the operation of control windows created by using preregistered window classes. 
  2104.  
  2105. Each system message has a unique message identifier and a corresponding 
  2106. symbolic constant.  The symbolic constant, defined in the system header files, 
  2107. states the purpose of the message.  For example, the WM_PAINT constant 
  2108. represents the paint message, which requests that a window paint its contents. 
  2109.  
  2110. The symbolic constants also specify the message category.  System-defined 
  2111. messages can belong to several categories; the prefix identifies the type of 
  2112. window that can interpret and process the messages.  The following table lists 
  2113. the prefixes and their related message categories: 
  2114.  
  2115. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2116. ΓöéPrefix         ΓöéMessage category                             Γöé
  2117. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2118. ΓöéBKM_           ΓöéNotebook control                             Γöé
  2119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2120. ΓöéBM_            ΓöéButton control                               Γöé
  2121. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2122. ΓöéCBM_           ΓöéCombination-box control                      Γöé
  2123. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2124. ΓöéCM_            ΓöéContainer control                            Γöé
  2125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2126. ΓöéEM_            ΓöéEntry-field control                          Γöé
  2127. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2128. ΓöéLM_            ΓöéList-box control                             Γöé
  2129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2130. ΓöéMLM_           ΓöéMultiple-line entry field control            Γöé
  2131. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2132. ΓöéMM_            ΓöéMenu control                                 Γöé
  2133. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2134. ΓöéSBM_           ΓöéScroll-bar control                           Γöé
  2135. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2136. ΓöéSLM_           ΓöéSlider control                               Γöé
  2137. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2138. ΓöéSM_            ΓöéStatic control                               Γöé
  2139. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2140. ΓöéTBM_           ΓöéTitle-bar control                            Γöé
  2141. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2142. ΓöéVM_            ΓöéValue set control                            Γöé
  2143. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2144. ΓöéWM_            ΓöéGeneral window                               Γöé
  2145. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2146.  
  2147. General window messages cover a wide range of information and requests, 
  2148. including: 
  2149.  
  2150.      Mouse and keyboard-input 
  2151.      Menu- and dialog-input 
  2152.      Window creation and management 
  2153.      Dynamic data exchange (DDE) 
  2154.  
  2155.  
  2156. ΓòÉΓòÉΓòÉ 4.1.5.2. Application-Defined Messages ΓòÉΓòÉΓòÉ
  2157.  
  2158. An application can create messages to use in its own windows.  If an 
  2159. application does create messages, the window procedure that receives the 
  2160. messages must interpret them and provide the appropriate processing. 
  2161.  
  2162. The operating system reserves the message-identifier values in the range 0x0000 
  2163. through 0x0FFF (the value of WM_USER - 1) for system-defined messages. 
  2164. Applications cannot use these values for their private messages. 
  2165.  
  2166. In addition, the operating system uses certain message values higher than 
  2167. WM_USER. Applications should not use these message values. A partial listing of 
  2168. these messages is in the following figure: 
  2169.  
  2170. From PMSTDDLG.H:
  2171.  
  2172. Const
  2173.   FDM_FILTER      = WM_USER+40;
  2174.   FDM_VALIDATE    =  WM_USER+41;
  2175.   FDM_ERROR       =  WM_USER+42;
  2176.  
  2177.   FNTM_FACENAMECHANGED  =  WM_USER+50;
  2178.   FNTM_POINTSIZECHANGED =  WM_USER+51;
  2179.   FNTM_STYLECHANGED     =  WM_USER+52;
  2180.   FNTM_COLORCHANGED     =  WM_USER+53;
  2181.   FNTM_UPDATEPREVIEW    =  WM_USER+54;
  2182.   FNTM_FILTERLIST       =  WM_USER+55;
  2183.  
  2184. You should scan your header files to see if other messages have been defined 
  2185. with values higher than WM_USER. 
  2186.  
  2187. Aside from the message values used by the operating system, values in the range 
  2188. $1000 (the value of WM_USER) through $BFFF are available for message 
  2189. identifiers, defined by an application, for use in that application. 
  2190.  
  2191. Warning: It is very important that applications do not broadcast messages in 
  2192. the $1000 through $BFFF range due to the risk of misinterpretation by other 
  2193. applications. 
  2194.  
  2195. Values in the range $C000 through $FFFF are reserved for message identifiers 
  2196. that an application defines and registers with the system atom table; these can 
  2197. be used in any application. Values above $FFFF ($00010000 through $FFFFFFFF) 
  2198. are reserved for future use; applications must not use messages in this range. 
  2199.  
  2200.  
  2201. ΓòÉΓòÉΓòÉ 4.1.5.3. Semaphore Messages ΓòÉΓòÉΓòÉ
  2202.  
  2203. A semaphore message provides a way of signaling, through the message queue, the 
  2204. end of an event.  An application uses a semaphore message the same way it uses 
  2205. system semaphore functions-to coordinate events by passing signals.  A 
  2206. semaphore message often is used in conjunction with system semaphores. 
  2207.  
  2208. There are four semaphore messages: 
  2209.  
  2210.       WM_SEM1 
  2211.       WM_SEM2 
  2212.       WM_SEM3 
  2213.       WM_SEM4. 
  2214.  
  2215.  An application posts one of these messages to signal the end of a given event. 
  2216.  The window that is waiting for the given event receives the semaphore message 
  2217.  when the message loop retrieves and dispatches the message. 
  2218.  
  2219.  Each semaphore message includes a bit flag that an application can use to 
  2220.  uniquely identify the 32 possible semaphores for each semaphore message.  The 
  2221.  application passes the bit flag (with the appropriate bit set) as a message 
  2222.  parameter with the message.  The window procedure that receives the message 
  2223.  then uses the bit flag to identify the semaphore. 
  2224.  
  2225.  To save space, the system does not store semaphore messages in the message 
  2226.  queue.  Instead, it sets a record in the queue, indicating that the semaphore 
  2227.  message has been received, and then combines the bit flag for the message with 
  2228.  the bit flags from previous messages.  When the window procedure eventually 
  2229.  receives the message, the bit flag specifies each semaphore message posted 
  2230.  since the last message was retrieved. 
  2231.  
  2232.  
  2233. ΓòÉΓòÉΓòÉ 4.1.6. Message Priorities ΓòÉΓòÉΓòÉ
  2234.  
  2235. The WinGetMsg function retrieves messages from the message queue based on 
  2236. message priority.  WinGetMsg retrieves messages with higher priority first.  If 
  2237. it finds more than one message at a particular priority level, it retrieves the 
  2238. oldest message first.  Messages have the following priorities: 
  2239.  
  2240. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2241. ΓöéPriority       ΓöéMessage                                      Γöé
  2242. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2243. Γöé1              ΓöéWM_SEM1                                      Γöé
  2244. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2245. Γöé2              ΓöéMessages posted using WinPostMsg             Γöé
  2246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2247. Γöé3              ΓöéInput messages from the keyboard or mouse    Γöé
  2248. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2249. Γöé4              ΓöéWM_SEM2                                      Γöé
  2250. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2251. Γöé5              ΓöéWM_PAINT                                     Γöé
  2252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2253. Γöé6              ΓöéWM_SEM3                                      Γöé
  2254. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2255. Γöé7              ΓöéWM_TIMER                                     Γöé
  2256. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2257. Γöé8              ΓöéWM_SEM4                                      Γöé
  2258. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2259.  
  2260.  
  2261. ΓòÉΓòÉΓòÉ 4.1.7. Message Filtering ΓòÉΓòÉΓòÉ
  2262.  
  2263. An application can choose specific messages to retrieve from the message queue 
  2264. (and ignore other messages) by specifying a message filter with the WinGetMsg 
  2265. or WinPeekMsg functions.  The message filter is a range of message identifiers 
  2266. (specified by a first and last identifier), a window handle, or both.  The 
  2267. WinGetMsg and WinPeekMsg functions use the message filter to select the 
  2268. messages to retrieve from the queue.  Message filtering is useful if an 
  2269. application needs to search ahead in the message queue for messages that have a 
  2270. lower priority or that arrived in the queue later than other less important 
  2271. messages. 
  2272.  
  2273. Any application that filters messages must ensure that a message satisfying the 
  2274. message filter can be posted.  For example, filtering for a WM_CHAR message in 
  2275. a window that does not receive keyboard input prevents the WinGetMsg function 
  2276. from returning.  Some messages, such as WM_COMMAND, are generated from other 
  2277. messages; filtering for them also can prevent WinGetMsg from returning. 
  2278.  
  2279. To filter for mouse, button, and DDE messages, an application can use the 
  2280. following constants: 
  2281.  
  2282.       WM_MOUSEFIRST and WM_MOUSELAST 
  2283.       WM_BUTTONCLICKFIRST and WM_BUTTONCLICKLAST 
  2284.       WM_DDE_FIRST and WM_DDE_LAST. 
  2285.  
  2286.  
  2287. ΓòÉΓòÉΓòÉ 4.2. Using Messages ΓòÉΓòÉΓòÉ
  2288.  
  2289. This section explains how to perform the following tasks: 
  2290.  
  2291.      Create a message queue and message loop 
  2292.      Examine the message queue 
  2293.      Post and send messages between windows 
  2294.      Broadcast a message to multiple windows 
  2295.      Use message macros 
  2296.  
  2297.  
  2298. ΓòÉΓòÉΓòÉ 4.2.1. Creating a Message Queue and Message Loop ΓòÉΓòÉΓòÉ
  2299.  
  2300. An application needs a message queue and message loop to process messages for 
  2301. its windows.  An application creates a message queue by using the 
  2302. WinCreateMsgQueue function.  An application creates a message loop by using the 
  2303. WinGetMsg and WinDispatchMsg functions.  The application must create and show 
  2304. at least one window after creating the queue but before starting the message 
  2305. loop. The following code fragment shows how to create a message queue and 
  2306. message loop: 
  2307.  
  2308. Uses
  2309.   Os2Def,Os2Base,Os2PmApi;
  2310.  
  2311. Var
  2312.   Hab : HAB; (* ╨ísken var tom!! *)
  2313.  
  2314. Var
  2315.   Hmq                   : HMQ;   (* ╨ísken var tom!! *)
  2316.   Qmsg                  : QMSG;  (* ╨ísken var tom!! *)
  2317.   HwndFrame, HwndClient : HWND;  (* ╨ísken var tom!! *)
  2318.   FlFrameFlags          : ULONG; (* ╨ísken var tom!! *)
  2319.  
  2320. Begin
  2321.   FlFrameFlags := FCF_TITLEBAR      Or FCF_SYSMENU Or
  2322.                   FCF_SIZEBORDER    Or FCF_MINMAX  Or
  2323.                   FCF_SHELLPOSITION Or FCF_TASKLIST;
  2324.  
  2325.                               (* Initialize the application for
  2326.                                  Presentation Manager interface.      *)
  2327.  
  2328.   hab = WinInitialize(0);
  2329.  
  2330.                               (* Create the application
  2331.                                  message queue.                 *)
  2332.   hmq = WinCreateMsgQueue(hab, 0);
  2333.  
  2334.                               (* Register the window class for your
  2335.                                  client window.                 *)
  2336.   WinRegisterClass(hab,                  (* Anchor block handle         *)
  2337.                    'MyClientClass',      (* Class name                  *)
  2338.                    ClientWndProc,        (* Window procedure            *)
  2339.                    CS_SIZEREDRAW,        (* Class style                 *)
  2340.                    0);                   (* Extra bytes to reserve      *)
  2341.  
  2342.                                          (* Create a main window.       *)
  2343.   hwndFrame := WinCreateStdWindow(
  2344.                   HWND_DESKTOP,          (* Parent window handle        *)
  2345.                   WS_VISIBLE,            (* Style of frame window       *)
  2346.                   &flFrameFlags,         (* Frame controls              *)
  2347.                   'MyClientClass',       (* Window class for client     *)
  2348.                   nil,                   (* No title-bar text           *)
  2349.                   WS_VISIBLE,            (* Style of client window      *)
  2350.                   nil,                   (* Module handle for resources *)
  2351.                   0,                     (* No resource identIfier      *)
  2352.                   &hwndClient);          (* Pointer to client handle    *)
  2353.  
  2354.                                          (* Start the message loop.     *)
  2355.   While (WinGetMsg(hab, &qmsg, nil, 0, 0)<>0) Do
  2356.     WinDispatchMsg(hab, &qmsg);
  2357.  
  2358.                                          (*. Destroy the main window.   *)
  2359.   WinDestroyWindow(hwndFrame);
  2360.  
  2361.                                          (* Destroy the message queue.  *)
  2362.   WinDestroyMsgQueue(hmq);
  2363.  
  2364.                                          (* Terminate the application.  *)
  2365.   WinTerminate(hab);
  2366.  
  2367. End.
  2368.  
  2369. Both the WinGetMsg and WinDispatchMsg functions take a pointer to a QMSG 
  2370. structure as a parameter.  If a message is available, WinGetMsg copies it to 
  2371. the QMSG structure; WinDispatchMsg then uses the data in the structure as 
  2372. arguments for the window procedure. 
  2373.  
  2374. Occasionally, an application might need to process a message before dispatching 
  2375. it.  For example, if a message is posted but the destination window is not 
  2376. specified (that is, the message contains a NULL window handle), the application 
  2377. must process the message to determine which window should receive the message. 
  2378. Then the WinDispatchMsg function can forward the message to the proper window. 
  2379. The following code fragment shows how the message loop can process messages 
  2380. that have NULL window handles: 
  2381.  
  2382.  
  2383. Uses
  2384.   Os2Def,Os2Base,Os2PmApi;
  2385.  
  2386. Var
  2387.   Hab  : HAB;  (* ╨ísken var tom!! *)
  2388.   Qmsg : QMSG; (* ╨ísken var tom!! *)
  2389.  
  2390. Begin
  2391.   While (WinGetMsg (hab, &qmsg, nil, 0, 0)<>0) Do
  2392.     If (qmsg.hwnd = nil) Then Begin
  2393.       .
  2394.       . (* Process the message. *)
  2395.       .
  2396.     End
  2397.     Else
  2398.       WinDispatchMsg (hab, &qmsg);
  2399.   End;
  2400. End.
  2401.  
  2402.  
  2403. ΓòÉΓòÉΓòÉ 4.2.2. Examining the Message Queue ΓòÉΓòÉΓòÉ
  2404.  
  2405. An application can examine the contents of the message queue by using the 
  2406. WinPeekMsg or WinQueryQueueStatus function.  It is useful to examine the queue 
  2407. if the application starts a lengthy operation that additional user input might 
  2408. affect, or if the application needs to look ahead in the queue to anticipate a 
  2409. response to user input. 
  2410.  
  2411. An application can use WinPeekMsg to check for specific messages in the message 
  2412. queue.  This function is useful for extracting messages for a specific window 
  2413. from the queue.  It returns immediately if there is no message in the queue. 
  2414. An application can use WinPeekMsg in a loop without requiring the loop to wait 
  2415. for a message to arrive.  The following code fragment checks the queue for 
  2416. WM_CHAR messages: 
  2417.  
  2418. Uses
  2419.   Os2Def,Os2Base,Os2PmApi;
  2420.  
  2421. Var
  2422.   Hab  : HAB;  (* ╨ísken var tom!! *)
  2423.   Qmsg : QMSG; (* ╨ísken var tom!! *)
  2424.  
  2425. Begin
  2426.  
  2427.   If (WinPeekMsg(hab, &qmsg, nil, WM_CHAR,
  2428.       WM_CHAR, PM_NOREMOVE)) Then Begin
  2429.     .
  2430.     . (* Process the message. *)
  2431.     .
  2432.   End;
  2433.  
  2434. An application also can use the WinQueryQueueStatus function to check for 
  2435. messages in the queue.  This function is very fast and returns information 
  2436. about the kinds of messages available in the queue and which messages have been 
  2437. posted recently.  Most applications use this function in message loops that 
  2438. need to be as fast as possible. 
  2439.  
  2440.  
  2441. ΓòÉΓòÉΓòÉ 4.2.3. Posting a Message to a Window ΓòÉΓòÉΓòÉ
  2442.  
  2443. An application can use the WinPostMsg function to post a message to a window. 
  2444. The message goes to the window's message queue.  The following code fragment 
  2445. posts the WM_QUIT message. 
  2446.  
  2447. Uses
  2448.   Os2Def,Os2Base,Os2PmApi;
  2449.  
  2450. Var
  2451.   Hwnd : HWND; (* ╨ísken var tom!! *)
  2452.  
  2453. Begin
  2454.  
  2455.   If (!WinPostMsg(hwnd, WM_QUIT, nil, nil)) Then Begin
  2456.  
  2457.     (* Message was not posted. *)
  2458.   End;
  2459.  
  2460. The WinPostMsg function returns FALSE if the queue is full, and the message 
  2461. cannot be posted. 
  2462.  
  2463.  
  2464. ΓòÉΓòÉΓòÉ 4.2.4. Sending a Message to a Window ΓòÉΓòÉΓòÉ
  2465.  
  2466. An application can use the WinSendMsg function to send a message directly to a 
  2467. window.  An application uses this function to send messages to child windows. 
  2468. For example, the following code fragment sends an LM_INSERTITEM message to 
  2469. direct a list-box control to add an item to the end of its list: 
  2470.  
  2471. Uses
  2472.   Os2Def,Os2Base,Os2PmApi;
  2473.  
  2474. Var HwndListBox : HWND; (* ╨ísken var tom!! *)
  2475. Const szWeekday : Array[0..9] of CHAR = 'Tuesday';
  2476.  
  2477. Begin
  2478.  
  2479.   WinSendMsg(hwndListBox,
  2480.              LM_INSERTITEM,
  2481.              LIT_END,
  2482.              MPFROMP(szWeekday));
  2483.  
  2484. WinSendMsg calls the window's window procedure and waits for it to handle the 
  2485. message and return a result.  An application can send a message to any window 
  2486. in the system, as long as the application has the handle of the target window. 
  2487. The message queue does not store the message; however, the thread making the 
  2488. call must have a message queue. 
  2489.  
  2490.  
  2491. ΓòÉΓòÉΓòÉ 4.2.5. Broadcasting a Message ΓòÉΓòÉΓòÉ
  2492.  
  2493. An application can send a message to multiple windows by using the 
  2494. WinBroadcastMsg function.  Often this function is used to broadcast the 
  2495. WM_SYSVALUECHANGED message after an application changes a system value.  The 
  2496. following code fragment shows how to broadcast this message to all frame 
  2497. windows in all applications: 
  2498.  
  2499. Uses
  2500.   Os2Def,Os2Base,Os2PmApi;
  2501.  
  2502. Var
  2503.   Hwnd : HWND; (* ╨ísken var tom!! *)
  2504.  
  2505. Begin
  2506.  
  2507.   WinBroadcastMsg(
  2508.       hwnd,                                (* Window handle         *)
  2509.       WM_SYSVALUECHANGED,                  (* Message identIfier    *)
  2510.       nil,                                 (* No message parameters *)
  2511.       nil,
  2512.       BMSG_FRAMEONLY Or BMSG_POSTQUEUE);   (* All frame windows     *)
  2513.  
  2514. An application can broadcast messages to all windows, just frame windows, or 
  2515. just the windows in the application. 
  2516.  
  2517.  
  2518. ΓòÉΓòÉΓòÉ 4.2.6. Using Message Macros ΓòÉΓòÉΓòÉ
  2519.  
  2520. The system header files define several macros that help create and interpret 
  2521. message parameters. 
  2522.  
  2523. One set of macros helps you construct message parameters.  These macros are 
  2524. useful for sending and posting messages.  For example, the following code 
  2525. fragment uses the MPFROMSHORT macro to convert a 16-bit integer into the 32-bit 
  2526. message parameter: 
  2527.  
  2528.  
  2529. Uses
  2530.   Os2Def,Os2Base,Os2PmApi;
  2531.  
  2532. Var
  2533.   HwndButton : HWND; (* ╨ísken var tom!! *)
  2534.  
  2535. Begin
  2536.  
  2537.   WinSendMsg(hwndButton, BM_SETCHECK, MPFROMSHORT(1), nil);
  2538.  
  2539. End.
  2540.  
  2541. A second set of macros helps you extract values from a message parameter. 
  2542. These macros are useful for handling messages in a window procedure.  The 
  2543. following code fragment determines whether the window receiving the 
  2544. WM_FOCUSCHANGE message is gaining or losing the keyboard focus.  The fragment 
  2545. uses the SHORT1FROMMP macro to extract the focus-change flag, the SHORT2FROMMP 
  2546. macro to extract the focus flag, and the HWNDFROMMP macro to extract the window 
  2547. handle. 
  2548.  
  2549. Uses
  2550.   Os2Def,Os2Base,Os2PmApi;
  2551.  
  2552. Var
  2553.   FsFocusChange : USHORT; (* ╨ísken var tom!! *)
  2554.   Mp1, Mp2      : MPARAM; (* ╨ísken var tom!! *)
  2555.   HwndGainFocus : HWND;   (* ╨ísken var tom!! *)
  2556.  
  2557. Begin
  2558.   WM_FOCUSCHANGE:
  2559.     fsFocusChange := SHORT2FROMMP(mp2);    (* Gets focus-change flags  *)
  2560.     If (SHORT1FROMMP(mp2)<>0)              (* Gaining or losing focus? *)
  2561.       hwndGainFocus := HWNDFROMMP(mp1);
  2562. End.
  2563.  
  2564. A third set of macros helps you construct a message result.  These macros are 
  2565. useful for returning message results in a window procedure, as the following 
  2566. code fragment illustrates: 
  2567.  
  2568.     Halt (MRFROM2SHORT(1, 2));
  2569.  
  2570.  
  2571. ΓòÉΓòÉΓòÉ 5. Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
  2572.  
  2573. A multiple-line entry (MLE) field is a sophisticated control window that 
  2574. enables a user to view and edit multiple lines of text. This chapter describes 
  2575. how to create and use multiple-line entry field controls in PM applications. 
  2576.  
  2577.  
  2578. ΓòÉΓòÉΓòÉ 5.1. About Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
  2579.  
  2580. An MLE field control gives an application the text-editing capabilities of a 
  2581. simple text editor. The application can create a multiple-line entry field by 
  2582. using WinCreateWindow or by specifying the MLE statement in a dialog-window 
  2583. template in a resource-definition file. 
  2584.  
  2585.  
  2586. ΓòÉΓòÉΓòÉ 5.1.1. MLE Styles ΓòÉΓòÉΓòÉ
  2587.  
  2588. The style of an MLE field control determines how the MLE field appears and 
  2589. behaves. An application can specify a combination of the following styles for 
  2590. an MLE field: 
  2591.  
  2592. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2593. ΓöéStyle Name          ΓöéDescription                             Γöé
  2594. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2595. ΓöéMLS_BORDER          ΓöéDraws a border around the MLE field.    Γöé
  2596. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2597. ΓöéMLS_DISABLEUNDO     ΓöéDirects the MLE control not to allow    Γöé
  2598. Γöé                    Γöéundo actions.                           Γöé
  2599. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2600. ΓöéMLS_HSCROLL         ΓöéAdds a horizontal scroll bar to the MLE Γöé
  2601. Γöé                    Γöéfield. The MLE control enables this     Γöé
  2602. Γöé                    Γöéscroll bar whenever any line exceeds theΓöé
  2603. Γöé                    Γöéwidth of the MLE field.                 Γöé
  2604. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2605. ΓöéMLS_IGNORETAB       ΓöéDirects the MLE control to ignore the   Γöé
  2606. Γöé                    ΓöéTab key. It passes the appropriate      Γöé
  2607. Γöé                    ΓöéWM_CHAR to its owner window.            Γöé
  2608. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2609. ΓöéMLS_LIMITVSCROLL    ΓöéDisplays the last MLE line at the bottomΓöé
  2610. Γöé                    Γöéof the screen page. When this style is  Γöé
  2611. Γöé                    Γöénot used, the MLE control shows an emptyΓöé
  2612. Γöé                    Γöéspace between the last MLE line and the Γöé
  2613. Γöé                    Γöébottom of the screen page.              Γöé
  2614. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2615. ΓöéMLS_READONLY        ΓöéPrevents the MLE field from accepting   Γöé
  2616. Γöé                    Γöétext from the user. This style is usefulΓöé
  2617. Γöé                    Γöéfor displaying lengthy static text in a Γöé
  2618. Γöé                    Γöéclient or dialog window.                Γöé
  2619. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2620. ΓöéMLS_VSCROLL         ΓöéAdds a vertical scroll bar to the MLE   Γöé
  2621. Γöé                    Γöéfield. The MLE control enables this     Γöé
  2622. Γöé                    Γöéscroll bar whenever the number of lines Γöé
  2623. Γöé                    Γöéexceeds the height of the MLE field.    Γöé
  2624. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2625. ΓöéMLS_WORDWRAP        ΓöéAutomatically breaks lines that are     Γöé
  2626. Γöé                    Γöélonger than the width of the MLE field. Γöé
  2627. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2628.  
  2629.  
  2630. ΓòÉΓòÉΓòÉ 5.1.2. MLE Notification Codes ΓòÉΓòÉΓòÉ
  2631.  
  2632. An MLE field control sends WM_CONTROL messages containing notification codes to 
  2633. its owner whenever certain events occur, for example, when the user or 
  2634. application tries to insert too much text, or when the user uses the scroll 
  2635. bars. The owner window uses the notification codes either to carry out custom 
  2636. operations for the MLE field or to respond to errors. 
  2637.  
  2638. The MLE field control sends the MLN_HSCROLL or MLN_VSCROLL notification codes 
  2639. when the user enables the scroll bars so that the application can monitor the 
  2640. visible contents of the MLE field. The application also can monitor the 
  2641. contents of an MLE field by using the MLM_QUERYFIRSTCHAR message, which 
  2642. specifies the offset of the character in the upper-left corner of the MLE 
  2643. field. This represents the first MLE character that is visible to the user. To 
  2644. provide an alternative way of scrolling the contents of an MLE field, an 
  2645. application can move the character at the specified offset to the upper-left 
  2646. corner of an MLE field using the MLM_SETFIRSTCHAR message. 
  2647.  
  2648. The MLE field control sends an MLN_CHANGE notification code when the user 
  2649. changes the text in some way. This notification code is especially useful when 
  2650. the MLE field is in a dialog window, because the dialog procedure can use this 
  2651. code to determine whether it should process the contents of the MLE field. If 
  2652. an application does not process MLN_CHANGE notification codes, it can use the 
  2653. MLM_QUERYCHANGED message to determine whether the user has made changes to the 
  2654. MLE text. The MLM_SETCHANGED message makes the MLE field control send an 
  2655. MLN_CHANGE notification code with every event that occurs in the MLE field, 
  2656. regardless of whether the user has changed anything. This code also can be used 
  2657. to hide a change made by a user. 
  2658.  
  2659.  
  2660. ΓòÉΓòÉΓòÉ 5.1.3. MLE Text Editing ΓòÉΓòÉΓòÉ
  2661.  
  2662. An MLE field contains one or more lines of text. Each line consists of one or 
  2663. more characters and ends with one or more characters that represent the end of 
  2664. the line. The end-of-line characters are determined by the format of the text. 
  2665.  
  2666. The user can type text in an MLE field when the MLE field has the focus. The 
  2667. application can insert text at any time by using the MLM_INSERT message and 
  2668. specifying the text as a null-terminated string. The MLE field control inserts 
  2669. the text at the cursor position or replaces the selected text. 
  2670.  
  2671. The MLE field control entry mode, insert or overstrike, determines what happens 
  2672. when the user inserts text. The user sets the entry mode by pressing the Insert 
  2673. key. The entry mode alternates each time the user presses Insert. When 
  2674. overstrike mode is enabled, at least one character is selected. This means that 
  2675. the MLM_INSERT message always replaces at least one character. If insert mode 
  2676. is enabled, the MLM_INSERT message replaces only those characters the user or 
  2677. application has selected. Otherwise, the MLE field makes room for the inserted 
  2678. characters by moving existing characters to the right, starting at the cursor 
  2679. position. 
  2680.  
  2681. The cursor position, identified by a blinking bar, is specified as a character 
  2682. offset relative to the beginning of the text. The user can set the cursor 
  2683. position by using the mouse or Arrow keys to move the blinking bar. An 
  2684. application can set the cursor position by using the MLM_SETSEL message, which 
  2685. directs the MLE field control to move the blinking bar to a given character 
  2686. position. The MLM_SETSEL message also can set the selection. 
  2687.  
  2688. The selection is one or more characters of text on which the MLE field control 
  2689. carries out an operation, such as deleting or copying. The user selects text by 
  2690. pressing the Shift key while moving the cursor or by pressing mouse button 1 
  2691. while moving the mouse. The user also can select a word in a block of text by 
  2692. double-clicking on the word. An application selects text by using the 
  2693. MLM_SETSEL message to specify the cursor position and the anchor point. The 
  2694. selection is all the text between the cursor position and the anchor point. If 
  2695. the cursor position and anchor point are equal, there is no selection. An 
  2696. application can retrieve the cursor position, anchor point, or both, by using 
  2697. the MLM_QUERYSEL message. 
  2698.  
  2699. The user can delete characters, one at a time, by pressing the Delete key or 
  2700. the Backspace key. Pressing the Delete key deletes the character to the right 
  2701. of the cursor; pressing the Backspace key deletes the character to the left of 
  2702. the cursor and changes the cursor position. An application can delete one or 
  2703. more characters by using the MLM_DELETE message, which directs the MLE field 
  2704. control to delete a specified number of characters, starting at the given 
  2705. position. This message does not change the cursor position. An application can 
  2706. delete selected text by using the MLM_CLEAR message. 
  2707.  
  2708. An application can reverse the previous operation by using the MLM_UNDO 
  2709. message, which restores the MLE field to its previous state. This is a quick 
  2710. way to fix editing mistakes. However, not all operations can be undone. 
  2711.  
  2712. The application determines whether the previous operation can be undone by 
  2713. using the MLM_QUERYUNDO message, which returns TRUE and indicates the type of 
  2714. operation that can be undone. Using the MLM_RESETUNDO message, an application 
  2715. can prevent a subsequent MLM_UNDO message from changing the state of an MLE 
  2716. field. 
  2717.  
  2718.  
  2719. ΓòÉΓòÉΓòÉ 5.1.4. MLE Text Formatting ΓòÉΓòÉΓòÉ
  2720.  
  2721. An application can retrieve the number of lines of text in an MLE field by 
  2722. using the MLM_QUERYLINECOUNT message and can retrieve the number of characters 
  2723. in the MLE field by using the MLM_QUERYTEXTLENGTH message. The amount of text 
  2724. and, subsequently, the number of lines to be entered in an MLE field depend on 
  2725. the text limit. An application sets the text limit by using the 
  2726. MLM_SETTEXTLIMIT message and determines the current limit by using the 
  2727. MLM_QUERYTEXTLIMIT message. The user cannot set the text limit.  If the user 
  2728. types to the text limit, the MLE field control beeps and ignores any subsequent 
  2729. keystrokes. If the application attempts to add text beyond the limit, the MLE 
  2730. field control truncates the text. 
  2731.  
  2732. An application can control the length of each line in an MLE field by enabling 
  2733. word wrapping. When word wrapping is enabled, the MLE field control 
  2734. automatically breaks any line that is longer than the width of the MLE field. 
  2735. An application can set word wrapping by using the MLM_SETWRAP message, and it 
  2736. can determine whether the MLE field control is wrapping text by using the 
  2737. MLM_QUERYWRAP message. Word wrapping is disabled by default unless the 
  2738. application specifies the MLS_WORDWRAP style when creating the MLE field 
  2739. control. 
  2740.  
  2741. An application can set tab stops for an MLE control by using the MLM_SETTABSTOP 
  2742. message. Tab stops specify the maximum width of a tab character. When the user 
  2743. or an application inserts a tab character, the MLE field control expands the 
  2744. character so that it fills the space between the cursor position and the next 
  2745. tab stop. The MLM_SETTABSTOP message sets the distance (in pels) between tab 
  2746. stops, and the MLE field control provides as many tab stops as necessary, no 
  2747. matter how long the line gets. An application can retrieve the distance between 
  2748. tab stops using the MLM_QUERYTABSTOP message. 
  2749.  
  2750. An application can use the MLM_SETFORMATRECT message to set the format 
  2751. rectangle (MLE field). The format rectangle is used to set the horizontal and 
  2752. vertical limits for text. The MLE control sends a notification message to the 
  2753. parent window of the MLE field if text exceeds either of those limits. An 
  2754. application typically uses the format rectangle to provide its own word 
  2755. wrapping or other special text processing. An application can retrieve the 
  2756. current format rectangle by using the MLM_QUERYFORMATRECT message. 
  2757.  
  2758. An application can prevent the user's editing of the MLE field by setting the 
  2759. MLS_READONLY style in WinCreateWindow or in the MLE statement in the 
  2760. resource-definition file. The application also can set and query the read-only 
  2761. state by using the MLM_SETREADONLY and MLM_QUERYREADONLY messages, 
  2762. respectively. 
  2763.  
  2764. An application can set the colors and font for an MLE field by using the 
  2765. MLM_SETTEXTCOLOR, MLM_SETBACKCOLOR, and MLM_SETFONT messages. These messages 
  2766. affect all text in the MLE field. An MLE field cannot contain a mixture of 
  2767. fonts and colors. An application can retrieve the current values for the colors 
  2768. and font by using the MLM_QUERYTEXTCOLOR, MLM_QUERYBACKCOLOR, and MLM_QUERYFONT 
  2769. messages. 
  2770.  
  2771. To prevent scrolling within the MLE when the MLS_READONLY style bit is set, use 
  2772. the MLM_DISABLEREFRESH message. The keyboard and mouse input can be enabled 
  2773. using the MLM_ENABLEREFRESH message. 
  2774.  
  2775.  
  2776. ΓòÉΓòÉΓòÉ 5.1.5. MLE Text Import and Export Operations ΓòÉΓòÉΓòÉ
  2777.  
  2778. An application can copy text to and from an MLE field by importing and 
  2779. exporting. To import text to an MLE field, an application can use the 
  2780. MLM_IMPORT message, which copies text from a buffer to the MLE field. To export 
  2781. text from an MLE field, the application can use the MLM_EXPORT message, which 
  2782. copies text from the MLE field to a buffer. The application uses the 
  2783. MLM_SETIMPORTEXPORT message to set the import and export buffers. 
  2784.  
  2785. An application can import and export text in a variety of formats. A text 
  2786. format, set with the MLM_FORMAT message, identifies which characters are used 
  2787. for the end-of-line characters. An MLE field can have the following text 
  2788. formats: 
  2789.  
  2790. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2791. ΓöéFormat Name         ΓöéDescription                             Γöé
  2792. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2793. ΓöéMLFIE_CFTEXT        ΓöéExported lines end with a carriage      Γöé
  2794. Γöé                    Γöéreturn/newline character pair (0x0D,    Γöé
  2795. Γöé                    Γöé0x0A). Imported lines must end with a   Γöé
  2796. Γöé                    Γöénewline character, carriage             Γöé
  2797. Γöé                    Γöéreturn/newline character pair, or       Γöé
  2798. Γöé                    Γöénewline/carriage return character pair. Γöé
  2799. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2800. ΓöéMLFIE_NOTRANS       ΓöéImported and exported lines end with a  Γöé
  2801. Γöé                    Γöénewline character (0x0A).               Γöé
  2802. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2803. ΓöéMLFIE_WINFMT        ΓöéFor exported lines, the carriage        Γöé
  2804. Γöé                    Γöéreturn/newline character pair marks a   Γöé
  2805. Γöé                    Γöéhard linebreak (a break entered by the  Γöé
  2806. Γöé                    Γöéuser). Two carriage-return characters   Γöé
  2807. Γöé                    Γöéand a newline character (0x0D, 0x0D,    Γöé
  2808. Γöé                    Γöé0x0A) mark a soft linebreak (a break    Γöé
  2809. Γöé                    Γöéinserted during word wrapping and not   Γöé
  2810. Γöé                    Γöéentered by the user). For imported      Γöé
  2811. Γöé                    Γöélines, the extra carriage-return in softΓöé
  2812. Γöé                    Γöélinebreak characters is ignored.        Γöé
  2813. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2814.  
  2815. The text format can affect the number of characters in a selection. To ensure 
  2816. that the export buffer is large enough to hold exported text, an application 
  2817. can send the MLM_QUERYFORMATLINELENGTH message. The application can send the 
  2818. MLM_QUERYFORMATTEXTLENGTH message to determine the number of bytes in the text 
  2819. to be exported. 
  2820.  
  2821. Each time an application inserts text in an MLE field, the MLE field control 
  2822. automatically refreshes (repaints) the display by drawing the new text. When an 
  2823. application copies large amounts of text to an MLE field, refreshing can be 
  2824. quite time-consuming, so the application should disable the refresh state. The 
  2825. application disables the refresh state by sending the MLM_DISABLEREFRESH 
  2826. message. After copying all the text, the application can restore the refresh 
  2827. state by sending the MLM_ENABLEREFRESH message. 
  2828.  
  2829.  
  2830. ΓòÉΓòÉΓòÉ 5.1.6. MLE Cut, Copy, and Paste Operations ΓòÉΓòÉΓòÉ
  2831.  
  2832. The user can cut, copy, and paste text in an MLE field by using the 
  2833. Shift+Delete, Ctrl+Insert, and Shift+Insert key combinations, respectively. An 
  2834. application-either by itself or in response to the user-can cut, copy, and 
  2835. paste text by using the MLM_CUT, MLM_COPY, and MLM_PASTE messages. The MLM_CUT 
  2836. and MLM_COPY messages copy the selected text to the clipboard. The MLM_CUT 
  2837. message also deletes the text from the MLE field; MLM_COPY does not. The 
  2838. MLM_PASTE message copies the text from the clipboard to the current position in 
  2839. the MLE field, replacing any existing text with the copied text. An application 
  2840. can delete the selected text without copying it to the clipboard by using the 
  2841. MLM_CLEAR message. 
  2842.  
  2843. An application also can copy the selected text from an MLE field to a buffer by 
  2844. using the MLM_QUERYSELTEXT message. This message does not affect the contents 
  2845. of the clipboard. 
  2846.  
  2847.  
  2848. ΓòÉΓòÉΓòÉ 5.1.7. MLE Search and Replace Operations ΓòÉΓòÉΓòÉ
  2849.  
  2850. An application can search for a specified string within MLE field text by using 
  2851. the MLM_SEARCH message, which searches for the string. The MLE field control 
  2852. returns TRUE if the string is found. The cursor does not move to the string 
  2853. unless the message specifies the MLFSEARCH_SELECTMATCH option. 
  2854.  
  2855. An application also can use the MLM_SEARCH message to replace one string with 
  2856. another. If the message specifies the MLFSEARCH_CHANGEALL option, the MLE field 
  2857. control replaces all occurrences of the search string with the replacement 
  2858. string. Both the search string and the replacement string must be specified in 
  2859. an MLE_SEARCHDATA data structure passed with the message. 
  2860.  
  2861.  
  2862. ΓòÉΓòÉΓòÉ 5.1.8. MLE Colors ΓòÉΓòÉΓòÉ
  2863.  
  2864. For version 3, or lower, of the OS/2 operating system, MLE supports indexed 
  2865. (solid) colors only; it does not support dithered (RGB) colors. 
  2866.  
  2867. For versions, higher than version 3, of the OS/2 operating system, MLE supports 
  2868. RGB colors. Indexed colors are changed to the closest RGB color representation. 
  2869.  
  2870.  
  2871. ΓòÉΓòÉΓòÉ 5.2. Using Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
  2872.  
  2873. This section explains how to create an MLE field control by using 
  2874. WinCreateWindow and by specifying the MLE statement in a dialog template in a 
  2875. resource-definition file. 
  2876.  
  2877.  
  2878. ΓòÉΓòÉΓòÉ 5.2.1. Creating an MLE ΓòÉΓòÉΓòÉ
  2879.  
  2880. The following sample code fragment shows how to create an MLE by using 
  2881. WinCreateWindow: 
  2882.  
  2883.  
  2884. Uses
  2885.   Os2Def,Os2Base,Os2PmApi;
  2886.  
  2887. Const MLE_WINDOW_ID = 2;
  2888.  
  2889. Var
  2890.   HwndParent : HWND; (* ╨ísken var tom!! *)
  2891.   HwndMLE    : HWND; (* ╨ísken var tom!! *)
  2892.  
  2893. Begin
  2894.   hwndMLE := WinCreateWindow(
  2895.                 hwndParent,    (* Parent window     *)
  2896.                 WC_MLE,        (* Window class      *)
  2897.                 'Test',        (* Initial text      *)
  2898.  
  2899.                 WS_VISIBLE Or  (* Window style      *)
  2900.                 MLS_BORDER,    (* Window style      *)
  2901.                 100, 100,      (* x and y positions *)
  2902.                 100, 100,      (* Width and height  *)
  2903.                 hwndParent,    (* Owner window      *)
  2904.                 HWND_TOP,      (* Top of z-order    *)
  2905.                 MLE_WINDOW_ID, (* IdentIfier        *)
  2906.                 nil,          (* Control data      *)
  2907.                 nil);         (* Presparam         *)
  2908. End.
  2909.  
  2910. It also is common to create an MLE field control by using an MLE statement in a 
  2911. dialog-window template in a resource file, as shown in the following code 
  2912. fragment: 
  2913.  
  2914. MLE  "",
  2915.      IDD_MLETEXT,
  2916.      110, 10, 50, 100,
  2917.      WS_VISIBLE &vbar.
  2918.      MLS_BORDER &vbar.
  2919.      MLS_WORDWRAP
  2920.  
  2921. The predefined class for an MLE control is WC_MLE. If you do not specify a 
  2922. style for the MLE control, the default styles used are MLS_BORDER, WS_GROUP, 
  2923. and WS_TABSTOP. 
  2924.  
  2925.  
  2926. ΓòÉΓòÉΓòÉ 5.2.2. Importing and Exporting MLE Text ΓòÉΓòÉΓòÉ
  2927.  
  2928. Importing and exporting MLE text takes place through a buffer. An import 
  2929. operation copies text from the buffer to the MLE field; an export operation 
  2930. copies text from the MLE to the buffer. Before an application can import or 
  2931. export MLE text, it must send an MLM_SETIMPORTEXPORT message to the MLE field 
  2932. control, specifying the address and size of the buffer. 
  2933.  
  2934. For version 3, or lower, of the OS/2 operating system the maximum size of 
  2935. import/export buffer is 64K. Once the data is into the buffer, the data is 
  2936. manipulated (verified for carriage returns, line feeds and so forth), and is 
  2937. finally placed in the MLE's memory. 
  2938.  
  2939.  
  2940. ΓòÉΓòÉΓòÉ 5.2.2.1. Importing MLE Text ΓòÉΓòÉΓòÉ
  2941.  
  2942. To import text, an application sends the MLM_IMPORT message to the MLE field 
  2943. control. This message requires two parameters: plOffset and cbCopy. The 
  2944. plOffset parameter is a pointer to a variable that specifies the position in 
  2945. the MLE field where the text from the buffer is to be placed. The position is 
  2946. an offset from the beginning of the MLE text, that is, the number of characters 
  2947. from the beginning of the MLE text. If plOffset points to a variable that 
  2948. equals -1, the MLE field control places the text starting at the current cursor 
  2949. position. On return, this variable contains the offset to the first character 
  2950. beyond the imported text. The cbCopy parameter of the MLM_IMPORT message points 
  2951. to a variable that specifies the number of bytes to import. 
  2952.  
  2953. The following criterias apply when importing MLE text: 
  2954.  
  2955.      If the text ends by a line feed (LF), the import logic generates a blank 
  2956.       line. 
  2957.  
  2958.      If the text ends by a carriage return (CR), MLE prevents a line break 
  2959.       (LB) but flags the condition. 
  2960.  
  2961.      If the plOffset field points to the current cursor position (-1) and the 
  2962.       import text contains a LF: 
  2963.  
  2964.         -  If the MLE text is imported before the text being edited, then the 
  2965.            cursor does not move and the text being edited is shifted down to 
  2966.            make room for the text being imported. 
  2967.  
  2968.         -  If the MLE text is imported after the text being edited, then the 
  2969.            cursor does not move and the text being imported is inserted 
  2970.            starting at the current cursor position. 
  2971.  
  2972.      If the plOffset field points to the current cursor position (-1) and the 
  2973.       import text does not contain a LF: 
  2974.  
  2975.         -  If the MLE text is imported before the text being edited, then the 
  2976.            cursor does not move and the text being edited is shifted to the 
  2977.            right to make room for the text being imported. 
  2978.  
  2979.         -  If the MLE text is imported after the text being edited, then the 
  2980.            cursor does not move and the text being imported is inserted 
  2981.            starting at the current cursor position. 
  2982.  
  2983.  
  2984. ΓòÉΓòÉΓòÉ 5.2.2.2. Exporting MLE Text ΓòÉΓòÉΓòÉ
  2985.  
  2986. Before using the MLM_EXPORT message the number of characters to export needs to 
  2987. be determined. The MLM_QUERYFORMATTEXTLENGTH message is used to determine the 
  2988. number of characters to be copied from the MLE to the buffer (including LF and 
  2989. CR) and to allocate the room in the buffer. MLM_EXPORT is then used to export 
  2990. the MLE text into the buffer. 
  2991.  
  2992. Note:  The MLM_QUERYTEXTLENGTH message does not consider the CR and LF 
  2993.        characters as the MLM_QUERYFORMATTEXTLENGTH message does. 
  2994.  
  2995.  The following code fragment reads text from a file to a buffer, then imports 
  2996.  the text to an MLE field: 
  2997.  
  2998.   Uses
  2999.     Os2Def,Os2Base,Os2PmApi;
  3000.  
  3001.   Var
  3002.     HwndMle       : HWND;  (* ╨ísken var tom!! *)
  3003.     SzMleBuf : Array[0..511] of CHAR;  (* ╨ísken var tom!! *)
  3004.     LOffset       : IPT;   (* ╨ísken var tom!! *)
  3005.     PszTextFile   : PSZ;   (* ╨ísken var tom!! *)
  3006.     Hf            : HFILE; (* ╨ísken var tom!! *)
  3007.     CbCopied      : ULONG; (* ╨ísken var tom!! *)
  3008.     UlAction      : ULONG; (* ╨ísken var tom!! *)
  3009.     CbBytesRead   : ULONG; (* ╨ísken var tom!! *)
  3010.  
  3011.   Begin
  3012.     LOffset := 0;
  3013.  
  3014.     (* Obtain a file name from the user *)
  3015.  
  3016.     (* Open the file *)
  3017.     DosOpen(pszTextFile,
  3018.             &hf,
  3019.             &ulAction,
  3020.             0,
  3021.             FILE_NORMAL,
  3022.             FILE_OPEN Or
  3023.             FILE_CREATE,
  3024.             OPEN_ACCESS_READONLY Or
  3025.             OPEN_SHARE_DENYNONE,
  3026.             nil);
  3027.  
  3028.     (* Zero-fill the buffer using memset, a C run-time function *)
  3029.     memset(szMleBuf, 0, sizeof(szMleBuf));
  3030.  
  3031.     (* Set the MLE import-export buffer *)
  3032.     WinSendMsg(hwndMle,
  3033.               MLM_SETIMPORTEXPORT,
  3034.               MPFROMP(szMleBuf),
  3035.               MPFROMSHORT( sizeof(szMleBuf)));
  3036.  
  3037.     (**********************************************************************)
  3038.     (*  Read the text from the file to the buffer,                        *)
  3039.     (*  then import it to the MLE.                                        *)
  3040.     (**********************************************************************)
  3041.  
  3042.     Repeat
  3043.       DosRead(hf,
  3044.               szMleBuf,
  3045.               sizeof(szMleBuf),
  3046.               &cbBytesRead);
  3047.  
  3048.       cbCopied := WinSendMsg(hwndMle,
  3049.                              MLM_IMPORT,
  3050.                              MPFROMP( &lOffset),
  3051.                              MPFROMP(&cbBytesRead));
  3052.     Until cbCopied=0;
  3053.  
  3054.     (* Close the file *)
  3055.     DosClose(hf);
  3056.   End.
  3057.  To export MLE text, an application sends the MLM_EXPORT message to the MLE 
  3058.  control. Like MLM_IMPORT, the MLM_EXPORT message takes the plOffset and cbCopy 
  3059.  parameters. The plOffset parameter is a pointer to a variable that specifies 
  3060.  the offset to the first character to export. A value of -1 specifies the 
  3061.  current cursor position. On return, the variable contains the offset to the 
  3062.  first character in the MLE field not copied to the buffer. The cbCopy 
  3063.  parameter is a pointer to a variable that specifies the number of bytes to 
  3064.  export. On return, this variable equals 0 if the number of characters actually 
  3065.  copied does not exceed the number specified to be copied. The following code 
  3066.  fragment shows how to export text from an MLE field, then store the text in a 
  3067.  file: 
  3068.  
  3069.   Uses
  3070.     Os2Def,Os2Base,Os2PmApi;
  3071.  
  3072.   Var
  3073.     HwndMle        : HWND;  (* ╨ísken var tom!! *)
  3074.     SzMleBuf : Array[0..511] of CHAR;  (* ╨ísken var tom!! *)
  3075.     LOffset        : IPT;   (* ╨ísken var tom!! *)
  3076.     PszTextFile    : PSZ;   (* ╨ísken var tom!! *)
  3077.     Hf             : HFILE; (* ╨ísken var tom!! *)
  3078.     CbCopied       : ULONG; (* ╨ísken var tom!! *)
  3079.     UlAction       : ULONG; (* ╨ísken var tom!! *)
  3080.     CbBytesWritten : ULONG; (* ╨ísken var tom!! *)
  3081.     CbCopy         : ULONG; (* ╨ísken var tom!! *)
  3082.  
  3083.   Begin
  3084.     LOffset := 0;
  3085.  
  3086.     (* Zero-fill the buffer using memset, a C run-time function *)
  3087.     FilChar(szMleBuf, sizeof(szMleBuf),0);
  3088.  
  3089.     (* Set the MLE import-export buffer *)
  3090.     WinSendMsg(hwndMle,
  3091.                MLM_SETIMPORTEXPORT,
  3092.                MPFROMP(szMleBuf),
  3093.                MPFROMSHORT (sizeof(szMleBuf)));
  3094.  
  3095.         .
  3096.         .
  3097.         .
  3098.  
  3099.         (* Obtain a filename from the user *)
  3100.         .
  3101.         .
  3102.         .
  3103.  
  3104.     (* Open the file *)
  3105.     DosOpen(pszTextFile,
  3106.             &hf,
  3107.             &ulAction,
  3108.             0,
  3109.             FILE_NORMAL,
  3110.             FILE_OPEN Or
  3111.             FILE_CREATE,
  3112.             OPEN_ACCESS_WRITEONLY Or
  3113.             OPEN_SHARE_DENYNONE,
  3114.             nil);
  3115.  
  3116.     (* Find out how much text is in the MLE *)
  3117.     cbCopy := WinSendMsg(hwndMle,
  3118.                          MLM_QUERYFORMATTEXTLENGTH,
  3119.                          MPFROMLONG(lOffset),
  3120.                          MPFROMLONG((-1)));
  3121.  
  3122.     (* Copy the MLE text to the buffer *)
  3123.     cbCopied := WinSendMsg(hwndMle,
  3124.                            MLM_EXPORT,
  3125.                            MPFROMP(&lOffset),
  3126.                            MPFROMP(&cbCopy));
  3127.  
  3128.     (* Write the contents of the buffer to the file *)
  3129.     DosWrite(hf,
  3130.              szMleBuf,
  3131.              sizeof(szMleBuf),
  3132.              &cbBytesWritten);
  3133.  
  3134.     (* Close the file *)
  3135.     DosClose(hf);
  3136.  
  3137.   End.
  3138.  
  3139.  
  3140. ΓòÉΓòÉΓòÉ 5.2.3. Searching MLE Text ΓòÉΓòÉΓòÉ
  3141.  
  3142. An application uses the MLM_SEARCH message and the MLE_SEARCHDATA data 
  3143. structure to search for strings in MLE text. The first parameter of the 
  3144. MLM_SEARCH message is an array of flags that specify the style of the search. 
  3145. The application can set the MLFSEARCH_CASESENSITIVE flag if a case-sensitive 
  3146. search is required. If the application sets the MLFSEARCH_SELECTMATCH flag, the 
  3147. MLE field control highlights a matching string and, if necessary, scrolls the 
  3148. string into view. An application can use the MLFSEARCH_CHANGEALL flag to 
  3149. replace every occurrence of the string with the string specified in the 
  3150. pchReplace member of the MLE_SEARCHDATA data structure. 
  3151.  
  3152. The second parameter of the MLM_SEARCH message is a pointer to an 
  3153. MLE_SEARCHDATA data structure that contains information required to perform the 
  3154. search operation. This data structure includes a pointer to the string and, if 
  3155. the MLFSEARCH_CHANGEALL flag is set in the MLM_SEARCH message, a pointer to the 
  3156. replacement string. The iptStart and iptStop members specify the starting and 
  3157. ending positions of the search. These positions are specified as offsets from 
  3158. the beginning of the MLE field. A value of -1 in the iptStart member causes the 
  3159. search to start at the current cursor position. A negative value in the iptStop 
  3160. member causes the search to end at the end of the MLE field. If a matching 
  3161. string is found, the MLE field control returns the length of the string in the 
  3162. cchFound member. 
  3163.  
  3164. The following code fragment uses an entry field to obtain a search string from 
  3165. the user, then searches an MLE field for an occurrence of the string. The 
  3166. search begins at the current cursor position and ends at the end of the MLE 
  3167. text. When the MLFSEARCH_SELECTMATCH flag is specified, the MLE field control 
  3168. highlights a matching string and scrolls it into view. 
  3169.  
  3170. The following code fragment shows how to search MLE text: 
  3171.  
  3172. Uses
  3173.   Os2Def,Os2Base,Os2PmApi;
  3174.  
  3175. Const IDD_SEARCHFIELD  = 101;
  3176.  
  3177. Var
  3178.   Hwnd         : HWND; (* ╨ísken var tom!! *)
  3179.   HwndEntryFld : HWND; (* ╨ísken var tom!! *)
  3180.   HwndMle      : HWND; (* ╨ísken var tom!! *)
  3181.   mlesrch      : MLE_SEARCHDATA;
  3182.   SzSearchString : Array[0..63] of CHAR; (* ╨ísken var tom!! *)
  3183.  
  3184. Begin
  3185.   (* Obtain the handle of the entry field containing the search string *)
  3186.   hwndEntryFld := WinWindowFromID(hwnd, IDD_SEARCHFIELD);
  3187.  
  3188.   (* Obtain the search string from the entry field *)
  3189.   WinQueryWindowText(hwndEntryFld,
  3190.                      sizeof(szSearchString),
  3191.                      szSearchString);
  3192.  
  3193.   (* Fill the MLE_SEARCHDATA data structure                          *)
  3194.   mlesrch.cb         := sizeof(mlesrch);  (* Structure size           *)
  3195.   mlesrch.pchFind    := szSearchString;   (* Search string            *)
  3196.   mlesrch.pchReplace := nil;             (* No replacement string    *)
  3197.   mlesrch.cchFind    := 0;                (* Not used                 *)
  3198.   mlesrch.cchReplace := 0;                (* Not used                 *)
  3199.   mlesrch.iptStart   := -1;               (* Start at cursor position *)
  3200.   mlesrch.iptStop    := -1;               (* Stop at end of file      *)
  3201.  
  3202.   (* Start the search operation *)
  3203.   WinSendMsg(hwndMle,
  3204.              MLM_SEARCH,
  3205.              MPFROMLONG(MLFSEARCH_SELECTMATCH),
  3206.              MPFROMP(&mlesrch));
  3207. End.
  3208.  
  3209.  
  3210. ΓòÉΓòÉΓòÉ 6. Mouse and Keyboard Input ΓòÉΓòÉΓòÉ
  3211.  
  3212. An OS/2 Presentation Manager application can accept input from both a mouse (or 
  3213. other pointing device) and the keyboard.  This chapter explains how these input 
  3214. events should be received and processed. 
  3215.  
  3216.  
  3217. ΓòÉΓòÉΓòÉ 6.1. About Mouse and Keyboard Input ΓòÉΓòÉΓòÉ
  3218.  
  3219. Only one window at a time can receive keyboard input, and only one window at a 
  3220. time can receive mouse input; but they do not have to be the same window.  All 
  3221. keyboard input goes to the window with the input focus, and, normally, all 
  3222. mouse input goes to the window under the mouse pointer. 
  3223.  
  3224.  
  3225. ΓòÉΓòÉΓòÉ 6.1.1. System Message Queue ΓòÉΓòÉΓòÉ
  3226.  
  3227. The operating system routes all keystrokes and mouse input to the system 
  3228. message queue, converting these input events into messages, and posts them, one 
  3229. at a time, to the proper application-defined message queues.  An application 
  3230. retrieves messages from its queue and dispatches them to the appropriate window 
  3231. procedures, which process the messages. 
  3232.  
  3233. Mouse and keyboard input events in the system message queue are strictly 
  3234. ordered so that a new event cannot be processed until all previous events are 
  3235. fully processed: the system cannot determine the destination window of an input 
  3236. event until then.  For example, if a user types a command in one window, clicks 
  3237. the mouse to activate another window, then types a command in the second 
  3238. window, the destination of the second command depends on how the application 
  3239. handles the mouse click.  The second command would go to the second window only 
  3240. if that window became active as a result of the mouse click. 
  3241.  
  3242. It is important for an application to process all messages quickly to avoid 
  3243. slowing user interaction with the system.  A message must be responded to 
  3244. immediately in the current thread, but the processing it initiates should be 
  3245. done asynchronously in another thread that has no windows in the desktop tree. 
  3246.  
  3247. The OS/2 operating system can display multiple windows belonging to several 
  3248. applications at the same time.  To manage input among these windows, the system 
  3249. uses the concepts of window activation and keyboard focus. 
  3250.  
  3251.  
  3252. ΓòÉΓòÉΓòÉ 6.1.2. Window Activation ΓòÉΓòÉΓòÉ
  3253.  
  3254. Although the operating system can display windows from many different 
  3255. applications simultaneously during a PM session, the user can interact with 
  3256. only one application at a time-the active application.  The other applications 
  3257. continue to run, but they cannot receive user input until they become active. 
  3258.  
  3259. To enable the user to easily identify the active application, the system 
  3260. activates all frames in the tree between HWND_DESKTOP and the window with input 
  3261. focus.  That is, the system positions the active frame window above all other 
  3262. top-level windows on the screen.  If the active window is a standard frame 
  3263. window, the window's title bar and sizing border are highlighted. 
  3264.  
  3265. The user can control which application is active by clicking on a window or by 
  3266. pressing the Alt+Tab or Alt+Esc key combinations.  An application can set the 
  3267. active frame window by calling WinSetActiveWindow; it also can obtain the 
  3268. handle of the active frame window by using WinQueryActiveWindow. 
  3269.  
  3270. When one window is deactivated and another activated, the system sends a 
  3271. WM_ACTIVATE message, first to the window being deactivated, then to the window 
  3272. being activated.  The fActive parameter of the WM_ACTIVATE message is set to 
  3273. FALSE for the window being deactivated and set to TRUE for the window being 
  3274. activated.  An application can use this message to track the activation state 
  3275. of a client window. 
  3276.  
  3277.  
  3278. ΓòÉΓòÉΓòÉ 6.1.3. Keyboard Focus ΓòÉΓòÉΓòÉ
  3279.  
  3280. The keyboard focus is a temporary attribute of a window; the window that has 
  3281. the keyboard focus receives all keyboard input until the focus changes to a 
  3282. different window.  The system converts keyboard input events into WM_CHAR 
  3283. messages and posts them to the message queue of the window that has the 
  3284. keyboard focus. 
  3285.  
  3286. An application can set the keyboard focus to a particular window by calling 
  3287. WinSetFocus.  If the application does not use WinSetFocus to explicitly set the 
  3288. keyboard-focus window, the system sets the focus to the active frame window. 
  3289.  
  3290. The following events occur when an application uses WinSetFocus to shift the 
  3291. keyboard focus from one window (the original window) to another (the new 
  3292. window): 
  3293.  
  3294.    1. The system sends the original window a WM_SETFOCUS message (with the 
  3295.       fFocus parameter set to FALSE), indicating that that window has lost the 
  3296.       keyboard focus. 
  3297.  
  3298.    2. The system then sends the original window a WM_SETSELECTION message, 
  3299.       indicating that the window should remove the highlight from the current 
  3300.       selection. 
  3301.  
  3302.    3. If the original (frame) window is being deactivated, the system sends it 
  3303.       a WM_ACTIVATE message (with the fActive parameter set to FALSE), 
  3304.       indicating that the window is no longer active. 
  3305.  
  3306.    4. The system then sends the new application a WM_ACTIVATE message (with 
  3307.       fActive set to TRUE), indicating that the new application is now active. 
  3308.  
  3309.    5. If the new (main) window is being activated, the system sends it a 
  3310.       WM_ACTIVATE message (with fActive set to TRUE), indicating that the main 
  3311.       window is now active. 
  3312.  
  3313.    6. The system sends the new window a WM_SETSELECTION message, indicating 
  3314.       that the window should highlight the current selection. 
  3315.  
  3316.    7. Finally, the system sends the new window a WM_SETFOCUS message (with 
  3317.       fFocus set to TRUE), indicating that the new window has the keyboard 
  3318.       focus. 
  3319.  
  3320.  If, while processing a WM_SETFOCUS message, an application calls 
  3321.  WinQueryActiveWindow, that function returns the handle of the 
  3322.  previously-active window until the application establishes a new active 
  3323.  window.  Similarly, if the application, while processing WM_SETFOCUS, calls 
  3324.  WinQueryFocus, that function returns the handle of the previous keyboard-focus 
  3325.  window until the application establishes a new keyboard-focus window.  In 
  3326.  other words, even though the system has sent WM_ACTIVATE and WM_SETFOCUS 
  3327.  messages (with the fActive and fFocus parameters set to FALSE) to the previous 
  3328.  windows, those windows are considered the active and focus windows until the 
  3329.  system establishes new active and focus windows. 
  3330.  
  3331.  If the application calls WinSetFocus while processing a WM_ACTIVATE message, 
  3332.  the system does not send a WM_SETFOCUS message (with fFocus set to FALSE), 
  3333.  because no window has the focus. 
  3334.  
  3335.  A client window receives a WM_ACTIVATE message when its parent frame window is 
  3336.  being activated or deactivated.  The activation or deactivation message 
  3337.  usually is followed by a WM_SETFOCUS message that specifies whether the client 
  3338.  window is gaining or losing the keyboard focus.  Therefore, if the client 
  3339.  window needs to change the keyboard focus, it should do so during the 
  3340.  WM_SETFOCUS message, not during the WM_ACTIVATE message. 
  3341.  
  3342.  
  3343. ΓòÉΓòÉΓòÉ 6.1.4. Keyboard Messages ΓòÉΓòÉΓòÉ
  3344.  
  3345. The system sends keyboard input events as WM_CHAR messages to the message queue 
  3346. of the keyboard-focus window.  If no window has the keyboard focus, the system 
  3347. posts WM_CHAR messages to the message queue of the active frame window. 
  3348. Following are two typical situations in which an application receives WM_CHAR 
  3349. messages: 
  3350.  
  3351.       An application has a client window or custom control window, either of 
  3352.       which can have the keyboard focus.  If the window procedure for the 
  3353.       client or control window does not process WM_CHAR messages, it should 
  3354.       pass them to WinDefWindowProc, which will pass them to the owner.  Dialog 
  3355.       control windows, in particular, should pass unprocessed WM_CHAR messages 
  3356.       to the WinDefDlgProc function, because this is how the user interface 
  3357.       implements control processing for the Tab and Arrow keys. 
  3358.  
  3359.       An application window owns a control window whose window procedure can 
  3360.       handle some, but not all, WM_CHAR messages.  This is common in dialog 
  3361.       windows.  If the window procedure of a control in a dialog window cannot 
  3362.       process a WM_CHAR message, the procedure can pass the message to the 
  3363.       WinDefDlgProc function.  This function sends the message to the control 
  3364.       window's owner, which usually is a dialog frame window.  The 
  3365.       application's dialog procedure then receives the WM_CHAR message.  This 
  3366.       also is the case when an application client window owns a control window. 
  3367.  
  3368.  A WM_CHAR message can represent a key-down or key-up transition.  It might 
  3369.  contain a character code, virtual-key code, or scan code.  This message also 
  3370.  contains information about the state of the Shift, Ctrl, and Alt keys. 
  3371.  
  3372.  Each time a user presses a key, at least two WM_CHAR messages are generated: 
  3373.  one when the key is pressed, and one when the key is released.  If the user 
  3374.  holds down the key long enough to trigger the keyboard repeat, multiple 
  3375.  WM_CHAR key-down messages are generated.  If the keyboard repeats faster than 
  3376.  the application can retrieve the input events from its message queue, the 
  3377.  system combines repeating character events into one WM_CHAR message and 
  3378.  increments a count byte that indicates the number of keystrokes represented by 
  3379.  the message.  Generally, this byte is set to 1, but an application should 
  3380.  check each WM_CHAR message to avoid missing any keystrokes. 
  3381.  
  3382.  An application can ignore the repeat count.  For example, an application might 
  3383.  ignore the repeat count on Arrow keys to prevent the cursor from skipping 
  3384.  characters when the system is slow. 
  3385.  
  3386.  
  3387. ΓòÉΓòÉΓòÉ 6.1.4.1. Message Flags ΓòÉΓòÉΓòÉ
  3388.  
  3389. Applications decode WM_CHAR messages by examining individual bits in the flag 
  3390. word contained in the first message parameter (mp1) that the system passes with 
  3391. every WM_CHAR message.  The type of flag word indicates the nature of the 
  3392. message.  The system can set the bits in the flag word in various combinations. 
  3393. For example, a WM_CHAR message can have the KC_CHAR, KC_SCANCODE, and KC_SHIFT 
  3394. attribute bits all set at the same time.  An application can use the following 
  3395. list of flag values to test the flag word and determine the nature of a WM_CHAR 
  3396. message: 
  3397.  
  3398. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3399. ΓöéFlag Name      ΓöéDescription                                  Γöé
  3400. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3401. ΓöéKC_ALT         ΓöéIndicates that the Alt key was down when the Γöé
  3402. Γöé               Γöémessage was generated.                       Γöé
  3403. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3404. ΓöéKC_CHAR        ΓöéIndicates that the message contains a valid  Γöé
  3405. Γöé               Γöécharacter code for a key, typically an ASCII Γöé
  3406. Γöé               Γöécharacter code.                              Γöé
  3407. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3408. ΓöéKC_COMPOSITE   ΓöéIn combination with the KC_CHAR flag, this   Γöé
  3409. Γöé               Γöéflag indicates that the character code is a  Γöé
  3410. Γöé               Γöécombination of the key that was pressed and  Γöé
  3411. Γöé               Γöéthe previous dead key.  This flag is used to Γöé
  3412. Γöé               Γöécreate characters with diacritical marks.    Γöé
  3413. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3414. ΓöéKC_CTRL        ΓöéIndicates that the Ctrl key was down when theΓöé
  3415. Γöé               Γöémessage was generated.                       Γöé
  3416. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3417. ΓöéKC_DEADKEY     ΓöéIn combination with the KC_CHAR flag, this   Γöé
  3418. Γöé               Γöéflag indicates that the character code       Γöé
  3419. Γöé               Γöérepresents a dead-key glyph (such as an      Γöé
  3420. Γöé               Γöéaccent).  An application displays the        Γöé
  3421. Γöé               Γöédead-key glyph and does not advance the      Γöé
  3422. Γöé               Γöécursor.  Typically, the next WM_CHAR message Γöé
  3423. Γöé               Γöéis a KC_COMPOSITE message, containing the    Γöé
  3424. Γöé               Γöéglyph associated with the dead key.          Γöé
  3425. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3426. ΓöéKC_INVALIDCHAR ΓöéIndicates that the character is not valid forΓöé
  3427. Γöé               Γöéthe current translation tables.              Γöé
  3428. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3429. ΓöéKC_INVALIDCOMP ΓöéIndicates that the character code is not     Γöé
  3430. Γöé               Γöévalid in combination with the previous dead  Γöé
  3431. Γöé               Γöékey.                                         Γöé
  3432. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3433. ΓöéKC_KEYUP       ΓöéIndicates that the message was generated whenΓöé
  3434. Γöé               Γöéthe user released the key. If this flag is   Γöé
  3435. Γöé               Γöéclear, the message was generated when the    Γöé
  3436. Γöé               Γöéuser pressed the key.  An application can useΓöé
  3437. Γöé               Γöéthis flag to determine key-down and key-up   Γöé
  3438. Γöé               Γöéevents.                                      Γöé
  3439. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3440. ΓöéKC_LONEKEY     ΓöéIn combination with the KC_KEYUP flag, this  Γöé
  3441. Γöé               Γöéflag indicates that the user pressed no otherΓöé
  3442. Γöé               Γöékey while this key was down.                 Γöé
  3443. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3444. ΓöéKC_PREVDOWN    ΓöéIn combination with the KC_VIRTUALKEY flag,  Γöé
  3445. Γöé               Γöéthis flag indicates that the virtual key was Γöé
  3446. Γöé               Γöépressed previously. If this flag is clear,   Γöé
  3447. Γöé               Γöéthe virtual key was not previously pressed.  Γöé
  3448. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3449. ΓöéKC_SCANCODE    ΓöéIndicates that the message contains a valid  Γöé
  3450. Γöé               Γöéscan code generated by the keyboard when the Γöé
  3451. Γöé               Γöéuser pressed the key. The system uses the    Γöé
  3452. Γöé               Γöéscan code to identify the character code in  Γöé
  3453. Γöé               Γöéthe current code page; therefore, most       Γöé
  3454. Γöé               Γöéapplications do not need the scan code unlessΓöé
  3455. Γöé               Γöéthey cannot identify the key that the user   Γöé
  3456. Γöé               Γöépressed. WM_CHAR messages generated by user  Γöé
  3457. Γöé               Γöékeyboard input generally have a valid scan   Γöé
  3458. Γöé               Γöécode, but WM_CHAR messages posted to the     Γöé
  3459. Γöé               Γöéqueue by other applications might not containΓöé
  3460. Γöé               Γöéa scan code.                                 Γöé
  3461. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3462. ΓöéKC_SHIFT       ΓöéIndicates that the Shift key was down when   Γöé
  3463. Γöé               Γöéthe message was generated.                   Γöé
  3464. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3465. ΓöéKC_TOGGLE      ΓöéToggles on and off every time the user       Γöé
  3466. Γöé               Γöépresses a specified key. This is important   Γöé
  3467. Γöé               Γöéfor keys like NumLock, which have an on or   Γöé
  3468. Γöé               Γöéoff state.                                   Γöé
  3469. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3470. ΓöéKC_VIRTUALKEY  ΓöéIndicates that the message contains a valid  Γöé
  3471. Γöé               Γöévirtual-key code for a key. Virtual keys     Γöé
  3472. Γöé               Γöétypically correspond to function keys.       Γöé
  3473. Γöé               ΓöéFor those using hooks, when this bit is set, Γöé
  3474. Γöé               ΓöéKC_SCANCODE should usually be set as well.   Γöé
  3475. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3476.  
  3477. The mp1 and mp2 parameters of the WM_CHAR message contain information 
  3478. describing the nature of a keyboard input event, as follows: 
  3479.  
  3480.      SHORT1FROMMP (mp1) contains the flag word. 
  3481.      CHAR3FROMMP (mp1) contains the key-repeat count. 
  3482.      CHAR4FROMMP (mp1) contains the scan code. 
  3483.      SHORT1FROMMP (mp2) contains the character code. 
  3484.      SHORT2FROMMP (mp2) contains the virtual key code. 
  3485.  
  3486.  An application window procedure should return TRUE if it processes a 
  3487.  particular WM_CHAR message or FALSE if it does not. Typically, applications 
  3488.  respond to key-down events and ignore key-up events. 
  3489.  
  3490.  The following sections describe the different types of WM_CHAR messages. 
  3491.  Generally, an application decodes these messages by creating layers of 
  3492.  conditional statements that discriminate among the different combinations of 
  3493.  flag and code attributes that can occur in a keyboard message. 
  3494.  
  3495.  
  3496. ΓòÉΓòÉΓòÉ 6.1.4.2. Key-Down or Key-Up Events ΓòÉΓòÉΓòÉ
  3497.  
  3498. Typically, the first attribute that an application checks in a WM_CHAR message 
  3499. is the key-down or key-up event.  If the KC_KEYUP bit of the flags word is set, 
  3500. the message is from a key-up event. If the flag is clear, the message is from a 
  3501. key-down event. 
  3502.  
  3503.  
  3504. ΓòÉΓòÉΓòÉ 6.1.4.3. Repeat-Count Events ΓòÉΓòÉΓòÉ
  3505.  
  3506. An application can check the key-repeat count of a WM_CHAR message to determine 
  3507. whether the message represents more than 1 keystroke.  The count is greater 
  3508. than 1 if the keyboard is sending characters to the system queue faster than 
  3509. the application can retrieve them.  If the system queue fills up, the system 
  3510. combines consecutive keyboard input events for each key into a single WM_CHAR 
  3511. message, with the key-repeat count set to the number of combined events. 
  3512.  
  3513.  
  3514. ΓòÉΓòÉΓòÉ 6.1.4.4. Character Codes ΓòÉΓòÉΓòÉ
  3515.  
  3516. The most typical use of WM_CHAR messages is to extract a character code from 
  3517. the message and display the character on the screen.  When the KC_CHAR flag is 
  3518. set in the WM_CHAR message, the low word of mp2 contains a character code based 
  3519. on the current code page.  Generally, this value is a character code 
  3520. (typically, an ASCII code) for the key that was pressed. 
  3521.  
  3522.  
  3523. ΓòÉΓòÉΓòÉ 6.1.4.5. Virtual-Key Codes ΓòÉΓòÉΓòÉ
  3524.  
  3525. WM_CHAR messages often contain virtual-key codes that correspond to various 
  3526. function keys and direction keys on a typical keyboard.  These keys do not 
  3527. correspond to any particular glyph code but are used to initiate operations. 
  3528. When the KC_VIRTUALKEY flag is set in the flag word of a WM_CHAR message, the 
  3529. high word of mp2 contains a virtual-key code for the key. 
  3530.  
  3531. Note:  Some keys, such as the Enter key, have both a valid character code and a 
  3532.        virtual-key code.  WM_CHAR messages for these keys will contain 
  3533.        character codes for both newline characters (ASCII 11) and virtual-key 
  3534.        codes (VK_ENTER). 
  3535.  
  3536.  
  3537. ΓòÉΓòÉΓòÉ 6.1.4.6. Scan Codes ΓòÉΓòÉΓòÉ
  3538.  
  3539. A third possible value in a WM_CHAR message is the scan code of the key that 
  3540. was pressed.  The scan code represents the value that the keyboard hardware 
  3541. generates when the user presses a key.  An application can use the scan code to 
  3542. identify the physical key pressed, as opposed to the character code represented 
  3543. by the same key. 
  3544.  
  3545.  
  3546. ΓòÉΓòÉΓòÉ 6.1.4.7. Accelerator-Table Entries ΓòÉΓòÉΓòÉ
  3547.  
  3548. The system checks all incoming keyboard messages to see whether they match any 
  3549. existing accelerator-table entries (in either the system message queue or the 
  3550. application message queue).  The system first checks the accelerator table 
  3551. associated with the active frame window; if it does not find a match, the 
  3552. system uses the accelerator table associated with the message queues.  If the 
  3553. keyboard input event corresponds to an accelerator-table entry, the system 
  3554. changes the WM_CHAR message to a WM_COMMAND, WM_SYSCOMMAND, or WM_HELP message, 
  3555. depending on the attributes of the accelerator table.  If the keyboard input 
  3556. event does not correspond to an accelerator-table entry, the system passes the 
  3557. WM_CHAR message to the keyboard-focus window. 
  3558.  
  3559. Applications should use accelerator tables to implement keyboard shortcuts 
  3560. rather than translate command keystrokes.  For example, if an application uses 
  3561. the F2 key to save a document, the application should create a keyboard 
  3562. accelerator entry for the F2 virtual key so that, when pressed, the F2 key 
  3563. generates a WM_COMMAND message rather than a WM_CHAR message. 
  3564.  
  3565.  
  3566. ΓòÉΓòÉΓòÉ 6.1.5. Mouse Messages ΓòÉΓòÉΓòÉ
  3567.  
  3568. Mouse messages occur when a user presses or releases one of the mouse buttons 
  3569. (a click) and when the mouse moves.  All mouse messages contain the x and y 
  3570. coordinates of the mouse-pointer hot spot (relative to the coordinates of the 
  3571. window receiving the message) at the time the event occurs.  The mouse-pointer 
  3572. hot spot is the location in the mouse-pointer bit map that the system tracks 
  3573. and recognizes as the position of the mouse pointer. 
  3574.  
  3575. If a window has the CS_HITTEST style, the system sends the window a WM_HITTEST 
  3576. message when the window is about to receive a mouse message.  Most applications 
  3577. pass WM_HITTEST messages on to WinDefWindowProc by default, so disabled windows 
  3578. do not receive mouse messages.  Windows that specifically respond to WM_HITTEST 
  3579. messages can change this default behavior.  If the window is enabled and should 
  3580. receive the mouse message, the WinDefWindowProc function (using the default 
  3581. processing for WM_HITTEST) returns the value HT_NORMAL.  If the window is 
  3582. disabled, WinDefWindowProc returns HT_ERROR, in which case the window does not 
  3583. receive the mouse message. 
  3584.  
  3585. The default window procedure processes the WM_HITTEST message and the usHit 
  3586. parameter in the WM_MOUSEMOVE message.  Therefore, unless an application needs 
  3587. to return special values for the WM_HITTEST message or the usHit parameter, it 
  3588. can ignore them.  One possible reason for processing the WM_HITTEST message is 
  3589. for the application to react differently to a mouse click in a disabled window. 
  3590.  
  3591. The contents of the mouse-message parameters (mp1 and mp2) are as follows: 
  3592.  
  3593.      SHORT1FROMMP (mp1) contains the x position. 
  3594.      SHORT2FROMMP (mp1) contains the y position. 
  3595.      SHORT1FROMMP (mp2) contains the hit-test parameter. 
  3596.  
  3597.  
  3598. ΓòÉΓòÉΓòÉ 6.1.6. Capturing Mouse Input ΓòÉΓòÉΓòÉ
  3599.  
  3600. The operating system generally posts mouse messages to the window that is under 
  3601. the mouse pointer at the time the system reads the mouse input events from the 
  3602. system message queue.  An application can change this by using the 
  3603. WinSetCapture function to route all mouse messages to a specific window or to 
  3604. the message queue associated with the current thread.  If mouse messages are 
  3605. routed to a specific window, that window receives all mouse input until either 
  3606. the window releases the mouse or the application specifies another capture 
  3607. window.  If mouse messages are routed to the current message queue, the system 
  3608. posts each mouse message to the queue with the hwnd member of the QMSG 
  3609. structure for each message set to NULL.  Because no window handle is specified, 
  3610. the WinDispatchMsg function in the application's main message loop cannot pass 
  3611. these messages to a window procedure for processing.  Therefore, the 
  3612. application must process these messages in the main loop. 
  3613.  
  3614. Capturing mouse input is useful if a window needs to receive all mouse input, 
  3615. even when the pointer moves outside the window.  For example, applications 
  3616. commonly track the mouse-pointer position after a mouse "button down" event, 
  3617. following the pointer until a "button up" event is received from the system. 
  3618. If an application does not call WinSetCapture for a window and the user 
  3619. releases the mouse button, the application does not receive the button-up 
  3620. message.  If the application sets a window to capture the mouse and tracks the 
  3621. mouse pointer, the application receives the button-up message even if the user 
  3622. moves the mouse pointer outside the window. 
  3623.  
  3624. Some applications are designed to require a button-up message to match a 
  3625. button-down message.  When processing a button-down message, these applications 
  3626. call WinSetCapture to set the capture to their own window; then, when 
  3627. processing a matching button-up message, they call WinSetCapture, with a NULL 
  3628. window handle, to release the mouse. 
  3629.  
  3630.  
  3631. ΓòÉΓòÉΓòÉ 6.1.6.1. Button Clicks ΓòÉΓòÉΓòÉ
  3632.  
  3633. An application window's response to a mouse click depends on whether the window 
  3634. is active.  The first click in an inactive window should activate the window. 
  3635. Subsequent clicks in the active window produce an application-specific action. 
  3636.  
  3637. A common problem for an application that processes WM_BUTTON1DOWN or similar 
  3638. messages is failing to activate the window or set the keyboard focus.  If the 
  3639. window processes WM_CHAR messages, the window procedure should call WinSetFocus 
  3640. to make sure the window receives the keyboard focus and is activated.  If the 
  3641. window does not process WM_CHAR messages, the application should call 
  3642. WinSetActiveWindow to activate the window. 
  3643.  
  3644.  
  3645. ΓòÉΓòÉΓòÉ 6.1.6.2. Mouse Movement ΓòÉΓòÉΓòÉ
  3646.  
  3647. The system sends WM_MOUSEMOVE messages to the window that is under the mouse 
  3648. pointer, or to the window that currently has captured the mouse, whenever the 
  3649. mouse pointer moves.  This is useful for tracking the mouse pointer and 
  3650. changing its shape, based on its location in a window.  For example, the mouse 
  3651. pointer changes shape when it passes over the size border of a standard frame 
  3652. window. 
  3653.  
  3654. All standard control windows use WM_MOUSEMOVE messages to set the mouse-pointer 
  3655. shape.  If an application handles WM_MOUSEMOVE messages in some situations but 
  3656. not others, unused messages should be passed to the WinDefWindowProc function 
  3657. to change the mouse-pointer shape. 
  3658.  
  3659.  
  3660. ΓòÉΓòÉΓòÉ 6.2. Using the Mouse and Keyboard ΓòÉΓòÉΓòÉ
  3661.  
  3662. This section explains how to perform the following tasks: 
  3663.  
  3664.      Determine the active status of a frame window 
  3665.      Check for a key-up or key-down event 
  3666.      Respond to a character message 
  3667.      Handle virtual-key codes 
  3668.      Handle a scan code 
  3669.  
  3670.  
  3671. ΓòÉΓòÉΓòÉ 6.2.1. Determining the Active Status of a Frame Window ΓòÉΓòÉΓòÉ
  3672.  
  3673. The activated state of a window is a frame-window characteristic.  The system 
  3674. does not provide an easy way to determine whether a client window is part of 
  3675. the active frame window.  That is, the window handle returned by the 
  3676. WinQueryActiveWindow function identifies the active frame window rather than 
  3677. the client window owned by the frame window. 
  3678.  
  3679. Following are two methods for determining the activated state of a frame window 
  3680. that owns a particular client window: 
  3681.  
  3682.      Call WinQueryActiveWindow and compare the window handle it returns with 
  3683.       the handle of the frame window that contains the client window, as shown 
  3684.       in the following code fragment: 
  3685.  
  3686.             Uses
  3687.               Os2Def,Os2Base,Os2PmApi;
  3688.  
  3689.             Var
  3690.               HwndClient : HWND; (* ╨ísken var tom!! *)
  3691.               FActivated : BOOL; (* ╨ísken var tom!! *)
  3692.  
  3693.             Begin
  3694.  
  3695.             @@@  fActivated := (WinQueryWindow(hwndClient, QW_PARENT) ==
  3696.                              WinQueryActiveWindow(HWND_DESKTOP));
  3697.  
  3698.      Each time the frame window is activated, the client window receives a 
  3699.       WM_ACTIVATE message with the low word of the mp2 equal to TRUE.  When the 
  3700.       frame window is deactivated, the client window receives a WM_ACTIVATE 
  3701.       message with a FALSE activation indicator. 
  3702.  
  3703.  
  3704. ΓòÉΓòÉΓòÉ 6.2.2. Checking for a Key-Up or Key-Down Event ΓòÉΓòÉΓòÉ
  3705.  
  3706. The following code fragment shows how to decode a WM_CHAR message to determine 
  3707. whether it indicates a key-up event or a key-down event: 
  3708.  
  3709. Uses
  3710.   Os2Def,Os2Base,Os2PmApi;
  3711.  
  3712. Var
  3713.   FsKeyFlags : USHORT; (* ╨ísken var tom!! *)
  3714.  
  3715.   WM_CHAR:
  3716.     FsKeyFlags := SHORT1FROMMP(mp1);
  3717.  
  3718.     If ((fsKeyFlags<>0) AND (KC_KEYUP<>0)) Then Begin
  3719.       .
  3720.       . (* Perform key-up processing.   *)
  3721.       .
  3722.  
  3723.     End
  3724.     Else Begin
  3725.       .
  3726.       . (* Perform key-down processing. *)
  3727.       .
  3728.     End;
  3729.  
  3730.     Halt;
  3731.  
  3732. End;
  3733.  
  3734.  
  3735. ΓòÉΓòÉΓòÉ 6.2.3. Responding to a Character Message ΓòÉΓòÉΓòÉ
  3736.  
  3737. The following code fragment shows how to respond to a character message: 
  3738.  
  3739. Uses
  3740.   Os2Def,Os2Base,Os2PmApi;
  3741.  
  3742. Var
  3743.   FsKeyFlags : USHORT; (* ╨ísken var tom!! *)
  3744.   UchChr1    : UCHAR;  (* ╨ísken var tom!! *)
  3745.  
  3746. Begin
  3747.  
  3748.   WM_CHAR:
  3749.     fsKeyFlags := SHORT1FROMMP(mp1);
  3750.  
  3751.     If ((fsKeyFlags<>0) AND (KC_CHAR<>0)) Then Begin
  3752.  
  3753.       (* Get the character code from mp2. *)
  3754.       uchChr1 := CHAR1FROMMP(mp2);
  3755.       .
  3756.       . (* Process the character.         *)
  3757.       .
  3758.  
  3759.       Halt(Ord(True));
  3760.     End;
  3761. End.
  3762.  
  3763. If the KC_CHAR flag is not set, the mp2 parameter from CHAR1FROMMP still might 
  3764. contain useful information.  If either the Alt key or the Ctrl key, or both, 
  3765. are down, the KC_CHAR bit is not set when the user presses another key.  For 
  3766. example, if the user presses the a key when the Alt key is down, the low word 
  3767. of mp2 contains the ASCII value for "a" (0x0061), the KC_ALT flag is set, and 
  3768. the KC_CHAR flag is clear.  If the translation does not generate any valid 
  3769. characters, the char field is set to 0. 
  3770.  
  3771.  
  3772. ΓòÉΓòÉΓòÉ 6.2.4. Handling Virtual-Key Codes ΓòÉΓòÉΓòÉ
  3773.  
  3774. The following code fragment shows how to decode a WM_CHAR message containing a 
  3775. valid virtual-key code: 
  3776.  
  3777. Uses
  3778.   Os2Def,Os2Base,Os2PmApi;
  3779.  
  3780. Var
  3781.   FsKeyFlags : USHORT; (* ╨ísken var tom!! *)
  3782.  
  3783. Begin
  3784.  
  3785.   case WM_CHAR:
  3786.   fsKeyFlags := SHORT1FROMMP(mp1);
  3787.  
  3788.   If ((fsKeyFlags) AND (KC_VIRTUALKEY)) Then Begin
  3789.  
  3790.     (* Get the virtual key from mp2.       *)
  3791.     Case (SHORT2FROMMP(mp2)) Of
  3792.       VK_TAB:
  3793.         .
  3794.         . (* Process the TAB key.         *)
  3795.         .
  3796.         Halt(Ord(True));
  3797.       VK_LEFT:
  3798.         .
  3799.         . (* Process the LEFT key.        *)
  3800.         .
  3801.         Halt(Ord(True));
  3802.       VK_UP:
  3803.         .
  3804.         . (* Process the UP key.          *)
  3805.         .
  3806.         Halt(Ord(True));
  3807.       VK_RIGHT:
  3808.         .
  3809.         . (* Process the RIGHT key.       *)
  3810.         .
  3811.         Halt(Ord(True));
  3812.       VK_DOWN:
  3813.         .
  3814.         . (* Process the DOWN key.        *)
  3815.         .
  3816.         Halt( Ord(True));
  3817.       .
  3818.       . (* Etc...                         *)
  3819.       .
  3820.     Else Halt(Ord(False));
  3821.     End;
  3822.   End;
  3823. End.
  3824.  
  3825.  
  3826. ΓòÉΓòÉΓòÉ 6.2.5. Handling a Scan Code ΓòÉΓòÉΓòÉ
  3827.  
  3828. All WM_CHAR messages generated by keyboard input events have valid scan codes. 
  3829. WM_CHAR messages posted by other applications might or might not have valid 
  3830. scan codes.  The following code fragment shows how to extract a scan code from 
  3831. a WM_CHAR message: 
  3832.  
  3833. Uses
  3834.   Os2Def,Os2Base,Os2PmApi;
  3835.  
  3836. Var
  3837.   FsKeyFlags  : USHORT; (* ╨ísken var tom!! *)
  3838.   UchScanCode : UCHAR;  (* ╨ísken var tom!! *)
  3839.  
  3840. Begin
  3841.  
  3842.   case WM_CHAR:
  3843.   fsKeyFlags := (USHORT) SHORT1FROMMP(mp1);
  3844.  
  3845.   If ((fsKeyFlags<>0) AND (KC_SCANCODE<>0)) Then Begin
  3846.  
  3847.     (* Get the scan code from mp1.   *)
  3848.     uchScanCode := CHAR4FROMMP(mp1);
  3849.     .
  3850.     . (* Process the scan code.      *)
  3851.     .
  3852.  
  3853.     Halt( Ord(True));
  3854.   End;
  3855.  
  3856. End.
  3857.  
  3858.  
  3859. ΓòÉΓòÉΓòÉ 7. Mouse Pointers and Icons ΓòÉΓòÉΓòÉ
  3860.  
  3861. A mouse pointer is a special bit map the operating system uses to show a user 
  3862. the current location of the mouse on the screen.  When the user moves the 
  3863. mouse, the mouse pointer moves on the screen. This chapter describes how to 
  3864. create and use mouse pointers and icons in PM applications. 
  3865.  
  3866.  
  3867. ΓòÉΓòÉΓòÉ 7.1. About Mouse Pointers and Icons ΓòÉΓòÉΓòÉ
  3868.  
  3869. Mouse pointers and icons are made up of bit maps that the operating system uses 
  3870. to paint images of the pointers or icons on the screen.  A monochrome bit map 
  3871. is a series of bytes.  Each bit corresponds to a single pel in the image.  (The 
  3872. bit map representing the display typically has four bits for each pel.) 
  3873.  
  3874. A mouse pointer or icon bit map always is twice as tall as it is wide.  The top 
  3875. half of the bit map is an AND mask, in which the bits are combined, using the 
  3876. AND operator, with the screen bits where the pointer is being drawn.  The lower 
  3877. half of the bit map is an XOR mask, in which the bits are combined, using the 
  3878. XOR operator, with the destination screen bits. 
  3879.  
  3880. The combination of the AND and XOR masks results in four possible colors in the 
  3881. bit map.  The pels of an icon or pointer can be black, white, transparent (the 
  3882. screen color beneath the pel), or inverted (inverting the screen color beneath 
  3883. the pel). The following figure shows the relationship of the bit values in the 
  3884. AND and XOR masks: 
  3885.  
  3886.     AND mask        0           0           1           1
  3887.     XOR mask        0           1           0           1
  3888.  
  3889.     Result        Black       White     Transparent   Inverted
  3890.  
  3891.  
  3892. ΓòÉΓòÉΓòÉ 7.1.1. Mouse-Pointer Hot Spot ΓòÉΓòÉΓòÉ
  3893.  
  3894. Each mouse pointer has its own hot spot, which is the point that represents the 
  3895. exact location of the mouse pointer. This location is defined as an x and y 
  3896. offset from the lower-left corner of the mouse-pointer bit map. For the 
  3897. arrow-shaped pointer, the hot spot is at the tip of the arrow. For the I-beam 
  3898. pointer, the hot spot is at the middle of the vertical line. 
  3899.  
  3900.  
  3901. ΓòÉΓòÉΓòÉ 7.1.2. Predefined Mouse Pointers ΓòÉΓòÉΓòÉ
  3902.  
  3903. Before an application can use a mouse pointer, it first must receive a handle 
  3904. to the pointer.  Most applications load mouse pointers from the system or from 
  3905. their own resource file.  The operating system maintains many predefined mouse 
  3906. pointers that an application can use by calling WinQuerySysPointer. System 
  3907. mouse pointers include all the standard mouse-pointer shapes and message-box 
  3908. icons.  The following predefined mouse pointers are available: 
  3909.  
  3910. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3911. ΓöéMouse Pointer       ΓöéDescription                             Γöé
  3912. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3913. ΓöéSPTR_APPICON        ΓöéSquare icon; used to represent a        Γöé
  3914. Γöé                    Γöéminimized application window.           Γöé
  3915. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3916. ΓöéSPTR_ARROW          ΓöéArrow that points to the upper-left     Γöé
  3917. Γöé                    Γöécorner of the screen.                   Γöé
  3918. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3919. ΓöéSPTR_ICONERROR      ΓöéIcon containing an exclamation point;   Γöé
  3920. Γöé                    Γöéused in a warning message box.          Γöé
  3921. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3922. ΓöéSPTR_ICONINFORMATIONΓöéOctagon-shaped icon containing the imageΓöé
  3923. Γöé                    Γöéof a human hand; used in a warning      Γöé
  3924. Γöé                    Γöémessage box.                            Γöé
  3925. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3926. ΓöéSPTR_ICONQUESTION   ΓöéIcon containing a question mark; used inΓöé
  3927. Γöé                    Γöéa query message box.                    Γöé
  3928. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3929. ΓöéSPTR_ICONWARNING    ΓöéIcon containing an asterisk; used in a  Γöé
  3930. Γöé                    Γöéwarning message box.                    Γöé
  3931. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3932. ΓöéSPTR_MOVE           ΓöéFour-headed arrow; used when dragging anΓöé
  3933. Γöé                    Γöéobject or window around the screen.     Γöé
  3934. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3935. ΓöéSPTR_SIZE           ΓöéSmall box within a box; used when       Γöé
  3936. Γöé                    Γöéresizing a window by dragging.          Γöé
  3937. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3938. ΓöéSPTR_SIZENS         ΓöéTwo-headed arrow that points up and downΓöé
  3939. Γöé                    Γöé(north and south); used when sizing a   Γöé
  3940. Γöé                    Γöéwindow.                                 Γöé
  3941. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3942. ΓöéSPTR_SIZENESW       ΓöéTwo-headed diagonal arrow that points toΓöé
  3943. Γöé                    Γöéthe upper-right (northeast) and         Γöé
  3944. Γöé                    Γöélower-left (southwest) window borders;  Γöé
  3945. Γöé                    Γöéused when sizing a window.              Γöé
  3946. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3947. ΓöéSPTR_SIZENWSE       ΓöéTwo-headed diagonal arrow that points toΓöé
  3948. Γöé                    Γöéthe upper-left (northwest) and          Γöé
  3949. Γöé                    Γöélower-right (southeast) window borders; Γöé
  3950. Γöé                    Γöéused when sizing a window.              Γöé
  3951. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3952. ΓöéSPTR_SIZEWE         ΓöéTwo-headed arrow that points left and   Γöé
  3953. Γöé                    Γöéright (west to east); used when sizing aΓöé
  3954. Γöé                    Γöéwindow.                                 Γöé
  3955. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3956. ΓöéSPTR_TEXT           ΓöéText-insertion and selection pointer,   Γöé
  3957. Γöé                    Γöéoften called the I-beam pointer.        Γöé
  3958. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3959. ΓöéSPTR_WAIT           ΓöéHourglass; used to indicate that a      Γöé
  3960. Γöé                    Γöétime-consuming operation is in progress.Γöé
  3961. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3962.  
  3963. The operating system contains a second set of predefined mouse pointers that 
  3964. are used as icons in PM applications.  An application can use one of these 
  3965. icons by supplying one of the following constants in WinQuerySysPointer. If a 
  3966. copy of the system pointer is made using WinQuerySysPointer, the pointer copy 
  3967. must be destroyed using WinDestroyPointer before termination of the 
  3968. application. 
  3969.  
  3970. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3971. ΓöéIcon           ΓöéDescription                                  Γöé
  3972. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3973. ΓöéSPTR_FILE      ΓöéRepresents a file (in the shape of a single  Γöé
  3974. Γöé               Γöésheet of paper).                             Γöé
  3975. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3976. ΓöéSPTR_FOLDER    ΓöéRepresents a file folder.                    Γöé
  3977. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3978. ΓöéSPTR_ILLEGAL   ΓöéCircular icon containing a slash; represents Γöé
  3979. Γöé               Γöéan illegal operation.                        Γöé
  3980. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3981. ΓöéSPTR_MULTFILE  ΓöéRepresents multiple files.                   Γöé
  3982. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3983. ΓöéSPTR_PROGRAM   ΓöéRepresents an executable file.               Γöé
  3984. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3985.  
  3986. Applications can use mouse-pointer resources to draw icons. WinDrawPointer 
  3987. draws a specified mouse pointer in a specified presentation space.  Many of the 
  3988. predefined system mouse pointers are standard icons displayed in message boxes. 
  3989.  
  3990. In addition to using the predefined pointer shapes, an application also can use 
  3991. pointers that have been defined in a resource file.  Once the pointer or icon 
  3992. has been created (by Icon Editor or a similar application), the application 
  3993. includes it in the resource file, using the POINTER statement, a resource 
  3994. identifier, and a file name for the Icon Editor data.  After including the 
  3995. mouse-pointer resource, the application can use the pointer or icon by calling 
  3996. WinLoadPointer, specifying the resource identifier and module handle. 
  3997. Typically, the resource is in the executable file of the application, so the 
  3998. application simply can specify NULL for the module handle to indicate the 
  3999. current application resource file. 
  4000.  
  4001. An application can create mouse pointers at run time by constructing a bit map 
  4002. for the pointer and calling WinCreatePointer.  This function, if successful, 
  4003. returns the new pointer handle, which the application then can use to set or 
  4004. draw the pointer.  The bit map must be twice as tall as it is wide, with the 
  4005. first half defining the AND mask and the second half defining the XOR mask. 
  4006. The application also must specify the hot spot when creating the mouse pointer. 
  4007.  
  4008.  
  4009. ΓòÉΓòÉΓòÉ 7.1.3. System Bit Maps ΓòÉΓòÉΓòÉ
  4010.  
  4011. In addition to using the mouse pointers and icons defined by the system, 
  4012. applications can use standard system bit maps by calling WinGetSysBitmap.  This 
  4013. function returns a bit map handle that is passed to WinDrawBitmap or to one of 
  4014. the GPI bit-map functions.  The system uses standard bit maps to draw portions 
  4015. of control windows, such as the system menu, minimize/maximize box, and 
  4016. scroll-bar arrows.  The following standard system bit maps are available: 
  4017.  
  4018. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4019. ΓöéBit Map                  ΓöéDescription                        Γöé
  4020. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4021. ΓöéSBMP_BTNCORNERS          ΓöéSpecifies the bit map for push     Γöé
  4022. Γöé                         Γöébutton corners.                    Γöé
  4023. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4024. ΓöéSBMP_CHECKBOXES          ΓöéSpecifies the bit map for the      Γöé
  4025. Γöé                         Γöécheck-box or radio-button check    Γöé
  4026. Γöé                         Γöémark.                              Γöé
  4027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4028. ΓöéSBMP_CHILDSYSMENU        ΓöéSpecifies the bit map for the      Γöé
  4029. Γöé                         Γöésmaller version of the system-menu Γöé
  4030. Γöé                         Γöébit map; used in child windows.    Γöé
  4031. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4032. ΓöéSBMP_CHILDSYSMENUDEP     ΓöéSame as SBMP_CHILDSYSMENU but      Γöé
  4033. Γöé                         Γöéindicates that the system menu is  Γöé
  4034. Γöé                         Γöéselected.                          Γöé
  4035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4036. ΓöéSBMP_COMBODOWN           ΓöéSpecifies the bit map for the      Γöé
  4037. Γöé                         Γöédownward pointing arrow in a       Γöé
  4038. Γöé                         Γöédrop-down combination box.         Γöé
  4039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4040. ΓöéSBMP_MAXBUTTON           ΓöéSpecifies the bit map for the      Γöé
  4041. Γöé                         Γöémaximize button.                   Γöé
  4042. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4043. ΓöéSBMP_MENUATTACHED        ΓöéSpecifies the bit map for the      Γöé
  4044. Γöé                         Γöésymbol used to indicate that a menuΓöé
  4045. Γöé                         Γöéitem has an attached, hierarchical Γöé
  4046. Γöé                         Γöémenu.                              Γöé
  4047. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4048. ΓöéSBMP_MENUCHECK           ΓöéSpecifies the bit map for the menu Γöé
  4049. Γöé                         Γöécheck mark.                        Γöé
  4050. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4051. ΓöéSBMP_MINBUTTON           ΓöéSpecifies the bit map for the      Γöé
  4052. Γöé                         Γöéminimize button.                   Γöé
  4053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4054. ΓöéSBMP_OLD_CHILDSYSMENU    ΓöéSame as SBM_CHILDSYSMENU.  (For    Γöé
  4055. Γöé                         Γöécompatibility with previous        Γöé
  4056. Γöé                         Γöéversions of the OS/2 operating     Γöé
  4057. Γöé                         Γöésystem.)                           Γöé
  4058. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4059. ΓöéSBMP_OLD_MAXBUTTON       ΓöéSame as SBM_MAXBUTTON.  (For       Γöé
  4060. Γöé                         Γöécompatibility with previous        Γöé
  4061. Γöé                         Γöéversions of the OS/2 operating     Γöé
  4062. Γöé                         Γöésystem.)                           Γöé
  4063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4064. ΓöéSBMP_OLD_MINBUTTON       ΓöéSame as SBM_MINBUTTON.  (For       Γöé
  4065. Γöé                         Γöécompatibility with previous        Γöé
  4066. Γöé                         Γöéversions of the OS/2 operating     Γöé
  4067. Γöé                         Γöésystem.)                           Γöé
  4068. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4069. ΓöéSBMP_OLD_RESTOREBUTTON   ΓöéSame as SBM_RESTOREBUTTON.  (For   Γöé
  4070. Γöé                         Γöécompatibility with previous        Γöé
  4071. Γöé                         Γöéversions of the OS/2 operating     Γöé
  4072. Γöé                         Γöésystem.)                           Γöé
  4073. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4074. ΓöéSBMP_OLD_SBDNARROW       ΓöéSame as SBM_SBDNARROW.  (For       Γöé
  4075. Γöé                         Γöécompatibility with previous        Γöé
  4076. Γöé                         Γöéversions of the OS/2 operating     Γöé
  4077. Γöé                         Γöésystem.)                           Γöé
  4078. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4079. ΓöéSBMP_OLD_SBLFARROW       ΓöéSame as SBM_SBLFARROW.  (For       Γöé
  4080. Γöé                         Γöécompatibility with previous        Γöé
  4081. Γöé                         Γöéversions of the OS/2 operating     Γöé
  4082. Γöé                         Γöésystem.)                           Γöé
  4083. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4084. ΓöéSBMP_OLD_SBRGARROW       ΓöéSame as SBM_SBRGARROW.  (For       Γöé
  4085. Γöé                         Γöécompatibility with previous        Γöé
  4086. Γöé                         Γöéversions of the OS/2 operating     Γöé
  4087. Γöé                         Γöésystem.)                           Γöé
  4088. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4089. ΓöéSBMP_OLD_SBUPARROW       ΓöéSame as SBM_SBUPARROW.  (For       Γöé
  4090. Γöé                         Γöécompatibility with previous        Γöé
  4091. Γöé                         Γöéversions of the OS/2 operating     Γöé
  4092. Γöé                         Γöésystem.)                           Γöé
  4093. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4094. ΓöéSBMP_PROGRAM             ΓöéSpecifies the bit map for the      Γöé
  4095. Γöé                         Γöésymbol that File Manager uses to   Γöé
  4096. Γöé                         Γöéindicate that a file is an         Γöé
  4097. Γöé                         Γöéexecutable program.                Γöé
  4098. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4099. ΓöéSBMP_RESTOREBUTTON       ΓöéSpecifies the bit map for the      Γöé
  4100. Γöé                         Γöérestore button.                    Γöé
  4101. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4102. ΓöéSBMP_RESTOREBUTTONDEP    ΓöéSame as SBMP_RESTOREBUTTON but     Γöé
  4103. Γöé                         Γöéindicates that the restore button  Γöé
  4104. Γöé                         Γöéis pressed.                        Γöé
  4105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4106. ΓöéSBMP_SBDNARROW           ΓöéSpecifies the bit map for the      Γöé
  4107. Γöé                         Γöéscroll-bar down arrow.             Γöé
  4108. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4109. ΓöéSBMP_SBDNARROWDEP        ΓöéSame as SBMP_SBDNARROW but         Γöé
  4110. Γöé                         Γöéindicates that the scroll-bar down Γöé
  4111. Γöé                         Γöéarrow is pressed.                  Γöé
  4112. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4113. ΓöéSBMP_SBDNARROWDIS        ΓöéSame as SBMP_SBDNARROW but         Γöé
  4114. Γöé                         Γöéindicates that the scroll-bar down Γöé
  4115. Γöé                         Γöéarrow is disabled.                 Γöé
  4116. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4117. ΓöéSBMP_SBLFARROW           ΓöéSpecifies the bit map for the      Γöé
  4118. Γöé                         Γöéscroll-bar left arrow.             Γöé
  4119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4120. ΓöéSBMP_SBLFARROWDEP        ΓöéSame as SBMP_SBLFARROW but         Γöé
  4121. Γöé                         Γöéindicates that the scroll-bar left Γöé
  4122. Γöé                         Γöéarrow is pressed.                  Γöé
  4123. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4124. ΓöéSBMP_SBMFARROWDIS        ΓöéSame as SBMP_SBLFARROW but         Γöé
  4125. Γöé                         Γöéindicates that the scroll-bar left Γöé
  4126. Γöé                         Γöéarrow is disabled.                 Γöé
  4127. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4128. ΓöéSBMP_SBRGARROW           ΓöéSpecifies the bit map for the      Γöé
  4129. Γöé                         Γöéscroll-bar right arrow.            Γöé
  4130. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4131. ΓöéSBMP_SBRGARROWDEP        ΓöéSame as SBMP_SBRGARROW but         Γöé
  4132. Γöé                         Γöéindicates that the scroll-bar rightΓöé
  4133. Γöé                         Γöéarrow is pressed.                  Γöé
  4134. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4135. ΓöéSBMP_SBRGARROWDIS        ΓöéSame as SBMP_SBRGARROW but         Γöé
  4136. Γöé                         Γöéindicates that the scroll-bar rightΓöé
  4137. Γöé                         Γöéarrow is disabled.                 Γöé
  4138. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4139. ΓöéSBMP_SBUPARROW           ΓöéSpecifies the bit map for the      Γöé
  4140. Γöé                         Γöéscroll-bar up arrow.               Γöé
  4141. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4142. ΓöéSBMP_SBUPARROWDEP        ΓöéSame as SBMP_SBUPARROW but         Γöé
  4143. Γöé                         Γöéindicates that the scroll-bar up   Γöé
  4144. Γöé                         Γöéarrow is pressed.                  Γöé
  4145. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4146. ΓöéSBMP_SBUPARROWDIS        ΓöéSame as SBMP_SBUPARROW but         Γöé
  4147. Γöé                         Γöéindicates that the scroll-bar up   Γöé
  4148. Γöé                         Γöéarrow is disabled.                 Γöé
  4149. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4150. ΓöéSBMP_SIZEBOX             ΓöéSpecifies the bit map for the      Γöé
  4151. Γöé                         Γöésymbol that indicates an area of a Γöé
  4152. Γöé                         Γöéwindow in which the user can click Γöé
  4153. Γöé                         Γöéto resize the window.              Γöé
  4154. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4155. ΓöéSBMP_SYSMENU             ΓöéSpecifies the bit map for the      Γöé
  4156. Γöé                         Γöésystem menu.                       Γöé
  4157. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4158. ΓöéSBMP_TREEMINUS           ΓöéSpecifies the bit map for the      Γöé
  4159. Γöé                         Γöésymbol that File Manager uses to   Γöé
  4160. Γöé                         Γöéindicate an empty entry in the     Γöé
  4161. Γöé                         Γöédirectory tree.                    Γöé
  4162. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4163. ΓöéSBMP_TREEPLUS            ΓöéSpecifies the bit map for the      Γöé
  4164. Γöé                         Γöésymbol that File Manager uses to   Γöé
  4165. Γöé                         Γöéindicate that an entry in the      Γöé
  4166. Γöé                         Γöédirectory tree contains more files.Γöé
  4167. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4168.  
  4169.  
  4170. ΓòÉΓòÉΓòÉ 7.2. Using Mouse Pointers and Icons ΓòÉΓòÉΓòÉ
  4171.  
  4172. This section explains how to perform the following tasks: 
  4173.  
  4174.      Save the current mouse pointer 
  4175.      Change the mouse pointer 
  4176.      Restore the original mouse pointer 
  4177.  
  4178.  
  4179. ΓòÉΓòÉΓòÉ 7.2.1. Changing the Mouse Pointer ΓòÉΓòÉΓòÉ
  4180.  
  4181. Once you create or load a mouse pointer, you can change its shape by calling 
  4182. WinSetPointer.  Following are three typical situations in which an application 
  4183. changes the shape of the mouse pointer: 
  4184.  
  4185.      When an application receives a WM_MOUSEMOVE message, there is an 
  4186.       opportunity to change the mouse pointer based on its location in the 
  4187.       window.  If you want the standard arrow pointer, pass this message on to 
  4188.       WinDefWindowProc. If you want to change the mouse pointer on a standard 
  4189.       dialog window, you need to capture the WM_CONTROLPOINTER message and 
  4190.       return a pointing-device pointer handle. 
  4191.  
  4192.      When an application is about to start a time-consuming process during 
  4193.       which it will not accept user input, the application displays the 
  4194.       system-wait mouse pointer (SPTR_WAIT).  Upon finishing the process, the 
  4195.       application resets the mouse pointer to its former shape. 
  4196.  
  4197.       The following code fragment shows how to save the current mouse pointer, 
  4198.       set the hourglass pointer, and restore the original mouse pointer. 
  4199.       Notice that the hourglass pointer also is saved in a global variable so 
  4200.       that the application can return it when responding to a WM_MOUSEMOVE 
  4201.       message during a time-consuming process. 
  4202.  
  4203.             Uses
  4204.               Os2Def,Os2Base,Os2PmApi;
  4205.  
  4206.             Var
  4207.               hptrOld, hptrWait, hptrCurrent : HPOINTER; (* ╨ísken var tom!! *)
  4208.  
  4209.             Begin
  4210.  
  4211.               (* Get the current pointer.                   *)
  4212.               hptrOld := WinQueryPointer(HWND_DESKTOP);
  4213.  
  4214.               (* Get the wait mouse pointer.                *)
  4215.               hptrWait := WinQuerySysPointer(HWND_DESKTOP,
  4216.                                              SPTR_WAIT, Ord(False));
  4217.  
  4218.               (* Save the wait pointer to use in WM_MOUSEMOVE processing.*)
  4219.               hptrCurrent := hptrWait;
  4220.  
  4221.               (* Set the mouse pointer to the wait pointer. *)
  4222.               WinSetPointer(HWND_DESKTOP, hptrWait);
  4223.  
  4224.               (*
  4225.                * Do a time-consuming operation, then restore the
  4226.                * original mouse pointer.
  4227.                *)
  4228.               WinSetPointer(HWND_DESKTOP, hptrOld);
  4229.             End.
  4230.  
  4231.      When an application needs to indicate its current operational mode, it 
  4232.       changes the pointer shape.  For example, a paint program with a palette 
  4233.       of drawing tools should change the pointer shape to indicate which 
  4234.       drawing tool is in use currently. 
  4235.  
  4236.  
  4237. ΓòÉΓòÉΓòÉ 8. Notebook Controls ΓòÉΓòÉΓòÉ
  4238.  
  4239. A notebook control (WC_NOTEBOOK window class) is a visual component that 
  4240. organizes information on individual pages so that a user can find and display 
  4241. that information quickly and easily. This chapter explains how to use notebook 
  4242. controls in PM applications. 
  4243.  
  4244.  
  4245. ΓòÉΓòÉΓòÉ 8.1. About Notebook Controls ΓòÉΓòÉΓòÉ
  4246.  
  4247. This notebook control component simulates a real notebook but improves on it by 
  4248. overcoming a notebook's natural limitations. A user can select and display 
  4249. pages by using a pointing device or the keyboard. The notebook can be 
  4250. customized to meet varying application requirements, while providing a user 
  4251. interface component that can be used easily to develop products that conform to 
  4252. the Common User Access (CUA) user interface guidelines. The application can 
  4253. specify different colors, sizes, and orientations for its notebooks, but the 
  4254. underlying function of the control remains the same. For a complete description 
  4255. of CUA notebooks, refer to the SAA CUA Guide to User Interface Design and the 
  4256. SAA CUA Advanced Interface Design Reference. 
  4257.  
  4258.  
  4259. ΓòÉΓòÉΓòÉ 8.1.1. Notebook Styles ΓòÉΓòÉΓòÉ
  4260.  
  4261. This section describes the different notebook style components: 
  4262.  
  4263. o Page buttons
  4264. o Status line
  4265. o Binding
  4266. o Intersection of back pages
  4267. o Major and minor tabs
  4268. o Tab shapes.
  4269.  
  4270.  
  4271. ΓòÉΓòÉΓòÉ 8.1.1.1. Page Buttons ΓòÉΓòÉΓòÉ
  4272.  
  4273. In the bottom-right corner of the notebook are the page buttons. These buttons 
  4274. let you bring one page of the notebook into view at a time. They are a standard 
  4275. component that is automatically provided with every notebook. However, the 
  4276. application can change the default width and height of the page buttons by 
  4277. using the BKM_SETDIMENSIONS message. The page buttons always are located in the 
  4278. corner where the recessed edges of the notebook intersect. 
  4279.  
  4280. Selecting the forward page button (the arrow pointing to the right) causes the 
  4281. next page to be displayed and selecting the backward page button (the arrow 
  4282. pointing to the left) causes the previous page to be displayed. Prior to 
  4283. inserting pages in the notebook, the page buttons are displayed with 
  4284. unavailable-state emphasis;  therefore, selecting either page button would not 
  4285. bring a page into view. 
  4286.  
  4287.  
  4288. ΓòÉΓòÉΓòÉ 8.1.1.2. Status Line ΓòÉΓòÉΓòÉ
  4289.  
  4290. To the left of the page buttons in the default notebook style setting is the 
  4291. status line, which enables the application to provide information to the user 
  4292. about the page currently displayed. The notebook does not supply any default 
  4293. text for the status line. The application is responsible for associating a text 
  4294. string with the status line of each page on which a text string is to be 
  4295. displayed. 
  4296.  
  4297. The status text is drawn left-justified by default, but it can be drawn 
  4298. centered or right-justified. The same status text justification applies to all 
  4299. pages in the notebook. This setting is specified by the BKS_STATUSTEXTLEFT 
  4300. style bit. The location of the back pages intersection and the major tabs has 
  4301. no effect on the specification of the status line position. This style bit can 
  4302. be set for the entire notebook. 
  4303.  
  4304.  
  4305. ΓòÉΓòÉΓòÉ 8.1.1.3. Binding ΓòÉΓòÉΓòÉ
  4306.  
  4307. The notebook control resembles a real notebook in its general appearance. The 
  4308. default binding is solid and is placed on the left side. This binding is used 
  4309. if the BKS_SOLIDBIND style bit is specified or if no style bit is specified. 
  4310.  
  4311. Two styles are provided for the notebook binding: solid and spiral. The 
  4312. notebook is displayed with a solid binding by default, but the application can 
  4313. specify BKS_SPIRALBIND to display a spiral binding. 
  4314.  
  4315. The placement of the binding depends entirely on the placement of the back 
  4316. pages and major tabs, respectively. The binding always is located on the 
  4317. opposite side of the notebook from the major tabs. 
  4318.  
  4319.  
  4320. ΓòÉΓòÉΓòÉ 8.1.1.4. Intersection of Back Pages ΓòÉΓòÉΓòÉ
  4321.  
  4322. The recessed edges that intersect near the page buttons are called the back 
  4323. pages. The default notebook's back pages intersect in the bottom-right corner, 
  4324. which means the recessed pages are on the bottom and right edges. This setting 
  4325. is specified by the BKS_BACKPAGESBR style bit. The back pages are important 
  4326. because their intersection determines where the major tabs can be placed, which 
  4327. in turn determines the placement of the binding and the minor tabs. 
  4328.  
  4329.  
  4330. ΓòÉΓòÉΓòÉ 8.1.1.5. Major Tabs ΓòÉΓòÉΓòÉ
  4331.  
  4332. Major and minor tabs are used to organize related pages into sections. Minor 
  4333. tabs define subsections within major tab sections. The content of each section 
  4334. has a common theme, which is represented to the user by a tabbed divider that 
  4335. is similar to a tabbed page in a notebook. 
  4336.  
  4337. The BKS_MAJORTABRIGHT style bit specifies that major tabs, if used, are to be 
  4338. placed on the right side of the notebook. This is the default major tab 
  4339. placement when the back pages intersect at the bottom-right corner of the 
  4340. notebook. The binding is located on the left, because it is always located on 
  4341. the opposite side of the notebook from the major tabs. 
  4342.  
  4343. The placement of the major tabs is limited to one of the two edges on which 
  4344. there are recessed pages. For example, if the application specifies the back 
  4345. pages intersection at the bottom-right corner (BKS_BACKPAGESBR, the default), 
  4346. the major tabs can be placed on either the bottom edge (BKS_MAJORTABBOTTOM) or 
  4347. the right edge (BKS_MAJORTABRIGHT) of the notebook. In this situation, if the 
  4348. application specifies that major tabs are to be placed on the left or top edges 
  4349. of the notebook, the notebook control places them on the right edge anyway-the 
  4350. default placement for back pages intersecting at the bottom-right corner. 
  4351.  
  4352. When major tabs are defined at the creation of the notebook they are not 
  4353. displayed on screen. Major tab attributes only show at the time a page is 
  4354. inserted into the notebook. This is done by specifying the BKA_MAJOR attribute 
  4355. in the BKM_INSERTPAGE message. 
  4356.  
  4357.  
  4358. ΓòÉΓòÉΓòÉ 8.1.1.6. Minor Tabs ΓòÉΓòÉΓòÉ
  4359.  
  4360. Minor tabs are specified using the BKA_MINOR attribute. Minor tabs always are 
  4361. placed perpendicular to the major tabs, based on the intersection of the back 
  4362. pages and the major tab placement. Only one major or minor tab attribute can be 
  4363. specified for each notebook page. Minor tabs are displayed only if the 
  4364. associated major tab page is selected or if the notebook has no major tab 
  4365. pages. 
  4366.  
  4367. The placement of the minor tabs depends entirely on the placement of the back 
  4368. pages and major tabs, respectively. The minor tabs always are located on the 
  4369. recessed page side that has no major tabs. 
  4370.  
  4371. The following table describes the available notebook control styles: 
  4372.  
  4373. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4374. ΓöéBack Pages            ΓöéMajor Tabs       ΓöéMinor Tabs   ΓöéBinding Γöé
  4375. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4376. ΓöéBottom-right (default)ΓöéBottom           ΓöéRight        ΓöéTop     Γöé
  4377. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4378. ΓöéBottom-right (default)ΓöéRight (default)  ΓöéBottom       ΓöéLeft    Γöé
  4379. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4380. ΓöéBottom-left           ΓöéBottom (default) ΓöéLeft         ΓöéTop     Γöé
  4381. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4382. ΓöéBottom-left           ΓöéLeft             ΓöéBottom       ΓöéRight   Γöé
  4383. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4384. ΓöéTop-right             ΓöéTop (default)    ΓöéRight        ΓöéBottom  Γöé
  4385. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4386. ΓöéTop-right             ΓöéRight            ΓöéTop          ΓöéLeft    Γöé
  4387. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4388. ΓöéTop-left              ΓöéTop              ΓöéLeft         ΓöéBottom  Γöé
  4389. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4390. ΓöéTop-left              ΓöéLeft (default)   ΓöéTop          ΓöéRight   Γöé
  4391. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4392.  
  4393.  
  4394. ΓòÉΓòÉΓòÉ 8.1.1.7. Tab Shapes and Contents ΓòÉΓòÉΓòÉ
  4395.  
  4396. The default shape of the tabs used on notebook divider pages is square. This 
  4397. setting is specified by the BKS_SQUARETABS style bit. The shape of the tabs can 
  4398. be square, rounded, or polygonal. The tab text can be drawn left-justified, 
  4399. right-justified, or centered. Once set, these styles apply to the major and 
  4400. minor tabs for all pages in the notebook. The location of the back pages 
  4401. intersection and the major tabs has no effect on the specification of the 
  4402. tab-shape position. As with the page buttons, the application can change the 
  4403. default width and height of the major and minor tabs by using the 
  4404. BKM_SETDIMENSIONS message. 
  4405.  
  4406. A notebook tab can contain either text or a bit map. Text is associated with a 
  4407. tab page by using the BKM_SETTABTEXT message. Notebook tab text is centered by 
  4408. default or by specifying the BKS_TABTEXTCENTER style when creating the notebook 
  4409. window. A bit map is placed on a tab by using the BKM_SETTABBITMAP message. A 
  4410. bit map cannot be positioned on a tab because the bit map stretches to fill the 
  4411. rectangular area of the tab; therefore, no style bit is used. 
  4412.  
  4413.  
  4414. ΓòÉΓòÉΓòÉ 8.1.1.8. Summary of Notebook Styles ΓòÉΓòÉΓòÉ
  4415.  
  4416. The notebook control provides style bits so that your application can specify 
  4417. or change the default style settings. One style bit from each of the following 
  4418. groups can be specified. If you specify more than one style bit, you must use 
  4419. an OR operator (Or) to combine them. 
  4420.  
  4421.      Type of binding 
  4422.  
  4423.       BKS_SOLIDBIND                      Solid (default) 
  4424.       BKS_SPIRALBIND                     Spiral 
  4425.  
  4426.      Intersection of back pages 
  4427.  
  4428.       BKS_BACKPAGESBR                    Bottom-right corner (default) 
  4429.       BKS_BACKPAGESBL                    Bottom-left corner 
  4430.       BKS_BACKPAGESTR                    Top-right corner 
  4431.       BKS_BACKPAGESTL                    Top-left corner 
  4432.  
  4433.      Location of major tabs 
  4434.  
  4435.       BKS_MAJORTABRIGHT                  Right edge (default) 
  4436.       BKS_MAJORTABLEFT                   Left edge 
  4437.       BKS_MAJORTABTOP                    Top edge 
  4438.       BKS_MAJORTABBOTTOM                 Bottom edge 
  4439.  
  4440.      Shape of tabs 
  4441.  
  4442.       BKS_SQUARETABS                     Square (default) 
  4443.       BKS_ROUNDEDTABS                    Rounded 
  4444.       BKS_POLYGONTABS                    Polygonal 
  4445.  
  4446.      Alignment of text associated with tabs 
  4447.  
  4448.       BKS_TABTEXTCENTER                  Centered (default) 
  4449.       BKS_TABTEXTLEFT                    Left-justified 
  4450.       BKS_TABTEXTRIGHT                   Right-justified 
  4451.  
  4452.      Alignment of status-line text 
  4453.  
  4454.       BKS_STATUSTEXTLEFT                 Left-justified (default) 
  4455.       BKS_STATUSTEXTRIGHT                Right-justified 
  4456.       BKS_STATUSTEXTCENTER               Centered 
  4457.  
  4458.  
  4459. ΓòÉΓòÉΓòÉ 8.2. Using Notebook Controls ΓòÉΓòÉΓòÉ
  4460.  
  4461. The following sections describe how to create pages, insert pages into, create 
  4462. and associate windows for, and delete pages from a notebook. 
  4463.  
  4464.  
  4465. ΓòÉΓòÉΓòÉ 8.2.1. Notebook Creation ΓòÉΓòÉΓòÉ
  4466.  
  4467. You create a notebook by using the WC_NOTEBOOK window class name in the 
  4468. ClassName parameter of WinCreateWindow. The following sample code shows the 
  4469. creation of the notebook. The style set in the ulNotebookStyles variable (the 
  4470. BKS_* values) specifies that the notebook is to be created with a solid binding 
  4471. and the back pages intersecting at the bottom-right corner, major tabs placed 
  4472. on the right edge, shape tab square, tab text centered, and status-line text 
  4473. left-justified These are the default settings and are given here only to show 
  4474. how notebook styles are set. 
  4475.  
  4476. Uses
  4477.   Os2Def,Os2Base,Os2PmApi;
  4478.  
  4479. Var
  4480.   HwndNotebook     : HWND;  (* Notebook window handle            *)
  4481.   UlNotebookStyles : ULONG; (* Notebook window styles            *)
  4482.   x, y, cx, cy     : ULONG; (* Coordinates                       *)
  4483.  
  4484. Begin
  4485.  
  4486.   (**********************************************************************)
  4487.   (* Set the BKS_style flags to customize the notebook.                 *)
  4488.   (**********************************************************************)
  4489.   ulNotebookStyles :=
  4490.     BKS_SOLIDBIND     Or          (* Use solid binding                   *)
  4491.     BKS_BACKPAGESBR   Or          (* Set back pages to intersect at the  *)
  4492.                                   (* bottom-right corner                 *)
  4493.     BKS_MAJORTABRIGHT Or          (* Position major tabs on right side   *)
  4494.     BKS_SQUARETABS    Or          (* Make tabs square                    *)
  4495.     BKS_TABTEXTCENTER Or          (* Center tab text                     *)
  4496.     BKS_STATUSTEXTLEFT;          (* Left-justIfied status-line text     *)
  4497.  
  4498.   (**********************************************************************)
  4499.   (* Create the notebook control window.                                *)
  4500.   (**********************************************************************)
  4501.   hwndNotebook :=
  4502.     WinCreateWindow(
  4503.       hwndParent,               (* Parent window handle                *)
  4504.       WC_NOTEBOOK,              (* Notebook window class               *)
  4505.       nil,                      (* No window text                      *)
  4506.       ulNotebookStyles,         (* Notebook window styles              *)
  4507.       x, y, cx, cy,             (* Origin and size                     *)
  4508.       hwndOwner,                (* Owner window handle                 *)
  4509.       HWND_TOP,                 (* Sibling window handle               *)
  4510.       ID_BOOK,                  (* Notebook window ID                  *)
  4511.       nil,                      (* No control data                     *)
  4512.       nil);                     (* No presentation parameters          *)
  4513.  
  4514.   (**********************************************************************)
  4515.   (* Make the notebook control visible.                                 *)
  4516.   (**********************************************************************)
  4517.   WinShowWindow(
  4518.     hwndNotebook,               (* Notebook window handle              *)
  4519.     Ord(True));                 (* Make the window visible             *)
  4520.  
  4521. End.
  4522.  
  4523.  
  4524. ΓòÉΓòÉΓòÉ 8.2.2. Changing Notebook Styles ΓòÉΓòÉΓòÉ
  4525.  
  4526. The following figure shows some sample code fragments for setting the notebook 
  4527. style to spiral binding, back pages intersecting at the bottom-left corner, 
  4528. major tabs placed on the bottom edge, tab shape rounded, tab text 
  4529. left-justified, and status-line text centered. 
  4530.  
  4531. (**********************************************************************)
  4532. (* Query for the existing notebook window style settings.             *)
  4533. (**********************************************************************)
  4534. ulNotebookStyles :=
  4535.   WinQueryWindowULong(hwndNotebook,    (* Notebook window handle      *)
  4536.                       QWL_STYLE);      (* Set notebook style          *)
  4537.  
  4538. (**********************************************************************)
  4539. (* Reset notebook window style flags, leaving window flags unchanged. *)
  4540. (**********************************************************************)
  4541. ulNotebookStyles := ulNotebookStyles AND $FFFF0000;
  4542.  
  4543. (**********************************************************************)
  4544. (* Setup the new notebook window style flags.                         *)
  4545. (**********************************************************************)
  4546. ulNotebookStyles := ulNotebookStyles Or
  4547.   BKS_SPIRALBIND     Or         (* Use spiral binding                  *)
  4548.   BKS_BACKPAGESBL    Or         (* Set back pages to intersect at the  *)
  4549.                                 (* bottom-left corner                  *)
  4550.   BKS_MAJORTABBOTTOM Or         (* Position major tabs on bottom edge  *)
  4551.   BKS_ROUNDEDTABS    Or         (* Make tabs rounded                   *)
  4552.   BKS_TABTEXTLEFT    Or         (* Left-justIfied tab text             *)
  4553.   BKS_STATUSTEXTCENTER;        (* Center status-line text             *)
  4554.  
  4555. (**********************************************************************)
  4556. (* Set the new notebook style.                                        *)
  4557. (**********************************************************************)
  4558. WinSetWindowULong(
  4559.   hwndNotebook,                (* Notebook window handle              *)
  4560.   QWL_STYLE,                   (* Window style                        *)
  4561.   ulNotebookStyles);           (* Set notebook style                  *)
  4562.  
  4563. (**********************************************************************)
  4564. (* Invalidate to force a repaint.                                     *)
  4565. (**********************************************************************)
  4566. WinInvalidateRect(
  4567.   hwndNotebook,                (* Notebook window handle              *)
  4568.   nil,                         (* Invalidate entire window,           *)
  4569.   Ord(True));                  (* including children                  *)
  4570.  
  4571. End.
  4572.  
  4573.  
  4574. ΓòÉΓòÉΓòÉ 8.2.3. Inserting Notebook Pages ΓòÉΓòÉΓòÉ
  4575.  
  4576. After a notebook is created, pages can be inserted into the notebook by using 
  4577. the BKM_INSERTPAGE message. BKM_INSERTPAGE provides several attributes that can 
  4578. affect the inserted pages. When inserting pages into either a new notebook or 
  4579. an existing one, consider carefully how the user expects those pages to be 
  4580. organized. 
  4581.  
  4582.  
  4583. ΓòÉΓòÉΓòÉ 8.2.3.1. Major and Minor Tabs ΓòÉΓòÉΓòÉ
  4584.  
  4585. The two attributes that have the most impact on how notebook pages are 
  4586. organized are BKA_MAJOR and BKA_MINOR, which specify major and minor tabs, 
  4587. respectively. Major tab pages define the beginning of major sections in the 
  4588. notebook, while minor tab pages define the beginning of subsections within a 
  4589. major section. Major sections should begin with a page that has a BKA_MAJOR 
  4590. attribute. Within major sections, information can be organized into minor 
  4591. sections, each of which should begin with a page that has a BKA_MINOR 
  4592. attribute. 
  4593.  
  4594. For an existing notebook, the underlying hierarchy, if one exists, must be 
  4595. observed when inserting new pages, to provide efficient organization and 
  4596. navigation of the information in the notebook. For example, if the notebook has 
  4597. minor sections but no major sections, you could confuse the user if you 
  4598. inserted a page with a major tab attribute between related minor sections or at 
  4599. the end of the notebook. 
  4600.  
  4601. If you insert pages without specifying tab attributes, those pages become part 
  4602. of the section in which they are inserted. For example, if page 7 of your 
  4603. notebook has a minor tab and you insert a new page 8 without specifying a tab 
  4604. attribute, page 8 becomes part of the section that begins with the minor tab on 
  4605. page 7. 
  4606.  
  4607. Because tab pages are not mandatory, the application can create a notebook that 
  4608. contains no major or minor tab pages. That style would be similar to that of a 
  4609. composition notebook. 
  4610.  
  4611. Another group of attributes that can affect the organization of pages being 
  4612. inserted into a notebook consists of BKA_FIRST, BKA_LAST, BKA_NEXT, and 
  4613. BKA_PREV. These attributes cause pages to be inserted at the end, at the 
  4614. beginning, after a specified page, and before a specified page of a notebook, 
  4615. respectively. 
  4616.  
  4617.  
  4618. ΓòÉΓòÉΓòÉ 8.2.3.2. Status Line ΓòÉΓòÉΓòÉ
  4619.  
  4620. Each page has an optional status line that can be used to display information 
  4621. for the user. To include this status line, the application must specify the 
  4622. BKA_STATUSTEXTON attribute when inserting the page. If the application inserts 
  4623. the page without specifying this attribute, the status line is not available 
  4624. for that page. 
  4625.  
  4626. To display text on the status line of the specified page, the application must 
  4627. use the BKM_SETSTATUSLINETEXT message to associate a text string with the page. 
  4628. A separate message must be sent for each page that is to display status-line 
  4629. text. If the application does not send a BKM_SETSTATUSLINETEXT message for a 
  4630. page, no text is displayed in the status line of that page. The application can 
  4631. send this message to the notebook at any time to change the status-line text. 
  4632. The status line can be cleared by setting the text to NULL. 
  4633.  
  4634. The following sample code shows how to insert a page into a notebook, where the 
  4635. inserted page has a major tab attribute, the status line is available, and the 
  4636. page is inserted after the last page in the notebook. This sample code also 
  4637. shows how to associate a text string with the status line of the inserted page. 
  4638.  
  4639. Uses
  4640.   Os2Def,Os2Base,Os2PmApi;
  4641.  
  4642. Var
  4643.   HwndNotebook : HWND;  (* Notebook window handle               *)
  4644.   UlPageId     : ULONG; (* Page identifier                      *)
  4645.  
  4646. Begin
  4647.  
  4648.   (***********************************************************************)
  4649.   (* Insert a new page into a notebook.                                  *)
  4650.   (***********************************************************************)
  4651.   ulPageId := WinSendMsg(
  4652.     hwndNotebook,                (* Notebook window handle               *)
  4653.     BKM_INSERTPAGE,              (* Message for inserting a page         *)
  4654.     nil,                         (* nil for page ID                     *)
  4655.  
  4656.     MPFROM2SHORT(
  4657.       BKA_MAJOR Or               (* Insert page with a major tab         *)
  4658.                                  (* attribute                            *)
  4659.       BKA_STATUSTEXTON),         (* Make status-line text visible        *)
  4660.       BKA_LAST));                (* Insert this page at end of notebook  *)
  4661.  
  4662.   (***********************************************************************)
  4663.   (* Set the status-line text.                                           *)
  4664.   (***********************************************************************)
  4665.   WinSendMsg(
  4666.     hwndNotebook,                (* Notebook window handle               *)
  4667.     BKM_SETSTATUSLINETEXT,       (* Message for setting status-line      *)
  4668.                                  (* text                                 *)
  4669.     ulPageId,                    (* ID of page to receive status-line    *)
  4670.                                  (* text                                 *)
  4671.     MPFROMP('Page 1 of 2'));     (* Text string to put on status line    *)
  4672.  
  4673. End.
  4674.  
  4675.  
  4676. ΓòÉΓòÉΓòÉ 8.2.4. Setting and Querying Page Information ΓòÉΓòÉΓòÉ
  4677.  
  4678. The information for a page in the notebook can be set and queried with 
  4679. BKM_SETPAGEINFO and BKM_QUERYPAGEINFO respectively. By using these messages, 
  4680. all the information associated with a page can be accessed at once. In 
  4681. addition, BKM_SETPAGEINFO can be used to delay the loading of a page until it 
  4682. is turned to, by setting the bLoadDlg field to FALSE. By doing this for all 
  4683. pages in a notebook, the notebook is created much more quickly. 
  4684.  
  4685.  
  4686. ΓòÉΓòÉΓòÉ 8.2.5. Associating Application Page Windows with Notebook Pages ΓòÉΓòÉΓòÉ
  4687.  
  4688. After a page is inserted into a notebook, you must facilitate the display of 
  4689. information for this page when it is brought to the top of the book. The 
  4690. notebook provides a top page area in which the application can display windows 
  4691. or dialogs for the topmost page. For each inserted page, the application must 
  4692. associate the handle of a window or dialog that is to be invalidated when the 
  4693. page is brought to the top of the book. The application can associate the same 
  4694. handle with different pages, if desired. 
  4695.  
  4696. The application must send a BKM_SETPAGEWINDOWHWND message to the notebook in 
  4697. order to associate the application page window or dialog handle with the 
  4698. notebook page being inserted.  Once done, the notebook invalidates this window 
  4699. or dialog whenever the notebook page is brought to the top of the book. If no 
  4700. application page window handle is specified for an inserted page, no 
  4701. invalidation can be done by the notebook for that page. However, the 
  4702. application receives a BKN_PAGESELECTED notification code when a new page is 
  4703. brought to the top of the notebook, at which time the application can 
  4704. invalidate the page. 
  4705.  
  4706. The notebook also sends a BKN_PAGESELECTEDPENDING notification code to the 
  4707. application before the new page is selected. The application can use this 
  4708. message to prevent the page from being turned to. This is useful when the 
  4709. application wants to validate a page's contents. 
  4710.  
  4711. The following sections describe how to associate either a window handle or a 
  4712. dialog handle with an inserted page. 
  4713.  
  4714.  
  4715. ΓòÉΓòÉΓòÉ 8.2.5.1. Associating a Window with a Notebook Page ΓòÉΓòÉΓòÉ
  4716.  
  4717.  
  4718. A calendar example is used to show how a page can be implemented as a window. A 
  4719. calendar is divided into four years (major tabs). Within each year are months 
  4720. (minor tabs) grouped into quarters. The top page has a window associated with 
  4721. it. The window paint processing displays the days for the currently selected 
  4722. month and year. 
  4723.  
  4724. The sample code in the following figure shows how the window procedure for the 
  4725. calendar is registered with the application. Also, it shows how the window is 
  4726. created and associated with the notebook page. The example ends by showing the 
  4727. window procedure for the associated window. 
  4728.  
  4729. (*********************************************************************)
  4730. (* Registration of window procedure for calendar.                    *)
  4731. (*********************************************************************)
  4732. WinRegisterClass(hab,               (* Register a page window class  *)
  4733.                  'Calendar Page',   (* Class name                    *)
  4734.                  PageWndProc,       (* Window procedure              *)
  4735.                  CS_SIZEREDRAW,     (* Class style                   *)
  4736.                  0);                (* No extra bytes reserved       *)
  4737.  
  4738. (*********************************************************************)
  4739. (* Create the window.                                                *)
  4740. (*********************************************************************)
  4741. hwndPage := WinCreateWindow(hwndNotebook,        (* Parent             *)
  4742.                             'Calendar Page',     (* Class              *)
  4743.                             nil,                 (* Title text         *)
  4744.                             0,                   (* Style              *)
  4745.                             0, 0, 0, 0,          (* Origin and size    *)
  4746.                             hwndNotebook,        (* Owner              *)
  4747.                             HWND_TOP,            (* Z-order            *)
  4748.                             ID_WIN_CALENDAR_PAGE,(* ID             *)
  4749.                             nil,                 (* Control data       *)
  4750.                             nil);                (* Presparams         *)
  4751.  
  4752. (*********************************************************************)
  4753. (* Associate window with the inserted notebook page.                 *)
  4754. (*********************************************************************)
  4755. WinSendMsg(hwndBook,
  4756.            BKM_SETPAGEWINDOWHWND,
  4757.            MPFROMLONG(ulPageId),
  4758.            MPFROMHWND(hwndPage));
  4759.  
  4760. (*********************************************************************)
  4761. (* Window procedure.                                                 *)
  4762. (*********************************************************************)
  4763. Function PageWndProc( hwnd : HWND, msg : ULONG,
  4764.                       mp1 : MPARAM, mp2 : MPARAM):MRESULT; cdecl;
  4765. Var
  4766.   Hps : HPS; (* ╨ísken var tom!! *)
  4767.  
  4768. Begin
  4769.   Case msg Of
  4770.  
  4771.     (*******************************************************************)
  4772.     (* WM_CREATE is sent when the window is created.                   *)
  4773.     (*******************************************************************)
  4774.     WM_CREATE:
  4775.  
  4776.     (*****************************************************************)
  4777.     (* Place window initialization code here.                        *)
  4778.     (*****************************************************************)
  4779.  
  4780.     WM_PAINT:
  4781.     (*****************************************************************)
  4782.     (* Draw the calendar for the selected year and month.            *)
  4783.     (*****************************************************************)
  4784.     .
  4785.     .
  4786.     .
  4787.     WinEndPaint(hps);
  4788.     break;
  4789.  
  4790.   Else Begin
  4791.     PageWndProc := WinDefWindowProc(hwnd, msg, mp1, mp2);
  4792.     Exit;
  4793.   End;
  4794.   PageWndProc := (Ord(False));
  4795. End;
  4796.  
  4797.  
  4798. ΓòÉΓòÉΓòÉ 8.2.5.2. Associating a Dialog with a Notebook Page ΓòÉΓòÉΓòÉ
  4799.  
  4800.  
  4801. To understand the notebook implemented as a dialog, a Properties Notebook is 
  4802. used. The various objects whose properties can be changed or updated are 
  4803. displayed as major tabs. Included are sections that represent a folder, 
  4804. printer, and display (major tabs). The printer object is currently selected. 
  4805. Within the printer object, the user can choose to &odq.View&cdq. or 
  4806. &odq.Update&cdq. (minor tabs) the printer settings. The topmost page is a 
  4807. printer dialog from which the user can update the printer name, type, and 
  4808. device information. 
  4809.  
  4810. The following sample code shows how the printer dialog is created and 
  4811. associated with a notebook page. The example ends by showing the dialog 
  4812. procedure for the associated dialog. 
  4813.  
  4814.  
  4815. Uses
  4816.   Os2Def,Os2Base,Os2PmApi;
  4817.  
  4818. Var
  4819.   Dlgret                 : APIRET;       (* ╨ísken var tom!! *)
  4820.   hwndPage, hwndNotebook : HWND;         (* ╨ísken var tom!! *)
  4821.   PDlgt                  : PDLGTEMPLATE; (* ╨ísken var tom!! *)
  4822.   Sel                    : SEL;          (* ╨ísken var tom!! *)
  4823.  
  4824. Begin
  4825.   Sel       := nil;
  4826.  
  4827.   (**********************************************************************)
  4828.   (* Allocate memory.                                                   *)
  4829.   (**********************************************************************)
  4830.   DosAllocMem(&pDlgt,
  4831.               sizeof(DLGTEMPLATE),
  4832.               PAG_COMMIT Or
  4833.               PAG_READ   Or
  4834.               PAG_WRITE);
  4835.  
  4836.   (**********************************************************************)
  4837.   (* Retrieve the dialog resource.                                      *)
  4838.   (**********************************************************************)
  4839.   dlgret := DosGetResource(0,                (* Resource                 *)
  4840.                                              (* (Obtain from executable) *)
  4841.                            RT_DIALOG,        (* Resource type            *)
  4842.                            ID_DLG_PRINTDRV,  (* Resource ID              *)
  4843.                            &pDlgt);          (* Dialog template address  *)
  4844.  
  4845.   (**********************************************************************)
  4846.   (* Create a dialog.                                                   *)
  4847.   (**********************************************************************)
  4848.   hwndPage := WinCreateDlg(HWND_DESKTOP,     (* Parent window handle     *)
  4849.                            hwndBook,         (* Owner window handle      *)
  4850.                            fnwpPrint,        (* Dialog procedure         *)
  4851.                                              (* address                  *)
  4852.                            pDlgt,            (* Dialog data structure    *)
  4853.                                              (* address                  *)
  4854.                            nil);             (* Application data         *)
  4855.  
  4856.   DosFreeMem(pDlgt);                         (* Free memory              *)
  4857.  
  4858.   (**********************************************************************)
  4859.   (* Associate dialog with the inserted notebook page.                  *)
  4860.   (**********************************************************************)
  4861.   WinSendMsg(hwndBook,
  4862.              BKM_SETPAGEWINDOWHWND,
  4863.              MPFROMLONG(ulPageId),
  4864.              MPFROMHWND(hwndPage));
  4865.  
  4866.   (**********************************************************************)
  4867.   (* Dialog procedure.                                                  *)
  4868.   (**********************************************************************)
  4869.  
  4870. Function fnwpPrint( hwndDlg : HWND, msg : ULONG,
  4871.                     mp1 : MPARAM, mp2 : MPARAM): MRESULT; cdecl;
  4872. Begin
  4873.   Case msg Of
  4874.     WM_INITDLG:
  4875.  
  4876.     (****************************************************************)
  4877.     (* Place dialog initialization code here.                       *)
  4878.     (****************************************************************)
  4879.  
  4880.     WM_COMMAND:
  4881.       fnwpPrint := Ord(False);
  4882.       Exit;
  4883.   Else Begin
  4884.     fnwpPrint := WinDefDlgProc (hwndDlg,msg,mp1,mp2);
  4885.     Exit
  4886.   End;
  4887.   fnwPrint := WinDefDlgProc (hwndDlg,msg,mp1,mp2);
  4888. End;
  4889.  
  4890.  
  4891. ΓòÉΓòÉΓòÉ 8.2.6. Deleting Notebook Pages ΓòÉΓòÉΓòÉ
  4892.  
  4893. The BKM_DELETEPAGE message is used to delete one or more pages from the 
  4894. notebook. The application can delete one page (BKA_SINGLE attribute), all pages 
  4895. within a major or minor tab section (BKA_TAB attribute), or all of the pages in 
  4896. the notebook (BKA_ALL attribute). The default, if no attributes are specified, 
  4897. is to delete no pages. The following sample code shows how the BKM_QUERYPAGEID 
  4898. message is used to get the ID of the top page and how the BKM_DELETEPAGE 
  4899. message is then used to delete that page: 
  4900.  
  4901. (**********************************************************************)
  4902. (* Set the range of pages to be deleted.                              *)
  4903. (**********************************************************************)
  4904.  
  4905. (* Set attribute to delete a single page. *)
  4906. usDeleteFlag := BKA_SINGLE
  4907.  
  4908. (**********************************************************************)
  4909. (* Get the ID of the notebook's top page.                             *)
  4910. (**********************************************************************)
  4911. ulPageId := WinSendMsg(
  4912.           hwndNotebook,                (* Notebook window handle              *)
  4913.           BKM_QUERYPAGEID,             (* Message to query a page ID          *)
  4914.           nil,                         (* nil for page ID                    *)
  4915.           BKA_TOP);                    (* Get ID of top page                  *)
  4916.  
  4917. (**********************************************************************)
  4918. (* Delete the notebook's top page.                                    *)
  4919. (**********************************************************************)
  4920. WinSendMsg(
  4921.            hwndNotebook,                (* Notebook window handle              *)
  4922.            BKM_DELETEPAGE,              (* Message to delete the page          *)
  4923.            MPFROMLONG(ulPageId),        (* ID of page to be deleted            *)
  4924.            usDeleteFlag);               (* Range of pages to be deleted        *)
  4925.  
  4926. End.
  4927.  
  4928.  
  4929. ΓòÉΓòÉΓòÉ 8.2.7. Notebook Colors ΓòÉΓòÉΓòÉ
  4930.  
  4931. The application can change the color of any part of the notebook. The colors of 
  4932. some parts can be changed by specifying presentation parameter attributes in 
  4933. WinSetPresParam. Other colors can be changed by specifying notebook attributes 
  4934. in the BKM_SETNOTEBOOKCOLORS message. The following sections define which parts 
  4935. of the notebook can have their colors changed by each of these two methods. 
  4936.  
  4937.  
  4938. ΓòÉΓòÉΓòÉ 8.2.7.1. Changing Colors Using WinSetPresParam ΓòÉΓòÉΓòÉ
  4939.  
  4940. WinSetPresParam is used to change the color of the notebook outline, window 
  4941. background, selection cursor, and status-line text. The following list shows 
  4942. the mapping between the various notebook parts and their associated 
  4943. presentation parameter attributes. 
  4944.  
  4945.  Notebook outline PP_BORDERCOLOR or PP_BORDERCOLORINDEX. This color is set 
  4946.      initially to SYSCLR_WINDOWFRAME. 
  4947.  
  4948.  Notebook window background PP_BACKGROUNDCOLOR or PP_BACKGROUNDCOLORINDEX. This 
  4949.      color is set initially to SYSCLR_FIELDBACKGROUND. 
  4950.  
  4951.  Selection cursor PP_HILITEBACKGROUNDCOLOR or PP_HILITEBACKGROUNDCOLORINDEX. 
  4952.      This color is set initially to SYSCLR_HILITEBACKGROUND. 
  4953.  
  4954.  Status-line text PP_FOREGROUNDCOLOR or PP_FOREGROUNDCOLORINDEX. This color is 
  4955.      initially set to SYSCLR_WINDOWTEXT. 
  4956.  
  4957.  If a presentation parameter attribute is set, all parts of the notebook that 
  4958.  are mapped to this color are changed. The following sample code shows how to 
  4959.  change the color of the notebook outline: 
  4960.  
  4961.   (* Set number of bytes to be passed in usColorIdx *)
  4962.   (* for color index table value                    *)
  4963.   usColorLen := 4;
  4964.   (* Set color index table value to be assigned *)
  4965.   ulColorIdx := 3;
  4966.  
  4967.   (**********************************************************************)
  4968.   (* Set the notebook outline color.                                    *)
  4969.   (**********************************************************************)
  4970.   WinSetPresParam(
  4971.     hwndNotebook,                (* Notebook window handle              *)
  4972.     PP_BORDERCOLOR,              (* Border color attribute              *)
  4973.     usColorLen,                  (* Number of bytes in color index      *)
  4974.                                  (* table value                         *)
  4975.     &ulColorIdx);                (* Color index table value             *)
  4976.  
  4977.  
  4978. ΓòÉΓòÉΓòÉ 8.2.7.2. Changing Colors Using BKM_SETNOTEBOOKCOLORS ΓòÉΓòÉΓòÉ
  4979.  
  4980. The BKM_SETNOTEBOOKCOLORS message is used to change the color of the major tab 
  4981. background and text, the minor tab background and text, and the notebook page 
  4982. background. The following list shows the mapping between the various notebook 
  4983. parts and their associated notebook attributes. 
  4984.  
  4985.  Major tab background BKA_BACKGROUNDMAJORCOLOR or 
  4986.      BKA_BACKGROUNDMAJORCOLORINDEX. This color is set initially to 
  4987.      SYSCLR_PAGEBACKGROUND. The currently selected major tab has the same 
  4988.      background color as the notebook page background. 
  4989.  
  4990.  Major tab text BKA_FOREGROUNDMAJORCOLOR or BKA_FOREGROUNDMAJORCOLORINDEX. This 
  4991.      color is set initially to SYSCLR_WINDOWTEXT. 
  4992.  
  4993.  Minor tab background BKA_BACKGROUNDMINORCOLOR or 
  4994.      BKA_BACKGROUNDMINORCOLORINDEX. This color is set initially to 
  4995.      SYSCLR_PAGEBACKGROUND. The currently selected minor tab has the same 
  4996.      background color as the notebook page background. 
  4997.  
  4998.  Minor tab text BKA_FOREGROUNDMINORCOLOR or BKA_FOREGROUNDMINORCOLORINDEX. This 
  4999.      color is set initially to SYSCLR_WINDOWTEXT. 
  5000.  
  5001.  Notebook page background BKA_BACKGROUNDPAGECOLOR or 
  5002.      BKA_BACKGROUNDPAGECOLORINDEX. This color is set initially to 
  5003.      SYSCLR_PAGEBACKGROUND. 
  5004.  
  5005.  If a notebook attribute is set, all parts of the notebook that are mapped to 
  5006.  this color are changed. The following sample code shows how to change the 
  5007.  color of the major tab background: 
  5008.  
  5009.   (* Color index value     *)
  5010.   ulColorIdx    := SYSCLR_WINDOW;
  5011.   (* Major tab background  *)
  5012.   ulColorRegion := BKA_BACKGROUNDMAJORCOLORINDEX;
  5013.  
  5014.   WinSendMsg(hwndBook,
  5015.              BKM_SETNOTEBOOKCOLORS,
  5016.              MPFROMLONG(ulColorIdx),
  5017.              MPFROMLONG(ulColorRegion));
  5018.  
  5019.  
  5020. ΓòÉΓòÉΓòÉ 8.3. Graphical User Interface Support for Notebook Controls ΓòÉΓòÉΓòÉ
  5021.  
  5022. The following section describes the support for graphical user interfaces 
  5023. (GUIs) provided by the notebook control. Except where noted, this support 
  5024. conforms to the guidelines in the SAA CUA Advanced Interface Design Reference. 
  5025.  
  5026. The GUI support provided by the notebook control consists of the notebook 
  5027. navigation techniques. 
  5028.  
  5029.  
  5030. ΓòÉΓòÉΓòÉ 8.3.1. Notebook Navigation Techniques ΓòÉΓòÉΓòÉ
  5031.  
  5032. The notebook control supports the use of a pointing device and the keyboard for 
  5033. displaying notebook pages and tabs and for moving the selection cursor from the 
  5034. notebook tabs to the application window and the other way around. 
  5035.  
  5036. Note:  If more than one notebook window is open, displaying a page or tab in 
  5037.        one notebook window has no effect on the pages or tabs displayed in any 
  5038.        other notebook window. 
  5039.  
  5040.  
  5041. ΓòÉΓòÉΓòÉ 8.3.1.1. Pointing Device Support ΓòÉΓòÉΓòÉ
  5042.  
  5043. A user can use a pointing device to display notebook pages or tabs by selecting 
  5044. the notebook components described in the following list. The CUA guidelines 
  5045. define mouse button 1 (the select button) to be used for selecting these 
  5046. components. This definition also applies to the same button on any other 
  5047. pointing device a user might have. 
  5048.  
  5049.      Selecting tabs using a pointing device 
  5050.  
  5051.       A tab can be selected to bring a page that has a major or minor tab 
  5052.       attribute to the top of the notebook. The selection cursor, a dotted 
  5053.       outline, is drawn inside the tab's border to indicate the selected tab. 
  5054.       In addition, the selected tab is given the same background color as the 
  5055.       notebook page area. The color of the other tabs is specified in the 
  5056.       BKM_SETNOTEBOOKCOLORS message. This helps the user distinguish the 
  5057.       selected tab from the other tabs if different colors are used. 
  5058.  
  5059.       Because all tabs are mutually exclusive, only one of them can be selected 
  5060.       at a time. Therefore, the only type of selection supported by the 
  5061.       notebook control is single selection. This selection type conforms to the 
  5062.       guidelines in the SAA CUA Advanced Interface Design Reference. 
  5063.  
  5064.       If the user moves the pointing device to a place in the notebook page 
  5065.       window that can accept a cursor, such as an entry field, check box, or 
  5066.       radio button, and presses the select button, the selection cursor is 
  5067.       removed from the tab it is on and is displayed in the notebook page 
  5068.       window. The selection cursor never can be displayed both on a tab and in 
  5069.       the notebook page window at the same time. 
  5070.  
  5071.      Selecting page buttons using a pointing device 
  5072.  
  5073.       A forward or backward page button can be selected to display the next or 
  5074.       previous page, respectively, one at a time. The arrow pointing to the 
  5075.       right is the forward page button, and the arrow pointing to the left is 
  5076.       the backward page button. When the selection of a page button brings a 
  5077.       page that has a major or minor tab to the top of the notebook, the 
  5078.       selection cursor is drawn inside that tab's border. 
  5079.  
  5080.      Selecting tab scroll buttons using a pointing device 
  5081.  
  5082.       A user can decrease the size of a notebook window so that some of the 
  5083.       available notebook tabs cannot be displayed. When this happens, the 
  5084.       notebook control automatically draws tab scroll buttons at the corners of 
  5085.       the notebook side or sides to notify the user that more tabs are 
  5086.       available. 
  5087.  
  5088.       Tab scroll buttons have another purpose: to give the user the means to 
  5089.       scroll into view, one at a time, the tabs that are not displayed. The 
  5090.       user does this by selecting a forward or backward tab scroll button, 
  5091.       which causes the next tab to scroll into view, but does not change the 
  5092.       location of the selection cursor. Once the tab is in view, the user can 
  5093.       display that tab's page by selecting the tab. 
  5094.  
  5095.       A maximum of four tab scroll buttons can be displayed: two for the major 
  5096.       tab side and two for the minor tab side. 
  5097.  
  5098.       When the first tab in the notebook is displayed, the backward tab scroll 
  5099.       button is deactivated. Unavailable-state emphasis is applied to it to 
  5100.       show that no more tabs can be scrolled into view by using the backward 
  5101.       tab scroll button. Unavailable-state emphasis is applied to the forward 
  5102.       tab scroll button if the last tab in the notebook is displayed. 
  5103.  
  5104.  
  5105. ΓòÉΓòÉΓòÉ 8.3.1.2. Keyboard Support ΓòÉΓòÉΓòÉ
  5106.  
  5107. The users can utilize the keyboard to display and manipulate notebook pages and 
  5108. components. 
  5109.  
  5110.  
  5111. ΓòÉΓòÉΓòÉ 8.3.1.2.1. Focus on Application Dialog or Window ΓòÉΓòÉΓòÉ
  5112.  
  5113.  
  5114. If the application dialog page or window has the focus, the notebook handles 
  5115. the following keyboard interactions: 
  5116.  
  5117.  Keyboard Input           Description 
  5118.  
  5119.  Alt+PgDn or PgDn         Brings the next page to the top of the notebook. If 
  5120.                           the application uses the PgDn key, then it must be 
  5121.                           used in combination with the Alt key. 
  5122.  
  5123.  Alt+PgUp or PgUp         Brings the previous page to the top of the notebook. 
  5124.                           If the application uses the PgUp key, then it must be 
  5125.                           used in combination with the Alt key. 
  5126.  
  5127.  Alt+Up Arrow             Switch the focus to the notebook window. 
  5128.  
  5129.  Tab                      Move the cursor to the next control within the top 
  5130.                           page window or dialog. If the cursor is currently on 
  5131.                           the last control within the top page window or dialog 
  5132.                           when the Tab key is pressed, the cursor is moved to 
  5133.                           the notebook major tab, if it exists; else to the 
  5134.                           minor tab, if it exists; else to the right page 
  5135.                           button. 
  5136.  
  5137.  Shift+Tab                Move the cursor to the previous control within the 
  5138.                           top page window or dialog. If the cursor is currently 
  5139.                           on the first control within the top page window or 
  5140.                           dialog when the Shift+Tab key is pressed, the cursor 
  5141.                           is moved to the previous control. If the previous 
  5142.                           control is the notebook, the cursor is moved to the 
  5143.                           right page button. 
  5144.  
  5145.  
  5146. ΓòÉΓòÉΓòÉ 8.3.1.2.2. Focus on the Notebook Control ΓòÉΓòÉΓòÉ
  5147.  
  5148.  
  5149. If the notebook control has the focus, it handles the following keyboard 
  5150. intereactions: 
  5151.  
  5152.  Keyboard Input           Description 
  5153.  
  5154.  Alt+Down Arrow           Switch the focus to the application's primary window. 
  5155.  
  5156.  Alt+PgDn or PgDn         Brings the next page to the top of the notebook. 
  5157.  
  5158.  Alt+PgUp or PgUp         Brings the previous page to the top of the notebook. 
  5159.  
  5160.  Left or Up Arrow         If the cursor is currently on a major tab, it is 
  5161.                           moved to the previous major tab. If the previous 
  5162.                           major tab is not visible, the tabs are scrolled to 
  5163.                           bring the previous major tab into view. If the first 
  5164.                           major tab is reached, scrolling ends. 
  5165.  
  5166.                           If the cursor is currently on a minor tab, it is 
  5167.                           moved to the previous minor tab. If the previous 
  5168.                           minor tab is not visible, the tabs are scrolled to 
  5169.                           bring the previous minor tab into view. If the first 
  5170.                           minor tab is reached, scrolling ends. 
  5171.  
  5172.                           If the cursor is currently on the right page button, 
  5173.                           the cursor moves to the left page button. If the 
  5174.                           cursor is currently on the left page button, no 
  5175.                           action is taken. 
  5176.  
  5177.  Right or Down Arrow      If the cursor is currently on a major tab, it is 
  5178.                           moved to the next major tab. If the next major tab is 
  5179.                           not visible, the tabs are scrolled to bring the next 
  5180.                           major tab into view. If the last major tab is 
  5181.                           reached, scrolling ends. 
  5182.  
  5183.                           If the cursor is currently on a minor tab, it is 
  5184.                           moved to the next minor tab. If the next minor tab is 
  5185.                           not visible, the tabs are scrolled to bring the next 
  5186.                           minor tab into view. If the last minor tab is 
  5187.                           reached, scrolling ends. 
  5188.  
  5189.                           If the cursor is currently on the right page button, 
  5190.                           no action is taken. If the cursor is currently on the 
  5191.                           left page button, the cursor moves to the right page 
  5192.                           button. 
  5193.  
  5194.  Tab                      The cursor moves from the major tab, then to the 
  5195.                           minor tab, then to the right page button, and then to 
  5196.                           the last tab stop in the application dialog or 
  5197.                           window. 
  5198.  
  5199.  Shift+Tab                The cursor moves from the page button, to the minor 
  5200.                           tab, to the major tab, and then to the first tab stop 
  5201.                           in the application dialog or window. 
  5202.  
  5203.  Home                     Brings the first page of the notebook to the top and 
  5204.                           sets the cursor on the associated tab. 
  5205.  
  5206.  End                      Brings the last page of the notebook to the top and 
  5207.                           sets the cursor on the associated tab. 
  5208.  
  5209.  Enter or Spacebar        If the cursor is on a major or minor tab, the 
  5210.                           associated page is brought to the top of the 
  5211.                           notebook, and the selected tab is given the same 
  5212.                           background color as the notebook page area. The other 
  5213.                           tabs have their color specified in the 
  5214.                           BKM_SETNOTEBOOKCOLORS message. This helps the user 
  5215.                           distinguish the selected tab from the other tabs if 
  5216.                           different colors are used. 
  5217.  
  5218.                           If the cursor is currently on the right page button, 
  5219.                           the next page is brought to the top of the notebook. 
  5220.                           If the cursor is currently on the left page button, 
  5221.                           the previous page is brought to the top of the 
  5222.                           notebook. 
  5223.  
  5224.  Mnemonics                Mnemonics are underlined characters in the text of a 
  5225.                           tab that cause the tab's page to be selected. Coding 
  5226.                           a tilde (~) before a text character in the 
  5227.                           BKM_SETTABTEXT message causes that character to be 
  5228.                           underlined and activates it as a mnemonic-selection 
  5229.                           character. 
  5230.  
  5231.                           A user performs mnemonic selection by pressing a 
  5232.                           character key that corresponds to an underlined 
  5233.                           character. When this happens, the tab that contains 
  5234.                           the underlined character is selected, and that tab's 
  5235.                           page is brought to the top of the notebook. 
  5236.  
  5237.                           Note:  Mnemonic selection is not case sensitive, so 
  5238.                           the user can type the underscored letter in either 
  5239.                           uppercase or lowercase. 
  5240.  
  5241.  
  5242. ΓòÉΓòÉΓòÉ 8.4. Enhancing Notebook Controls Performance and Effectiveness ΓòÉΓòÉΓòÉ
  5243.  
  5244. This section provides the following information to enable you to fine-tune a 
  5245. notebook control: 
  5246.  
  5247.      Dynamic resizing and scrolling 
  5248.      Tab painting and positioning 
  5249.  
  5250.  
  5251. ΓòÉΓòÉΓòÉ 8.4.1. Dynamic Resizing and Scrolling ΓòÉΓòÉΓòÉ
  5252.  
  5253. The notebook control supports dynamic resizing by recalculating the size of the 
  5254. notebook's parts when either the user or the application changes the size of 
  5255. any of those parts. A BKN_NEWPAGESIZE notification code is sent from the 
  5256. notebook to the application whenever the notebook's size changes. 
  5257.  
  5258. The notebook handles the sizing and positioning of each application page window 
  5259. if the BKA_AUTOPAGESIZE attribute is specified for the inserted notebook page. 
  5260. Otherwise, the application must handle this when it receives the 
  5261. BKN_NEWPAGESIZE notification code from the notebook. 
  5262.  
  5263. If the size of the notebook window is decreased so that the page window is not 
  5264. large enough to display all the information the page contains, the information 
  5265. in the page window is clipped. If scroll bars are desired to enable the clipped 
  5266. information to be scrolled into view, they must be provided by the application. 
  5267. Tab scroll buttons are automatically displayed if the size of the notebook is 
  5268. decreased so that all the major or minor tabs cannot be displayed. For example, 
  5269. a notebook has major tabs on the right side, but the height of the notebook 
  5270. does not allow all the tabs to be displayed. In this case, tab scroll buttons 
  5271. are displayed on the upper- and lower-right corners of the notebook. 
  5272.  
  5273.  
  5274. ΓòÉΓòÉΓòÉ 8.4.2. Tab Painting and Positioning ΓòÉΓòÉΓòÉ
  5275.  
  5276. The tab pages provide a method for organizing the information in a notebook so 
  5277. that the user easily can see and navigate to that information. When a page is 
  5278. inserted with a major or minor tab attribute, the notebook displays a tab for 
  5279. that page, based on the orientation of the notebook. The contents of the tab 
  5280. can be painted either by the notebook control or the application. 
  5281.  
  5282. If the notebook control is to paint the tabs, the application must associate a 
  5283. text string or bit map with the page whose tab is to be drawn.  This is done by 
  5284. sending the BKM_SETTABTEXT or BKM_SETTABBITMAP message to the notebook control 
  5285. for the specified page. If neither of these messages is sent for an inserted 
  5286. page with a major or minor tab attribute, the application must draw the 
  5287. contents of the tab, through ownerdraw. The application receives a WM_DRAWITEM 
  5288. message whenever a tab page that has no text or bit map associated with it is 
  5289. to be drawn. The application can either draw the tab contents or return FALSE, 
  5290. in which case the notebook control fills the tab with the tab background color. 
  5291.  
  5292. Positioning Tabs in Relation to the Top Tab: 
  5293. There are seven page edges that define the back pages.  The page attribute 
  5294. (BKA_MAJOR or BKA_MINOR) and the topmost page determine how the tabs are 
  5295. positioned. In most cases, the tabs must be drawn when their position changes. 
  5296. For example, this can happen when a page with a tab attribute is brought to the 
  5297. top of the notebook. 
  5298.  
  5299. The new top major or minor tab will appear attached to the top page. The other 
  5300. tabs will appear as described in the following list. This information is 
  5301. provided to help you understand the relationship between the top tab and the 
  5302. other tabs so that you can organize the information you put into a notebook 
  5303. appropriately. The application has no control over tab positioning. 
  5304.  
  5305.      When the top page is a major tab page: 
  5306.  
  5307.         -  Any major tabs prior to the top major tab are aligned on the last 
  5308.            page of the notebook. 
  5309.  
  5310.         -  Any major tabs after the top major tab are incrementally cascaded 
  5311.            from the topmost edge to the last page. 
  5312.  
  5313.         -  If the top major tab has minor tabs, no major tab is drawn on the 
  5314.            page edge that immediately follows the top tab page. Instead, any 
  5315.            major tabs that follow the top tab are incrementally cascaded, 
  5316.            beginning on the second page, edge-down from the top tab. This is 
  5317.            done to account for the minor tabs that are positioned between the 
  5318.            top major tab and the major tab that follows it on the perpendicular 
  5319.            notebook edge. 
  5320.  
  5321.            The minor tabs are all positioned on the third page edge from the 
  5322.            top, thereby giving the appearance of being between the top major 
  5323.            tab and the next major tab. 
  5324.  
  5325.      When the top page is a minor tab page: 
  5326.  
  5327.         -  Any minor tabs prior to the top minor tab are positioned on the 
  5328.            third page edge from the top of the notebook. 
  5329.  
  5330.         -  Any minor tabs after the top minor tab are incrementally cascaded up 
  5331.            to the third page edge from the top. 
  5332.  
  5333.  
  5334. ΓòÉΓòÉΓòÉ 9. Painting and Drawing ΓòÉΓòÉΓòÉ
  5335.  
  5336. This chapter describes presentation spaces, device contexts, and window 
  5337. regions, explaining how a PM application uses them for painting and drawing in 
  5338. windows. 
  5339.  
  5340.  
  5341. ΓòÉΓòÉΓòÉ 9.1. About Painting and Drawing ΓòÉΓòÉΓòÉ
  5342.  
  5343. An application typically maintains an internal representation of the data that 
  5344. it is manipulating.  The information displayed in a screen, window, or printed 
  5345. copy is a visual representation of some portion of that data.  This chapter 
  5346. introduces the concepts and strategies necessary to make your PM application 
  5347. function smoothly and cooperatively in the OS/2 display environment. 
  5348.  
  5349.  
  5350. ΓòÉΓòÉΓòÉ 9.1.1. Presentation Spaces and Device Contexts ΓòÉΓòÉΓòÉ
  5351.  
  5352. A presentation space is a data structure, maintained by the operating system, 
  5353. that describes the drawing environment for an application.  An application can 
  5354. create and hold several presentation spaces, each describing a different 
  5355. drawing environment.  All drawing in a PM application must be directed to a 
  5356. presentation space. 
  5357.  
  5358. Normally each presentation space is associated with a device context that 
  5359. describes the physical device where graphics commands are displayed.  The 
  5360. device context translates graphics commands made to the presentation space into 
  5361. commands that enable the physical device to display information.  Typical 
  5362. device contexts are the screen, printers and plotters, and off-screen memory 
  5363. bit maps. By creating presentation spaces and associating them with particular 
  5364. device contexts, an application can control where its graphics output appears. 
  5365. Typically, a presentation space and device context isolate the application from 
  5366. the physical details of displaying graphics, so the same graphics commands can 
  5367. be used for many types of displays.  This virtualization of output can reduce 
  5368. the amount of display code an application must include to support multiple 
  5369. output devices. 
  5370.  
  5371. This chapter describes how an application sets up its presentation spaces and 
  5372. device contexts before drawing, and how to use window-drawing functions.  Refer 
  5373. to the Graphics Programming Interface Programming Guide for the graphics 
  5374. functions available to PM applications. 
  5375.  
  5376.  
  5377. ΓòÉΓòÉΓòÉ 9.1.2. Window Regions ΓòÉΓòÉΓòÉ
  5378.  
  5379. A window and its associated presentation space have three regions that control 
  5380. where drawing takes place in the window. These regions ensure that the 
  5381. application does not draw outside the boundaries of the window or intrude into 
  5382. the space of an overlapping window. 
  5383.  
  5384. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5385. ΓöéRegion         ΓöéDescription                                  Γöé
  5386. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5387. ΓöéUpdate Region  ΓöéThis region represents the area of the windowΓöé
  5388. Γöé               Γöéthat needs to be redrawn. This region changesΓöé
  5389. Γöé               Γöéwhen overlapping windows change their z-orderΓöé
  5390. Γöé               Γöéor when an application explicitly adds an    Γöé
  5391. Γöé               Γöéarea to the update region to force a window  Γöé
  5392. Γöé               Γöéto be painted.                               Γöé
  5393. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5394. ΓöéClip Region    ΓöéThis region and the visible region determine Γöé
  5395. Γöé               Γöéwhere drawing takes place. Applications can  Γöé
  5396. Γöé               Γöéchange the clip region to limit drawing to a Γöé
  5397. Γöé               Γöéparticular portion of a window. Typically, a Γöé
  5398. Γöé               Γöépresentation space is created with a clip    Γöé
  5399. Γöé               Γöéregion equal to NULL, which makes this regionΓöé
  5400. Γöé               Γöéequivalent to the update region.             Γöé
  5401. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5402. ΓöéVisible Region ΓöéThis region and the clip region determine    Γöé
  5403. Γöé               Γöéwhere drawing takes place. The system changesΓöé
  5404. Γöé               Γöéthe visible region to represent the portion  Γöé
  5405. Γöé               Γöéof a window that is visible. Typically, the  Γöé
  5406. Γöé               Γöévisible region is used to mask out           Γöé
  5407. Γöé               Γöéoverlapping windows. When an application     Γöé
  5408. Γöé               Γöécalls the WinBeginPaint function in response Γöé
  5409. Γöé               Γöéto a WM_PAINT message, the system sets the   Γöé
  5410. Γöé               Γöévisible region to the intersection of the    Γöé
  5411. Γöé               Γöévisible region and the update region to      Γöé
  5412. Γöé               Γöéproduce a new visible region. Applications   Γöé
  5413. Γöé               Γöécannot change the visible region directly.   Γöé
  5414. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5415. Whenever drawing occurs in a window's presentation space, the output is clipped 
  5416. to the intersection of the visible region and clip region. 
  5417.  
  5418. The clip region includes the overlapped part of the back window, but the 
  5419. visible region excludes that portion of the back window.  The system maintains 
  5420. the visible region to protect other windows on the screen; the application 
  5421. maintains the clip region to specify the portion of the window in which it 
  5422. draws.  Together, these two regions provide safe and controllable clipping. 
  5423.  
  5424. To further control drawing, both the system and the application manipulate the 
  5425. update region. For example, if a window's position is switched from back to 
  5426. front, positions front to back, several changes occur in the regions of both 
  5427. windows.  The system adds the lower-right corner of the new front window to 
  5428. that window's visible region.  The system also adds that corner area to the 
  5429. window's update region. 
  5430.  
  5431.  
  5432. ΓòÉΓòÉΓòÉ 9.1.3. Window Styles for Painting ΓòÉΓòÉΓòÉ
  5433.  
  5434. Most of the styles relating to window drawing can be set either for the window 
  5435. class (CS_ prefix) or for an individual window (WS_ prefix).  The styles 
  5436. described in this section control how the system manipulates the window's 
  5437. regions and how the window is notified when it must be painted or redrawn. 
  5438.  
  5439.  
  5440. ΓòÉΓòÉΓòÉ 9.1.3.1. WS_CLIPCHILDREN, CS_CLIPCHILDREN ΓòÉΓòÉΓòÉ
  5441.  
  5442. All the windows with this style are excluded from their parent's visible 
  5443. region.  This style protects windows but increases the amount of time necessary 
  5444. to calculate the parent's visible region.  This style normally is not 
  5445. necessary, because if the parent and child windows overlap and both are 
  5446. invalidated, the parent window is drawn before the child window.  If the child 
  5447. window is invalidated independently from its parent window, only the child 
  5448. window is redrawn.  If the update region of the parent window does not 
  5449. intersect the child window, drawing the parent window does not disturb the 
  5450. child window. 
  5451.  
  5452.  
  5453. ΓòÉΓòÉΓòÉ 9.1.3.2. WS_CLIPSIBLINGS, CS_CLIPSIBLINGS ΓòÉΓòÉΓòÉ
  5454.  
  5455. Windows with this style are excluded from the visible region of sibling 
  5456. windows.  This style protects windows with the same parent from being drawn 
  5457. accidentally, but increases the amount of time necessary to calculate the 
  5458. visible region.  This style is appropriate for sibling windows that overlap. 
  5459.  
  5460.  
  5461. ΓòÉΓòÉΓòÉ 9.1.3.3. WS_PARENTCLIP, CS_PARENTCLIP ΓòÉΓòÉΓòÉ
  5462.  
  5463. The visible region for a window with this style is the same as the visible 
  5464. region of the parent window.  This style simplifies the calculation of the 
  5465. visible region but is potentially hazardous, because the parent window's 
  5466. visible region usually is larger than the child window.  Windows with this 
  5467. style should not draw outside their boundaries. 
  5468.  
  5469.  
  5470. ΓòÉΓòÉΓòÉ 9.1.3.4. WS_SAVEBITS, CS_SAVEBITS ΓòÉΓòÉΓòÉ
  5471.  
  5472. The system saves the bits beneath a window with this style when the window is 
  5473. displayed.  When the window moves or is hidden, the system simply restores the 
  5474. uncovered bits.  This operation can consume a great deal of memory; it is 
  5475. recommended only for transient windows such as menus and dialog boxes-not for 
  5476. main application windows.  This style also is inappropriate for windows that 
  5477. are updated dynamically, such as clocks. 
  5478.  
  5479.  
  5480. ΓòÉΓòÉΓòÉ 9.1.3.5. WS_SYNCPAINT, CS_SYNCPAINT ΓòÉΓòÉΓòÉ
  5481.  
  5482. Windows that have these styles receive WM_PAINT messages as soon as their 
  5483. update regions contain something; they are updated immediately (synchronously). 
  5484.  
  5485.  
  5486. ΓòÉΓòÉΓòÉ 9.1.3.6. CS_SIZEREDRAW ΓòÉΓòÉΓòÉ
  5487.  
  5488. A window with this class style receives a WM_PAINT message; the window is 
  5489. completely invalidated whenever it is resized, even if it is made smaller. 
  5490. (Typically, only the uncovered area of a window is invalidated when a window is 
  5491. resized.)  This class style is useful when an application scales graphics to 
  5492. fill the current window. 
  5493.  
  5494.  
  5495. ΓòÉΓòÉΓòÉ 9.2. Strategies for Painting and Drawing ΓòÉΓòÉΓòÉ
  5496.  
  5497. A PM application shares the screen with other windows and applications; 
  5498. therefore, painting and drawing must not interfere with those other 
  5499. applications and windows.  When you follow these strategies, your application 
  5500. can coexist with other applications and still take full advantage of the 
  5501. graphics capabilities of the operating system. 
  5502.  
  5503.  
  5504. ΓòÉΓòÉΓòÉ 9.2.1. Drawing in a Window ΓòÉΓòÉΓòÉ
  5505.  
  5506. Ideally, all drawing in a window occurs as a result of an application's 
  5507. processing a WM_PAINT message.  Applications maintain an internal 
  5508. representation of what must be displayed in the window, such as text or a 
  5509. linked list of graphics objects, and use the WM_PAINT message as a cue to 
  5510. display a visual representation of that data in the window. 
  5511.  
  5512. To route all display output through the WM_PAINT message, an application must 
  5513. not draw on the screen at the time its data changes.  Instead, it must update 
  5514. the internal representation of the data and call the WinInvalidateRect or 
  5515. WinInvalidateRegion functions to invalidate the portion of the window that must 
  5516. be redrawn.  Sometimes it is much more efficient to draw directly in a window 
  5517. without relying on the WM_PAINT message-for example, when drawing and redrawing 
  5518. an object for a user who is using the mouse to drag or size the object. 
  5519.  
  5520. If a window has the WS_SYNCPAINT or CS_SYNCPAINT style, invalidating a portion 
  5521. of the window causes a WM_PAINT message to be sent to the window immediately. 
  5522. Essentially, sending a message is like making a function call; the actions 
  5523. corresponding to the WM_PAINT message are carried out before the call that 
  5524. caused the invalidation returns-that is to say, the painting is synchronous. 
  5525.  
  5526. If the window does not have the WS_SYNCPAINT or CS_SYNCPAINT style, 
  5527. invalidating a portion of the window causes the invalidated region to be added 
  5528. to the window's update region.  The next time the application calls the 
  5529. WinGetMsg or WinPeekMsg functions, the application is sent a WM_PAINT message. 
  5530. If there are many messages in the queue, the painting occurs after the 
  5531. invalidation-that is, the painting is asynchronous.  A WM_PAINT message is not 
  5532. posted to the queue in this case, so all invalidation operations since the last 
  5533. WM_PAINT message are consolidated into a single WM_PAINT message the next time 
  5534. the application has no messages in the queue. 
  5535.  
  5536. There are advantages to both synchronous and asynchronous painting.  Windows 
  5537. that have simple painting functions should be painted synchronously.  Most of 
  5538. the system-defined control windows, such as buttons and frame controls, are 
  5539. painted synchronously because they can be painted quickly without interfering 
  5540. with the responsiveness of the program.  Windows that require more 
  5541. time-consuming painting operations should be painted asynchronously so that the 
  5542. painting can be initiated only when there are no other pending messages that 
  5543. might otherwise be blocked while waiting for the window to be painted.  Also, a 
  5544. window that uses an incremental approach to invalidating small portions of 
  5545. itself usually should allow those operations to consolidate into a single 
  5546. asynchronous WM_PAINT message, rather than a series of synchronous WM_PAINT 
  5547. messages. If necessary, an application can call the WinUpdateWindow function to 
  5548. cause an asynchronous window to update itself without going through the event 
  5549. loop.  WinUpdateWindow sends a WM_PAINT message directly to the window if the 
  5550. window's update region is not empty. 
  5551.  
  5552.  
  5553. ΓòÉΓòÉΓòÉ 9.2.2. The WM_PAINT Message ΓòÉΓòÉΓòÉ
  5554.  
  5555. A window receives a WM_PAINT message whenever its update region is not NULL.  A 
  5556. window procedure responds to a WM_PAINT message by calling the WinBeginPaint 
  5557. function, drawing to fill in the update areas, then calling the WinEndPaint 
  5558. function. 
  5559.  
  5560. The WinBeginPaint function returns a handle to a presentation space that is 
  5561. associated with the device context for the window and that has a visible region 
  5562. equal to the intersection of the window's update region and its visible region. 
  5563. This means that only those portions of the window that need to be redrawn are 
  5564. drawn.  Attempts to draw outside this region are clipped and do not appear on 
  5565. the screen. 
  5566.  
  5567. If the application maintains its own presentation space for the window, it can 
  5568. pass the handle of that presentation space to WinBeginPaint, which modifies the 
  5569. visible region of the presentation space and passes the presentation-space 
  5570. handle back to the caller.  If the application does not have its own 
  5571. presentation space, it can pass a NULL presentation-space handle and the system 
  5572. will return a cached-micro presentation space for the window.  In either case, 
  5573. the application can use the presentation space to draw in the window. 
  5574.  
  5575. The WinBeginPaint function takes a pointer to a RECTL structure, filling in 
  5576. this structure with the coordinates of the rectangle that encloses the area to 
  5577. be updated.  The application can use this rectangle to optimize drawing, by 
  5578. drawing only those portions of the window that intersect with the rectangle. 
  5579. If an application passes a NULL pointer for the rectangle argument, the 
  5580. application draws the entire window and relies on the clipping mechanism to 
  5581. filter out the unneeded areas. 
  5582.  
  5583. After the WinBeginPaint function sets the update region of a window to NULL, 
  5584. the application does the necessary drawing to fill the update areas.  If an 
  5585. application handles a WM_PAINT message and does not call WinBeginPaint, or 
  5586. otherwise empty the update region, the application continues to receive 
  5587. WM_PAINT messages as long as the update region is not empty. 
  5588.  
  5589. After the application finishes drawing, it calls the WinEndPaint function to 
  5590. restore the presentation space to its former state.  When a cached-micro 
  5591. presentation space is returned by WinBeginPaint, the presentation space is 
  5592. returned to the system for reuse.  If the application supplies its own 
  5593. presentation space to WinBeginPaint, the presentation space is restored to its 
  5594. previous state. 
  5595.  
  5596.  
  5597. ΓòÉΓòÉΓòÉ 9.2.2.1. Drawing the Minimized View ΓòÉΓòÉΓòÉ
  5598.  
  5599. When an application creates a standard frame window, it has the option of 
  5600. specifying an icon that the system uses to represent the application in its 
  5601. minimized state.  Typically, if an icon is supplied, the system draws it in the 
  5602. minimized window and labels it with the name of the window.  If the application 
  5603. does not specify the FS_ICON style for the window, the window receives a 
  5604. WM_PAINT message when it is minimized.  The code in the window procedure that 
  5605. handles the WM_PAINT message can determine whether the frame window currently 
  5606. is minimized and draw accordingly.  Notice that because the WS_MINIMIZED style 
  5607. is relevant only for the frame window, and not for the client window, the 
  5608. window procedure checks the frame window rather than the client window. 
  5609.  
  5610. The following code fragment shows how to draw a window in both the minimized 
  5611. and normal states: 
  5612.  
  5613. Uses
  5614.   Os2Def,Os2Base,Os2PmApi;
  5615.  
  5616. Function ClientWndProc( hwnd : HWND, msg : ULONG,
  5617.                         mp1 : MPARAM, mp2 : MPARAM):MRESULT; cdecl;
  5618. Var
  5619.   Hps     : HPS;   (* ╨ísken var tom!! *)
  5620.   Rcl     : RECTL; (* ╨ísken var tom!! *)
  5621.   FlStyle : ULONG; (* ╨ísken var tom!! *)
  5622.  
  5623. Begin
  5624.   Case msg Of
  5625.     WM_PAINT:
  5626.  
  5627.       (* Check whether the frame window
  5628.          (client's parent window)
  5629.          is minimized.               *)
  5630.  
  5631.       flStyle := WinQueryWindowULong(WinQueryWindow(hwnd,
  5632.                                      QW_PARENT), QWL_STYLE);
  5633.  
  5634.       If ((flStyle<>0) AND (WS_MINIMIZED)<>0) Then Begin
  5635.         .
  5636.         .    (* Paint the minimized state. *)
  5637.         .
  5638.       End
  5639.       Else Begin
  5640.         .
  5641.         .    (* Paint the normal state.    *)
  5642.         .
  5643.       End;
  5644.       WinEndPaint(hps);
  5645.       ClientWndProc := 0;
  5646.       Exit
  5647.   End;
  5648. End;
  5649.  
  5650.  
  5651. ΓòÉΓòÉΓòÉ 9.2.3. Drawing Without the WM_PAINT Message ΓòÉΓòÉΓòÉ
  5652.  
  5653. An application can draw in a window's presentation space without having 
  5654. received a WM_PAINT message.  As long as there is a presentation space for the 
  5655. window, an application can draw into the presentation space and avoid intruding 
  5656. into other windows or the desktop.  Applications that draw without using the 
  5657. WM_PAINT message typically call the WinGetPS function to obtain a cached-micro 
  5658. presentation space for the window and call the WinReleasePS function when they 
  5659. have finished drawing.  An application also can use any of the other types of 
  5660. presentation spaces described in the following sections. 
  5661.  
  5662.  
  5663. ΓòÉΓòÉΓòÉ 9.2.4. Three Types of Presentation Spaces ΓòÉΓòÉΓòÉ
  5664.  
  5665. All drawing must take place within a presentation space. The operating system 
  5666. provides three types of presentation spaces for drawing:  normal, micro, and 
  5667. cached-micro presentation spaces. The normal presentation space provides the 
  5668. most functionality, allowing access to all the graphics functions of the 
  5669. operating system and enabling the application to draw to all device types.  The 
  5670. normal presentation space is more difficult to use than the other two kinds of 
  5671. presentation spaces and it uses more memory.  It is created by using the 
  5672. GpiCreatePS function and is destroyed by using the GpiDestroyPS function. 
  5673.  
  5674. The micro presentation space allows access to only a subset of the operating 
  5675. system graphics functions, but it uses less memory and is faster than a normal 
  5676. presentation space.  The micro presentation space also enables the application 
  5677. to draw to all device types.  It is created by using the GpiCreatePS function 
  5678. and destroyed by using the GpiDestroyPS function. 
  5679.  
  5680. The cached-micro presentation space provides the least functionality of the 
  5681. three kinds of presentation spaces, but it is the most efficient and easiest to 
  5682. use.  The cached-micro presentation space draws only to the screen.  It is 
  5683. created and destroyed by using either the WinBeginPaint and WinEndPaint 
  5684. functions or the WinGetPS and WinReleasePS functions. 
  5685.  
  5686. The following sections describe each of the types of presentation spaces, in 
  5687. detail, and suggest strategies for using each type in an application.  All 
  5688. three kinds of presentation spaces can be used in a single application.  Some 
  5689. windows, especially if they never will be printed, are best served by 
  5690. cached-micro presentation spaces.  Other windows might require the more 
  5691. flexible services of micro or normal presentation spaces. 
  5692.  
  5693.  
  5694. ΓòÉΓòÉΓòÉ 9.2.4.1. Normal Presentation Spaces ΓòÉΓòÉΓòÉ
  5695.  
  5696. The normal presentation space supports the full power of the operating system 
  5697. graphics, including retained graphics.  The primary advantages of a normal 
  5698. presentation space over the other two presentation-space types are its support 
  5699. of all graphics functions and its ability to be associated with many kinds of 
  5700. device contexts. 
  5701.  
  5702. A normal presentation space can be associated with many different device 
  5703. contexts.  Typically, this means that an application creates a normal 
  5704. presentation space and associates it with a window device context for screen 
  5705. display.  When the user asks to print, the application associates the same 
  5706. presentation space with a printer device context.  Later, the application can 
  5707. reassociate the presentation space with the window device context.  A 
  5708. presentation space can be associated with only one device context at a time, 
  5709. but the normal presentation space enables the application to change the device 
  5710. context whenever necessary. 
  5711.  
  5712. When creating a normal presentation space, an application can associate it with 
  5713. a device context or defer the association to a later time.  The GpiAssociate 
  5714. function associates a device context with a normal presentation space after the 
  5715. presentation space has been created.  An application typically associates the 
  5716. normal presentation space with a device context when calling the GpiCreatePS 
  5717. function and, later, associates the presentation space with a different device 
  5718. context by calling GpiAssociate.  To obtain a device context for a window, call 
  5719. the WinOpenWindowDC function.  To obtain a device context for a device other 
  5720. than the screen, call the DevOpenDC function. 
  5721.  
  5722. An application typically creates a normal presentation space during 
  5723. initialization and uses it until termination.  Each time the application 
  5724. receives a WM_PAINT message, it passes the handle of the normal presentation 
  5725. space as an argument to WinBeginPaint; this prevents the system from returning 
  5726. a cached-micro presentation space.  The system modifies the visible region of 
  5727. the supplied normal presentation space and returns the presentation space to 
  5728. the application.  This method enables the application to use the same 
  5729. presentation space for all the drawing in a specified window. Normal 
  5730. presentation spaces created using GpiCreatePS must be destroyed by calling 
  5731. GpiDestroyPS before the application terminates.  Do not call WinReleasePS to 
  5732. release a presentation space obtained using GpiCreatePS.  Before terminating, 
  5733. applications also must use DevCloseDC to close any device contexts opened using 
  5734. DevOpenDC.  No action is necessary for device contexts obtained using 
  5735. WinOpenWindowDC, because the system automatically closes these device contexts 
  5736. when destroying the associated windows. 
  5737.  
  5738.  
  5739. ΓòÉΓòÉΓòÉ 9.2.4.2. Micro Presentation Spaces ΓòÉΓòÉΓòÉ
  5740.  
  5741. The primary advantage of a micro presentation space over a cached-micro 
  5742. presentation space is that it can be used for printing as well as painting in a 
  5743. window.  An application that uses a micro presentation space must explicitly 
  5744. associate it with a device context.  This makes the micro presentation space 
  5745. useful for painting to a printer, a plotter, or an off-screen memory bit map. 
  5746.  
  5747. A micro presentation space does not support the full set of OS/2 graphics 
  5748. functions.  Unlike a normal presentation space, a micro presentation space does 
  5749. not support retained graphics. 
  5750.  
  5751. An application that must display graphics or text in a window and print to a 
  5752. printer or plotter typically maintains two presentation spaces: one for the 
  5753. window and one for the printing device. The following figure shows how an 
  5754. application's graphics output can be routed through separate presentation 
  5755. spaces to produce a screen display and printed copy. An application creates a 
  5756. micro presentation space by calling the GpiCreatePS function.  A device context 
  5757. must be supplied at the time the micro presentation space is created.  An 
  5758. application typically creates a device context and then a presentation space. 
  5759. The following code fragment demonstrates this by obtaining a device context for 
  5760. a window and associating it with a new micro presentation space: 
  5761.  
  5762.  
  5763.         hdc := WinOpenWindowDC(...);
  5764.         hps := GpiCreatePS(..., hdc, ..., GPIA_ASSOC);
  5765.  
  5766. To create a micro presentation space for a device other than the screen, 
  5767. replace the call to the WinOpenWindowDC function with a call to the DevOpenDC 
  5768. function, which obtains a device context for a device other than the screen. 
  5769. Then the device context that is obtained by this call can be used as an 
  5770. argument to GpiCreatePS. 
  5771.  
  5772. An application typically creates a micro presentation space during 
  5773. initialization and uses it until termination.  Each time the application 
  5774. receives a WM_PAINT message, it should pass the handle of the micro 
  5775. presentation space as an argument to the WinBeginPaint function; this prevents 
  5776. the system from returning a cached-micro presentation space.  The system 
  5777. modifies the visible region of the supplied micro presentation space and 
  5778. returns the presentation space to the application.  This method enables the 
  5779. application to use the same presentation space for all drawing in a specified 
  5780. window. 
  5781.  
  5782. Micro presentation spaces created by using GpiCreatePS should be destroyed by 
  5783. calling GpiDestroyPS before the application terminates.  Do not call the 
  5784. WinReleasePS function to release a presentation space obtained by using 
  5785. GpiCreatePS.  Before terminating, applications must use the DevCloseDC function 
  5786. to close any device contexts opened using the DevOpenDC function.  No action is 
  5787. necessary for device contexts obtained using WinOpenWindowDC, because the 
  5788. system automatically closes these device contexts when destroying the 
  5789. associated windows. 
  5790.  
  5791.  
  5792. ΓòÉΓòÉΓòÉ 9.2.4.3. Cached-Micro Presentation Spaces ΓòÉΓòÉΓòÉ
  5793.  
  5794. The cached-micro presentation space provides the simplest and most efficient 
  5795. drawing environment.  It can be used only for drawing on the screen, typically 
  5796. in the context of a window.  It is most appropriate for application tasks that 
  5797. require simple window-drawing functions that will not be printed.  Cached-micro 
  5798. presentation spaces do not support retained graphics. 
  5799.  
  5800. After an application draws to a cached-micro presentation space, the drawing 
  5801. commands are routed through an implied device context to the current display. 
  5802. The application does not require information about the actual device context, 
  5803. because the device context is assumed to be the display.  This process makes 
  5804. cached-micro presentation spaces easy for applications to use. The following 
  5805. code fragment illustrates this process: 
  5806.  
  5807. Uses
  5808.   Os2Def,Os2Base,Os2PmApi;
  5809.  
  5810. Var
  5811.   Hps : HPS; (* ╨ísken var tom!! *)
  5812.  
  5813. Begin
  5814.   (* Case Of *)
  5815.   WM_PAINT:
  5816.     hps = WinBeginPaint(hwnd,nil,nil);
  5817.  
  5818.     (*
  5819.      * Use PS.
  5820.      *)
  5821.  
  5822.     WinEndPaint (hps);
  5823.  
  5824.               or 
  5825.  
  5826. Uses
  5827.   Os2Def,Os2Base,Os2PmApi;
  5828.  
  5829. Var
  5830.   Hps : HPS; (* ╨ísken var tom!! *)
  5831.  
  5832. Begin
  5833.  
  5834.   (* Case Of *)
  5835.   WM_PAINT:
  5836.  
  5837.     hps = WinGetPS(hwnd);
  5838.  
  5839.     (*
  5840.      * Use PS.
  5841.      *)
  5842.  
  5843.     WinReleasePS(hps);
  5844. End.
  5845.  
  5846. There are two common strategies for using cached-micro presentation spaces in 
  5847. an application. The simplest strategy is to call the WinBeginPaint function 
  5848. during the WM_PAINT message, use the resulting cached-micro presentation space 
  5849. to draw in the window, then return the presentation space to the system by 
  5850. calling the WinEndPaint function.  By using this method, the application 
  5851. interacts with the presentation space only when drawing in the presentation 
  5852. space.  This method is most appropriate for simple drawing.  A disadvantage of 
  5853. this method is that the application must set up any special attributes for the 
  5854. presentation space, such as line color and font, each time a new presentation 
  5855. space is obtained. 
  5856.  
  5857. A second strategy is for the application to allocate a cached-micro 
  5858. presentation space during initialization, by calling the WinGetPS function and 
  5859. saving the resulting presentation-space handle in a static variable.  Then the 
  5860. application can set attributes in the presentation space that exist for the 
  5861. life of the program.  The presentation-space handle can be used as an argument 
  5862. to the WinBeginPaint function each time the window gets a WM_PAINT message; the 
  5863. system modifies the visible region and returns the presentation space to the 
  5864. application with its attributes intact. This strategy is appropriate for 
  5865. applications that need to customize their window-drawing attributes. A 
  5866. presentation space that is obtained by calling the WinGetPS function must be 
  5867. released by calling WinReleasePS when the application has finished using it, 
  5868. typically during program termination.  A presentation space that is obtained by 
  5869. calling WinBeginPaint must be released by calling WinEndPaint, typically as the 
  5870. last part of processing a WM_PAINT message. 
  5871.  
  5872.  
  5873. ΓòÉΓòÉΓòÉ 10. Resource Files ΓòÉΓòÉΓòÉ
  5874.  
  5875. Resource files enable you to specify the resource information used in creating 
  5876. an application's window. Some examples of resources that can be defined in 
  5877. resource files are: 
  5878.  
  5879.      Menus 
  5880.      Accelerator tables 
  5881.      Dialog and window templates 
  5882.      Icons 
  5883.      Fonts 
  5884.      Bit maps 
  5885.      Strings 
  5886.  
  5887.  To add resource information to an application, use a text editor to create a 
  5888.  resource script file, and then compile it using the Resource Compiler, RC.EXE. 
  5889.  The advantage of using resource files is that resource information can be 
  5890.  maintained and updated separately in the resource script file and then linked 
  5891.  to your application program's .EXE file. This greatly simplifies customizing 
  5892.  an application because you can modify resource information without having to 
  5893.  recompile the entire application. 
  5894.  
  5895.  This chapter describes the use of resource files in Presentation Manager (PM) 
  5896.  programming. 
  5897.  
  5898.  
  5899. ΓòÉΓòÉΓòÉ 10.1. About Resource Files ΓòÉΓòÉΓòÉ
  5900.  
  5901. A resource script file is a text file that contains one or more resource 
  5902. statements that define the type, identifier, and data for each resource. 
  5903. Because some resources might contain binary data that cannot be created using a 
  5904. text editor, there are resource statements that let you specify additional 
  5905. files to include when compiling the resource script file. For example, you can 
  5906. use the Dialog Box Editor to design dialog boxes, the Font Editor to edit font 
  5907. files, and the Icon Editor to create customized icons, pointers, and bit maps. 
  5908. The definitions for these resources can be included with other resource 
  5909. definitions in the resource file. 
  5910.  
  5911.  
  5912. ΓòÉΓòÉΓòÉ 10.1.1. Resource Statements ΓòÉΓòÉΓòÉ
  5913.  
  5914. This section provides overview information on resource statements and 
  5915. directives.  Resource statements consist of one or more keywords, numbers, 
  5916. character strings, constants, or file names. You combine these to define the 
  5917. resource type, identifier, and data. Directives are special types of resource 
  5918. statements that perform functions such as including header files, defining 
  5919. constants, and conditionally compiling portions of the file. Resource 
  5920. statements have three basic forms: 
  5921.  
  5922.      Single-line statements 
  5923.      Multiple-line statements 
  5924.      Directives 
  5925.  
  5926.  
  5927. ΓòÉΓòÉΓòÉ 10.1.1.1. Single-line Statements ΓòÉΓòÉΓòÉ
  5928.  
  5929. Single-line statements consist of a keyword identifying the resource type, a 
  5930. constant or number specifying the resource identifier, and a file name 
  5931. specifying the file containing the resource data. For example, this ICON 
  5932. statement defines an icon resource: 
  5933.  
  5934.   ICON 1 myicon.ico
  5935.  
  5936. The icon resource has the icon identifier 1, and the file MYICON.ICO contains 
  5937. the icon data. 
  5938.  
  5939.  
  5940. ΓòÉΓòÉΓòÉ 10.1.1.2. Multiple-line Statements ΓòÉΓòÉΓòÉ
  5941.  
  5942. Multiple-line statements consist of a keyword identifying the resource type, a 
  5943. constant or number specifying the resource identifier, and, between the BEGIN 
  5944. and END keywords, additional resource statements that define the resource data. 
  5945. For example, this MENU statement defines a menu resource: 
  5946.  
  5947.   MENU 1
  5948.   BEGIN
  5949.       MENUITEM "Alpha", 101
  5950.       MENUITEM "Beta",  102
  5951.   END
  5952.  
  5953. The menu identifier is 1. The menu contains two MENUITEM statements that define 
  5954. the contents of the menu. 
  5955.  
  5956. In multiple-line statements such as DLGTEMPLATE and WINDOWTEMPLATE, any level 
  5957. of nested statements is allowed. For example, the DLGTEMPLATE and 
  5958. WINDOWTEMPLATE statements typically contain a single DIALOG or FRAME statement. 
  5959. These statements can contain any number of WINDOW and CONTROL statements; the 
  5960. WINDOW and CONTROL statements can contain additional WINDOW and CONTROL 
  5961. statements, and so forth. The nested statements let you define controls and 
  5962. other child windows for the dialog boxes and windows. 
  5963.  
  5964. If a nested statement creates a child window or control, the parent and owner 
  5965. of the new window is the window created by the containing statement. (FRAME 
  5966. statements occasionally create frame controls whose parent and owner windows 
  5967. are not the same.) 
  5968.  
  5969.  
  5970. ΓòÉΓòÉΓòÉ 10.1.1.3. Directives ΓòÉΓòÉΓòÉ
  5971.  
  5972. Directives consist of the reserved character # in the first column of a line, 
  5973. followed by the directive keyword and any additional numbers, character 
  5974. strings, or file names. 
  5975.  
  5976. Some examples of directives are: 
  5977.  
  5978.      #define 
  5979.      #if 
  5980.      #ifdef 
  5981.      #include 
  5982.  
  5983.  Descriptions of the individual directives follow the resource file statement 
  5984.  descriptions. 
  5985.  
  5986.  
  5987. ΓòÉΓòÉΓòÉ 10.1.2. Resource File Statement Descriptions ΓòÉΓòÉΓòÉ
  5988.  
  5989. This section provides the syntax, description, and an example of each of the 
  5990. resource file statements. 
  5991.  
  5992. The following table summarizes, at a general level, the most commonly used 
  5993. parameters on the statements. 
  5994.  
  5995. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5996. ΓöéParameter   ΓöéDescription                                     Γöé
  5997. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5998. Γöéid          ΓöéControl identifier.                             Γöé
  5999. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6000. Γöéx           ΓöéX coordinate of the lower-left corner of the    Γöé
  6001. Γöé            Γöécontrol.                                        Γöé
  6002. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6003. Γöéy           ΓöéY coordinate of the lower-left corner of the    Γöé
  6004. Γöé            Γöécontrol.                                        Γöé
  6005. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6006. Γöéheight      ΓöéHeight of the control ( in 1/8 character units).Γöé
  6007. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6008. Γöéwidth       ΓöéWidth of the control.                           Γöé
  6009. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6010. Γöéstyle       ΓöéPredefined bit representation of a style or     Γöé
  6011. Γöé            Γöécombination of styles.                          Γöé
  6012. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6013. Γöéload option ΓöéDefinition of when the system should load the   Γöé
  6014. Γöé            Γöéresource into memory (for example, PRELOAD or   Γöé
  6015. Γöé            ΓöéLOADONCALL).                                    Γöé
  6016. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6017. Γöémem option  ΓöéDefinition of how the system manages the        Γöé
  6018. Γöé            Γöéresource when in memory (for example, FIXED,    Γöé
  6019. Γöé            ΓöéMOVABLE, or DISCARDABLE).                       Γöé
  6020. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6021. Γöétext        ΓöéText associated with a control.                 Γöé
  6022. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6023. Γöéclass       ΓöéPredefined class for a particular control.      Γöé
  6024. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6025.  
  6026.  
  6027. ΓòÉΓòÉΓòÉ 10.1.2.1. ACCELTABLE Statement ΓòÉΓòÉΓòÉ
  6028.  
  6029.  The ACCELTABLE statement creates a table of accelerators for an application. 
  6030.  
  6031.  
  6032. ΓòÉΓòÉΓòÉ 10.1.2.1.1. Syntax ΓòÉΓòÉΓòÉ
  6033.  
  6034.   ACCELTABLE acceltable-id [mem-option][load-option]
  6035.   BEGIN
  6036.   key-value, command[, accelerator-options] ...
  6037.       .
  6038.       .
  6039.       .
  6040.   END
  6041.  
  6042.  
  6043. ΓòÉΓòÉΓòÉ 10.1.2.1.2. Description ΓòÉΓòÉΓòÉ
  6044.  
  6045. An accelerator is a keystroke that gives the user a quick way to choose a 
  6046. command from a menu or carry out some other task. An accelerator table can be 
  6047. loaded when needed from the executable file by using the WinLoadAccelTable 
  6048. function. 
  6049.  
  6050.  
  6051. ΓòÉΓòÉΓòÉ 10.1.2.1.3. Example ΓòÉΓòÉΓòÉ
  6052.  
  6053. This example creates an accelerator table whose accelerator-table identifier is 
  6054. 1. The table contains two accelerators:  Ctrl+S and Ctrl+G. These accelerators 
  6055. generate WM_COMMAND messages with values of 101 and 102, respectively, when the 
  6056. user presses the corresponding keys. 
  6057.  
  6058.   ACCELTABLE 1
  6059.   BEGIN
  6060.       "S", 101, CONTROL
  6061.       "G", 102, CONTROL
  6062.   END
  6063.  
  6064.  
  6065. ΓòÉΓòÉΓòÉ 10.1.2.2. ASSOCTABLE Statement ΓòÉΓòÉΓòÉ
  6066.  
  6067.  The ASSOCTABLE statement defines a file-association table for an application. 
  6068.  
  6069.  
  6070. ΓòÉΓòÉΓòÉ 10.1.2.2.1. Syntax ΓòÉΓòÉΓòÉ
  6071.  
  6072.   ASSOCTABLE assoctable-id [load-option][mem-option]
  6073.   BEGIN
  6074.   association-name, file-match-string[, extended-attribute-flag]
  6075.     [, icon-filename]
  6076.     .
  6077.     .
  6078.     .
  6079.   END
  6080.  
  6081.  
  6082. ΓòÉΓòÉΓòÉ 10.1.2.2.2. Description ΓòÉΓòÉΓòÉ
  6083.  
  6084. This table associates the data files that an application creates with the 
  6085. executable file of the application. When the user selects one of these data 
  6086. files, the associated application begins executing. 
  6087.  
  6088. A file-association table can also associate icons with the data files that an 
  6089. application creates. The icons are used to identify the data files graphically. 
  6090. Because a file-association table associates icons by file type, all data files 
  6091. having the same file type have the same icon. 
  6092.  
  6093. You can provide any number of ASSOCTABLE statements in a resource script file, 
  6094. but each statement must specify a unique assoctable-id value. The 
  6095. file-association tables are written not only to the resources within your 
  6096. executable file, but also to the .ASSOC extended attribute. However, only the 
  6097. last file-association table specified in the resource script file is actually 
  6098. written to the extended attribute. 
  6099.  
  6100.  
  6101. ΓòÉΓòÉΓòÉ 10.1.2.3. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  6102.  
  6103.  The AUTOCHECKBOX statement creates an automatic-check-box control. 
  6104.  
  6105.  
  6106. ΓòÉΓòÉΓòÉ 10.1.2.3.1. Syntax ΓòÉΓòÉΓòÉ
  6107.  
  6108.   AUTOCHECKBOX text, id, x, y, width [, style]
  6109.  
  6110.  
  6111. ΓòÉΓòÉΓòÉ 10.1.2.3.2. Description ΓòÉΓòÉΓòÉ
  6112.  
  6113. The control is a small rectangle (check box) that contains an X when the user 
  6114. selects it. The specified text is displayed to the right of the check box. An X 
  6115. appears in the square when the user first selects the control and disappears 
  6116. the next time the user selects it. The AUTOCHECKBOX statement, which can only 
  6117. be used in a DIALOG or WINDOW statement, defines the text, identifier, 
  6118. dimensions, and attributes of a control window. The predefined class for this 
  6119. control is WC_BUTTON. If the style is not specified, the default style is 
  6120. BS_AUTOCHECKBOX and WS_TABSTOP. 
  6121.  
  6122.  
  6123. ΓòÉΓòÉΓòÉ 10.1.2.3.3. Example ΓòÉΓòÉΓòÉ
  6124.  
  6125. This example creates an automatic-check-box control that is labeled "Italic." 
  6126.  
  6127.   AUTOCHECKBOX "Italic", 101, 10, 10, 100, 100
  6128.  
  6129.  
  6130. ΓòÉΓòÉΓòÉ 10.1.2.4. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  6131.  
  6132. The AUTORADIOBUTTON statement creates an automatic-radio-button control. 
  6133.  
  6134.  
  6135. ΓòÉΓòÉΓòÉ 10.1.2.4.1. Syntax ΓòÉΓòÉΓòÉ
  6136.  
  6137. AUTORADIOBUTTON text, id, x, y, width, height [, style]
  6138.  
  6139.  
  6140. ΓòÉΓòÉΓòÉ 10.1.2.4.2. Description ΓòÉΓòÉΓòÉ
  6141.  
  6142. This control is a small circle with the given text displayed to its right. The 
  6143. control highlights the circle and sends a message to its parent window when the 
  6144. user selects the button. The control also removes the selection from any other 
  6145. automatic-radio-button controls in the same group. When the user selects the 
  6146. button again, the control removes the highlight before sending a message. The 
  6147. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  6148. statement, defines the text, identifier, dimensions, and attributes of a 
  6149. control window. The predefined class for this control is WC_BUTTON. If you do 
  6150. not specify a style, the default style is BS_AUTORADIOBUTTON. 
  6151.  
  6152.  
  6153. ΓòÉΓòÉΓòÉ 10.1.2.4.3. Example ΓòÉΓòÉΓòÉ
  6154.  
  6155. This example creates an automatic-radio-button control that is labeled 
  6156. "Italic." 
  6157.  
  6158.   AUTORADIOBUTTON "Italic", 101, 10, 10, 24, 50
  6159.  
  6160.  
  6161. ΓòÉΓòÉΓòÉ 10.1.2.5. BITMAP Statement ΓòÉΓòÉΓòÉ
  6162.  
  6163.  The BITMAP statement defines a bit-map  resource for an application. 
  6164.  
  6165.  
  6166. ΓòÉΓòÉΓòÉ 10.1.2.5.1. Syntax ΓòÉΓòÉΓòÉ
  6167.  
  6168. BITMAP bitmap-id [load-option] [mem-option] filename
  6169.  
  6170.  
  6171. ΓòÉΓòÉΓòÉ 10.1.2.5.2. Description ΓòÉΓòÉΓòÉ
  6172.  
  6173. A bit-map resource, typically created using the Icon Editor, is a custom bit 
  6174. map that an application uses in its display or as an item in a menu. 
  6175.  
  6176. The BITMAP statement copies the bit-map resource from the file specified in the 
  6177. filename field and adds it to the application's other resources. A bit-map 
  6178. resource can be loaded from the executable file when needed by using the 
  6179. GpiLoadBitmap function. 
  6180.  
  6181. You can provide any number of BITMAP statements in a resource script file, but 
  6182. each statement must specify a unique bitmap-id value. 
  6183.  
  6184.  
  6185. ΓòÉΓòÉΓòÉ 10.1.2.5.3. Example ΓòÉΓòÉΓòÉ
  6186.  
  6187. This example defines a bit map whose bit-map identifier is 12. The bit-map 
  6188. resource is copied from the file CUSTOM.BMP. 
  6189.  
  6190.   BITMAP 12 custom.bmp
  6191.  
  6192.  
  6193. ΓòÉΓòÉΓòÉ 10.1.2.6. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  6194.  
  6195. The CHECKBOX statement creates a check-box control. 
  6196.  
  6197.  
  6198. ΓòÉΓòÉΓòÉ 10.1.2.6.1. Syntax ΓòÉΓòÉΓòÉ
  6199.  
  6200. CHECKBOX text, id, x, y, width, height [, style]
  6201.  
  6202.  
  6203. ΓòÉΓòÉΓòÉ 10.1.2.6.2. Description ΓòÉΓòÉΓòÉ
  6204.  
  6205. The control is a small rectangle (check box) that has the specified text 
  6206. displayed to the right. The control highlights the rectangle and sends a 
  6207. message to its parent window when the user selects the control. The CHECKBOX 
  6208. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  6209. text, identifier, dimensions, and attributes of a control window. The 
  6210. predefined class for this control is WC_BUTTON. If you do not specify a style, 
  6211. the default style is BS_CHECKBOX and WS_TABSTOP. 
  6212.  
  6213.  
  6214. ΓòÉΓòÉΓòÉ 10.1.2.6.3. Example ΓòÉΓòÉΓòÉ
  6215.  
  6216. This example creates a check-box control that is labeled "Italic." 
  6217.  
  6218.   CHECKBOX "Italic", 101, 10, 10, 100, 100
  6219.  
  6220.  
  6221. ΓòÉΓòÉΓòÉ 10.1.2.7. CODEPAGE Statement ΓòÉΓòÉΓòÉ
  6222.  
  6223.  The CODEPAGE statement sets the code page for all subsequent resources. 
  6224.  
  6225.  
  6226. ΓòÉΓòÉΓòÉ 10.1.2.7.1. Syntax ΓòÉΓòÉΓòÉ
  6227.  
  6228. CODEPAGE codepage-id
  6229.  
  6230.  
  6231. ΓòÉΓòÉΓòÉ 10.1.2.7.2. Description ΓòÉΓòÉΓòÉ
  6232.  
  6233. The code page specifies the character set used for characters in the resource. 
  6234.  
  6235. If the CODEPAGE statement is not given in a resource script file, the resource 
  6236. compiler uses the code page set up for the individual system. If more than one 
  6237. CODEPAGE statement is given in the file, each CODEPAGE statement applies to the 
  6238. resource statements between it and the next CODEPAGE statement. 
  6239.  
  6240.  
  6241. ΓòÉΓòÉΓòÉ 10.1.2.7.3. Example ΓòÉΓòÉΓòÉ
  6242.  
  6243. In this example, the code page for the character-string resources is set to 
  6244. Portuguese (860). 
  6245.  
  6246.   CODEPAGE 860
  6247.  
  6248.   STRINGTABLE
  6249.   BEGIN
  6250.       1 "Filename not found"
  6251.       2 "Cannot open file for reading"
  6252.   END
  6253.  
  6254.  
  6255. ΓòÉΓòÉΓòÉ 10.1.2.8. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  6256.  
  6257.  The COMBOBOX statement creates a combination-box control. 
  6258.  
  6259.  
  6260. ΓòÉΓòÉΓòÉ 10.1.2.8.1. Syntax ΓòÉΓòÉΓòÉ
  6261.  
  6262.   COMBOBOX text, id, x, y, width, height [, style]
  6263.  
  6264.  
  6265. ΓòÉΓòÉΓòÉ 10.1.2.8.2. Description ΓòÉΓòÉΓòÉ
  6266.  
  6267. This control combines a list-box control with an entry-field control. It allows 
  6268. the user to place the selected item from a list box into an entry field. 
  6269.  
  6270. The COMBOBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  6271. defines the text, identifier, dimensions, and attributes of a control window. 
  6272. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  6273. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  6274.  
  6275.  
  6276. ΓòÉΓòÉΓòÉ 10.1.2.8.3. Example ΓòÉΓòÉΓòÉ
  6277.  
  6278. This example creates a combination-box control. 
  6279.  
  6280.   COMBOBOX "", 101, 10, 10, 24, 50
  6281.  
  6282.  
  6283. ΓòÉΓòÉΓòÉ 10.1.2.9. CONTAINER Statement ΓòÉΓòÉΓòÉ
  6284.  
  6285. The CONTAINER statement creates a container control within a dialog window. 
  6286.  
  6287.  
  6288. ΓòÉΓòÉΓòÉ 10.1.2.9.1. Syntax ΓòÉΓòÉΓòÉ
  6289.  
  6290. CONTAINER  id, x, y, width, height [, style]
  6291.  
  6292.  
  6293. ΓòÉΓòÉΓòÉ 10.1.2.9.2. Description ΓòÉΓòÉΓòÉ
  6294.  
  6295. The container control is a visual component that holds objects. 
  6296.  
  6297. The CONTAINER statement defines the identifier, position, dimensions, and 
  6298. attributes of a container control. The predefined class for this control is 
  6299. WC_CONTAINER. If you do not specify a style, the default style is WS_TABSTOP, 
  6300. WS_VISIBLE, and CCS_SINGLESEL. A CONTAINER statement is only used in a DIALOG 
  6301. or WINDOW statement. 
  6302.  
  6303.  
  6304. ΓòÉΓòÉΓòÉ 10.1.2.9.3. Example ΓòÉΓòÉΓòÉ
  6305.  
  6306. This example creates a container control at position (30,30) within the dialog 
  6307. window. The container has a width of 70 character units and a height of 25 
  6308. character units. Its resource ID is 301. The default style CCS_SINGLESEL has 
  6309. been overridden by the style specification CCS_MULTIPLESEL. The default styles 
  6310. WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  6311. specified. 
  6312.  
  6313. Const
  6314.   IDC_CONTAINER    = 301;
  6315.   IDD_CONTAINERDLG = 504;
  6316. DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN Or
  6317.         WS_VISIBLE, FCF_SYSMENU Or FCF_TITLEBAR
  6318.   BEGIN
  6319.      CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL Or
  6320.                        WS_GROUP
  6321.   END
  6322.  
  6323.  
  6324. ΓòÉΓòÉΓòÉ 10.1.2.10. CONTROL Statement ΓòÉΓòÉΓòÉ
  6325.  
  6326.  The CONTROL statement defines a control as belonging to the specified class. 
  6327.  
  6328.  
  6329. ΓòÉΓòÉΓòÉ 10.1.2.10.1. Syntax ΓòÉΓòÉΓòÉ
  6330.  
  6331.   CONTROL text, id, x, y, width, height, class [, style]
  6332.   [ data-definitions ] ...
  6333.   [ BEGIN
  6334.   control-definition
  6335.       .
  6336.       .
  6337.       .
  6338.   END ]
  6339.  
  6340.  
  6341. ΓòÉΓòÉΓòÉ 10.1.2.10.2. Description ΓòÉΓòÉΓòÉ
  6342.  
  6343. The statement defines the position and dimensions of the control within the 
  6344. parent window, as well as the control style. The CONTROL statement is most 
  6345. often used in a DIALOG or WINDOW statement. 
  6346.  
  6347. Typically, several CONTROL statements are used in each DIALOG statement, and 
  6348. each CONTROL statement must have a unique id value. The optional BEGIN and END 
  6349. statements enclose any CONTROL statements that may be given with the control. 
  6350. CONTROL statements given in this manner represent child windows belonging to 
  6351. the control created by the CONTROL statement. 
  6352.  
  6353. The CONTROL statement can actually contain any combination of CONTROL, DIALOG, 
  6354. and WINDOW statements, but it usually does not contain such statements. 
  6355.  
  6356.  
  6357. ΓòÉΓòÉΓòÉ 10.1.2.10.3. Example ΓòÉΓòÉΓòÉ
  6358.  
  6359. This example creates a push-button control with the WS_TABSTOP and WS_VISIBLE 
  6360. styles. 
  6361.  
  6362.   CONTROL "OK", 101, 10, 10, 20, 50, WC_BUTTON, BS_PUSHBUTTON Or
  6363.                                                 WS_TABSTOP    Or
  6364.                                                 WS_VISIBLE
  6365.  
  6366.  
  6367. ΓòÉΓòÉΓòÉ 10.1.2.11. CTEXT Statement ΓòÉΓòÉΓòÉ
  6368.  
  6369.  The CTEXT statement creates a centered-text control. 
  6370.  
  6371.  
  6372. ΓòÉΓòÉΓòÉ 10.1.2.11.1. Syntax ΓòÉΓòÉΓòÉ
  6373.  
  6374.   CTEXT text, id, x, y, width, height [, style]
  6375.  
  6376.  
  6377. ΓòÉΓòÉΓòÉ 10.1.2.11.2. Description ΓòÉΓòÉΓòÉ
  6378.  
  6379. The control is a simple rectangle displaying the given text centered in the 
  6380. rectangle. The text is formatted before it is displayed. Words that would 
  6381. extend past the end of a line are automatically wrapped to the beginning of the 
  6382. next line. 
  6383.  
  6384. The CTEXT statement defines the text, identifier, dimensions, and attributes of 
  6385. the control. The predefined class for this control is WC_STATIC. If you do not 
  6386. specify a style, the default style is SS_TEXT, DT_CENTER, and WS_GROUP. 
  6387.  
  6388. Use the CTEXT statement only in a DIALOG or WINDOW statement. 
  6389.  
  6390.  
  6391. ΓòÉΓòÉΓòÉ 10.1.2.11.3. Example ΓòÉΓòÉΓòÉ
  6392.  
  6393. This example creates a centered-text control that is labeled "Filename." 
  6394.  
  6395.   CTEXT "Filename", 101, 10, 10, 100, 100
  6396.  
  6397.  
  6398. ΓòÉΓòÉΓòÉ 10.1.2.12. CTLDATA Statement ΓòÉΓòÉΓòÉ
  6399.  
  6400.  The CTLDATA statement defines control data for a custom dialog box, window, or 
  6401. control. 
  6402.  
  6403.  
  6404. ΓòÉΓòÉΓòÉ 10.1.2.12.1. Syntax ΓòÉΓòÉΓòÉ
  6405.  
  6406.   CTLDATA word-value [, word-value] ...
  6407.  
  6408.   CTLDATA string
  6409.  
  6410.   CTLDATA MENU
  6411.   BEGIN
  6412.   menuitem-definition
  6413.      .
  6414.      .
  6415.      .
  6416.   END
  6417.  
  6418.  
  6419. ΓòÉΓòÉΓòÉ 10.1.2.12.2. Description ΓòÉΓòÉΓòÉ
  6420.  
  6421. The statement has three basic forms to permit specifying a menu or specifying 
  6422. data in words or characters. The data can be in any format, because only your 
  6423. window procedure will use it. The window procedure of the dialog box, window, 
  6424. or control receives this data when the item is created. It is up to the window 
  6425. procedure to process the data. 
  6426.  
  6427. CTLDATA is often used to supply data that controls the subsequent operation of 
  6428. the custom window. For example, the CTLDATA statement may contain extended 
  6429. style bits - that is, style bits designed specifically for your customized 
  6430. window. 
  6431.  
  6432. You should reserve the CTLDATA statement for window classes that you create 
  6433. yourself. 
  6434.  
  6435.  
  6436. ΓòÉΓòÉΓòÉ 10.1.2.12.3. Example ΓòÉΓòÉΓòÉ
  6437.  
  6438. This example creates a menu for the window created with the WINDOW statement. 
  6439.  
  6440.   WINDOWTEMPLATE 1
  6441.   BEGIN
  6442.       WINDOW "Sample", 1, 0, 0, 100, 100, "MYCLASS", 0, FCF_STANDARD
  6443.       CTLDATA MENU
  6444.       BEGIN
  6445.           MENUITEM "Exit", 101
  6446.       END
  6447.   END
  6448.  
  6449.  
  6450. ΓòÉΓòÉΓòÉ 10.1.2.13. DEFAULTICON Statement ΓòÉΓòÉΓòÉ
  6451.  
  6452. This statement installs the named icon file definition under the ICON Extended 
  6453. Attribute of the program file. 
  6454.  
  6455.  
  6456. ΓòÉΓòÉΓòÉ 10.1.2.13.1. Syntax ΓòÉΓòÉΓòÉ
  6457.  
  6458. DEFAULTICON filename
  6459.  
  6460.  
  6461. ΓòÉΓòÉΓòÉ 10.1.2.13.2. Description ΓòÉΓòÉΓòÉ
  6462.  
  6463. An icon with an icon-id of 1 is the default icon by default, unless you supply 
  6464. a different icon. 
  6465.  
  6466.  
  6467. ΓòÉΓòÉΓòÉ 10.1.2.13.3. Example ΓòÉΓòÉΓòÉ
  6468.  
  6469. DEFAULTICON filename.ico 
  6470.  
  6471.  
  6472. ΓòÉΓòÉΓòÉ 10.1.2.14. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  6473.  
  6474.  The DEFPUSHBUTTON statement creates a default push-button control. 
  6475.  
  6476.  
  6477. ΓòÉΓòÉΓòÉ 10.1.2.14.1. Syntax ΓòÉΓòÉΓòÉ
  6478.  
  6479. DEFPUSHBUTTON text, id, x, y, width, height [, style]
  6480.  
  6481.  
  6482. ΓòÉΓòÉΓòÉ 10.1.2.14.2. Description ΓòÉΓòÉΓòÉ
  6483.  
  6484. The control is a round-cornered rectangle containing the given text. The 
  6485. rectangle has a bold outline to represent that it is the default response for 
  6486. the user. The control sends a message to its parent window when the user 
  6487. chooses the control. The DEFPUSHBUTTON statement defines the text, identifier, 
  6488. dimensions, and attributes of the control. The predefined class for this 
  6489. control is WC_BUTTON. If you do not specify a style, the default style is 
  6490. BS_PUSHBUTTON, BS_DEFAULT, and WS_TABSTOP. 
  6491.  
  6492. Use the DEFPUSHBUTTON statement only in a DIALOG or WINDOW statement. 
  6493.  
  6494.  
  6495. ΓòÉΓòÉΓòÉ 10.1.2.14.3. Example ΓòÉΓòÉΓòÉ
  6496.  
  6497. This example creates a default push-button control that is labeled "Cancel." 
  6498.  
  6499. DEFPUSHBUTTON "Cancel", 101, 10, 10, 24, 50
  6500.  
  6501.  
  6502. ΓòÉΓòÉΓòÉ 10.1.2.15. DIALOG Statement ΓòÉΓòÉΓòÉ
  6503.  
  6504.  The DIALOG statement defines a window that an application can use to create 
  6505. dialog boxes. 
  6506.  
  6507.  
  6508. ΓòÉΓòÉΓòÉ 10.1.2.15.1. Syntax ΓòÉΓòÉΓòÉ
  6509.  
  6510. DIALOG text, id, x, y, width, height [, [style] [,framectl]] [data-definitions]
  6511. BEGIN
  6512. control-definition
  6513.     .
  6514.     .
  6515.     .
  6516. END
  6517.  
  6518.  
  6519. ΓòÉΓòÉΓòÉ 10.1.2.15.2. Description ΓòÉΓòÉΓòÉ
  6520.  
  6521. The statement defines the position and dimensions of the dialog box on the 
  6522. screen, as well as the dialog-box style. The DIALOG statement is most often 
  6523. used in a DLGTEMPLATE statement. 
  6524.  
  6525. Typically, you use only one DIALOG statement in each DLGTEMPLATE statement, and 
  6526. the DIALOG statement contains at least one control definition. 
  6527.  
  6528. The exact meaning of the coordinates depends on the style defined by the style 
  6529. field. For dialog boxes with FS_SCREENALIGN style, the coordinates are relative 
  6530. to the origin of the display screen. For dialog boxes with the style 
  6531. FS_MOUSEALIGN, the coordinates are relative to the position of the mouse 
  6532. pointer at the time the dialog box is created. For all other dialog boxes, the 
  6533. coordinates are relative to the origin of the parent window. 
  6534.  
  6535. The DIALOG statement can actually contain any combination of CONTROL, DIALOG, 
  6536. and WINDOW statements. Typically, a DIALOG statement contains one or more 
  6537. CONTROL statements. 
  6538.  
  6539.  
  6540. ΓòÉΓòÉΓòÉ 10.1.2.15.3. Example ΓòÉΓòÉΓòÉ
  6541.  
  6542. This example creates a dialog box that is labeled "Disk Error." 
  6543.  
  6544. DLGTEMPLATE 1
  6545. BEGIN
  6546.     DIALOG  "Disk Error", 100, 10, 10, 300, 110
  6547.     BEGIN
  6548.         CTEXT "Select One:", 1, 10, 80, 280, 12
  6549.         RADIOBUTTON "Retry", 2, 75, 50, 60, 12
  6550.         RADIOBUTTON "Abort", 3, 75, 30, 60, 12
  6551.         RADIOBUTTON "Ignore", 4, 75, 10, 60, 12
  6552.     END
  6553. END
  6554.  
  6555.  
  6556. ΓòÉΓòÉΓòÉ 10.1.2.16. DLGINCLUDE Statement ΓòÉΓòÉΓòÉ
  6557.  
  6558.  The DLGINCLUDE statement adds the specified file name to the resource file. 
  6559.  
  6560.  
  6561. ΓòÉΓòÉΓòÉ 10.1.2.16.1. Syntax ΓòÉΓòÉΓòÉ
  6562.  
  6563. DLGINCLUDE id filename
  6564.  
  6565.  
  6566. ΓòÉΓòÉΓòÉ 10.1.2.16.2. Description ΓòÉΓòÉΓòÉ
  6567.  
  6568. The DLGINCLUDE statement is typically used to let the application access the 
  6569. definitions file for the dialog box with the corresponding identifier. The file 
  6570. specified in the filename field must contain the define directives used by the 
  6571. dialog box. 
  6572.  
  6573. You can provide any number of DLGINCLUDE statements in a resource script file, 
  6574. but each must have a unique identifier. 
  6575.  
  6576.  
  6577. ΓòÉΓòÉΓòÉ 10.1.2.16.3. Example ΓòÉΓòÉΓòÉ
  6578.  
  6579. This example includes the name of the definition file dlgdef.h. The dialog-box 
  6580. identifier is 5. 
  6581.  
  6582. DLGINCLUDE 5 &bsl.&bsl.INCLUDE&bsl.&bsl.DLGDEF.H
  6583.  
  6584.  
  6585. ΓòÉΓòÉΓòÉ 10.1.2.17. DLGTEMPLATE Statement ΓòÉΓòÉΓòÉ
  6586.  
  6587.  The DLGTEMPLATE statement creates a dialog-box template. 
  6588.  
  6589.  
  6590. ΓòÉΓòÉΓòÉ 10.1.2.17.1. Syntax ΓòÉΓòÉΓòÉ
  6591.  
  6592. DLGTEMPLATE dialog-id [load-option] [mem-option]
  6593. BEGIN
  6594. dialog-definition
  6595.     .
  6596.     .
  6597.     .
  6598. END
  6599.  
  6600.  
  6601. ΓòÉΓòÉΓòÉ 10.1.2.17.2. Description ΓòÉΓòÉΓòÉ
  6602.  
  6603. A dialog-box template consists of a series of statements that define the 
  6604. identifier, load and memory options, dialog-box dimensions, and controls in the 
  6605. dialog box. The dialog-box template can be loaded from the executable file by 
  6606. using the WinLoadDlg function. 
  6607.  
  6608. You can provide any number of dialog-box templates in a resource script file, 
  6609. but each template must have a unique dialog-id value. 
  6610.  
  6611. A DLGTEMPLATE statement can actually contain DIALOG, CONTROL, and WINDOW 
  6612. statements. Typically, you include only one DIALOG statement. 
  6613.  
  6614.  
  6615. ΓòÉΓòÉΓòÉ 10.1.2.17.3. Example ΓòÉΓòÉΓòÉ
  6616.  
  6617. This example uses a DLGTEMPLATE statement to create a dialog box. 
  6618.  
  6619. DLGTEMPLATE ID_GETTIMER
  6620. BEGIN
  6621.     DIALOG "Timer", 1, 10, 10, 100, 40
  6622.     BEGIN
  6623.         LTEXT "Time (0 - 15):", 4, 8, 24, 72, 12
  6624.         ENTRYFIELD "0", ID_TIME, 80, 28, 16, 8, ES_MARGIN
  6625.         DEFPUSHBUTTON "Enter", ID_TIMEOK, 10, 6, 36, 12
  6626.         PUSHBUTTON "Cancel", ID_TIMECANCEL, 52, 6, 40, 12
  6627.     END
  6628. END
  6629.  
  6630.  
  6631. ΓòÉΓòÉΓòÉ 10.1.2.18. EDITTEXT Statement ΓòÉΓòÉΓòÉ
  6632.  
  6633.  The EDITTEXT statement creates an entry-field control. 
  6634.  
  6635.  
  6636. ΓòÉΓòÉΓòÉ 10.1.2.18.1. Syntax ΓòÉΓòÉΓòÉ
  6637.  
  6638. EDITTEXT text, id, x, y, width, height [, style]
  6639.  
  6640.  
  6641. ΓòÉΓòÉΓòÉ 10.1.2.18.2. Description ΓòÉΓòÉΓòÉ
  6642.  
  6643. This control is a rectangle in which the user can type and edit text. The 
  6644. control displays a pointer when the user selects the control. The user can then 
  6645. use the keyboard to enter text or edit the existing text. Editing keys include 
  6646. the BACKSPACE and DELETE keys. By using the mouse or the DIRECTION keys, the 
  6647. user can select the characters to delete or select the place to insert new 
  6648. characters. 
  6649.  
  6650. The EDITTEXT statement defines the text, identifier, dimensions, and attributes 
  6651. of a control window. The predefined class for this control is WC_ENTRYFIELD. If 
  6652. you do not specify a style, the default style is ES_AUTOSCROLL and WS_TABSTOP. 
  6653.  
  6654. The EDITTEXT control statement is identical to the ENTRYFIELD control 
  6655. statement. Use the EDITTEXT statement only in a DIALOG or WINDOW statement. 
  6656.  
  6657.  
  6658. ΓòÉΓòÉΓòÉ 10.1.2.18.3. Example ΓòÉΓòÉΓòÉ
  6659.  
  6660. This example creates an entry-field control that is not labeled. 
  6661.  
  6662.    EDITTEXT "", 101, 10, 10, 24, 50
  6663.  
  6664.  
  6665. ΓòÉΓòÉΓòÉ 10.1.2.19. ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  6666.  
  6667.  The ENTRYFIELD statement creates an entry-field control. 
  6668.  
  6669.  
  6670. ΓòÉΓòÉΓòÉ 10.1.2.19.1. Syntax ΓòÉΓòÉΓòÉ
  6671.  
  6672. ENTRYFIELD text, id, x, y, width, height [, style]
  6673.  
  6674.  
  6675. ΓòÉΓòÉΓòÉ 10.1.2.19.2. Description ΓòÉΓòÉΓòÉ
  6676.  
  6677. This control is a rectangle in which the user can type and edit text. The 
  6678. control displays a pointer when the user selects the control. The user can then 
  6679. use the keyboard to enter text or edit the existing text. Editing keys include 
  6680. the BACKSPACE and DELETE keys. By using the mouse or the DIRECTION keys, the 
  6681. user can select the characters to delete or select the place to insert new 
  6682. characters. The ENTRYFIELD statement, which you can use only in a DIALOG or 
  6683. WINDOW statement, defines the text, identifier, dimensions, and attributes of a 
  6684. control window. The predefined class for this control is WC_ENTRYFIELD. If you 
  6685. do not specify a style, the default style is ES_AUTOSCROLL and WS_TABSTOP. 
  6686.  
  6687.  
  6688. ΓòÉΓòÉΓòÉ 10.1.2.19.3. Example ΓòÉΓòÉΓòÉ
  6689.  
  6690. This example creates an entry-field control that is not labeled. 
  6691.  
  6692. ENTRYFIELD "", 101, 10, 10, 24, 50
  6693.  
  6694.  
  6695. ΓòÉΓòÉΓòÉ 10.1.2.20. FONT Statement ΓòÉΓòÉΓòÉ
  6696.  
  6697.  The FONT statement defines a font resource for an application. 
  6698.  
  6699.  
  6700. ΓòÉΓòÉΓòÉ 10.1.2.20.1. Syntax ΓòÉΓòÉΓòÉ
  6701.  
  6702. FONT font-id  [load-option] [mem-option] filename
  6703.  
  6704.  
  6705. ΓòÉΓòÉΓòÉ 10.1.2.20.2. Description ΓòÉΓòÉΓòÉ
  6706.  
  6707. A font resource, typically created by using the OS/2 Font Editor, is a bit map 
  6708. defining the shape of the individual characters in a character set. The FONT 
  6709. statement copies the font resource from the file specified in the filename 
  6710. field and adds it to the other resources of the application. A font resource 
  6711. can be loaded from the executable file when needed by using the GpiLoadFonts 
  6712. function. 
  6713.  
  6714. You can provide any number of FONT statements in a resource script file, but 
  6715. each statement must specify a unique font-id value. 
  6716.  
  6717.  
  6718. ΓòÉΓòÉΓòÉ 10.1.2.20.3. Example ΓòÉΓòÉΓòÉ
  6719.  
  6720. This example defines a font whose font identifier is 5. The font resource is 
  6721. copied from the file cmroman.fon. 
  6722.  
  6723. FONT 5 cmroman.fon
  6724.  
  6725.  
  6726. ΓòÉΓòÉΓòÉ 10.1.2.21. FRAME Statement ΓòÉΓòÉΓòÉ
  6727.  
  6728.  The FRAME statement defines a frame window. 
  6729.  
  6730.  
  6731. ΓòÉΓòÉΓòÉ 10.1.2.21.1. Syntax ΓòÉΓòÉΓòÉ
  6732.  
  6733. FRAME text, id, x, y, width, height, style [, framectl]
  6734.   data-definitions
  6735. [ BEGIN
  6736. window-definition
  6737.     .
  6738.     .
  6739.     .
  6740. END ]
  6741.  
  6742.  
  6743. ΓòÉΓòÉΓòÉ 10.1.2.21.2. Description ΓòÉΓòÉΓòÉ
  6744.  
  6745. The statement defines the title, identifier, position, and dimensions of the 
  6746. frame window, as well as the window style. The FRAME statement is most often 
  6747. used in a WINDOWTEMPLATE statement and, typically, only one FRAME statement is 
  6748. used. The FRAME statement, in turn, typically contains at least one WINDOW 
  6749. statement that defines the client window belonging to the frame window. 
  6750.  
  6751. The frame window has no default style. You must use the framectl field to 
  6752. define additional frame controls, such as a title bar and system menu, to be 
  6753. created when the frame window is created. If the text field is not empty, the 
  6754. statement automatically adds a title-bar control to the frame window, whether 
  6755. or not you specify the FCF_TITLEBAR style. Frame controls are given default 
  6756. styles and control identifiers, depending on their class. For example, a 
  6757. title-bar control receives the identifier FID_TITLEBAR. 
  6758.  
  6759. The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  6760. and WINDOW statements. Typically, a FRAME statement contains one WINDOW 
  6761. statement. 
  6762.  
  6763.  
  6764. ΓòÉΓòÉΓòÉ 10.1.2.21.3. Example ΓòÉΓòÉΓòÉ
  6765.  
  6766. This example creates a standard frame window with a title bar, a system menu, 
  6767. minimize and maximize boxes, and a vertical scroll bar. The FRAME statement 
  6768. contains a WINDOW statement defining the client window belonging to the frame 
  6769. window. 
  6770.  
  6771. WINDOWTEMPLATE 1
  6772. BEGIN
  6773.     FRAME "My Window", 1, 10, 10, 320, 130, 0,
  6774.             FCF_STANDARD Or FCF_VERTSCROLL
  6775.     BEGIN
  6776.         WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  6777.     END
  6778. END
  6779.  
  6780.  
  6781. ΓòÉΓòÉΓòÉ 10.1.2.22. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  6782.  
  6783.  The GROUPBOX statement creates a group-box control. 
  6784.  
  6785.  
  6786. ΓòÉΓòÉΓòÉ 10.1.2.22.1. Syntax ΓòÉΓòÉΓòÉ
  6787.  
  6788. GROUPBOX text, id, x, y, width, height [, style]
  6789.  
  6790.  
  6791. ΓòÉΓòÉΓòÉ 10.1.2.22.2. Description ΓòÉΓòÉΓòÉ
  6792.  
  6793. The control is a rectangle that groups other controls together by drawing a 
  6794. border around them and displaying the given text in the upper-left corner. 
  6795.  
  6796. The GROUPBOX statement defines the text, identifier, dimensions, and attributes 
  6797. of a control window. The predefined class for this control is WC_STATIC. If you 
  6798. do not specify a style, the default style is SS_GROUPBOX and WS_TABSTOP. 
  6799.  
  6800. Use the GROUPBOX statement only in a DIALOG or WINDOW statement. 
  6801.  
  6802.  
  6803. ΓòÉΓòÉΓòÉ 10.1.2.22.3. Example ΓòÉΓòÉΓòÉ
  6804.  
  6805. This example creates a group-box control that is labeled "Options." 
  6806.  
  6807. GROUPBOX "Options", 101, 10, 10, 100, 100
  6808.  
  6809.  
  6810. ΓòÉΓòÉΓòÉ 10.1.2.23. HELPITEM Statement ΓòÉΓòÉΓòÉ
  6811.  
  6812.  The HELPITEM statement defines the help items in a help table. 
  6813.  
  6814.  
  6815. ΓòÉΓòÉΓòÉ 10.1.2.23.1. Syntax ΓòÉΓòÉΓòÉ
  6816.  
  6817. HELPITEM application-window-id, help-subtable-id, extended-helppanel-id
  6818.  
  6819.  
  6820. ΓòÉΓòÉΓòÉ 10.1.2.23.2. Description ΓòÉΓòÉΓòÉ
  6821.  
  6822. This statement specifies the resource identifier of an application window for 
  6823. which help is provided, along with the resource identifiers of the help 
  6824. subtable and extended help panel associated with the application window. 
  6825.  
  6826. You can provide any number of HELPITEM statements in a HELPTABLE statement. You 
  6827. should provide one HELPITEM statement for each application window for which 
  6828. help is provided. 
  6829.  
  6830. Use the HELPITEM statement only in a HELPTABLE statement. 
  6831.  
  6832.  
  6833. ΓòÉΓòÉΓòÉ 10.1.2.23.3. Example ΓòÉΓòÉΓòÉ
  6834.  
  6835. This example defines a help item that associates a help subtable called 
  6836. IDSUB_FILEMENU and an extended help panel called IDEXT_APPHLP with an 
  6837. application window called IDWIN_FILEMENU. 
  6838.  
  6839. HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  6840.  
  6841.  
  6842. ΓòÉΓòÉΓòÉ 10.1.2.24. HELPSUBITEM Statement ΓòÉΓòÉΓòÉ
  6843.  
  6844.  The HELPSUBITEM statement defines the help subitems in a help  subtable. 
  6845.  
  6846.  
  6847. ΓòÉΓòÉΓòÉ 10.1.2.24.1. Syntax ΓòÉΓòÉΓòÉ
  6848.  
  6849. HELPSUBITEM child-window-id, helppanel-id [, integer] ...
  6850.  
  6851.  
  6852. ΓòÉΓòÉΓòÉ 10.1.2.24.2. Description ΓòÉΓòÉΓòÉ
  6853.  
  6854. This statement specifies the identifier of a child window for which help is 
  6855. provided, the identifier of the help panel associated with the child window, 
  6856. and one or more optional, application-defined integers. 
  6857.  
  6858. You can provide any number of HELPSUBITEM statements in a HELPSUBTABLE 
  6859. statement. You should provide one HELPSUBITEM statement for each child window 
  6860. for which help is provided. 
  6861.  
  6862. Use the HELPSUBITEM statement only in a HELPSUBTABLE statement. 
  6863.  
  6864.  
  6865. ΓòÉΓòÉΓòÉ 10.1.2.24.3. Example ΓòÉΓòÉΓòÉ
  6866.  
  6867. This example defines a help subitem that associates a child window called 
  6868. IDCLD_FILEMENU with a help panel called IDHP_FILEMENU. 
  6869.  
  6870. HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU
  6871.  
  6872.  
  6873. ΓòÉΓòÉΓòÉ 10.1.2.25. HELPSUBTABLE Statement ΓòÉΓòÉΓòÉ
  6874.  
  6875.  The HELPSUBTABLE statement defines the contents of a help-subtable resource. 
  6876.  
  6877.  
  6878. ΓòÉΓòÉΓòÉ 10.1.2.25.1. Syntax ΓòÉΓòÉΓòÉ
  6879.  
  6880. HELPSUBTABLE helpsubtable-id
  6881.  [SUBITEMSIZE size]
  6882. BEGIN
  6883. helpsubitem-definition
  6884.     .
  6885.     .
  6886.     .
  6887. END
  6888.  
  6889.  
  6890. ΓòÉΓòÉΓòÉ 10.1.2.25.2. Description ΓòÉΓòÉΓòÉ
  6891.  
  6892. A help-subtable resource contains a help-subitem entry for each item that can 
  6893. be selected in an application window. Each of these items should be a child 
  6894. window of the application window specified in the help-table resource. The help 
  6895. subtable should contain a help subitem for each control, child window, and menu 
  6896. item in the application window. 
  6897.  
  6898. You can provide any number of HELPSUBTABLE statements in a resource script 
  6899. file, but each statement must specify a unique helpsubtable-id value. You can 
  6900. also provide any number of helpsubitem-definition statements in the help 
  6901. subtable. These specify the child window for which help is provided, the help 
  6902. panel containing the help text for the child window, and one or more 
  6903. application-defined integers. 
  6904.  
  6905. If you include optional integers in the helpsubitem-definition statements, you 
  6906. must also include a SUBITEMSIZE statement to specify the size, in words, of 
  6907. each help subitem. All help subitems in a help subtable must be the same size. 
  6908. The default size is two words per help subitem. 
  6909.  
  6910.  
  6911. ΓòÉΓòÉΓòÉ 10.1.2.25.3. Example ΓòÉΓòÉΓòÉ
  6912.  
  6913. This example creates a help-subtable resource whose help-subtable identifier is 
  6914. IDSUB_FILEMENU. Each HELPSUBITEM statement specifies a child window and a help 
  6915. panel. 
  6916.  
  6917. HELPSUBTABLE IDSUB_FILEMENU
  6918. BEGIN
  6919.     HELPSUBITEM IDCLD_OPEN, IDPNL_OPEN
  6920.     HELPSUBITEM IDCLD_SAVE, IDPNL_SAVE
  6921. END
  6922.  
  6923.  
  6924. ΓòÉΓòÉΓòÉ 10.1.2.26. HELPTABLE Statement ΓòÉΓòÉΓòÉ
  6925.  
  6926.  The HELPTABLE statement defines the contents of a help-table resource. 
  6927.  
  6928.  
  6929. ΓòÉΓòÉΓòÉ 10.1.2.26.1. Syntax ΓòÉΓòÉΓòÉ
  6930.  
  6931. HELPTABLE helptable-id
  6932. BEGIN
  6933. helpitem-definition
  6934.     .
  6935.     .
  6936.     .
  6937. END
  6938.  
  6939.  
  6940. ΓòÉΓòÉΓòÉ 10.1.2.26.2. Description ΓòÉΓòÉΓòÉ
  6941.  
  6942. A help-table resource contains a help-item entry for each application window, 
  6943. dialog box, and message box for which help is provided. 
  6944.  
  6945. You can provide any number of HELPTABLE statements in a resource script file, 
  6946. but each statement must specify a unique helptable-id value. You can also 
  6947. provide any number of helpitem-definition statements in the help table. These 
  6948. statements specify the application windows for which help is provided, the help 
  6949. subtables associated with each application window, and the extended help panels 
  6950. associated with each application window. 
  6951.  
  6952.  
  6953. ΓòÉΓòÉΓòÉ 10.1.2.26.3. Example ΓòÉΓòÉΓòÉ
  6954.  
  6955. This example creates a help-table resource whose help-table identifier is 1. 
  6956. Each HELPITEM statement specifies an application window, a help subtable, and 
  6957. an extended help panel. 
  6958.  
  6959. HELPTABLE 1
  6960. BEGIN
  6961.     HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  6962.     HELPITEM IDWIN_EDITMENU, IDSUB_EDITMENU, IDEXT_APPHLP
  6963. END
  6964.  
  6965.  
  6966. ΓòÉΓòÉΓòÉ 10.1.2.27. ICON Statement (Resource) ΓòÉΓòÉΓòÉ
  6967.  
  6968.  This form of the ICON statement defines an icon resource for an application. 
  6969.  
  6970.  
  6971. ΓòÉΓòÉΓòÉ 10.1.2.27.1. Syntax ΓòÉΓòÉΓòÉ
  6972.  
  6973. ICON icon-id [load-option] [mem-option] filename
  6974.  
  6975.  
  6976. ΓòÉΓòÉΓòÉ 10.1.2.27.2. Description ΓòÉΓòÉΓòÉ
  6977.  
  6978. An icon resource, typically created by using the Icon Editor, is a bit map 
  6979. defining the shape of the icon to be used for a given application. The ICON 
  6980. statement copies the icon resource from the file specified in the filename 
  6981. field and adds it to the application's other resources. An icon resource can be 
  6982. loaded when creating a window by using the WinCreateStdWindow function with the 
  6983. FS_ICON style. 
  6984.  
  6985. You can provide any number of ICON statements in a resource script file, but 
  6986. each statement must specify a unique icon-id value. 
  6987.  
  6988. An icon with an icon-id of 1 is the default icon. The RC program writes the 
  6989. icon not only to the resources in your executable file but also as the .ICON 
  6990. extended attribute. 
  6991.  
  6992.  
  6993. ΓòÉΓòÉΓòÉ 10.1.2.27.3. Example ΓòÉΓòÉΓòÉ
  6994.  
  6995. This example defines an icon whose icon identifier is 11. The icon resource is 
  6996. copied from the file custom.ico. 
  6997.  
  6998. ICON 11 custom.ico
  6999.  
  7000.  
  7001. ΓòÉΓòÉΓòÉ 10.1.2.28. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  7002.  
  7003.  This form of the ICON statement creates an icon control. 
  7004.  
  7005.  
  7006. ΓòÉΓòÉΓòÉ 10.1.2.28.1. Syntax ΓòÉΓòÉΓòÉ
  7007.  
  7008. ICON icon-id, id, x, y, width, height [, style]
  7009.  
  7010.  
  7011. ΓòÉΓòÉΓòÉ 10.1.2.28.2. Description ΓòÉΓòÉΓòÉ
  7012.  
  7013. This control is an icon displayed in a dialog box. The ICON statement defines 
  7014. the icon-resource identifier, icon-control identifier, and  position and 
  7015. attributes of a control window. The predefined class for this control is 
  7016. WC_STATIC. If you do not specify a style, the default style is SS_ICON. For the 
  7017. ICON statement, the width and height fields are ignored; the icon automatically 
  7018. sizes itself. 
  7019.  
  7020. Use the ICON statement only in a DIALOG or WINDOW statement. 
  7021.  
  7022.  
  7023. ΓòÉΓòÉΓòÉ 10.1.2.28.3. Example ΓòÉΓòÉΓòÉ
  7024.  
  7025. This example creates an icon control whose icon identifier is 99. 
  7026.  
  7027. ICON 99, 101, 10, 10, 0, 0
  7028.  
  7029.  
  7030. ΓòÉΓòÉΓòÉ 10.1.2.29. LISTBOX Statement ΓòÉΓòÉΓòÉ
  7031.  
  7032.  The LISTBOX statement creates commonly-used controls for a dialog box or 
  7033. window. 
  7034.  
  7035.  
  7036. ΓòÉΓòÉΓòÉ 10.1.2.29.1. Syntax ΓòÉΓòÉΓòÉ
  7037.  
  7038. LISTBOX id, x, y, width, height [, style]
  7039.  
  7040.  
  7041. ΓòÉΓòÉΓòÉ 10.1.2.29.2. Description ΓòÉΓòÉΓòÉ
  7042.  
  7043. The control is a rectangle containing a list of user-selectable strings, such 
  7044. as file names. 
  7045.  
  7046. The LISTBOX statement defines the identifier, dimensions, and attributes of a 
  7047. control window. The predefined class for this control is WC_LISTBOX. If you do 
  7048. not specify a style, the default style is WS_TABSTOP. 
  7049.  
  7050. Use the LISTBOX statement only in a DIALOG or WINDOW statement. 
  7051.  
  7052.  
  7053. ΓòÉΓòÉΓòÉ 10.1.2.29.3. Example ΓòÉΓòÉΓòÉ
  7054.  
  7055. This example creates a list-box control whose identifier is 101. 
  7056.  
  7057. LISTBOX 101, 10, 10, 100, 100
  7058.  
  7059.  
  7060. ΓòÉΓòÉΓòÉ 10.1.2.30. LTEXT Statement ΓòÉΓòÉΓòÉ
  7061.  
  7062.  The LTEXT statement creates a left-aligned text control. 
  7063.  
  7064.  
  7065. ΓòÉΓòÉΓòÉ 10.1.2.30.1. Syntax ΓòÉΓòÉΓòÉ
  7066.  
  7067. LTEXT text, id, x, y, width, height [, style]
  7068.  
  7069.  
  7070. ΓòÉΓòÉΓòÉ 10.1.2.30.2. Description ΓòÉΓòÉΓòÉ
  7071.  
  7072. The control is a simple rectangle displaying the given text left-aligned in the 
  7073. rectangle. The text is formatted before it is displayed. Words that would 
  7074. extend past the end of a line are automatically wrapped to the beginning of the 
  7075. next line. The LTEXT statement defines the text, identifier, dimensions, and 
  7076. attributes of the control. The predefined class for this control is WC_STATIC. 
  7077. If you do not specify a style, the default style is SS_TEXT, DT_LEFT, and 
  7078. WS_GROUP. 
  7079.  
  7080. Use the LTEXT statement only in a DIALOG or WINDOW statement. 
  7081.  
  7082.  
  7083. ΓòÉΓòÉΓòÉ 10.1.2.30.3. Example ΓòÉΓòÉΓòÉ
  7084.  
  7085. This example creates a left-aligned text control that is labeled "Filename." 
  7086.  
  7087. LTEXT "Filename", 101, 10, 10, 100, 100
  7088.  
  7089.  
  7090. ΓòÉΓòÉΓòÉ 10.1.2.31. MENU Statement ΓòÉΓòÉΓòÉ
  7091.  
  7092.  The MENU statement defines the contents of a menu resource. 
  7093.  
  7094.  
  7095. ΓòÉΓòÉΓòÉ 10.1.2.31.1. Syntax ΓòÉΓòÉΓòÉ
  7096.  
  7097. MENU menu-id [load-option] [mem-option]
  7098. BEGIN
  7099. menuitem-definition
  7100.     .
  7101.     .
  7102.     .
  7103. END
  7104.  
  7105.  
  7106. ΓòÉΓòÉΓòÉ 10.1.2.31.2. Description ΓòÉΓòÉΓòÉ
  7107.  
  7108. A menu resource is a collection of information that defines the appearance and 
  7109. function of an application menu. A menu is a special input tool that lets a 
  7110. user choose commands from a list of command names. A menu resource can be 
  7111. loaded from the executable file when needed by using the WinLoadMenu function. 
  7112.  
  7113. You can provide any number of MENU statements in a resource script file, but 
  7114. each statement must specify a unique menu-id value. You can provide any number 
  7115. of menuitem-definition statements in the menu. These define the submenus and 
  7116. menu items (commands) in the menu. The order of the statements defines the 
  7117. order of the menu items. 
  7118.  
  7119.  
  7120. ΓòÉΓòÉΓòÉ 10.1.2.31.3. Example ΓòÉΓòÉΓòÉ
  7121.  
  7122. This example creates a menu resource whose menu identifier is 1. The menu 
  7123. contains a menu item named Alpha and a submenu named Beta. The submenu contains 
  7124. two menu items:  Item 1 and Item 2. 
  7125.  
  7126. MENU 1
  7127. BEGIN
  7128.     MENUITEM "Alpha", 100
  7129.     SUBMENU "Beta", 101
  7130.     BEGIN
  7131.         MENUITEM "Item 1", 200
  7132.         MENUITEM "Item 2", 201, , MIA_CHECKED
  7133.     END
  7134. END
  7135.  
  7136.  
  7137. ΓòÉΓòÉΓòÉ 10.1.2.32. MENUITEM Statement ΓòÉΓòÉΓòÉ
  7138.  
  7139.  The MENUITEM statement creates a menu item for a menu. 
  7140.  
  7141.  
  7142. ΓòÉΓòÉΓòÉ 10.1.2.32.1. Syntax ΓòÉΓòÉΓòÉ
  7143.  
  7144. MENUITEM text, menu-id [, menuitem-style [, menuitem-attributerbrk.]
  7145.  
  7146.  
  7147. ΓòÉΓòÉΓòÉ 10.1.2.32.2. Description ΓòÉΓòÉΓòÉ
  7148.  
  7149. This statement defines the text, identifier, and attributes of a menu item. Use 
  7150. the MENUITEM statement only in a MENU or SUBMENU statement. 
  7151.  
  7152. The system displays the text when it displays the corresponding menu. If the 
  7153. user chooses the menu item, the system generates a WM_COMMAND message that 
  7154. includes the specified menu-item identifier and sends it to the window owning 
  7155. the menu. 
  7156.  
  7157. You can provide any number of MENUITEM statements, but each must have a unique 
  7158. menu-id value. 
  7159.  
  7160. The alternative form of the MENUITEM statement, MENUITEM SEPARATOR, creates a 
  7161. menu separator. A menu separator is a horizontal dividing bar between two menu 
  7162. items in a submenu. The separator is not active - that is, the user cannot 
  7163. choose it, it has no text associated with it, and it has no identifier. 
  7164.  
  7165. You can use the \t or \a character combination in any item name. The \t 
  7166. character inserts a tab when the name is displayed and is typically used to 
  7167. separate the menu-item name from the name of an accelerator key. The \a 
  7168. character aligns to the right all text that follows it. These characters are 
  7169. intended to be used for menu items in submenus only. The width of the displayed 
  7170. submenu is always adjusted so there is at least one space (and usually more) 
  7171. between any pieces of text separated by a \t or \a. (When compiling the menu 
  7172. resource, the compiler stores the \t and \a characters as control characters. 
  7173. For example, the \t is stored as 0x09.) 
  7174.  
  7175. A tilde ( ~ ) character in the item name indicates that the following character 
  7176. is used as a mnemonic character for the item. When the menu is displayed, the 
  7177. tilde is not shown, but the mnemonic character is underlined. The user can 
  7178. choose the menu item by pressing the key corresponding to the underlined 
  7179. mnemonic character. 
  7180.  
  7181.  
  7182. ΓòÉΓòÉΓòÉ 10.1.2.32.3. Example ΓòÉΓòÉΓòÉ
  7183.  
  7184. This example creates a menu item named Alpha. The item identifier is 101. 
  7185.  
  7186. MENUITEM "Alpha", 101
  7187.  
  7188. This example creates a menu item named Beta. The item identifier is 102. The 
  7189. menu item has a text style and a checked attribute. 
  7190.  
  7191. MENUITEM "Beta", 102, MIS_TEXT, MIA_CHECKED
  7192.  
  7193. This example creates a menu separator between menu items named Gamma and Delta. 
  7194.  
  7195. MENUITEM "Gamma", 103
  7196. MENUITEM SEPARATOR
  7197. MENUITEM "Delta", 104
  7198.  
  7199. This example creates a menu item that has a bit map instead of a name. The 
  7200. bit-map identifier, 1, is first defined using a BITMAP statement. The 
  7201. identifier for the menu item is 301. Note that a # sign must be placed in front 
  7202. of the bit map identifier in the MENUITEM statement. 
  7203.  
  7204. BITMAP 1 mybitmap.bmp
  7205.  
  7206. MENUITEM "#1", 301, MIS_BITMAP
  7207.  
  7208.  
  7209. ΓòÉΓòÉΓòÉ 10.1.2.33. MESSAGETABLE Statement ΓòÉΓòÉΓòÉ
  7210.  
  7211.  The MESSAGETABLE statement creates one or more string resources for an 
  7212. application. 
  7213.  
  7214.  
  7215. ΓòÉΓòÉΓòÉ 10.1.2.33.1. Syntax ΓòÉΓòÉΓòÉ
  7216.  
  7217. MESSAGETABLE [load-option] [mem-option]
  7218. BEGIN
  7219. string-id string-definition
  7220.     .
  7221.     .
  7222.     .
  7223. END
  7224.  
  7225.  
  7226. ΓòÉΓòÉΓòÉ 10.1.2.33.2. Description ΓòÉΓòÉΓòÉ
  7227.  
  7228. A string resource is a null-terminated character string that has a unique 
  7229. string identifier. A string resource can be loaded from the executable file 
  7230. when needed by using the DosGetResource function with the RT_MESSAGE resource 
  7231. type. RT_MESSAGE resources are bundled together in groups of 16, with any 
  7232. missing IDs replaced with zero length strings. Each group, or bundle, is 
  7233. assigned a unique sequential ID. The resource string ID is not necessarily the 
  7234. same as the ID specified when using DosGetResource. The formula for calculating 
  7235. the ID of the resource bundle, for use in DosGetResource, is as follows: 
  7236.  
  7237. bundle ID := ( id / 16) +1,
  7238. where id is the string ID assigned in the RC file. 
  7239.  
  7240. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  7241. and so on. Once the address of the bundle has been returned by DosGetResource 
  7242. (using the calculated ID), the buffer can be parsed to locate the particular 
  7243. string within the bundle. The number of the string is calculated by the 
  7244. formula: 
  7245.  
  7246. string := id % 16
  7247. (string = remainder for id/16). 
  7248.  
  7249. The buffer returned consists of the CodePage of the strings in the first 
  7250. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  7251. is the length of the string (including the null terminator), followed by the 
  7252. string and the terminator. A zero length string is represented by two bytes: 
  7253. 01 (string length) followed by the null terminator. 
  7254.  
  7255. You can provide any number of MESSAGETABLE statements in a resource script 
  7256. file. The compiler treats all the strings from the various MESSAGETABLE 
  7257. statements as if they belonged to a single statement. This means that no two 
  7258. strings in a resource script file can have the same string identifier. 
  7259.  
  7260. Although the MESSAGETABLE and STRINGTABLE statements are nearly identical, most 
  7261. applications use the STRINGTABLE statement instead of the MESSAGETABLE 
  7262. statement to create string resources. 
  7263.  
  7264. You can continue a string on multiple lines by terminating the line with a 
  7265. backslash (\) or by terminating the line with a double quotation mark (") and 
  7266. then starting the next line with a double quotation mark. 
  7267.  
  7268.  
  7269. ΓòÉΓòÉΓòÉ 10.1.2.33.3. Example ΓòÉΓòÉΓòÉ
  7270.  
  7271. This example creates two string resources whose string identifiers are 1 and 2. 
  7272.  
  7273. MESSAGETABLE
  7274. BEGIN
  7275.     1 "Filename not found"
  7276.     2 "Cannot open file for reading"
  7277. END
  7278.  
  7279.  
  7280. ΓòÉΓòÉΓòÉ 10.1.2.34. MLE Statement ΓòÉΓòÉΓòÉ
  7281.  
  7282.  The MLE statement creates a multiple-line entry-field control. 
  7283.  
  7284.  
  7285. ΓòÉΓòÉΓòÉ 10.1.2.34.1. Syntax ΓòÉΓòÉΓòÉ
  7286.  
  7287. MLE text, id, x, y, width, height [, style]
  7288.  
  7289.  
  7290. ΓòÉΓòÉΓòÉ 10.1.2.34.2. Description ΓòÉΓòÉΓòÉ
  7291.  
  7292. The control is a rectangle in which the user can type and edit multiple lines 
  7293. of text. The control displays a pointer when the user selects it. The user can 
  7294. then use the keyboard to enter text or edit the existing text. Editing keys 
  7295. include the BACKSPACE and DELETE keys. By using the mouse or the DIRECTION 
  7296. keys, the user can select the characters to delete or select the place to 
  7297. insert new characters. The MLE statement, which you can use only in a DIALOG or 
  7298. WINDOW statement, defines the text, identifier, dimensions, and attributes of a 
  7299. control window. The predefined class for this control is WC_MLE. If you do not 
  7300. specify a style, the default style is MLS_BORDER, WS_GROUP, and WS_TABSTOP. 
  7301.  
  7302.  
  7303. ΓòÉΓòÉΓòÉ 10.1.2.34.3. Example ΓòÉΓòÉΓòÉ
  7304.  
  7305. This example creates a multiple-line entry-field control that is not labeled. 
  7306.  
  7307. MLE "", 101, 10, 10, 50, 100
  7308.  
  7309.  
  7310. ΓòÉΓòÉΓòÉ 10.1.2.35. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  7311.  
  7312.  The NOTEBOOK statement creates a notebook control within the dialog window. 
  7313.  
  7314.  
  7315. ΓòÉΓòÉΓòÉ 10.1.2.35.1. Syntax ΓòÉΓòÉΓòÉ
  7316.  
  7317. NOTEBOOK   id, x, y, width, height [, style]
  7318.  
  7319.  
  7320. ΓòÉΓòÉΓòÉ 10.1.2.35.2. Description ΓòÉΓòÉΓòÉ
  7321.  
  7322. This control is used to organize information on individual pages so that it can 
  7323. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  7324. position, dimensions, and attributes of a notebook control. The predefined 
  7325. class for this control is WC_NOTEBOOK. If you do not specify a style, the 
  7326. default style is WS_TABSTOP and WS_VISIBLE. 
  7327.  
  7328. Use the NOTEBOOK statement only in a DIALOG or WINDOW statement. 
  7329.  
  7330.  
  7331. ΓòÉΓòÉΓòÉ 10.1.2.35.3. Example ΓòÉΓòÉΓòÉ
  7332.  
  7333. This example creates a notebook control at position (20, 20) within the dialog 
  7334. window. The notebook has a width of 200 character units and a height of 50 
  7335. character units. Its resource ID is 201. The tabs style BKS_ROUNDEDTABS 
  7336. specification overrides the notebook default style of square tabs. The default 
  7337. styles WS_TABSTOP and WS_GROUP are both in effect, although only the latter is 
  7338. specified. 
  7339.  
  7340. Const
  7341.   IDC_NOTEBOOK     = 201;
  7342.   IDD_NOTEBOOKDLG  = 503;
  7343. DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN Or
  7344.         WS_VISIBLE, FCF_SYSMENU Or FCF_TITLEBAR
  7345.   BEGIN
  7346.     NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS Or WS_GROUP
  7347.   END
  7348.  
  7349.  
  7350. ΓòÉΓòÉΓòÉ 10.1.2.36. POINTER Statement ΓòÉΓòÉΓòÉ
  7351.  
  7352.  The POINTER statement defines a pointer resource for an application. 
  7353.  
  7354.  
  7355. ΓòÉΓòÉΓòÉ 10.1.2.36.1. Syntax ΓòÉΓòÉΓòÉ
  7356.  
  7357. POINTER pointer-id [load-option] [mem-option] filename
  7358.  
  7359.  
  7360. ΓòÉΓòÉΓòÉ 10.1.2.36.2. Description ΓòÉΓòÉΓòÉ
  7361.  
  7362. A pointer resource, typically created by using the OS/2 Icon Editor, is a bit 
  7363. map defining the shape of the mouse pointer on the screen. The POINTER 
  7364. statement copies the pointer resource from the file specified in the filename 
  7365. field and adds it to the application's other resources. A pointer resource can 
  7366. be loaded from the executable file when needed by using the WinLoadPointer 
  7367. function. 
  7368.  
  7369. You can provide any number of POINTER statements in a resource script file, but 
  7370. each statement must specify a unique pointer-id value. 
  7371.  
  7372.  
  7373. ΓòÉΓòÉΓòÉ 10.1.2.36.3. Example ΓòÉΓòÉΓòÉ
  7374.  
  7375. This example defines a pointer whose pointer identifier is 10. The pointer 
  7376. resource is copied from the file custom.cur. 
  7377.  
  7378. POINTER 10 custom.cur
  7379.  
  7380.  
  7381. ΓòÉΓòÉΓòÉ 10.1.2.37. PRESPARAMS Statement ΓòÉΓòÉΓòÉ
  7382.  
  7383.  The PRESPARAMS statement defines presentation fields that customize a dialog 
  7384. box, menu, window, or control. 
  7385.  
  7386.  
  7387. ΓòÉΓòÉΓòÉ 10.1.2.37.1. Syntax ΓòÉΓòÉΓòÉ
  7388.  
  7389. PRESPARAMS presparam, value [, value]  ...
  7390.  
  7391.  
  7392. ΓòÉΓòÉΓòÉ 10.1.2.37.2. Description ΓòÉΓòÉΓòÉ
  7393.  
  7394. PRESPARAMS data is a series of types and values. The window procedure of the 
  7395. dialog box, menu, window, or control receives and processes this data when the 
  7396. item is created. The data for custom controls can be in any format. 
  7397.  
  7398. PRESPARAMS is often used to supply data to control the appearance of the 
  7399. customized window when it is first created. For example, the PRESPARAMS 
  7400. statement may specify the colors to be used in the window. 
  7401.  
  7402.  
  7403. ΓòÉΓòÉΓòÉ 10.1.2.37.3. Example ΓòÉΓòÉΓòÉ
  7404.  
  7405. This example creates a menu resource with a menu identifier of 1. The 
  7406. PRESPARAMS statement specifies that the following three menu items be displayed 
  7407. in the 12-point Helvetica** font. 
  7408.  
  7409. MENU 1
  7410. BEGIN
  7411.     PRESPARAMS PP_FONTNAMESIZE, "12.Helv"
  7412.     MENUITEM "New", 100
  7413.     MENUITEM "Open", 101
  7414.     MENUITEM "Save", 102
  7415. END
  7416.  
  7417.  
  7418. ΓòÉΓòÉΓòÉ 10.1.2.38. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  7419.  
  7420.  The PUSHBUTTON statement creates a push-button control. 
  7421.  
  7422.  
  7423. ΓòÉΓòÉΓòÉ 10.1.2.38.1. Syntax ΓòÉΓòÉΓòÉ
  7424.  
  7425. PUSHBUTTON text, id, x, y, width, height [, style ]
  7426.  
  7427.  
  7428. ΓòÉΓòÉΓòÉ 10.1.2.38.2. Description ΓòÉΓòÉΓòÉ
  7429.  
  7430. The control is a round-cornered rectangle containing the given text. The 
  7431. control sends a message to its parent whenever the user chooses the control. 
  7432. The PUSHBUTTON statement defines the text, identifier, dimensions, and 
  7433. attributes of a control window. The predefined class for this control is 
  7434. WC_BUTTON. If you do not specify a style, the default style is BS_PUSHBUTTON 
  7435. and WS_TABSTOP. 
  7436.  
  7437. Use the PUSHBUTTON statement only in a DIALOG or WINDOW statement. 
  7438.  
  7439.  
  7440. ΓòÉΓòÉΓòÉ 10.1.2.38.3. Example ΓòÉΓòÉΓòÉ
  7441.  
  7442. This example creates a push-button control that is labeled "OK." 
  7443.  
  7444. PUSHBUTTON "OK", 101, 10, 10, 100, 100
  7445.  
  7446.  
  7447. ΓòÉΓòÉΓòÉ 10.1.2.39. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  7448.  
  7449.  The RADIOBUTTON statement creates a radio-button control, which is a small 
  7450. circle that has the given text displayed to its right. 
  7451.  
  7452.  
  7453. ΓòÉΓòÉΓòÉ 10.1.2.39.1. Syntax ΓòÉΓòÉΓòÉ
  7454.  
  7455. RADIOBUTTON text, id, x, y, width, height [, style]
  7456.  
  7457.  
  7458. ΓòÉΓòÉΓòÉ 10.1.2.39.2. Description ΓòÉΓòÉΓòÉ
  7459.  
  7460. The control highlights the circle and sends a message to its parent window when 
  7461. the user selects the button. The control removes the highlight and sends a 
  7462. message when the button is next selected. The RADIOBUTTON statement defines the 
  7463. text, identifier, dimensions, and attributes of a control window. The 
  7464. predefined class for this control is WC_BUTTON. If you do not specify a style, 
  7465. the default style is BS_RADIOBUTTON. 
  7466.  
  7467. Use the RADIOBUTTON statement only in a DIALOG or WINDOW statement. 
  7468.  
  7469.  
  7470. ΓòÉΓòÉΓòÉ 10.1.2.39.3. Example ΓòÉΓòÉΓòÉ
  7471.  
  7472. This example creates a radio-button control that is labeled "Italic." 
  7473.  
  7474. RADIOBUTTON "Italic", 101, 10, 10, 24, 50
  7475.  
  7476.  
  7477. ΓòÉΓòÉΓòÉ 10.1.2.40. RCDATA Statement ΓòÉΓòÉΓòÉ
  7478.  
  7479.  The RCDATA statement defines a custom-data resource for an application. 
  7480.  
  7481.  
  7482. ΓòÉΓòÉΓòÉ 10.1.2.40.1. Syntax ΓòÉΓòÉΓòÉ
  7483.  
  7484. RCDATA resource-id
  7485. BEGIN
  7486. data-definition [, data-definition]   ...
  7487.     .
  7488.     .
  7489.     .
  7490. END
  7491.  
  7492.  
  7493. ΓòÉΓòÉΓòÉ 10.1.2.40.2. Description ΓòÉΓòÉΓòÉ
  7494.  
  7495. The custom data can be in whatever format the application requires. You can 
  7496. provide any number of RCDATA statements in a resource script file, but each 
  7497. statement must specify a unique resource-id value. A custom-data resource can 
  7498. be loaded from the executable file when needed by using the DosGetResource or 
  7499. DosGetResource2 functions with the RT_RCDATA resource type. 
  7500.  
  7501.  
  7502. ΓòÉΓòÉΓòÉ 10.1.2.40.3. Example ΓòÉΓòÉΓòÉ
  7503.  
  7504. This example defines custom data that has a resource identifier of 5. 
  7505.  
  7506. RCDATA 5
  7507. BEGIN
  7508.     "E. A. Poe", 1849, -32, 3L, 0x8000000l, 3+4+5
  7509. END
  7510.  
  7511.  
  7512. ΓòÉΓòÉΓòÉ 10.1.2.41. RCINCLUDE Statement ΓòÉΓòÉΓòÉ
  7513.  
  7514.  The RCINCLUDE statement causes RC to process the resource script file 
  7515. specified in the filename field along with the current resource script file. 
  7516.  
  7517.  
  7518. ΓòÉΓòÉΓòÉ 10.1.2.41.1. Syntax ΓòÉΓòÉΓòÉ
  7519.  
  7520. RCINCLUDE filename
  7521.  
  7522.  
  7523. ΓòÉΓòÉΓòÉ 10.1.2.41.2. Description ΓòÉΓòÉΓòÉ
  7524.  
  7525. The contents of both script files are compiled by RC and the results are placed 
  7526. in one binary resource file and/or executable file. 
  7527.  
  7528. RCINCLUDE statements are processed before any other processing is done, 
  7529. including preprocessing by RCPP.EXE, which removes comments, replaces values in 
  7530. the define directives, and so forth. 
  7531.  
  7532. When specifying a high performance file system (HPFS) file name on an RCINCLUDE 
  7533. statement, enclose the path and file name in double quotes; for example: 
  7534.  
  7535.    RCINCLUDE &odq.d:&bslash.project&bslash.long dialog&per.dlg&cdq.
  7536.  
  7537. Double quotes enable the resource compiler to recognize a name containing 
  7538. embedded blank characters. 
  7539.  
  7540.  
  7541. ΓòÉΓòÉΓòÉ 10.1.2.41.3. Example ΓòÉΓòÉΓòÉ
  7542.  
  7543. This example includes the file DIALOGS.RC as part of the current resource 
  7544. script file. 
  7545.  
  7546. RCINCLUDE dialogs.rc
  7547.  
  7548.  
  7549. ΓòÉΓòÉΓòÉ 10.1.2.42. RESOURCE Statement ΓòÉΓòÉΓòÉ
  7550.  
  7551.  The RESOURCE statement defines a custom resource for an application. 
  7552.  
  7553.  
  7554. ΓòÉΓòÉΓòÉ 10.1.2.42.1. Syntax ΓòÉΓòÉΓòÉ
  7555.  
  7556. RESOURCE type-id resource-id [load-option] [mem-option] filename
  7557.  
  7558.  
  7559. ΓòÉΓòÉΓòÉ 10.1.2.42.2. Description ΓòÉΓòÉΓòÉ
  7560.  
  7561. A custom resource can be any data in any format. The RESOURCE statement copies 
  7562. the custom resource from the specified file and adds it to the application's 
  7563. other resources. A custom resource can be loaded from the executable file when 
  7564. needed by using the DosGetResource or DosGetResource2 function and specifying 
  7565. the resource's type and resource identifier. 
  7566.  
  7567. You can provide any number of RESOURCE statements in a resource script file, 
  7568. but each statement must specify a unique combination of type-id and resource-id 
  7569. values. That is, RESOURCE statements having the same type-id value are 
  7570. permitted as long as the resource-id value for each is unique. 
  7571.  
  7572.  
  7573. ΓòÉΓòÉΓòÉ 10.1.2.42.3. Example ΓòÉΓòÉΓòÉ
  7574.  
  7575. This example defines a custom resource whose type identifier is 300 and whose 
  7576. resource identifier is 14. The custom resource is copied from the file 
  7577. CUSTOM.RES. 
  7578.  
  7579. RESOURCE 300 14 custom.res
  7580.  
  7581.  
  7582. ΓòÉΓòÉΓòÉ 10.1.2.43. RTEXT Statement ΓòÉΓòÉΓòÉ
  7583.  
  7584.  The RTEXT statement creates a right-aligned text control. 
  7585.  
  7586.  
  7587. ΓòÉΓòÉΓòÉ 10.1.2.43.1. Syntax ΓòÉΓòÉΓòÉ
  7588.  
  7589. RTEXT text, id, x, y, width, height [, style]
  7590.  
  7591.  
  7592. ΓòÉΓòÉΓòÉ 10.1.2.43.2. Description ΓòÉΓòÉΓòÉ
  7593.  
  7594. The control is a simple rectangle displaying the given text right-aligned in 
  7595. the rectangle. The text is formatted before it is displayed. Words that would 
  7596. extend past the end of a line are automatically wrapped to the beginning of the 
  7597. next line. The RTEXT statement, which you can use only in a DIALOG or WINDOW 
  7598. statement, defines the text, identifier, dimensions, and attributes of the 
  7599. control. The predefined class for the control is WC_STATIC. If you do not 
  7600. specify a style, the default style is SS_TEXT, DT_RIGHT, and WS_GROUP. 
  7601.  
  7602.  
  7603. ΓòÉΓòÉΓòÉ 10.1.2.43.3. Example ΓòÉΓòÉΓòÉ
  7604.  
  7605. This example creates a right-aligned text control that is labeled "Filename." 
  7606.  
  7607. RTEXT "Filename", 101, 10, 10, 100, 100
  7608.  
  7609.  
  7610. ΓòÉΓòÉΓòÉ 10.1.2.44. SLIDER Statement ΓòÉΓòÉΓòÉ
  7611.  
  7612.  The SLIDER statement creates a slider control within the dialog window. 
  7613.  
  7614.  
  7615. ΓòÉΓòÉΓòÉ 10.1.2.44.1. Syntax ΓòÉΓòÉΓòÉ
  7616.  
  7617. SLIDER   id, x, y, width, height [, style]
  7618.  
  7619.  
  7620. ΓòÉΓòÉΓòÉ 10.1.2.44.2. Description ΓòÉΓòÉΓòÉ
  7621.  
  7622. This control lets the user set, display, or modify a value by moving a slider 
  7623. arm along a slider shaft. The SLIDER statement defines the identifier, 
  7624. position, dimensions, and attributes of a slider control. The predefined class 
  7625. for this control is WC_SLIDER. If you do not specify a style, the default style 
  7626. is WS_TABSTOP and WS_VISIBLE. 
  7627.  
  7628. Use the SLIDER statement only in a DIALOG or WINDOW statement. 
  7629.  
  7630.  
  7631. ΓòÉΓòÉΓòÉ 10.1.2.44.3. Example ΓòÉΓòÉΓòÉ
  7632.  
  7633. This example creates a slider control at position (40, 30) within the dialog 
  7634. window.  The slider has a width of 120 character units and a height of 2 
  7635. character units.  Its resource ID is 101. The style specification 
  7636. SLS_BUTTONSLEFT adds buttons to the left of the slider shaft.  The default 
  7637. styles WS_TABSTOP and WS_VISIBLE are both in effect, although only the latter 
  7638. is specified. 
  7639.  
  7640. Const
  7641.   IDC_SLIDER       = 101;
  7642.   IDD_SLIDERDLG    = 502;
  7643.  
  7644. DIALOG "Slider", IDD_SLIDERDLG, 11, 11, 200, 240, FS_NOBYTEALIGN Or
  7645.         WS_VISIBLE, FCF_SYSMENU Or FCF_TITLEBAR
  7646.   BEGIN
  7647.     SLIDER   IDC_SLIDER, 40, 30, 120, 16, SLS_BUTTONSLEFT Or WS_VISIBLE
  7648.   END
  7649.  
  7650.  
  7651. ΓòÉΓòÉΓòÉ 10.1.2.45. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  7652.  
  7653.  The SPINBUTTON statement creates a spin-button control within the dialog 
  7654. window. 
  7655.  
  7656.  
  7657. ΓòÉΓòÉΓòÉ 10.1.2.45.1. Syntax ΓòÉΓòÉΓòÉ
  7658.  
  7659. SPINBUTTON   id, x, y, width, height [, style]
  7660.  
  7661.  
  7662. ΓòÉΓòÉΓòÉ 10.1.2.45.2. Description ΓòÉΓòÉΓòÉ
  7663.  
  7664. This control gives the user quick access to a finite set of data. The 
  7665. SPINBUTTON statement defines the identifier, position, dimensions, and 
  7666. attributes of a spin-button control. The predefined class for this control is 
  7667. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  7668. WS_VISIBLE, and SPBS_MASTER. 
  7669.  
  7670. Use the SPINBUTTON statement only in a DIALOG or WINDOW statement. 
  7671.  
  7672.  
  7673. ΓòÉΓòÉΓòÉ 10.1.2.45.3. Example ΓòÉΓòÉΓòÉ
  7674.  
  7675. This example creates a spin-button control at position (80, 20) within the 
  7676. dialog window. The spin button has a width of 60 character units and a height 
  7677. of 3 character units. Its resource ID is 302. The style specification 
  7678. SPBS_NUMERICONLY creates a control which accepts only the digits 0-9 and 
  7679. virtual keys. The default styles SPBS_MASTER, WS_TABSTOP, and WS_VISIBLE are 
  7680. all in effect, although only WS_TABSTOP is specified. 
  7681.  
  7682. Const
  7683.   IDC_SPINBUTTON  = 302;
  7684.   IDD_SPINDLG     = 502;
  7685. DIALOG "Spin button", IDD_SPINDLG, 11, 11, 200, 240, FS_NOBYTEALIGN Or
  7686.         WS_VISIBLE, FCF_SYSMENU Or FCF_TITLEBAR
  7687.   BEGIN
  7688.     SPINBUTTON  IDC_SPINBUTTON, 80, 20, 60, 24, SPBS_NUMERICONLY Or WS_TABSTOP
  7689.   END
  7690.  
  7691.  
  7692. ΓòÉΓòÉΓòÉ 10.1.2.46. STRINGTABLE Statement ΓòÉΓòÉΓòÉ
  7693.  
  7694.  The STRINGTABLE statement creates one or more string resources for an 
  7695. application. 
  7696.  
  7697.  
  7698. ΓòÉΓòÉΓòÉ 10.1.2.46.1. Syntax ΓòÉΓòÉΓòÉ
  7699.  
  7700. STRINGTABLE [load-option] [mem-option]
  7701. BEGIN
  7702. string-id string-definition
  7703.     .
  7704.     .
  7705.     .
  7706. END
  7707.  
  7708.  
  7709. ΓòÉΓòÉΓòÉ 10.1.2.46.2. Description ΓòÉΓòÉΓòÉ
  7710.  
  7711. A string resource is a null-terminated character string that has a unique 
  7712. string identifier. A string resource can be loaded from the executable file 
  7713. when needed by using WinLoadString or with DosGetResource with the RT_STRING 
  7714. resource type. RT_STRING resources are bundled together in groups of 16, with 
  7715. any missing IDs replaced with zero length strings. Each group, or bundle, is 
  7716. assigned a unique sequential ID. The resource string ID is not necessarily the 
  7717. same as the ID specified when using DosGetResource. The formula for calculating 
  7718. the ID of the resource bundle, for use in DosGetResource, is as follows: 
  7719.  
  7720. bundle ID := ( id / 16) +1
  7721. where id is the string ID assigned in the RC file. 
  7722.  
  7723. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  7724. and so on. Once the address of the bundle has been returned by DosGetResource 
  7725. (using the calculated ID), the buffer can be parsed to locate the particular 
  7726. string within the bundle. The number of the string is calculated by the 
  7727. formula: 
  7728.  
  7729. string := id % 16
  7730. (string = remainder for id/16). 
  7731.  
  7732. The buffer returned consists of the CodePage of the strings in the first 
  7733. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  7734. is the length of the string (including the null terminator), followed by the 
  7735. string and the terminator. A zero length string is represented by two bytes: 
  7736. 01 (string length) followed by the null terminator. 
  7737.  
  7738. You can provide any number of STRINGTABLE statements in a resource script file. 
  7739. The compiler treats all the strings from the various STRINGTABLE statements as 
  7740. if they belonged to a single statement. This means that no two strings in a 
  7741. resource script file can have the same string identifier. 
  7742.  
  7743. You can continue a string on multiple lines by terminating the line with a 
  7744. backslash (\) or by terminating the line with a double quotation mark (") and 
  7745. then starting the next line with a double quotation mark. 
  7746.  
  7747.  
  7748. ΓòÉΓòÉΓòÉ 10.1.2.46.3. Example ΓòÉΓòÉΓòÉ
  7749.  
  7750. This example creates two string resources whose string identifiers are 1 and 2. 
  7751.  
  7752. Const
  7753.   IDS_HELLO   = 1;
  7754.   IDS_GOODBYE = 2;
  7755.  
  7756. STRINGTABLE
  7757. BEGIN
  7758.     IDS_HELLO   "Hello"
  7759.     IDS_GOODBYE "Goodbye"
  7760. END
  7761.  
  7762.  
  7763. ΓòÉΓòÉΓòÉ 10.1.2.47. SUBITEMSIZE Statement ΓòÉΓòÉΓòÉ
  7764.  
  7765.  The SUBITEMSIZE statement specifies the size, in words, of each help subitem 
  7766. in a help subtable. 
  7767.  
  7768.  
  7769. ΓòÉΓòÉΓòÉ 10.1.2.47.1. Syntax ΓòÉΓòÉΓòÉ
  7770.  
  7771. SUBITEMSIZE  size
  7772.  
  7773.  
  7774. ΓòÉΓòÉΓòÉ 10.1.2.47.2. Description ΓòÉΓòÉΓòÉ
  7775.  
  7776. The minimum size is two words, and each help subitem in a help subtable must be 
  7777. the same size. When used, the SUBITEMSIZE statement must appear after the 
  7778. HELPSUBTABLE statement and before the BEGIN keyword. 
  7779.  
  7780. You do not need to use the SUBITEMSIZE statement if the help subitems are the 
  7781. default size (2). 
  7782.  
  7783.  
  7784. ΓòÉΓòÉΓòÉ 10.1.2.47.3. Example ΓòÉΓòÉΓòÉ
  7785.  
  7786. The SUBITEMSIZE statement in this example specifies that each HELPSUBITEM 
  7787. statement contains three words. 
  7788.  
  7789. HELPSUBTABLE 1
  7790. SUBITEMSIZE 3
  7791. BEGIN
  7792.     HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU, 5
  7793.     HELPSUBITEM IDCLD_HELPMENU, IDHP_HELPMENU, 6
  7794. END
  7795.  
  7796.  
  7797. ΓòÉΓòÉΓòÉ 10.1.2.48. SUBMENU Statement ΓòÉΓòÉΓòÉ
  7798.  
  7799.  The SUBMENU statement creates a submenu for a given menu. 
  7800.  
  7801.  
  7802. ΓòÉΓòÉΓòÉ 10.1.2.48.1. Syntax ΓòÉΓòÉΓòÉ
  7803.  
  7804. SUBMENU text, submenu-id [, menuitem-style[, menuitem-attributerbrk.]
  7805. BEGIN
  7806. menuitem-definition
  7807.     .
  7808.     .
  7809.     .
  7810. END
  7811.  
  7812.  
  7813. ΓòÉΓòÉΓòÉ 10.1.2.48.2. Description ΓòÉΓòÉΓòÉ
  7814.  
  7815. A submenu is a vertical list of menu items from which the user can choose a 
  7816. command. 
  7817.  
  7818. You can provide any number of SUBMENU statements in a MENU statement, but each 
  7819. SUBMENU statement must specify a unique submenu-id value. You can provide any 
  7820. number of menuitem-definition statements in the SUBMENU statement. These define 
  7821. the menu items (commands) in the menu. The order of the statements determines 
  7822. the order of the menu items. 
  7823.  
  7824.  
  7825. ΓòÉΓòÉΓòÉ 10.1.2.48.3. Example ΓòÉΓòÉΓòÉ
  7826.  
  7827. This example creates a submenu named Elements. Its identifier is 2. The submenu 
  7828. contains three menu items, which are created by using MENUITEM statements. 
  7829.  
  7830. SUBMENU "Elements", 2
  7831. BEGIN
  7832.     MENUITEM "Oxygen", 200
  7833.     MENUITEM "Carbon", 201, , MIA_CHECKED
  7834.     MENUITEM "Hydrogen", 202
  7835. END
  7836.  
  7837.  
  7838. ΓòÉΓòÉΓòÉ 10.1.2.49. VALUESET Statement ΓòÉΓòÉΓòÉ
  7839.  
  7840.  The VALUESET statement creates a value set control within the dialog window. 
  7841.  
  7842.  
  7843. ΓòÉΓòÉΓòÉ 10.1.2.49.1. Syntax ΓòÉΓòÉΓòÉ
  7844.  
  7845. VALUESET   id, x, y, width, height [, style]
  7846.  
  7847.  
  7848. ΓòÉΓòÉΓòÉ 10.1.2.49.2. Description ΓòÉΓòÉΓòÉ
  7849.  
  7850. This control lets a user select one choice from a group of mutually exclusive 
  7851. choices. The VALUESET statement defines the identifier, position, dimensions, 
  7852. and attributes of a value set control. The predefined class for this control is 
  7853. WC_VALUESET. If you do not specify a style, the default style is WS_TABSTOP and 
  7854. WS_VISIBLE. 
  7855.  
  7856. Use the VALUESET statement only in a DIALOG or WINDOW statement. 
  7857.  
  7858.  
  7859. ΓòÉΓòÉΓòÉ 10.1.2.49.3. Example ΓòÉΓòÉΓòÉ
  7860.  
  7861. This example creates a value set control at position (40, 40) within the dialog 
  7862. window. The value set control has a width of 220 character units and a height 
  7863. of 20 character units. Its resource ID is 302. The style specification VS_ICON 
  7864. creates a control to show items in icon form. The default styles WS_TABSTOP and 
  7865. WS_VISIBLE are both in effect, although only WS_TABSTOP is specified. 
  7866.  
  7867. Const
  7868.   IDC_VALUESET     = 302;
  7869.   IDD_VALUESETDLG  = 501;
  7870. DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  7871.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  7872.   BEGIN
  7873.     VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  7874.   END
  7875.  
  7876.  
  7877. ΓòÉΓòÉΓòÉ 10.1.2.50. WINDOW Statement ΓòÉΓòÉΓòÉ
  7878.  
  7879.  The WINDOW statement creates a window of the specified class. 
  7880.  
  7881.  
  7882. ΓòÉΓòÉΓòÉ 10.1.2.50.1. Syntax ΓòÉΓòÉΓòÉ
  7883.  
  7884. WINDOW text, id, x, y, width, height, class [, style [, framect]]
  7885.   data-definitions
  7886. [ BEGIN
  7887. control-definition
  7888.     .
  7889.     .
  7890.     .
  7891. END ]
  7892.  
  7893.  
  7894. ΓòÉΓòÉΓòÉ 10.1.2.50.2. Description ΓòÉΓòÉΓòÉ
  7895.  
  7896. The statement defines the position and dimensions of the window relative to its 
  7897. parent window, as well as the window-box style. The WINDOW statement is 
  7898. typically used in a WINDOWTEMPLATE or FRAME statement. 
  7899.  
  7900. Usually, only one WINDOW statement is used in a FRAME statement. It defines the 
  7901. client window belonging to the corresponding frame window. The optional BEGIN 
  7902. and END keywords enclose any CONTROL statements that are given with the window. 
  7903. CONTROL statements given in this manner represent child windows belonging to 
  7904. the window created by the WINDOW statement. 
  7905.  
  7906. The WINDOW statement can actually contain any combination of CONTROL, DIALOG, 
  7907. and WINDOW statements. Typically, a WINDOW statement contains one or no such 
  7908. statements. 
  7909.  
  7910.  
  7911. ΓòÉΓòÉΓòÉ 10.1.2.50.3. Example ΓòÉΓòÉΓòÉ
  7912.  
  7913. This example creates a client window belonging to the frame window. The client 
  7914. window belongs to the "MyClientClass" window class and has the standard window 
  7915. identifier FID_CLIENT. 
  7916.  
  7917. WINDOWTEMPLATE 1
  7918. BEGIN
  7919.     FRAME "My Window", 1, 10, 10, 320, 130,
  7920.              0, FCF_STANDARD | FCF_VERTSCROLL
  7921.     BEGIN
  7922.         WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  7923.     END
  7924. END
  7925.  
  7926.  
  7927. ΓòÉΓòÉΓòÉ 10.1.2.51. WINDOWTEMPLATE Statement ΓòÉΓòÉΓòÉ
  7928.  
  7929.  The WINDOWTEMPLATE statement creates a window template. 
  7930.  
  7931.  
  7932. ΓòÉΓòÉΓòÉ 10.1.2.51.1. Syntax ΓòÉΓòÉΓòÉ
  7933.  
  7934. WINDOWTEMPLATE window-id [load-option] [mem-option]
  7935. BEGIN
  7936. window-definition
  7937.     .
  7938.     .
  7939.     .
  7940. END
  7941.  
  7942.  
  7943. ΓòÉΓòÉΓòÉ 10.1.2.51.2. Description ΓòÉΓòÉΓòÉ
  7944.  
  7945. A window template consists of a series of statements that define the window 
  7946. identifier, load and memory options, window dimensions, and controls in the 
  7947. window. The window template can be loaded from the executable file by using the 
  7948. WinLoadDlg function. 
  7949.  
  7950. You can provide any number of window templates in a resource script file, but 
  7951. each template must have a unique window-id value. 
  7952.  
  7953. A WINDOWTEMPLATE statement can contain DIALOG, CONTROL, and WINDOW statements. 
  7954. Typically, only one WINDOW statement is used in the WINDOWTEMPLATE statement. 
  7955.  
  7956.  
  7957. ΓòÉΓòÉΓòÉ 10.2. Directive Descriptions ΓòÉΓòÉΓòÉ
  7958.  
  7959. This section provides the syntax, a description, and an example of each of the 
  7960. directives. 
  7961.  
  7962.  
  7963. ΓòÉΓòÉΓòÉ 10.2.1. #define Directive ΓòÉΓòÉΓòÉ
  7964.  
  7965. The #define directive assigns the given value to the specified name. All 
  7966. subsequent occurrences of the name are replaced by the value. 
  7967.  
  7968.  
  7969. ΓòÉΓòÉΓòÉ 10.2.1.1. Syntax ΓòÉΓòÉΓòÉ
  7970.  
  7971.  #define name value
  7972.  
  7973.  
  7974. ΓòÉΓòÉΓòÉ 10.2.1.2. Example ΓòÉΓòÉΓòÉ
  7975.  
  7976. This example assigns values to the names "NONZERO" and "USERCLASS". 
  7977.  
  7978. Const
  7979.   NONZERO    = 1;
  7980.   USERCLASS  = 'MyControlClass';
  7981.  
  7982.  
  7983. ΓòÉΓòÉΓòÉ 10.2.2. #elif Directive ΓòÉΓòÉΓòÉ
  7984.  
  7985. The #elif directive marks an optional clause of a conditional-compilation block 
  7986. defined by a #ifdef, #ifndef, or #if directive. The directive controls 
  7987. conditional compilation of the resource file by checking the specified constant 
  7988. expression. If the constant expression is nonzero, #elif directs the compiler 
  7989. to continue processing statements up to the next #endif, #else, or #elif 
  7990. directive and then skip to the statement after #endif. If the constant 
  7991. expression is zero, #elif directs the compiler to skip to the next #endif, 
  7992. #else, or #elif directive. You can use any number of #elif directives in a 
  7993. conditional block. 
  7994.  
  7995.  
  7996. ΓòÉΓòÉΓòÉ 10.2.2.1. Syntax ΓòÉΓòÉΓòÉ
  7997.  
  7998. #elif constant-expression
  7999.  
  8000.  
  8001. ΓòÉΓòÉΓòÉ 10.2.2.2. Example ΓòÉΓòÉΓòÉ
  8002.  
  8003. In this example, #elif directs the compiler to process the second BITMAP 
  8004. statement only if the value assigned to the name "Version" is less than 7. The 
  8005. #elif directive itself is processed only if Version is greater than or equal to 
  8006. 3. 
  8007.  
  8008. #if Version < 3
  8009. BITMAP 1 errbox.bmp
  8010. #elif Version < 7
  8011. BITMAP 1 userbox.bmp
  8012. #endif
  8013.  
  8014.  
  8015. ΓòÉΓòÉΓòÉ 10.2.3. #else Directive ΓòÉΓòÉΓòÉ
  8016.  
  8017. The #else directive marks an optional clause of a conditional-compilation block 
  8018. defined by a #ifdef, #ifndef, or #if directive. The #else directive must be the 
  8019. last directive before the #endif directive. 
  8020.  
  8021. This directive has no arguments. 
  8022.  
  8023.  
  8024. ΓòÉΓòÉΓòÉ 10.2.3.1. Syntax ΓòÉΓòÉΓòÉ
  8025.  
  8026. #else 
  8027.  
  8028.  
  8029. ΓòÉΓòÉΓòÉ 10.2.3.2. Example ΓòÉΓòÉΓòÉ
  8030.  
  8031. This example compiles the second BITMAP statement only if the name "DEBUG" is 
  8032. not defined. 
  8033.  
  8034.     #ifdef DEBUG
  8035.         BITMAP 1 errbox.bmp
  8036.     #else
  8037.         BITMAP 1 userbox.bmp
  8038.     #endif
  8039.  
  8040.  
  8041. ΓòÉΓòÉΓòÉ 10.2.4. #endif directive ΓòÉΓòÉΓòÉ
  8042.  
  8043. The #endif directive marks the end of a conditional-compilation block defined 
  8044. by a #ifdef directive. One #endif is required for each #if, #ifdef, or #ifndef 
  8045. directive. 
  8046.  
  8047. This directive has no arguments. 
  8048.  
  8049.  
  8050. ΓòÉΓòÉΓòÉ 10.2.4.1. Syntax ΓòÉΓòÉΓòÉ
  8051.  
  8052. #endif 
  8053.  
  8054.  
  8055. ΓòÉΓòÉΓòÉ 10.2.5. #if Directive ΓòÉΓòÉΓòÉ
  8056.  
  8057. The #if directive controls conditional compilation of the resource file by 
  8058. checking the specified constant expression. If the constant expression is 
  8059. nonzero, #if directs the compiler to continue processing statements up to the 
  8060. next #endif, #else, or #elif directive and then skip to the statement after the 
  8061. #endif directive. If the constant expression is zero, it directs the compiler 
  8062. to skip to the next #endif, #else, or #elif directive. 
  8063.  
  8064.  
  8065. ΓòÉΓòÉΓòÉ 10.2.5.1. Syntax ΓòÉΓòÉΓòÉ
  8066.  
  8067. #If constant-expression
  8068.  
  8069.  
  8070. ΓòÉΓòÉΓòÉ 10.2.5.2. Example ΓòÉΓòÉΓòÉ
  8071.  
  8072. This example compiles the BITMAP statement only if the value assigned to the 
  8073. name "Version" is less than 3. 
  8074.  
  8075. #if Version < 3
  8076. BITMAP 1 errbox.bmp
  8077. #endif
  8078.  
  8079.  
  8080. ΓòÉΓòÉΓòÉ 10.2.6. #ifdef Directive ΓòÉΓòÉΓòÉ
  8081.  
  8082. The #ifdef directive controls conditional compilation of the resource file by 
  8083. checking the specified name. If the name has been defined by using a define 
  8084. directive or by using the -d command-line option of rc, #ifdef directs the 
  8085. compiler to continue with the statement immediately after the #ifdef directive. 
  8086. If the name has not been defined, #ifdef directs the compiler to skip all 
  8087. statements up to the next #endif directive. 
  8088.  
  8089.  
  8090. ΓòÉΓòÉΓòÉ 10.2.6.1. Syntax ΓòÉΓòÉΓòÉ
  8091.  
  8092. #ifdef name 
  8093.  
  8094.  
  8095. ΓòÉΓòÉΓòÉ 10.2.6.2. Example ΓòÉΓòÉΓòÉ
  8096.  
  8097. This example compiles the BITMAP statement only if the name "Debug" is defined. 
  8098.  
  8099. #ifdef Debug
  8100. BITMAP 1 errbox.bmp
  8101. #endif
  8102.  
  8103.  
  8104. ΓòÉΓòÉΓòÉ 10.2.7. #ifndef Directive ΓòÉΓòÉΓòÉ
  8105.  
  8106. The #ifndef directive controls conditional compilation of the resource file by 
  8107. checking the specified name. If the name has not been defined or if its 
  8108. definition has been removed by using the #undef directive, #ifndef directs the 
  8109. compiler to continue processing statements up to the next #endif, #else, or 
  8110. #elif directive and then skip to the statement after the #endif directive. If 
  8111. the name is defined, #ifndef directs the compiler to skip to the next #endif, 
  8112. #else, or #elif directive. 
  8113.  
  8114.  
  8115. ΓòÉΓòÉΓòÉ 10.2.7.1. Syntax ΓòÉΓòÉΓòÉ
  8116.  
  8117. #ifndef name 
  8118.  
  8119.  
  8120. ΓòÉΓòÉΓòÉ 10.2.7.2. Example ΓòÉΓòÉΓòÉ
  8121.  
  8122. This example compiles the BITMAP statement only if the name "Optimize" is not 
  8123. defined. 
  8124.  
  8125. #ifndef Optimize
  8126. BITMAP 1 errbox.bmp
  8127. #endif
  8128.  
  8129.  
  8130. ΓòÉΓòÉΓòÉ 10.2.8. #include Directive ΓòÉΓòÉΓòÉ
  8131.  
  8132. The #include directive causes RC to process the file specified in the filename 
  8133. field. This file should be a header file that defines the constants used in the 
  8134. resource script file. Only the define directives in the specified file are 
  8135. processed. All other statements are ignored. 
  8136.  
  8137. The filename field is handled as a C string. Therefore, you must include two 
  8138. backslashes (\\) wherever one is required in the path. (As an alternative, you 
  8139. can use a single forward slash (/) instead of two backslashes.) 
  8140.  
  8141.  
  8142. ΓòÉΓòÉΓòÉ 10.2.8.1. Syntax ΓòÉΓòÉΓòÉ
  8143.  
  8144. #include filename
  8145.  
  8146.  
  8147. ΓòÉΓòÉΓòÉ 10.2.8.2. Example ΓòÉΓòÉΓòÉ
  8148.  
  8149. This example processes the header files OS2.H and HEADERS\MYDEFS.H\I while 
  8150. compiling the resource script file. 
  8151.  
  8152. #include <os2.h>
  8153. #include "headers&bsl.&bsl.&bsl.&bsl.mydefs.h"
  8154.  
  8155.  
  8156. ΓòÉΓòÉΓòÉ 10.2.9. #undef Directive ΓòÉΓòÉΓòÉ
  8157.  
  8158. The undef directive removes the current definition of the specIfied name. All 
  8159. subsequent occurrences of the name are processed without replacement. 
  8160.  
  8161.  
  8162. ΓòÉΓòÉΓòÉ 10.2.9.1. Syntax ΓòÉΓòÉΓòÉ
  8163.  
  8164. #undef name 
  8165.  
  8166.  
  8167. ΓòÉΓòÉΓòÉ 10.2.9.2. Example ΓòÉΓòÉΓòÉ
  8168.  
  8169. This example removes the definitions for the names "nonzero" and "USERCLASS". 
  8170.  
  8171. #undef     nonzero
  8172. #undef     USERCLASS
  8173.  
  8174.  
  8175. ΓòÉΓòÉΓòÉ 10.3. Using Resource Files ΓòÉΓòÉΓòÉ
  8176.  
  8177. This section explains how to create a resource script file, compile it using 
  8178. the Resource Compiler (RC.EXE), and optionally add the resources to your 
  8179. executable file. Resource script files have a default file-name extension of 
  8180. .RC. 
  8181.  
  8182. For resource information on the individual controls, see the chapter on the 
  8183. specific control. For example, an example of a resource script file for frame 
  8184. windows is in Frame Windows. 
  8185.  
  8186.  
  8187. ΓòÉΓòÉΓòÉ 10.3.1. Creating and Compiling a Resource File ΓòÉΓòÉΓòÉ
  8188.  
  8189. The resource compiler (RC) compiles a resource script file to create a new 
  8190. file, called a binary resource file, which has a .RES file-name extension. The 
  8191. binary resource file can be added to the executable file of the application, 
  8192. thereby replacing any existing resources in that file. 
  8193.  
  8194. The RC command line has the following three basic forms: 
  8195.  
  8196.   rc resource-script-file [executable-file]
  8197.  
  8198.   rc binary-resource-file [executable-file]
  8199.  
  8200.   rc -r  resource-script-file [binary-resource-file]
  8201.  
  8202. Note:  The third option does not add to the executable file.
  8203.  
  8204.   The resource-script-file parameter is the file name of the resource script 
  8205.  file to be compiled. 
  8206.  
  8207.  The executable-file parameter must be the name of the executable file to 
  8208.  receive the compiled resources. This is a file having a file-name extension of 
  8209.  either .EXE or .DLL. If you omit the executable-file field, RC adds the 
  8210.  compiled resources to the executable file that has the same name as the 
  8211.  resource script file but which has the .EXE file-name extension. 
  8212.  
  8213.  The binary-resource-file parameter is the name of the binary resource file to 
  8214.  be added to the executable file. 
  8215.  
  8216.  The -r option directs RC to compile the resource script file without adding it 
  8217.  to an executable file. 
  8218.  
  8219.  
  8220. ΓòÉΓòÉΓòÉ 10.3.1.1. Compiling and Adding Resources to the .EXE File ΓòÉΓòÉΓòÉ
  8221.  
  8222. To compile the resource script file EXAMPLE.RC and add the result to the 
  8223. executable file EXAMPLE.EXE, use the following command: 
  8224.  
  8225.   rc example
  8226.  
  8227. You do not need to specify the .RC extension. RC creates the binary resource 
  8228. file EXAMPLE.RES and adds the compiled resource to the executable file 
  8229. EXAMPLE.EXE. 
  8230.  
  8231.  
  8232. ΓòÉΓòÉΓòÉ 10.3.1.2. Compiling without Adding Resources to the .EXE File ΓòÉΓòÉΓòÉ
  8233.  
  8234. To compile the resource script file EXAMPLE.RC into a binary resource file 
  8235. without adding the resources to an executable file, use the following command: 
  8236.  
  8237.   rc -r example
  8238.  
  8239. The compiler creates the binary resource file EXAMPLE.RES. To create a binary 
  8240. resource file that has a name different from the resource script file, use the 
  8241. following command: 
  8242.  
  8243.   rc -r example newfile.res
  8244.  
  8245.  
  8246. ΓòÉΓòÉΓòÉ 10.3.1.3. Adding the Compiled Resources to the .EXE File ΓòÉΓòÉΓòÉ
  8247.  
  8248. To add the compiled resources in the binary resource file EXAMPLE.RES to an 
  8249. executable file, use the following command: 
  8250.  
  8251.   rc example.res
  8252.  
  8253. To specify the name of the executable file, if the name is different from the 
  8254. resource file, use the following command: 
  8255.  
  8256.   rc example.res newfile.exe
  8257.  
  8258.  
  8259. ΓòÉΓòÉΓòÉ 10.3.1.4. Adding the Compiled Resources to a DLL ΓòÉΓòÉΓòÉ
  8260.  
  8261. To add the compiled resources to a dynamic-link-library (DLL) file, use the 
  8262. following command: 
  8263.  
  8264.   rc example.res dynalink.dll
  8265.  
  8266.  
  8267. ΓòÉΓòÉΓòÉ 11. Scroll-Bar Controls ΓòÉΓòÉΓòÉ
  8268.  
  8269. Scroll bars are control windows that convert mouse and keyboard input into 
  8270. integers; they are used by an application to scroll the contents of a client 
  8271. window.  This chapter describes how to create and use scroll bars in PM 
  8272. applications. 
  8273.  
  8274.  
  8275. ΓòÉΓòÉΓòÉ 11.1. About Scroll Bars ΓòÉΓòÉΓòÉ
  8276.  
  8277. A scroll bar has three main parts:  the bar, its arrows, and a slider. 
  8278.  
  8279. The arrows are located at each end of the scroll bar. The left scroll arrow, on 
  8280. the left side of a horizontal scroll bar, enables the user to scroll to the 
  8281. left in a document. The right scroll arrow lets the user scroll to the right. 
  8282.  
  8283. On a vertical scroll bar, the upper scroll arrow enables the user to scroll 
  8284. upward in the document; the lower scroll arrow, downward.  The slider, which 
  8285. lies between the two scroll arrows, reflects the current value of the scroll 
  8286. bar.  Scroll bars monitor the slider and send notification messages to the 
  8287. owner window when the slider position changes as a result of mouse or keyboard 
  8288. input. 
  8289.  
  8290. Although, typically, scroll bars are used in frame windows, an application can 
  8291. use stand-alone scroll bars of any size or shape, at any position, in a window 
  8292. of almost any class.  Scroll bars can be used as parts of other control 
  8293. windows; for example, a list box uses a scroll bar to enable the user to view 
  8294. items when the list box is too small to display all the items. 
  8295.  
  8296.  
  8297. ΓòÉΓòÉΓòÉ 11.1.1. Scroll-Bar Creation ΓòÉΓòÉΓòÉ
  8298.  
  8299. An application can include a scroll bar in a standard frame window by 
  8300. specifying the FCF_HORZSCROLL or FCF_VERTSCROLL flag in the WinCreateStdWindow 
  8301. function.  To create a scroll bar in another type of window, an application can 
  8302. specify the predefined (preregistered) window class WC_SCROLLBAR in the 
  8303. WinCreateWindow function or in the CONTROL statement in a resource file. 
  8304.  
  8305. Although most applications specify an owner window when creating a scroll bar, 
  8306. an owner is not required.  If an application does not specify an owner, the 
  8307. scroll bar does not send notification messages. 
  8308.  
  8309.  
  8310. ΓòÉΓòÉΓòÉ 11.1.1.1. Scroll-Bar Styles ΓòÉΓòÉΓòÉ
  8311.  
  8312. A scroll bar has styles that determine what it looks like and how it responds 
  8313. to input.  Styles are specified in the WinCreateWindow function or the CONTROL 
  8314. statement.  A scroll-bar can have the following styles: 
  8315.  
  8316. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8317. ΓöéStyle          ΓöéMeaning                                      Γöé
  8318. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8319. ΓöéSBS_AUTOTRACK  ΓöéCauses the entire slider to track the        Γöé
  8320. Γöé               Γöémovement of the mouse pointer when the user  Γöé
  8321. Γöé               Γöéscrolls the window. Without this style, only Γöé
  8322. Γöé               Γöéan outlined image of the slider tracks the   Γöé
  8323. Γöé               Γöémovement of the mouse pointer, and the sliderΓöé
  8324. Γöé               Γöéjumps to the new location when the user      Γöé
  8325. Γöé               Γöéreleases the mouse button.                   Γöé
  8326. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8327. ΓöéSBS_HORZ       ΓöéCreates a horizontal scroll bar.             Γöé
  8328. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8329. ΓöéSBS_THUMBSIZE  ΓöéUsed to calculate the size of the scroll-bar Γöé
  8330. Γöé               Γöéslider from the SBCDATA passed to            Γöé
  8331. Γöé               ΓöéWinCreateWindow.                             Γöé
  8332. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8333. ΓöéSBS_VERT       ΓöéCreates a vertical scroll bar.               Γöé
  8334. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8335.  
  8336.  
  8337. ΓòÉΓòÉΓòÉ 11.1.1.2. Scroll-Bar Range and Position ΓòÉΓòÉΓòÉ
  8338.  
  8339. Every scroll bar has a range and a slider position.  The range specifies the 
  8340. minimum and maximum values for the slider position.  As the user moves the 
  8341. slider in a scroll bar, the scroll bar reports the slider position as an 
  8342. integer in this range.  If the slider position is the minimum value, the slider 
  8343. is at the top of a vertical scroll bar or at the left end of a horizontal 
  8344. scroll bar.  If the slider position is the maximum value, the slider is at the 
  8345. bottom or right end of the vertical or horizontal scroll bar, respectively. 
  8346.  
  8347. An application can adjust the range to convenient integers by using 
  8348. SBM_SETSCROLLBAR or WM_SETWINDOWPARAMS, or by using the SBCDATA structure 
  8349. during creation of the scroll bar. This enables you to easily translate the 
  8350. slider position into a value that corresponds to the data being scrolled.  For 
  8351. example, an application attempting to display 100 lines of text (numbered 0 to 
  8352. 99) in a window that can show only 20 lines at a time could set the vertical 
  8353. scroll-bar range from 0-99, permitting any line to be the top line, and 
  8354. requiring blank lines to fill the viewing area when there are not sufficient 
  8355. lines of information to fill the area (lines 80-99). More likely, the range 
  8356. would be set to 0-79, so that only the first 80 lines could be the top line; 
  8357. this guarantees that there would always be 20 lines of text to fill the window. 
  8358.  
  8359. The current settings can be obtained using SBM_QUERYRANGE or 
  8360. WM_QUERYWINDOWPARAMS. 
  8361.  
  8362. To establish a useful relationship between the scroll-bar range and the data, 
  8363. an application must adjust the range whenever the data or the size of the 
  8364. window changes.  This means the application should adjust the range as part of 
  8365. processing WM_SIZE messages. 
  8366.  
  8367. An application must move the slider in a scroll bar.  Although the user 
  8368. requests scrolling in a scroll bar, the scroll bar does not update the slider 
  8369. position.  Instead, it passes the request to the owner window, which scrolls 
  8370. the data and updates the slider position using the SBM_SETPOS message.  The 
  8371. application controls the slider movement and can move the slider in the 
  8372. increments best suited for the data being scrolled. 
  8373.  
  8374. An application can retrieve the current slider position of a scroll bar by 
  8375. sending the SBM_QUERYPOS message to the scroll bar. 
  8376.  
  8377. If a scroll bar is a descendant of a frame window, its position relative to its 
  8378. parent can change when the position of the frame window changes.  Frame windows 
  8379. draw scroll bars relative to the upper-left corner of the frame window (rather 
  8380. than the lower-left corner).  The frame window can adjust the y coordinate of 
  8381. the scroll-bar position, which would be desirable if the scroll bar is a child 
  8382. of the frame window, but would be undesirable if the scroll bar is not a child 
  8383. window. 
  8384.  
  8385.  
  8386. ΓòÉΓòÉΓòÉ 11.1.1.3. Scroll-Bar Slider Size ΓòÉΓòÉΓòÉ
  8387.  
  8388. The slider can be displayed either as a square (the default), or as a portion 
  8389. of the scroll bar if SBCDATA and the SBS_THUMBSIZE style are specified at 
  8390. creation. Displaying the slider as a proportional rectangle permits the size of 
  8391. the slider to be proportional to the amount of data being viewed in the visible 
  8392. range. The size is set based on the visible range and the number of values in 
  8393. the range. As an example, where the viewing area is 20 items and the range is 
  8394. 100, the slider size would be 20% of the potential slider area. Note that there 
  8395. is no direct connection between the scroll bar range and the range value used 
  8396. to set the slider size.  It is possible to set the scroll-bar range from 0-99, 
  8397. and base the slider size on a viewing area of 500 and a range of 1000.  This 
  8398. will set the scroll-bar to have 100 positions and will display a slider that is 
  8399. half the size of the scroll bar. 
  8400.  
  8401. The slider size can be set using SBM_SETTHUMBSIZE or WM_SETWINDOWPARAMS, and 
  8402. obtained using WM_QUERYWINDOWPARAMS. 
  8403.  
  8404.  
  8405. ΓòÉΓòÉΓòÉ 11.1.2. Scroll-Bar Notification Messages ΓòÉΓòÉΓòÉ
  8406.  
  8407. A scroll bar sends notification messages to its owner whenever the user clicks 
  8408. the scroll bar.  WM_VSCROLL and WM_HSCROLL are the notification messages for 
  8409. vertical and horizontal scroll bars, respectively.  If the scroll bar is a 
  8410. frame control window, the frame window passes the message to its client window. 
  8411.  
  8412. Each notification message includes the scroll-bar identifier, scroll-bar 
  8413. command code corresponding to the action of the user, and, in some cases, the 
  8414. position of the slider.  If an application creates a scroll bar as part of a 
  8415. frame control window, the scroll-bar identifier is the predefined constant 
  8416. FID_VERTSCROLL or FID_HORZSCROLL.  Otherwise, it is the identifier given in the 
  8417. WinCreateWindow function. 
  8418.  
  8419. The scroll-bar command codes specify the action the user has taken.  Operating 
  8420. system user-interface guidelines recommend certain responses for each action. 
  8421.  
  8422. Following is a list of the command codes; for each code, the user action is 
  8423. specified, followed by the application's response. In each case, a scrolling 
  8424. unit, appropriate for the given data, must be defined by the application.  For 
  8425. example, for scrolling text vertically, the typical unit is a line. 
  8426.  
  8427. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8428. ΓöéCommand Code        ΓöéDescription                             Γöé
  8429. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8430. ΓöéSB_LINEUP           ΓöéIndicates that the user clicked the top Γöé
  8431. Γöé                    Γöéscroll arrow. Decrement the slider      Γöé
  8432. Γöé                    Γöéposition by one, and scroll toward the  Γöé
  8433. Γöé                    Γöétop of the data by one unit.            Γöé
  8434. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8435. ΓöéSB_LINEDOWN         ΓöéIndicates that the user clicked the     Γöé
  8436. Γöé                    Γöébottom scroll arrow. Increment the      Γöé
  8437. Γöé                    Γöéslider position by one, and scroll      Γöé
  8438. Γöé                    Γöétoward the bottom of the data by one    Γöé
  8439. Γöé                    Γöéunit.                                   Γöé
  8440. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8441. ΓöéSB_LINELEFT         ΓöéIndicates that the user clicked the leftΓöé
  8442. Γöé                    Γöéscroll arrow. Decrement the slider      Γöé
  8443. Γöé                    Γöéposition by one, and scroll toward the  Γöé
  8444. Γöé                    Γöéleft end of the data by one unit.       Γöé
  8445. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8446. ΓöéSB_LINERIGHT        ΓöéIndicates that the user clicked the     Γöé
  8447. Γöé                    Γöéright scroll arrow. Increment the sliderΓöé
  8448. Γöé                    Γöéposition by one, and scroll toward the  Γöé
  8449. Γöé                    Γöéright end of the data by one unit.      Γöé
  8450. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8451. ΓöéSB_PAGEUP           ΓöéIndicates that the user clicked the     Γöé
  8452. Γöé                    Γöéscroll-bar background above the slider. Γöé
  8453. Γöé                    ΓöéDecrement the slider position by the    Γöé
  8454. Γöé                    Γöénumber of data units in the window, and Γöé
  8455. Γöé                    Γöéscroll toward the top of the data by theΓöé
  8456. Γöé                    Γöésame number of units.                   Γöé
  8457. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8458. ΓöéSB_PAGEDOWN         ΓöéIndicates that the user clicked the     Γöé
  8459. Γöé                    Γöéscroll-bar background below the slider. Γöé
  8460. Γöé                    ΓöéIncrement the slider position by the    Γöé
  8461. Γöé                    Γöénumber of data units in the window, and Γöé
  8462. Γöé                    Γöéscroll toward the bottom of the data by Γöé
  8463. Γöé                    Γöéthe same number of units.               Γöé
  8464. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8465. ΓöéSB_PAGELEFT         ΓöéIndicates that the user clicked the     Γöé
  8466. Γöé                    Γöéscroll-bar background to the left of theΓöé
  8467. Γöé                    Γöéslider. Decrement the slider position byΓöé
  8468. Γöé                    Γöéthe number of data units in the window, Γöé
  8469. Γöé                    Γöéand scroll toward the left end of the   Γöé
  8470. Γöé                    Γöédata by the same number of units.       Γöé
  8471. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8472. ΓöéSB_PAGERIGHT        ΓöéIndicates that the user clicked the     Γöé
  8473. Γöé                    Γöéscroll-bar background to the right of   Γöé
  8474. Γöé                    Γöéthe slider. Increment the slider        Γöé
  8475. Γöé                    Γöéposition by the number of data units in Γöé
  8476. Γöé                    Γöéthe window, and scroll toward the right Γöé
  8477. Γöé                    Γöéend of the data by the same number of   Γöé
  8478. Γöé                    Γöéunits.                                  Γöé
  8479. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8480. ΓöéSB_SLIDERTRACK      ΓöéIndicates that the user is dragging the Γöé
  8481. Γöé                    Γöéslider. Applications that draw data     Γöé
  8482. Γöé                    Γöéquickly can set the slider to the       Γöé
  8483. Γöé                    Γöéposition given in the message, and      Γöé
  8484. Γöé                    Γöéscroll the data by the same number of   Γöé
  8485. Γöé                    Γöéunits the slider has moved. ApplicationsΓöé
  8486. Γöé                    Γöéthat cannot draw data quickly should    Γöé
  8487. Γöé                    Γöéwait for the SB_SLIDERPOSITION code     Γöé
  8488. Γöé                    Γöébefore moving the slider and scrolling  Γöé
  8489. Γöé                    Γöéthe data.                               Γöé
  8490. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8491. ΓöéSB_SLIDERPOSITION   ΓöéIndicates that the user released the    Γöé
  8492. Γöé                    Γöéslider after dragging it. Set the sliderΓöé
  8493. Γöé                    Γöéto the position given in the message,   Γöé
  8494. Γöé                    Γöéand scroll the data by the same number  Γöé
  8495. Γöé                    Γöéof units the slider was moved.          Γöé
  8496. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8497. ΓöéSB_ENDSCROLL        ΓöéIndicates that the user released the    Γöé
  8498. Γöé                    Γöémouse after holding it on an arrow or inΓöé
  8499. Γöé                    Γöéthe scroll-bar background. No response  Γöé
  8500. Γöé                    Γöéis necessary.                           Γöé
  8501. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8502. If the command code is SB_SLIDERTRACK or SB_SLIDERPOSITION, indicating that the 
  8503. user is moving the scroll-bar slider, the notification message also contains 
  8504. the current position of the slider. 
  8505.  
  8506. The owner window can send a message to the scroll bar to read or reset the 
  8507. current value and range of the scroll bar.  To reflect any changes in the state 
  8508. of the scroll bar, the owner window also can adjust the data the scroll bar 
  8509. controls. 
  8510.  
  8511. An application can use the WinEnableWindow function to disable a scroll bar.  A 
  8512. disabled scroll bar ignores the actions of the user, sending out no 
  8513. notification messages when the user tries to manipulate it.  If an application 
  8514. has no data to scroll, or if all data fits in the client window, the 
  8515. application should disable the scroll bar. 
  8516.  
  8517.  
  8518. ΓòÉΓòÉΓòÉ 11.1.3. Scroll Bars and the Keyboard ΓòÉΓòÉΓòÉ
  8519.  
  8520. When a scroll bar has the keyboard focus, it generates notification messages 
  8521. for the following keys: 
  8522.  
  8523. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8524. ΓöéKeys           ΓöéResponse                                     Γöé
  8525. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8526. ΓöéUP             ΓöéSB_LINEUP or SB_LINELEFT                     Γöé
  8527. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8528. ΓöéLEFT           ΓöéSB_LINEUP or SB_LINELEFT                     Γöé
  8529. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8530. ΓöéDOWN           ΓöéSB_LINEDOWN or SB_LINERIGHT                  Γöé
  8531. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8532. ΓöéRIGHT          ΓöéSB_LINEDOWN or SB_LINERIGHT                  Γöé
  8533. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8534. ΓöéPGUP           ΓöéSB_PAGEUP or SB_PAGELEFT                     Γöé
  8535. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8536. ΓöéPGDN           ΓöéSB_PAGEDOWN or SB_PAGERIGHT                  Γöé
  8537. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8538.  
  8539. If an application uses scroll bars to scroll data but does not give the scroll 
  8540. bar the input focus, the window with the focus must process keyboard input. 
  8541. The window can generate scroll-bar notification messages or carry out the 
  8542. indicated scrolling.  The following table shows the responses to keys that a 
  8543. window must process: 
  8544.  
  8545. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8546. ΓöéKey            ΓöéResponse                                     Γöé
  8547. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8548. ΓöéUP             ΓöéSB_LINEUP                                    Γöé
  8549. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8550. ΓöéDOWN           ΓöéSB_LINEDOWN                                  Γöé
  8551. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8552. ΓöéPGUP           ΓöéSB_PAGEUP                                    Γöé
  8553. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8554. ΓöéPGDN           ΓöéSB_PAGEDOWN                                  Γöé
  8555. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8556. ΓöéCTRL+HOME      ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8557. Γöé               Γöéminimum position                             Γöé
  8558. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8559. ΓöéCTRL+END       ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8560. Γöé               Γöémaximum position                             Γöé
  8561. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8562. ΓöéLEFT           ΓöéSB_LINELEFT                                  Γöé
  8563. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8564. ΓöéRIGHT          ΓöéSB_LINERIGHT                                 Γöé
  8565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8566. ΓöéCTRL+PGUP      ΓöéSB_PAGELEFT                                  Γöé
  8567. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8568. ΓöéCTRL+PGDN      ΓöéSB_PAGERIGHT                                 Γöé
  8569. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8570. ΓöéHOME           ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8571. Γöé               Γöéminimum position                             Γöé
  8572. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8573. ΓöéEND            ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8574. Γöé               Γöémaximum position                             Γöé
  8575. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8576.  
  8577. For vertical scroll bars that are part of list boxes, the following table shows 
  8578. the responses to keys: 
  8579.  
  8580. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8581. ΓöéKey            ΓöéCommand                                      Γöé
  8582. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8583. ΓöéCTRL+UP        ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8584. Γöé               Γöéminimum position                             Γöé
  8585. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8586. ΓöéCTRL+DOWN      ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8587. Γöé               Γöémaximum position                             Γöé
  8588. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8589. ΓöéF7             ΓöéSB_PAGEUP                                    Γöé
  8590. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8591. ΓöéF8             ΓöéSB_PAGEDOWN                                  Γöé
  8592. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8593.  
  8594.  
  8595. ΓòÉΓòÉΓòÉ 11.2. Using Scroll Bars ΓòÉΓòÉΓòÉ
  8596.  
  8597. This section explains how to perform the following tasks: 
  8598.  
  8599.      Create scroll bars 
  8600.      Retrieve a scroll-bar handle 
  8601.      Initialize, adjust, and read the scroll-bar range and position 
  8602.  
  8603.  
  8604. ΓòÉΓòÉΓòÉ 11.2.1. Creating Scroll Bars ΓòÉΓòÉΓòÉ
  8605.  
  8606. When creating a frame window, you can add scroll bars by specifying the 
  8607. FCF_HORZSCROLL flag, FCF_VERTSCROLL flag, or both flags in the 
  8608. WinCreateStdWindow function.  This adds horizontal, vertical, or both (as 
  8609. specified) scroll bars to the frame window.  The frame window owns the scroll 
  8610. bars and passes notification messages from the scroll bars to the client 
  8611. window. The following code fragment adds scroll bars to a frame window: 
  8612.  
  8613.  
  8614. Uses
  8615.   Os2Def,Os2Base,Os2PmApi;
  8616.  
  8617. Var
  8618.   UlFrameControlFlags : ULONG; (* ╨ísken var tom!! *)
  8619.  
  8620. Begin
  8621.   (* Set flags for a main window with scroll bars. *)
  8622.   UlFrameControlFlags :=
  8623.          FCF_STANDARD Or FCF_HORZSCROLL Or FCF_VERTSCROLL;
  8624.  
  8625.   (* Create the window.                            *)
  8626.   hwndFrame := WinCreateStdWindow(HWND_DESKTOP,
  8627.       WS_VISIBLE,
  8628.       &ulFrameControlFlags,
  8629.       szClientClass,
  8630.       szFrameTitle,
  8631.       0,
  8632.       nil,
  8633.       0,
  8634.       &hwndClient);
  8635.  
  8636. End.
  8637.  
  8638. Scroll bars created this way have the window identifier FID_HORZSCROLL or 
  8639. FID_VERTSCROLL.  To determine the size and position of the scroll bars, the 
  8640. frame window uses the standard size specified by the system values SV_CXVSCROLL 
  8641. and SV_CYHSCROLL.  The position always is defined by the right and bottom edges 
  8642. of the frame window. 
  8643.  
  8644. Another way to create scroll bars is using the WinCreateWindow function.  This 
  8645. method is most commonly used for stand-alone scroll bars.  Creating scroll bars 
  8646. this way lets you set the size and position of the scroll bars.  You also can 
  8647. specify which window should receive notification messages. 
  8648.  
  8649. The following code fragment creates a stand-alone scroll bar: 
  8650.  
  8651.  
  8652. Uses
  8653.   Os2Def,Os2Base,Os2PmApi;
  8654.  
  8655. Const ID_SCROLL_BAR = 1;
  8656. Var
  8657.   HwndScroll,hwndClient : HWND; (* ╨ísken var tom!! *)
  8658.  
  8659. Begin
  8660.   hwndScroll := WinCreateWindow(
  8661.         hwndClient,                      (* Scroll-bar parent window       *)
  8662.         WC_SCROLLBAR,                    (* Preregistered scroll-bar class *)
  8663.         nil,                             (* No window title                *)
  8664.         SBS_VERT Or WS_VISIBLE,          (* Vertical style and visible     *)
  8665.         10, 10,                          (* Position & Size                *)
  8666.         20, 100,                         (* Size                           *)
  8667.         hwndClient,                      (* Owner                          *)
  8668.         HWND_TOP,                        (* Z-order position               *)
  8669.         ID_SCROLL_BAR,                   (* Scroll-bar identIfier          *)
  8670.         nil,                             (* No class-specIfic data         *)
  8671.         nil);                            (* No presentation parameters     *)
  8672. End.
  8673.  
  8674.  
  8675. ΓòÉΓòÉΓòÉ 11.2.2. Retrieving a Scroll-Bar Handle ΓòÉΓòÉΓòÉ
  8676.  
  8677. If you use the WinCreateStdWindow function to create a scroll bar as a child of 
  8678. the frame window, you must be able to retrieve the scroll-bar handle.  One way 
  8679. to do this is to use the WinWindowFromID function, the frame-window handle, and 
  8680. a predefined identifier (such as FID_HORZSCROLL or FID_VERTSCROLL), as shown in 
  8681. the following code fragment: 
  8682.  
  8683. Uses
  8684.   Os2Def,Os2Base,Os2PmApi;
  8685.  
  8686. Var
  8687.   HwndFrame,hwndHorzScroll,hwndVertScroll : HWND; (* ╨ísken var tom!! *)
  8688.  
  8689. Begin
  8690.  
  8691.   hwndHorzScroll := WinWindowFromID(hwndFrame, FID_HORZSCROLL);
  8692.   hwndVertScroll := WinWindowFromID(hwndFrame, FID_VERTSCROLL);
  8693. End.
  8694.  
  8695. If the standard frame window includes a client window, you can use that handle 
  8696. to access the scroll bars.  The idea is to get the frame-window handle first; 
  8697. then, the scroll-bar handle. 
  8698.  
  8699.  
  8700. Uses
  8701.   Os2Def,Os2Base,Os2PmApi;
  8702.  
  8703. Var
  8704.   HwndScroll,hwndClient : HWND; (* ╨ísken var tom!! *)
  8705.  
  8706. Begin
  8707.  
  8708.   (* Get a handle to the horizontal scroll bar. *)
  8709.   hwndScroll := WinWindowFromID(
  8710.         WinQueryWindow(hwndClient, QW_PARENT),
  8711.         FID_HORZSCROLL);
  8712. End.
  8713.  
  8714.  
  8715. ΓòÉΓòÉΓòÉ 11.2.3. Using the Scroll-Bar Range and Position ΓòÉΓòÉΓòÉ
  8716.  
  8717. You can initialize the current value and range of a scroll bar to non-default 
  8718. values by sending the SBCDATA structure with class-specific data for a call to 
  8719. WinCreateWindow: 
  8720.  
  8721.  
  8722. Uses
  8723.   Os2Def,Os2Base,Os2PmApi;
  8724.  
  8725. Const ID_SCROLL_BAR = 1;
  8726. Var
  8727.   Sbcd                  : SBCDATA; (* ╨ísken var tom!! *)
  8728.   HwndScroll,hwndClient : HWND;    (* ╨ísken var tom!! *)
  8729.  
  8730. Begin
  8731.  
  8732.   (* Set up scroll-bar control data.                     *)
  8733.   Sbcd.posFirst := 200;
  8734.   Sbcd.posLast  := 400;
  8735.   Sbcd.posThumb := 300;
  8736.  
  8737.   (* Create the scroll bar.                              *)
  8738.   hwndScroll := WinCreateWindow(hwndClient,
  8739.       WC_SCROLLBAR,
  8740.       nil,
  8741.       SBS_VERT Or WS_VISIBLE,
  8742.       10, 10,
  8743.       20, 100,
  8744.       hwndClient,
  8745.       HWND_TOP,
  8746.       ID_SCROLL_BAR,
  8747.       &sbcd,                     (* Class-specIfic data  *)
  8748.       nil);
  8749. End.
  8750. You can adjust a scroll-bar value and range by sending it an SBM_SETSCROLLBAR 
  8751. message: 
  8752.  
  8753. (* Set the scroll-bar value and range. *)
  8754.  
  8755. WinSendMsg(hwndScroll, SBM_SETSCROLLBAR,
  8756.            300,
  8757.            MPFROM2SHORT(200, 400));
  8758.  
  8759. You can read a scroll-bar value by sending it an SBM_QUERYPOS message: 
  8760.  
  8761. Uses
  8762.   Os2Def,Os2Base,Os2PmApi;
  8763.  
  8764. Var
  8765.   UsSliderPos : USHORT; (* ╨ísken var tom!! *)
  8766.  
  8767. Begin
  8768.  
  8769.   (* Read the scroll-bar value. *)
  8770.   usSliderPos := WinSendMsg(hwndScroll,
  8771.                             SBM_QUERYPOS, nil, nil);
  8772. end.
  8773.  
  8774. Similarly, you can set a scroll-bar value by sending an SBM_SETPOS message: 
  8775.  
  8776. (* Set the vertical scroll-bar value. *)
  8777. WinSendMsg(hwndScroll, SBM_SETPOS, 300, nil);
  8778.  
  8779. You can read a scroll-bar range by sending it an SBM_QUERYRANGE message: 
  8780.  
  8781. Uses
  8782.   Os2Def,Os2Base,Os2PmApi;
  8783.  
  8784. Var
  8785.   Mr                   : MRESULT; (* ╨ísken var tom!! *)
  8786.   UsMinimum, UsMaximum : USHORT;  (* ╨ísken var tom!! *)
  8787.  
  8788. Begin
  8789.   (* Read the vertical scroll-bar range.                               *)
  8790.   mr := WinSendMsg(hwndScroll, SBM_QUERYRANGE, nil, nil);
  8791.  
  8792.   usMinimum := SHORT1FROMMR(mr);            (* minimum in the low word  *)
  8793.   usMaximum := SHORT2FROMMR(mr);            (* maximum in the high word *)
  8794. end.
  8795.  
  8796.  
  8797. ΓòÉΓòÉΓòÉ 12. Slider Controls ΓòÉΓòÉΓòÉ
  8798.  
  8799. A slider control is a visual component that displays a range of values and 
  8800. allows a user to set, display, or modify a value by moving a slider arm. There 
  8801. are two types of sliders: 
  8802.  
  8803.      The linear slider is represented as a shaft along which the slider arm 
  8804.       can be moved by the user to set a value. 
  8805.  
  8806.      The circular slider is represented as a dial with the slider arm shown as 
  8807.       the radius of the dial. 
  8808.  
  8809.  This chapter explains how to use each of these slider controls in PM 
  8810.  applications. 
  8811.  
  8812.  
  8813. ΓòÉΓòÉΓòÉ 12.1. About Slider Controls ΓòÉΓòÉΓòÉ
  8814.  
  8815. This section covers linear and circular slider controls. Linear sliders are 
  8816. used to set values that have familiar increments. Circular sliders, although 
  8817. different in appearance from linear sliders, provide much the same function. 
  8818. Both types of sliders can be used in a window to create a user interface. 
  8819.  
  8820.  
  8821. ΓòÉΓòÉΓòÉ 12.1.1. Linear Sliders ΓòÉΓòÉΓòÉ
  8822.  
  8823. Typically, linear sliders are used to easily set values that have familiar 
  8824. increments, such as feet, inches, degrees, and decibels. They also can be used 
  8825. for other purposes when immediate feedback is required, such as blending colors 
  8826. or showing a task's percentage of completion. For example, an application might 
  8827. let a user mix and match color shades by moving a slider arm, or a read-only 
  8828. slider could show how much of a task is complete by filling in the slider shaft 
  8829. as the task progresses. These are just a few examples of the ways in which 
  8830. sliders can be used. 
  8831.  
  8832. The slider arm shows the value currently set by its position on the slider 
  8833. shaft. The user selects slider values by changing the location of the slider 
  8834. arm. 
  8835.  
  8836. A tick mark indicates an incremental value in a slider scale. A detent, which 
  8837. is similar to a tick mark, also represents a value on the scale. However, a 
  8838. detent can be placed anywhere along the slider scale, rather than only in 
  8839. specific increments, and can be selected. 
  8840.  
  8841. The appearance of a slider and the user interaction with a slider are similar 
  8842. to that of a scroll bar. However, these two controls are not interchangeable 
  8843. because each has a unique purpose. A scroll bar scrolls information into view 
  8844. that is outside a window's work area, while the slider is used to set, display, 
  8845. or modify that information, whether it is in or out of the work area. 
  8846.  
  8847. Although linear sliders usually use values that have familiar increments, text 
  8848. also can be used. However, if the text is too long it can overlap the text 
  8849. displayed on the next tick mark or detent. Also, if the text on the far edge 
  8850. markers is too long, some of the text will not be displayed on screen. To 
  8851. prevent this use one of the following: 
  8852.  
  8853.      Smaller font 
  8854.      Shorter text values 
  8855.      Static controls 
  8856.  
  8857.  The slider can be customized to meet varying application requirements, while 
  8858.  providing a user interface component that can be used easily to develop 
  8859.  products that conform to the Systems Application Architecture (SAA) Common 
  8860.  User Access (CUA) user interface guidelines. The application can specify 
  8861.  different scales, sizes, and orientations for its sliders, but the underlying 
  8862.  function of the control remains the same. For a complete description of CUA 
  8863.  sliders, refer to the SAA CUA Guide to User Interface Design and the SAA CUA 
  8864.  Advanced Interface Design Reference. 
  8865.  
  8866.  
  8867. ΓòÉΓòÉΓòÉ 12.1.1.1. Linear Slider Styles ΓòÉΓòÉΓòÉ
  8868.  
  8869. Slider control styles are set when a slider window is created. The following 
  8870. table describes linear slider control styles. If no styles are specified, 
  8871. defaults are used as indicated in the table. 
  8872.  
  8873. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8874. ΓöéStyle Name            ΓöéDescription                           Γöé
  8875. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8876. ΓöéSLS_BOTTOM            ΓöéPositions the slider at the bottom of Γöé
  8877. Γöé                      Γöéthe slider window. Valid only for     Γöé
  8878. Γöé                      Γöéhorizontal sliders.                   Γöé
  8879. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8880. ΓöéSLS_BUTTONSBOTTOM     ΓöéSpecifies that the optional slider    Γöé
  8881. Γöé                      Γöébuttons are to be used and places themΓöé
  8882. Γöé                      Γöéat the bottom of the slider shaft. TheΓöé
  8883. Γöé                      Γöébuttons move the slider arm by one    Γöé
  8884. Γöé                      Γöéposition, up or down, in the directionΓöé
  8885. Γöé                      Γöéselected. Valid only for vertical     Γöé
  8886. Γöé                      Γöésliders.                              Γöé
  8887. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8888. ΓöéSLS_BUTTONSLEFT       ΓöéSpecifies that the optional slider    Γöé
  8889. Γöé                      Γöébuttons are to be used and places themΓöé
  8890. Γöé                      Γöéto the left of the slider shaft. The  Γöé
  8891. Γöé                      Γöébuttons move the slider arm by one    Γöé
  8892. Γöé                      Γöéposition, left or right, in the       Γöé
  8893. Γöé                      Γöédirection selected. Valid only for    Γöé
  8894. Γöé                      Γöéhorizontal sliders.                   Γöé
  8895. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8896. ΓöéSLS_BUTTONSRIGHT      ΓöéSpecifies that the optional slider    Γöé
  8897. Γöé                      Γöébuttons are to be used and places themΓöé
  8898. Γöé                      Γöéto the right of the slider shaft. The Γöé
  8899. Γöé                      Γöébuttons move the slider arm by one    Γöé
  8900. Γöé                      Γöéposition, left or right, in the       Γöé
  8901. Γöé                      Γöédirection selected. Valid only for    Γöé
  8902. Γöé                      Γöéhorizontal sliders.                   Γöé
  8903. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8904. ΓöéSLS_BUTTONSTOP        ΓöéSpecifies that the optional slider    Γöé
  8905. Γöé                      Γöébuttons are to be used and places themΓöé
  8906. Γöé                      Γöéat the top of the slider shaft. The   Γöé
  8907. Γöé                      Γöébuttons move the slider arm by one    Γöé
  8908. Γöé                      Γöéposition, up or down, in the directionΓöé
  8909. Γöé                      Γöéselected. Valid only for vertical     Γöé
  8910. Γöé                      Γöésliders.                              Γöé
  8911. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8912. ΓöéSLS_CENTER            ΓöéCenters the slider within the slider  Γöé
  8913. Γöé                      Γöéwindow. This is the default position  Γöé
  8914. Γöé                      Γöéof the slider.                        Γöé
  8915. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8916. ΓöéSLS_HOMEBOTTOM        ΓöéSpecifies the slider arm's home       Γöé
  8917. Γöé                      Γöéposition. The bottom of the slider is Γöé
  8918. Γöé                      Γöéused as the base value for            Γöé
  8919. Γöé                      Γöéincrementing. Valid only for vertical Γöé
  8920. Γöé                      Γöésliders.                              Γöé
  8921. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8922. ΓöéSLS_HOMELEFT          ΓöéSpecifies the slider arm's home       Γöé
  8923. Γöé                      Γöéposition. The left edge is used as theΓöé
  8924. Γöé                      Γöébase value for incrementing. This is  Γöé
  8925. Γöé                      Γöéthe default for horizontal sliders andΓöé
  8926. Γöé                      Γöéis valid only for horizontal sliders. Γöé
  8927. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8928. ΓöéSLS_HOMERIGHT         ΓöéSpecifies the slider arm's home       Γöé
  8929. Γöé                      Γöéposition. The right edge is used as   Γöé
  8930. Γöé                      Γöéthe base value for incrementing. ValidΓöé
  8931. Γöé                      Γöéonly for horizontal sliders.          Γöé
  8932. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8933. ΓöéSLS_HOMETOP           ΓöéSpecifies the slider arm's home       Γöé
  8934. Γöé                      Γöéposition. The top of the slider is    Γöé
  8935. Γöé                      Γöéused as the base value for            Γöé
  8936. Γöé                      Γöéincrementing. Valid only for vertical Γöé
  8937. Γöé                      Γöésliders.                              Γöé
  8938. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8939. ΓöéSLS_HORIZONTAL        ΓöéPositions the slider horizontally. TheΓöé
  8940. Γöé                      Γöéslider arm can move left and right on Γöé
  8941. Γöé                      Γöéthe slider shaft. A scale can be      Γöé
  8942. Γöé                      Γöéplaced on top of the slider shaft,    Γöé
  8943. Γöé                      Γöébelow the slider shaft, or in both    Γöé
  8944. Γöé                      Γöéplaces. This is the default           Γöé
  8945. Γöé                      Γöéorientation of the slider.            Γöé
  8946. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8947. ΓöéSLS_LEFT              ΓöéPositions the slider at the left edge Γöé
  8948. Γöé                      Γöéof the slider window. Valid only for  Γöé
  8949. Γöé                      Γöévertical sliders.                     Γöé
  8950. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8951. ΓöéSLS_OWNERDRAW         ΓöéNotifies the application whenever the Γöé
  8952. Γöé                      Γöéslider shaft, the ribbon strip, the   Γöé
  8953. Γöé                      Γöéslider arm, and the slider background Γöé
  8954. Γöé                      Γöéare to be drawn.                      Γöé
  8955. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8956. ΓöéSLS_PRIMARYSCALE1     ΓöéDetermines the location of the scale  Γöé
  8957. Γöé                      Γöéon the slider shaft by using incrementΓöé
  8958. Γöé                      Γöéand spacing specified for scale 1 as  Γöé
  8959. Γöé                      Γöéthe incremental value for positioning Γöé
  8960. Γöé                      Γöéthe slider arm. Scale 1 is displayed  Γöé
  8961. Γöé                      Γöéabove the slider shaft of a horizontalΓöé
  8962. Γöé                      Γöéslider and to the right of the slider Γöé
  8963. Γöé                      Γöéshaft of a vertical slider. This is   Γöé
  8964. Γöé                      Γöéthe default for a slider.             Γöé
  8965. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8966. ΓöéSLS_PRIMARYSCALE2     ΓöéDetermines the location of the scale  Γöé
  8967. Γöé                      Γöéon the slider shaft by using incrementΓöé
  8968. Γöé                      Γöéand spacing specified for scale 2 as  Γöé
  8969. Γöé                      Γöéthe incremental value for positioning Γöé
  8970. Γöé                      Γöéthe slider arm. Scale 2 is displayed  Γöé
  8971. Γöé                      Γöébelow the slider shaft of a horizontalΓöé
  8972. Γöé                      Γöéslider and to the left of the slider  Γöé
  8973. Γöé                      Γöéshaft of a vertical slider.           Γöé
  8974. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8975. ΓöéSLS_READONLY          ΓöéCreates a read-only slider, which     Γöé
  8976. Γöé                      Γöépresents information to the user but  Γöé
  8977. Γöé                      Γöéallows no interaction with the user.  Γöé
  8978. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8979. ΓöéSLS_RIBBONSTRIP       ΓöéFills, as the slider arm moves, the   Γöé
  8980. Γöé                      Γöéslider shaft between the home positionΓöé
  8981. Γöé                      Γöéand the slider arm with a color value Γöé
  8982. Γöé                      Γöédifferent from slider shaft color,    Γöé
  8983. Γöé                      Γöésimilar to mercury in a thermometer.  Γöé
  8984. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8985. ΓöéSLS_RIGHT             ΓöéPositions the slider at the right edgeΓöé
  8986. Γöé                      Γöéof the slider window. Valid only for  Γöé
  8987. Γöé                      Γöévertical sliders.                     Γöé
  8988. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8989. ΓöéSLS_SNAPTOINCREMENT   ΓöéCauses the slider arm, when positionedΓöé
  8990. Γöé                      Γöébetween two values, to be positioned  Γöé
  8991. Γöé                      Γöéto the nearest value and redrawn at   Γöé
  8992. Γöé                      Γöéthat position.                        Γöé
  8993. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8994. ΓöéSLS_TOP               ΓöéPositions the slider at the top of theΓöé
  8995. Γöé                      Γöéslider window. Valid only for         Γöé
  8996. Γöé                      Γöéhorizontal sliders.                   Γöé
  8997. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8998. ΓöéSLS_VERTICAL          ΓöéPositions the slider vertically. The  Γöé
  8999. Γöé                      Γöéslider arm can move up and down the   Γöé
  9000. Γöé                      Γöéslider shaft. A scale can be placed onΓöé
  9001. Γöé                      Γöéthe left side of the slider shaft, on Γöé
  9002. Γöé                      Γöéthe right side of the slider shaft, orΓöé
  9003. Γöé                      Γöéin both places.                       Γöé
  9004. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9005.  
  9006.  
  9007. ΓòÉΓòÉΓòÉ 12.1.1.1.1. More on Linear Slider Styles ΓòÉΓòÉΓòÉ
  9008.  
  9009.  
  9010. This section summarizes information in the table and provides additional 
  9011. information on some of the styles. 
  9012.  
  9013.  
  9014. ΓòÉΓòÉΓòÉ 12.1.1.1.1.1. Slider Orientation ΓòÉΓòÉΓòÉ
  9015.  
  9016.  
  9017. The slider's orientation is determined by specifying SLS_HORIZONTAL or 
  9018. SLS_VERTICAL. The default orientation is horizontal, with the slider arm moving 
  9019. left and right on the shaft. 
  9020.  
  9021.  
  9022. ΓòÉΓòÉΓòÉ 12.1.1.1.1.2. Slider Positioning ΓòÉΓòÉΓòÉ
  9023.  
  9024.  
  9025. The slider's positioning within the slider window is determined by specifying 
  9026. SLS_CENTER, SLS_BOTTOM, SLS_TOP, SLS_LEFT, or SLS_RIGHT. The default 
  9027. positioning is centered in the slider window. 
  9028.  
  9029.  
  9030. ΓòÉΓòÉΓòÉ 12.1.1.1.1.3. Slider Scale Location ΓòÉΓòÉΓòÉ
  9031.  
  9032.  
  9033. The location of the scale on the slider shaft is determined by specifying 
  9034. SLS_PRIMARYSCALE1 or SLS_PRIMARYSCALE2. The default is to use the increment and 
  9035. spacing specified for scale 1 as the incremental value for positioning the 
  9036. slider arm. Scale 1 is displayed above the slider shaft of a horizontal slider 
  9037. and to the right of the slider shaft of a vertical slider. 
  9038.  
  9039.  
  9040. ΓòÉΓòÉΓòÉ 12.1.1.1.1.4. Slider Arm Home Position ΓòÉΓòÉΓòÉ
  9041.  
  9042.  
  9043. The slider arm's home position is determined by specifying SLS_HOMELEFT, 
  9044. SLS_HOMERIGHT, SLS_HOMEBOTTOM, or SLS_HOMETOP. The default is SLS_HOMELEFT for 
  9045. horizontal sliders and SLS_HOMEBOTTOM for vertical sliders. 
  9046.  
  9047.  
  9048. ΓòÉΓòÉΓòÉ 12.1.1.1.1.5. Slider Buttons Location ΓòÉΓòÉΓòÉ
  9049.  
  9050.  
  9051. The location of the slider buttons, if used, is determined by specifying 
  9052. SLS_BUTTONSLEFT, SLS_BUTTONSRIGHT, SLS_BUTTONSBOTTOM, or SLS_BUTTONSTOP. If you 
  9053. do not specify one of these styles, or if conflicting styles are specified, 
  9054. slider buttons are not included in the slider control. 
  9055.  
  9056.  
  9057. ΓòÉΓòÉΓòÉ 12.1.1.1.1.6. Other Styles ΓòÉΓòÉΓòÉ
  9058.  
  9059.  
  9060. If SLS_SNAPTOINCREMENT is specified and the slider arm is moved to a position 
  9061. between two values on the slider scale, it is positioned on the nearest value 
  9062. and redrawn at that position. If this style is not specified, the slider arm 
  9063. remains at the position to which it is moved. 
  9064.  
  9065. SLS_READONLY creates a read-only slider. This means the user cannot interact 
  9066. with the slider. It is simply used as to present a quantity to the user, such 
  9067. as the percentage of completion of an ongoing task. Visual differences for a 
  9068. read-only slider include a narrow slider arm, no slider buttons, and no 
  9069. detents. 
  9070.  
  9071. The SLS_RIBBONSTRIP style allows movement of the slider arm to cause the slider 
  9072. shaft between home position and the slider arm to be filled with a color value 
  9073. that is different from the slider shaft color, similar to mercury in a 
  9074. thermometer. 
  9075.  
  9076. If SLS_OWNERDRAW is specified, the application is notified whenever the slider 
  9077. shaft, the ribbon strip, the slider arm, and the slider background are to be 
  9078. drawn. 
  9079.  
  9080.  
  9081. ΓòÉΓòÉΓòÉ 12.1.2. Circular Sliders ΓòÉΓòÉΓòÉ
  9082.  
  9083. The circular slider, although different in appearance from the linear slider, 
  9084. provides much the same function. The circular slider control provides an analog 
  9085. user interface and emulates the controls of stereo and video equipment. Because 
  9086. the circular slider takes up less space on the screen, it may be more practical 
  9087. to use in cases where you might want to have several controls in the same 
  9088. window. You may want to use both types of sliders in a window to create a user 
  9089. interface that makes good use of available space and provides a familiar 
  9090. appearance to the user. 
  9091.  
  9092. The slider arm shows the value currently set by its position on the slider 
  9093. dial. The slider arm can also be represented as a small circular thumb on the 
  9094. dial rather than a line. The user selects slider values by changing the 
  9095. location of the slider arm on the dial. Outside the perimeter of the dial is a 
  9096. circular scale with tick marks representing incremental values the slider arm 
  9097. can point to. Its values can be tracked by pointing to any area on the dial and 
  9098. pressing the select button while moving the mouse on the desktop. 
  9099.  
  9100. The circular slider can have a set of buttons, one to the left and the other to 
  9101. the right of the scroll range, similar to the buttons found on the linear 
  9102. slider, that can be used to modify the value shown on the slider. 
  9103.  
  9104. The minus sign on the left button and plus sign on the right button can be 
  9105. replaced with other symbols. For example, you might want to use a left arrow 
  9106. and a right arrow instead of the minus and plus signs. 
  9107.  
  9108. Another option of the circular slider is to have a window, in the center of the 
  9109. dial, that displays the value of the dial in scrollable numeric text. 
  9110.  
  9111. The appearance and functionality of the circular slider are controlled by the 
  9112. circular slider control styles specified. These style bits are summarized in 
  9113. the section that follows. 
  9114.  
  9115.  
  9116. ΓòÉΓòÉΓòÉ 12.1.2.1. Circular Slider Styles ΓòÉΓòÉΓòÉ
  9117.  
  9118. Circular slider control style bits control the appearance and behavior of the 
  9119. slider. The following table describes circular slider control styles: 
  9120.  
  9121. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9122. ΓöéStyle Name            ΓöéDescription                           Γöé
  9123. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9124. ΓöéCSS_360               ΓöéExtends the scroll range of the dial  Γöé
  9125. Γöé                      Γöéto 360 degrees. When this style is    Γöé
  9126. Γöé                      Γöéset, CSS_NONUMBER and CSS_NOBUTTON    Γöé
  9127. Γöé                      Γöéstyles automatically are set.         Γöé
  9128. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9129. ΓöéCSS_CIRCULARVALUE     ΓöéDraws a circular thumb, rather than a Γöé
  9130. Γöé                      Γöéline, for the value indicator.        Γöé
  9131. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9132. ΓöéCSS_MIDPOINT          ΓöéEnlarges the mid-point and end-point  Γöé
  9133. Γöé                      Γöétick marks.                           Γöé
  9134. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9135. ΓöéCSS_NOBUTTON          ΓöéPrevents the display of the + and -   Γöé
  9136. Γöé                      Γöévalue buttons.                        Γöé
  9137. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9138. ΓöéCSS_NONUMBER          ΓöéPrevents the display of a scrollable  Γöé
  9139. Γöé                      Γöénumeric value on the dial indicating  Γöé
  9140. Γöé                      Γöéthe dial's value.                     Γöé
  9141. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9142. ΓöéCSS_NOTEXT            ΓöéPrevents the display of a window titleΓöé
  9143. Γöé                      Γöébeneath the dial.                     Γöé
  9144. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9145. ΓöéCSS_POINTSELECT       ΓöéEnables tracking of the dial's value  Γöé
  9146. Γöé                      Γöéwith the mouse.                       Γöé
  9147. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9148. ΓöéCSS_PROPORTIONALTICKS ΓöéEnables the length of the tick marks  Γöé
  9149. Γöé                      Γöéto be calculated as a percentage of   Γöé
  9150. Γöé                      Γöéthe dial's radius.                    Γöé
  9151. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9152.  
  9153.  
  9154. ΓòÉΓòÉΓòÉ 12.1.2.1.1. More on Circular Slider Styles ΓòÉΓòÉΓòÉ
  9155.  
  9156.  
  9157. This section provides information on some of the styles. 
  9158.  
  9159.  
  9160. ΓòÉΓòÉΓòÉ 12.1.2.1.1.1. Circular Slider Buttons ΓòÉΓòÉΓòÉ
  9161.  
  9162.  
  9163. The circular slider has a set of buttons, one to the left and the other to the 
  9164. right of the scroll range. These buttons are similar to the buttons found on 
  9165. the linear slider. When selected, they modify the value of the circular slider 
  9166. in opposing ways. If you decide you do not want to display these buttons as 
  9167. part of your circular slider, specify the style CSS_NOBUTTON. 
  9168.  
  9169. The bit maps that show a minus sign (-) on the left button and a plus sign (+) 
  9170. on the right button can be replaced. For example, you might want to use a left 
  9171. arrow () and a right arrow (). To set the bit map data for the replacement 
  9172. bit maps, the owner window must send the CSM_SETBITMAPDATA control message. The 
  9173. optimal size for the button bit maps is 10x10 pels. 
  9174.  
  9175.  
  9176. ΓòÉΓòÉΓòÉ 12.1.2.1.1.2. Window Title ΓòÉΓòÉΓòÉ
  9177.  
  9178.  
  9179. Centered beneath the dial of the circular slider is a rectangular text field 
  9180. that contains the title of the window. To prevent the display of this feature, 
  9181. specify CSS_NOTEXT. 
  9182.  
  9183.  
  9184. ΓòÉΓòÉΓòÉ 12.1.2.1.1.3. Dial Value Window ΓòÉΓòÉΓòÉ
  9185.  
  9186.  
  9187. Another option of the circular slider is a window, in the center of the dial, 
  9188. that displays the value of the dial in scrollable numeric text. To prevent the 
  9189. display of this window, specify CSS_NONUMBER. 
  9190.  
  9191.  
  9192. ΓòÉΓòÉΓòÉ 12.1.2.1.1.4. 360-Degree Scale ΓòÉΓòÉΓòÉ
  9193.  
  9194.  
  9195. You can choose a scale of 360 degrees for your slider with CSS_360. Setting 
  9196. this style causes the CSS_NOBUTTON and CSS_NONUMBER styles to be set 
  9197. automatically. The CSS_NONUMBER style prevents the value indicator from 
  9198. corrupting the dial value. A 360-degree circular slider is displayed without 
  9199. the bit maps for the plus and minus buttons. 
  9200.  
  9201.  
  9202. ΓòÉΓòÉΓòÉ 12.1.2.1.1.5. Tracking Modes for Direct Manipulation ΓòÉΓòÉΓòÉ
  9203.  
  9204.  
  9205. There are two tracking modes used for direct manipulation of the circular 
  9206. slider: scrolling the dial and point selection. 
  9207.  
  9208. The default tracking behavior is scrolling, where the dial position of the 
  9209. slider is changed gradually. For example, by holding down the select mouse 
  9210. button while the pointer is positioned on the indicator line of the dial, you 
  9211. can move the mouse and cause the dial to rotate. This gradual changing of the 
  9212. dial value might be desirable for a volume control. 
  9213.  
  9214. If the CSS_POINTSELECT style is specified for the circular slider, the position 
  9215. of the dial is changed immediately to a point on the scale that has been 
  9216. selected by the mouse. Point selection allows value changes to occur 
  9217. immediately. 
  9218.  
  9219.  
  9220. ΓòÉΓòÉΓòÉ 12.1.2.1.1.6. Sizing Tick Marks ΓòÉΓòÉΓòÉ
  9221.  
  9222.  
  9223. When a low-resolution display is being used, or in situations where the 
  9224. circular slider must be made very small, the length of the tick marks can be 
  9225. sized proportionately to allow effective sizing of the circular slider. 
  9226. Specifying the CSS_PROPORTIONALTICKS style causes the length of the tick marks 
  9227. to be calculated as a percentage of the dial's radius. This style does not 
  9228. adversely affect the size of the push buttons and bit-map graphics an 
  9229. application might provide. 
  9230.  
  9231.  
  9232. ΓòÉΓòÉΓòÉ 12.2. Using Slider Controls ΓòÉΓòÉΓòÉ
  9233.  
  9234. This section explains how to use sliders in your PM applications. It covers: 
  9235.  
  9236.      Creating a linear slider 
  9237.      Retrieving data for selected slider values 
  9238.      Creating a circular slider 
  9239.  
  9240.  Code samples are provided. 
  9241.  
  9242.  
  9243. ΓòÉΓòÉΓòÉ 12.2.1. Creating a Linear Slider ΓòÉΓòÉΓòÉ
  9244.  
  9245. Before the slider is created, a temporary SLDCDATA data structure is allocated, 
  9246. and variables are specified for the slider control window handle and slider 
  9247. style. The SLDCDATA data structure is allocated so that the scale increments 
  9248. and spacing of the slider can be specified. 
  9249.  
  9250. The slider style variable enables the application to specify style bits, SLS_* 
  9251. values, that are used to customize the slider. 
  9252.  
  9253. You create a slider by using the WC_SLIDER window class name in the ClassName 
  9254. parameter of WinCreateWindow call. The handle of the slider control window is 
  9255. returned in the slider window variable. 
  9256.  
  9257. After the slider is created, but before it is made visible, the application can 
  9258. set other slider control characteristics, such as: 
  9259.  
  9260.      Size and placement of tick marks 
  9261.      Text above one or more tick marks 
  9262.      One or more detents 
  9263.      Initial slider arm position 
  9264.  
  9265.  The settings in the preceding list are just a few that an application can 
  9266.  specify. Slider control messages are used to specify these settings. 
  9267.  
  9268.  The sample code in the following figure shows an example of how a linear 
  9269.  slider is created. The main components of the slider are labeled. 
  9270.  
  9271.   Uses
  9272.     Os2Def,Os2Base,Os2PmApi;
  9273.  
  9274.   Var
  9275.     SldcData                 : SLDCDATA; (* SLDCDATA data structure        *)
  9276.     SzTickText : Array[0..4] : CHAR;     (* Text strings variable          *)
  9277.     Idx                      : USHORT;   (* Counter for setting text       *)
  9278.                                          (* strings                        *)
  9279.     HwndSlider               : HWND;     (* Slider window handle           *)
  9280.     UlSliderStyle            : ULONG;    (* Slider styles                  *)
  9281.  
  9282.   Begin
  9283.       (**********************************************************************)
  9284.       (* Initialize the parameters in the data structure.                   *)
  9285.       (**********************************************************************)
  9286.       sldcData.cbSize := sizeof(SLDCDATA); (* Size of SLDCDATA structure     *)
  9287.       sldcData.usScale1Increments := 6;    (* Number of increments           *)
  9288.       sldcData.usScale1Spacing := 0;       (* Use 0 to have slider calculate *)
  9289.                                            (* spacing                        *)
  9290.  
  9291.       (**********************************************************************)
  9292.       (* Set the SLS_* style flags to the default values, plus slider       *)
  9293.       (* buttons right.                                                     *)
  9294.       (**********************************************************************)
  9295.       ulSliderStyle := SLS_HORIZONTAL    Or (* Slider is horizontal           *)
  9296.                        SLS_CENTER        Or (* Slider shaft centered in       *)
  9297.                                             (* slider window                  *)
  9298.                        SLS_HOMELEFT      Or (* Home position is left edge of  *)
  9299.                                             (* slider                         *)
  9300.                        SLS_PRIMARYSCALE1 Or (* Scale is displayed above       *)
  9301.                                             (* slider shaft                   *)
  9302.                        SLS_BUTTONSRIGHT;    (* Slider buttons at right end of *)
  9303.                                             (* slider                         *)
  9304.  
  9305.       (**********************************************************************)
  9306.       (* Create the slider control window.                                  *)
  9307.       (* The handle of the window is returned in hwndSlider.                *)
  9308.       (**********************************************************************)
  9309.       hwndSlider := WinCreateWindow(
  9310.                     hwndClient,          (* Parent window handle           *)
  9311.                     WC_SLIDER,           (* Slider window class name       *)
  9312.                     nil,                 (* No window text                 *)
  9313.                     ulSliderStyle,       (* Slider styles variable         *)
  9314.                     10,                  (* X coordinate                   *)
  9315.                     10,                  (* Y coordinate                   *)
  9316.                     150,                 (* Window width                   *)
  9317.                     80,                  (* Window height                  *)
  9318.                     hwndClient,          (* Owner window handle            *)
  9319.                     HWND_TOP,            (* Sibling window handle          *)
  9320.                     ID_SLIDER,           (* Slider control window ID       *)
  9321.                     &sldcData,           (* Control data structure         *)
  9322.                     nil);                (* No presentation parameters     *)
  9323.  
  9324.       (**********************************************************************)
  9325.       (* Set tick marks at several places on the slider shaft using the     *)
  9326.       (* primary scale.                                                     *)
  9327.       (**********************************************************************)
  9328.       WinSendMsg(hwndSlider,              (* Slider window handle           *)
  9329.                  SLM_SETTICKSIZE,         (* Message for setting tick mark  *)
  9330.                                           (* size.                          *)
  9331.                  MPFROM2SHORT(
  9332.                    SMA_SETALLTICKS,       (* Attribute for setting all tick *)
  9333.                                           (* marks to the same size         *)
  9334.                    6),                    (* Draw tick marks 6 pixels long  *)
  9335.                   nil);                   (* Reserved value                 *)
  9336.  
  9337.       (**********************************************************************)
  9338.       (* Set text above the tick marks.                                     *)
  9339.       (**********************************************************************)
  9340.       For idx := 0 To 4 Do Begin          (* Count from 0 to 5              *)
  9341.         Str(10*idx, szTickText);          (* Set text at increments of 10   *)
  9342.  
  9343.         WinSendMsg(hwndSlider,            (* Slider window handle           *)
  9344.                  SLM_SETSCALETEXT,        (* Message for setting text on a  *)
  9345.                                           (* slider scale                   *)
  9346.                  MPFROMSHORT(idx),        (* Text string counter            *)
  9347.                  MPFROMP(szTickText));    (* Text to put on slider scale    *)
  9348.       End;
  9349.  
  9350.       (**********************************************************************)
  9351.       (* Set detents between two of the tick marks on the slider shaft.     *)
  9352.       (**********************************************************************)
  9353.       WinSendMsg(hwndSlider,              (* Slider window handle           *)
  9354.                  SLM_ADDDETENT,           (* Message for adding detents to  *)
  9355.                                           (* a slider scale                 *)
  9356.                  MPFROMSHORT(5),          (* Put a detent 5 pixels from home*)
  9357.                   nil);                   (* Reserved value                 *)
  9358.  
  9359.       WinSendMsg(hwndSlider,              (* Slider window handle           *)
  9360.                  SLM_ADDDETENT,           (* Message for adding detents to  *)
  9361.                                           (* slider scale                   *)
  9362.                  MPFROMSHORT(25),         (* Put a detent 25 pixels from    *)
  9363.                                           (* home                           *)
  9364.                   nil);                   (* Reserved value                 *)
  9365.  
  9366.       (**********************************************************************)
  9367.       (* Set the slider arm position to the 1st increment on the scale.     *)
  9368.       (**********************************************************************)
  9369.       WinSendMsg(hwndSlider,              (* Slider window handle           *)
  9370.                  SLM_SETSLIDERINFO,       (* Message for setting slider     *)
  9371.                                           (* attributes                     *)
  9372.                  MPFROM2SHORT(
  9373.                    SMA_SLIDERARMPOSITION, (* ModIfy slider arm position     *)
  9374.                    SMA_INCREMENTVALUE),   (* Use an increment value         *)
  9375.                    MPFROMSHORT(1));       (* Value to use is 1st            *)
  9376.                                           (* increment                      *)
  9377.  
  9378.       (**********************************************************************)
  9379.       (* Since all items have been set, make the control visible.           *)
  9380.       (**********************************************************************)
  9381.       WinShowWindow(hwndSlider,           (* Slider window handle           *)
  9382.                Ord(True));                (* Make the window visible        *)
  9383.  
  9384.   End.
  9385.  
  9386.  
  9387. ΓòÉΓòÉΓòÉ 12.2.2. Retrieving Data for Selected Slider Values ΓòÉΓòÉΓòÉ
  9388.  
  9389. To retrieve data represented by a slider value, specify a variable for the 
  9390. current position of the slider arm. Then, use the SLM_QUERYSLIDERINFO message 
  9391. to retrieve information about the current slider arm position in increment 
  9392. coordinates. The code fragment in the following figure shows how to retrieve 
  9393. data for a selected slider value: 
  9394.  
  9395. Uses
  9396.   Os2Def,Os2Base,Os2PmApi;
  9397.  
  9398. Var
  9399.   UlValue : ULONG; (* Variable in which to store     *)
  9400.                    (* strings                        *)
  9401.  
  9402. Begin
  9403.   (**********************************************************************)
  9404.   (* Get the information about the current slider arm position in       *)
  9405.   (* incremental coordinates.                                           *)
  9406.   (**********************************************************************)
  9407.   ulValue := WinSendMsg(
  9408.     hwndSlider,                       (* Slider window handle           *)
  9409.     SLM_QUERYSLIDERINFO,              (* Message for querying slider    *)
  9410.                                       (* attributes                     *)
  9411.     MPFROM2SHORT(
  9412.       SMA_SLIDERARMPOSITION,          (* Get increment at which slider  *)
  9413.       SMA_INCREMENTVALUE),            (* arm is located                 *)
  9414.     nil);                             (* Reserved value                 *)
  9415.  
  9416. End.
  9417.  
  9418.  
  9419. ΓòÉΓòÉΓòÉ 12.2.3. Creating a Circular Slider ΓòÉΓòÉΓòÉ
  9420.  
  9421. The circular slider PM window class WC_CIRCULARSLIDER is similar to the window 
  9422. class of a linear slider or a scroll bar. This window class must be registered 
  9423. with WinRegisterCircularSlider before you can create a circular slider. A 
  9424. circular slider can be created by a CONTROL statement in a dialog resource, as 
  9425. shown in the following figure: 
  9426.  
  9427. CONTROL "&tilde.Balance",
  9428.         ID_BALANCECS,
  9429.         10, 50, 60, 60,
  9430.         WC_CIRCULARSLIDER,
  9431.         WS_TABSTOP &vbar.
  9432.         WS_VISIBLE &vbar.
  9433.         CSS_POINTSELECT
  9434.  
  9435. A circular slider also can be created by specifying the WC_CIRCULARSLIDER 
  9436. window class name as a parameter of the WinCreateWindow call, as shown in the 
  9437. following sample code: 
  9438.  
  9439. hwndCS := WinCreateWindow (hwndClient,           (* Parent handle  *)
  9440.                            WC_CIRCULARSLIDER,    (* Class name     *)
  9441.                            '&tilde.Balance',           (* Window text    *)
  9442.                            WS_VISIBLE Or
  9443.                            WS_TABSTOP Or
  9444.                            CSS_POINTSELECT,
  9445.                            0,0,0,0,              (* Coordinates    *)
  9446.                            hwndClient,           (* Owner handle   *)
  9447.                            HWND_TOP,             (* Z-order        *)
  9448.                            ID_BALANCECS,         (* Window ID      *)
  9449.                            nil,                  (* Control data   *)
  9450.                            nil);                 (* Presparam      *)
  9451.  
  9452.  
  9453. ΓòÉΓòÉΓòÉ 12.2.4. Circular Slider Sample ΓòÉΓòÉΓòÉ
  9454.  
  9455. The following is a complete coding example for adding a circular slider, and 
  9456. includes the following files: 
  9457.  
  9458.      CIRCLE.C 
  9459.      CIRCLE.RC 
  9460.      CIRCLE.H 
  9461.  
  9462.   ================
  9463.   CIRCLE.C
  9464.   ================
  9465.  
  9466.   Uses
  9467.     Os2Def,Os2Base,Os2PmApi;
  9468.  
  9469.     (* Global Variables *)
  9470.  
  9471.   Const
  9472.     MAIN_FRAME   = 255;
  9473.     IDM_FILEMENU = 256;
  9474.     IDM_FILEEXIT = 257;
  9475.     ID_DIAL      = 258;
  9476.  
  9477.   Var
  9478.     Hab        : HAB;   (* ╨ísken var tom!! *)
  9479.     Hmq        : HMQ;   (* ╨ísken var tom!! *)
  9480.     Qmsg       : QMSG;  (* ╨ísken var tom!! *)
  9481.     HwndFrame  : HWND;  (* ╨ísken var tom!! *)
  9482.     FlCreate   : ULONG; (* ╨ísken var tom!! *)
  9483.     HwndClient : HWND;  (* ╨ísken var tom!! *)
  9484.  
  9485.   Function MainProc( hwnd : HWND, msg : ULONG,
  9486.                      mp1 : MPARAM, mp2 : MPARAM)
  9487.   Const hwndCirc : HWND;
  9488.   Var
  9489.     Hps : HPS; (* ╨ísken var tom!! *)
  9490.     Swp : SWP; (* ╨ísken var tom!! *)
  9491.  
  9492.   Begin
  9493.         Case msg Of
  9494.  
  9495.           WM_CLOSE:
  9496.             WinPostMsg(hwnd,WM_QUIT,0,0);
  9497.             MainProc := nil;
  9498.             Exit
  9499.  
  9500.           WM_COMMAND:
  9501.             (* Exit option was selected in the menu bar *)
  9502.             Case SHORT1FROMMP(mp1) Of
  9503.  
  9504.               IDM_FILEEXIT:
  9505.                 WinPostMsg(hwnd,WM_QUIT,0,0);
  9506.                 Halt(nil);
  9507.             End;
  9508.             MainProc := nil;
  9509.             Exit;
  9510.  
  9511.           WM_CONTROL:
  9512.             (* Process circular slider notIfication messages *)
  9513.             If (SHORT1FROMMP(mp1) = ID_DIAL) Then Begin
  9514.               Case SHORT2FROMMP(mp1) Of
  9515.                 (* NotIfication codes can be specified here *)
  9516.               End;
  9517.             End;
  9518.             (* Default processing for other control window ids *)
  9519.             MainProc := (WinDefWindowProc(hwnd,msg,mp1,mp2));
  9520.  
  9521.           WM_CREATE:
  9522.             (* Create circular slider control *)
  9523.             hwndCirc := WinCreateWindow(hwnd,
  9524.                                 WC_CIRCULARSLIDER,
  9525.                                 'My Dial Window',
  9526.                                 WS_VISIBLE,
  9527.                                 0, 0, 0, 0,          (* Position & size      *)
  9528.                                 hwnd,                (* Client window        *)
  9529.                                 HWND_TOP,
  9530.                                 ID_DIAL,
  9531.                                 nil,nil);
  9532.  
  9533.             (* SpecIfy range of values for circular slider *)
  9534.             WinSendMsg (hwndCirc,
  9535.                         CSM_SETRANGE,
  9536.                         MPFROMLONG(0),
  9537.                         MPFROMLONG(100));
  9538.  
  9539.             (* SpecIfy scroll & tick mark increments *)
  9540.             WinSendMsg (hwndCirc,
  9541.                         CSM_SETINCREMENT,
  9542.                         MPFROMLONG(10),
  9543.                         MPFROMLONG(2));
  9544.  
  9545.             (* Set initial value *)
  9546.             WinSendMsg (hwndCirc,
  9547.                         CSM_SETVALUE,
  9548.                         MPFROMLONG(80),
  9549.                         nil);
  9550.  
  9551.             MainProc := Ord(False);
  9552.             Exit;
  9553.  
  9554.           WM_SIZE:
  9555.             (* The frame window has changed in size *)
  9556.             (* Recalculate size of circular slider  *)
  9557.             WinQueryWindowPos(hwnd,&swp);
  9558.             WinSetWindowPos(hwndCirc,
  9559.                             HWND_TOP,
  9560.                             0, 0,
  9561.                             swp.cx,
  9562.                             swp.cy,
  9563.                             SWP_MOVE Or
  9564.                             SWP_SIZE);
  9565.             MainProc := nil;
  9566.             Exit;
  9567.  
  9568.           WM_PAINT:
  9569.             WinEndPaint(hps);
  9570.             MainProc := nil;
  9571.         Else Begin
  9572.           MainProc := WinDefWindowProc(hwnd,msg,mp1,mp2);
  9573.           Exit;
  9574.         End;
  9575.   End;
  9576.  
  9577.   Begin
  9578.       (* Convert system pointer into hourglass pointer *)
  9579.       WinSetPointer(HWND_DESKTOP,
  9580.         WinQuerySysPointer(HWND_DESKTOP,SPTR_WAIT,Ord(False)));
  9581.  
  9582.       hab := WinInitialize(0);
  9583.       hmq := WinCreateMsgQueue(hab,0);
  9584.  
  9585.       WinRegisterClass(hab,'Client',MainProc,CS_SIZEREDRAW,0);
  9586.  
  9587.       flCreate := FCF_SYSMENU       Or
  9588.                   FCF_SIZEBORDER    Or
  9589.                   FCF_TITLEBAR      Or
  9590.                   FCF_MENU          Or
  9591.                   FCF_MINMAX        Or
  9592.                   FCF_SHELLPOSITION Or
  9593.                   FCF_TASKLIST;
  9594.  
  9595.       hwndFrame := WinCreateStdWindow(HWND_DESKTOP,
  9596.                                       WS_VISIBLE,
  9597.                                       &flCreate,
  9598.                                       'Client',
  9599.                                       'My Dial',
  9600.                                       0, 0,
  9601.                                       MAIN_FRAME,
  9602.                                       &hwndClient);
  9603.  
  9604.       (* Convert system pointer into arrow pointer *)
  9605.       WinSetPointer(HWND_DESKTOP,
  9606.         WinQuerySysPointer(HWND_DESKTOP,SPTR_ARROW,Ord(False)));
  9607.  
  9608.       While (WinGetMsg(hab,&qmsg,0,0,0)<>0) Do WinDispatchMsg(hab,&qmsg);
  9609.  
  9610.       WinDestroyWindow(hwndFrame);
  9611.       WinDestroyMsgQueue(hmq);
  9612.       WinTerminate(hab);
  9613.  
  9614.       (* Beep when done *)
  9615.       DosBeep(750,500);
  9616.       Halt(0);
  9617.   End.
  9618.  
  9619.   ================
  9620.    CIRCLE.RC
  9621.   ================
  9622.   #include <os2.h>
  9623.   #include "circle.h"
  9624.  
  9625.   ACCELTABLE MAIN_FRAME
  9626.   {
  9627.           VK_F3, IDM_FILEEXIT, VIRTUALKEY
  9628.   }
  9629.  
  9630.   MENU    MAIN_FRAME
  9631.   {
  9632.       SUBMENU         "~File",            IDM_FILEMENU
  9633.       {
  9634.           MENUITEM    "E~xit\tF3",        IDM_FILEEXIT
  9635.       }
  9636.   }
  9637.  
  9638.   ================
  9639.   CIRCLE.H
  9640.   ================
  9641.   #define MAIN_FRAME    255
  9642.   #define IDM_FILEMENU  256
  9643.   #define IDM_FILEEXIT  257
  9644.   #define ID_DIAL       258
  9645.  
  9646.  
  9647. ΓòÉΓòÉΓòÉ 12.3. Graphical User Interface Support for Slider Controls ΓòÉΓòÉΓòÉ
  9648.  
  9649. This section describes the support the slider control provides for graphical 
  9650. user interfaces (GUIs). Except where noted, this support conforms to the 
  9651. guidelines in the SAA CUA Advanced Interface Design Reference. 
  9652.  
  9653. Since slider values all are mutually exclusive, only one of them can be 
  9654. selected at a time. Therefore, the only type of selection supported by the 
  9655. slider control is single selection. 
  9656.  
  9657. Note:  If more than one slider window is open, selecting values in one slider 
  9658.        window has no effect on the values selected in any other slider window. 
  9659.        For linear sliders, a black square is drawn in the center of the slider 
  9660.        arm to show which slider control window has the focus. 
  9661.  
  9662.  An initial value is selected when the slider control is first displayed. If 
  9663.  the application does not provide the initial selection for a linear slider 
  9664.  (using the SLM_SETSLIDERINFO message) to position the slider arm, the value at 
  9665.  the home position is selected automatically. The home position is the end of 
  9666.  the slider that contains the lowest value on the scale. 
  9667.  
  9668.  
  9669. ΓòÉΓòÉΓòÉ 12.3.1. Slider Navigation Techniques ΓòÉΓòÉΓòÉ
  9670.  
  9671. The slider control supports the use of pointing devices and the keyboard for 
  9672. selecting values. 
  9673.  
  9674.  
  9675. ΓòÉΓòÉΓòÉ 12.3.1.1. Pointing Device Support ΓòÉΓòÉΓòÉ
  9676.  
  9677. A user can select slider values with a pointing device. The CUA guidelines 
  9678. defines mouse button 1 (the select button) as the button for selecting values, 
  9679. and button 2 (the drag button) for dragging the slider arm to a value. These 
  9680. definitions also apply to the same buttons on any other pointing device, such 
  9681. as a joystick. 
  9682.  
  9683. The select button and drag button can be used in conjunction with the following 
  9684. slider components to select slider values: 
  9685.  
  9686.      Slider arm 
  9687.  
  9688.       Moving the pointer over the slider arm, then pressing and holding the 
  9689.       select or drag buttons while moving the pointer, causes the slider arm to 
  9690.       move in the direction the pointer is moving. When the button is released, 
  9691.       the value closest to the slider arm position becomes the selected value. 
  9692.  
  9693.      Slider shaft 
  9694.  
  9695.       Clicking the select button when the pointer is over the slider shaft 
  9696.       causes the slider arm to move one increment in the direction of the 
  9697.       pointer. For linear sliders, increments are determined by the initial 
  9698.       values passed for the primary scale specified (SLS_PRIMARYSCALE1 or 
  9699.       SLS_PRIMARYSCALE2) when the slider is created. 
  9700.  
  9701.       Clicking the drag button when the pointer is over the slider shaft causes 
  9702.       the slider arm to move to the pointer's location. 
  9703.  
  9704.      Slider buttons 
  9705.  
  9706.       Clicking the select button when the pointer is over a slider button 
  9707.       causes the slider arm to move one increment in the direction the arrow on 
  9708.       the slider button is pointing. 
  9709.  
  9710.       Slider buttons are optional. If used, two slider buttons are available to 
  9711.       the user. The arrows on top of the slider buttons point to opposite ends 
  9712.       of the slider. Both slider buttons are positioned at the same end of the 
  9713.       slider. 
  9714.  
  9715.       For linear sliders, slider buttons are enabled by specifying the 
  9716.       appropriate SLS_* value when the slider control window is created. For 
  9717.       horizontal sliders, you can specify either SLS_BUTTONSLEFT or 
  9718.       SLS_BUTTONSRIGHT. For vertical sliders, you can specify either 
  9719.       SLS_BUTTONSBOTTOM or SLS_BUTTONSTOP. The default is no slider buttons. If 
  9720.       more than one of these style bits is specified, no slider buttons are 
  9721.       enabled. 
  9722.  
  9723.      Detents 
  9724.  
  9725.       A detent is similar to a tick mark on a linear slider scale because it 
  9726.       represents a value on the scale. However, unlike a tick mark, a detent 
  9727.       can be placed anywhere along the slider scale instead of in specific 
  9728.       increments. 
  9729.  
  9730.       A detent can be selected by moving the pointer over it and pressing the 
  9731.       select button on the pointing device. When this happens, the slider arm 
  9732.       moves to the position on the slider shaft indicated by the detent. 
  9733.  
  9734.  
  9735. ΓòÉΓòÉΓòÉ 12.3.1.2. Keyboard Support ΓòÉΓòÉΓòÉ
  9736.  
  9737. A user can select a value by using the navigation keys to move the slider arm 
  9738. to the value or by typing a value in an entry field, if one is provided by the 
  9739. application, to change the slider arm position. The following list describes 
  9740. these methods of selecting slider values: 
  9741.  
  9742.      Values can be selected using the Up, Down, Left, and Right Arrow keys to 
  9743.       move the slider arm one increment at a time. The Up and Down Arrow keys 
  9744.       are enabled for vertical sliders, and the Right and Left Arrow keys are 
  9745.       enabled for horizontal sliders. If no tick mark exists on the scale in 
  9746.       the requested direction, the slider arm does not move. 
  9747.  
  9748.       If an Arrow key is pressed in conjunction with the Shift key, the slider 
  9749.       arm moves to the next detent instead of the next tick mark. If no detent 
  9750.       exists on the scale in the requested direction, the slider arm does not 
  9751.       move. 
  9752.  
  9753.      The Home and End keys can be used to select the lowest and highest 
  9754.       values, respectively, in the scale. If the Ctrl key is pressed in 
  9755.       combination with the Home or End keys, the result is the same as pressing 
  9756.       only the Home or End keys. 
  9757.  
  9758.      The application can provide an optional entry field for the slider 
  9759.       control. The entry field is a separate control, but it can work in 
  9760.       conjunction with the slider control. 
  9761.  
  9762.       If the application provides an entry field for the slider control window, 
  9763.       it must be implemented as follows: 
  9764.  
  9765.         -  The user must be allowed to type a value into the entry field. 
  9766.  
  9767.         -  If the typed value is within the range of the slider scale, the 
  9768.            slider arm moves to that value as soon as the value is typed. 
  9769.  
  9770.         -  No other action, such as pressing the Enter key, is required. 
  9771.  
  9772.  
  9773. ΓòÉΓòÉΓòÉ 13. Spin Button Controls ΓòÉΓòÉΓòÉ
  9774.  
  9775. A spin button control (WC_SPINBUTTON window class) is a visual component that 
  9776. gives users quick access to a finite set of data by letting them select from a 
  9777. scrollable ring of choices. Because the user can see only one item at a time, a 
  9778. spin button should be used only with data that is intuitively related, such as 
  9779. a list of the months of the year, or an alphabetic list of cities or states. 
  9780. This chapter explains when and how to use spin buttons in PM applications. 
  9781.  
  9782.  
  9783. ΓòÉΓòÉΓòÉ 13.1. About Spin Button Controls ΓòÉΓòÉΓòÉ
  9784.  
  9785. A spin button consists of at least one spin field that is a single-line entry 
  9786. (SLE) field, and up and down arrows that are stacked on top of one another. 
  9787. These arrows are positioned to the right of the SLE field. 
  9788.  
  9789. You can create multi-field spin buttons for those applications in which users 
  9790. must select more than one value. For example, in setting a date, the spin 
  9791. button control can provide individual fields for setting the month, day, and 
  9792. year. The first spin field in the spin button could contain a list of months; 
  9793. the second, a list of numbers; and the third, a list of years. 
  9794.  
  9795. The application uses a multi-field spin button by creating one master component 
  9796. that contains a spin field and the spin arrows, and servant components that 
  9797. contain only spin fields. The spin buttons are created at component 
  9798. initialization. The servant components are passed a handle to the master 
  9799. component in a message. When a servant spin field has the focus, it is spun by 
  9800. the arrows in the master component. 
  9801.  
  9802. The list of values in a spin button entry field can be an array of data or a 
  9803. list of consecutive integers, defined by an upper and a lower limit. 
  9804.  
  9805.  
  9806. ΓòÉΓòÉΓòÉ 13.2. Using Spin Button Controls ΓòÉΓòÉΓòÉ
  9807.  
  9808. This section describes how to create a spin button control. 
  9809.  
  9810.  
  9811. ΓòÉΓòÉΓòÉ 13.2.1. Creating a Spin Button ΓòÉΓòÉΓòÉ
  9812.  
  9813. A spin button is created as a public window class by using WinCreateWindow, 
  9814. with a class style of WC_SPINBUTTON and a window style of WS_VISIBLE. These are 
  9815. joined with any of the spin button style flags by using a logical OR (Or). The 
  9816. spin button style flags let you specify: 
  9817.  
  9818.      Character input restrictions (none, numeric, read-only) 
  9819.      Presentation of the data in the spin field (left-justified, 
  9820.       right-justified, centered) 
  9821.      Presence or absence of a border around the spin field 
  9822.      Spin speed 
  9823.      Zero-padding of numeric spin fields 
  9824.  
  9825.  The placement and width of the spin button component are specified as 
  9826.  parameters in WinCreateWindow. 
  9827.  
  9828.  The upper and lower limits of numeric fields, the value array pointer for 
  9829.  arrays of strings, and the initial value in the spin field are all set by 
  9830.  messages sent from the application to the component. 
  9831.  
  9832.  You can destroy the spin button component window using WinDestroyWindow when 
  9833.  finished. The component handle that was returned when the spin button was 
  9834.  created is the input parameter to WinDestroyWindow. The following sample code 
  9835.  shows an example of how to create a spin button. 
  9836.  
  9837.   Uses
  9838.     Os2Def,Os2Base,Os2PmApi;
  9839.  
  9840.   Var
  9841.     UlSpinStyle : ULONG; (* Spin Button style             *)
  9842.     HwndSpin    : HWND;  (* Spin Button window handle     *)
  9843.  
  9844.   Begin
  9845.  
  9846.     (**********************************************************************)
  9847.     (* Set the SPBS_* style flags.                                        *)
  9848.     (**********************************************************************)
  9849.     ulSpinStyle := SPBS_MASTER      Or     (* Spin button has its own       *)
  9850.                                            (* buttons,                      *)
  9851.                    SPBS_NUMERICONLY Or     (* and it only holds numbers     *)
  9852.                    SPBS_JUSTRIGHT   Or     (* that are right justIfied,     *)
  9853.                    SPBS_FASTSPIN;          (* and it spins faster as        *)
  9854.                                            (* the arrows are held down      *)
  9855.  
  9856.     (**********************************************************************)
  9857.     (* Create the Spin Button control window.                             *)
  9858.     (* The handle of the window is returned in hwndSpin.                  *)
  9859.     (**********************************************************************)
  9860.     hwndSpin := WinCreateWindow (
  9861.                       hwndClient,     (* Parent window handle          *)
  9862.                       WC_SPINBUTTON,  (* Spin Button window class name *)
  9863.                       nil,            (* No window text                *)
  9864.                       ulSpinStyle,    (* Spin Button styles variable   *)
  9865.  
  9866.                       10,             (* X coordinate                  *)
  9867.                       10,             (* Y coordinate                  *)
  9868.                       150,            (* Window width                  *)
  9869.                       50,             (* Window height                 *)
  9870.                       hwndClient,     (* Owner window handle           *)
  9871.                       HWND_TOP,       (* Sibling window handle         *)
  9872.                       ID_SPINBUTTON,  (* Spin Button control window ID *)
  9873.                       nil,            (* No control data structure     *)
  9874.                       nil);           (* No presentation parameters    *)
  9875.  
  9876.     (**********************************************************************)
  9877.     (* Set the limits of the Spin Button control, since it has a style    *)
  9878.     (* of SPBS_NUMERICONLY.                                               *)
  9879.     (**********************************************************************)
  9880.     WinSendMsg (hwndSpin,                (* Spin Button window handle     *)
  9881.                 SPBM_SETLIMITS,          (* Set limits message            *)
  9882.                 1000,                    (* Spin Button maximum setting   *)
  9883.                 0);                      (* Spin Button minimum setting   *)
  9884.  
  9885.     (**********************************************************************)
  9886.     (* Set the initial value of the Spin Button.                          *)
  9887.     (**********************************************************************)
  9888.     WinSendMsg (hwndSpin,                (* Spin Button window handle     *)
  9889.                 SPBM_SETCURRENTVALUE,    (* Set current value message     *)
  9890.                 100,                     (* Spin Button initial value     *)
  9891.                 nil);                    (* Reserved value                *)
  9892.  
  9893.     (**********************************************************************)
  9894.     (* Because all items have been set, make the control visible.         *)
  9895.     (**********************************************************************)
  9896.     WinShowWindow (hwndSpin,             (* Spin Button window handle     *)
  9897.               Ord(True));                (* Make the window visible       *)
  9898.  
  9899.   End.
  9900.  
  9901.  
  9902. ΓòÉΓòÉΓòÉ 13.3. Graphical User Interface Support for Spin Button Controls ΓòÉΓòÉΓòÉ
  9903.  
  9904. Users can interact with the spin button using either the keyboard or a pointing 
  9905. device, such as a mouse, as follows: 
  9906.  
  9907.      Using the select button (button 1) on the pointing device, users first 
  9908.       give focus to the spin field they want to change, and then click on 
  9909.       either the Up Arrow or Down Arrow until the value they want is displayed 
  9910.       in the spin field. 
  9911.  
  9912.      Using a keyboard, users press the: 
  9913.  
  9914.         -  Up Arrow and Down Arrow keys to see the choices 
  9915.  
  9916.         -  Left Arrow and Right Arrow keys to move the cursor left and right 
  9917.            within a spin field 
  9918.  
  9919.         -  Home and End keys to move the cursor to the first and last 
  9920.            characters in a spin field 
  9921.  
  9922.         -  Tab and Shift+Tab keys to move the input focus from one field to 
  9923.            another in multi-field spin buttons 
  9924.  
  9925.  Users can view the values in a spin field one at a time, or they can rapidly 
  9926.  scroll a list by keeping either the Up or Down Arrow keys pressed. When a spin 
  9927.  button is not read-only, users can advance quickly to the value they want to 
  9928.  set in a spin field by typing over the value currently displayed. 
  9929.  
  9930.  
  9931. ΓòÉΓòÉΓòÉ 14. Static Controls ΓòÉΓòÉΓòÉ
  9932.  
  9933. A static control is a simple text field, bit map, or icon that an application 
  9934. can use to label, enclose, or separate other control windows. This chapter 
  9935. describes how to create and use static controls in PM applications. 
  9936.  
  9937.  
  9938. ΓòÉΓòÉΓòÉ 14.1. About Static Controls ΓòÉΓòÉΓòÉ
  9939.  
  9940. Unlike the other types of control windows, a static control does not accept 
  9941. user input or send notification messages to its owner. The primary advantage of 
  9942. a static control is that it provides a label or graphic that requires little 
  9943. attention from an application. At most, an application might change the text or 
  9944. position of a static control. 
  9945.  
  9946.  
  9947. ΓòÉΓòÉΓòÉ 14.1.1. Keyboard Focus ΓòÉΓòÉΓòÉ
  9948.  
  9949. A static control never accepts the keyboard focus. When a static control 
  9950. receives a WM_SETFOCUS message, or when a user clicks the static control, the 
  9951. system advances the focus to the next sibling window that is not a static 
  9952. control. If the control has no siblings, the system gives the focus to the 
  9953. owner of the static control. 
  9954.  
  9955.  
  9956. ΓòÉΓòÉΓòÉ 14.1.2. Static Control Handle ΓòÉΓòÉΓòÉ
  9957.  
  9958. Every static control is associated with a 32-bit data field. A static control 
  9959. with the SS_BITMAP or SS_ICON style uses this field to store the handle of the 
  9960. bit map or icon that it displays. An application can obtain that handle by 
  9961. sending the SM_QUERYHANDLE message to the control. An application can replace 
  9962. the bit map or icon by sending the SM_SETHANDLE message to the control, 
  9963. specifying a valid icon or bit map handle. Changing the handle causes the 
  9964. system to redraw the control. 
  9965.  
  9966. For a non-icon or non-bit map static control, the data field is available for 
  9967. application-defined data and has no effect on the appearance of the control. 
  9968.  
  9969. An application can retrieve the data field of a static control window by 
  9970. calling WinWindowFromID, using the handle of the owner and the window 
  9971. identifier of the static control. The static control window identifier is 
  9972. specified in either the dialog-window template or WinCreateWindow. 
  9973.  
  9974.  
  9975. ΓòÉΓòÉΓòÉ 14.1.3. Static Control Styles ΓòÉΓòÉΓòÉ
  9976.  
  9977. A static control has style bits that determine whether the control displays 
  9978. text, draws a simple box containing text, displays an icon or a bit map, or 
  9979. shows a framed or unframed colored box. Applications can specify a combination 
  9980. of the following styles for a static control: 
  9981.  
  9982. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9983. ΓöéStyle Name          ΓöéDescription                             Γöé
  9984. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9985. ΓöéSS_BITMAP           ΓöéDraws a bit map. The bit map resource   Γöé
  9986. Γöé                    Γöémust be provided in the                 Γöé
  9987. Γöé                    Γöéresource-definition file. To include theΓöé
  9988. Γöé                    Γöébit map in a dialog window, the resourceΓöé
  9989. Γöé                    Γöéidentifier must be specified in the textΓöé
  9990. Γöé                    Γöéparameter of the CONTROL statement in   Γöé
  9991. Γöé                    Γöéthe resource definition file. To includeΓöé
  9992. Γöé                    Γöéthe bit map in a non-dialog window, the Γöé
  9993. Γöé                    ΓöéASCII representation of the identifier  Γöé
  9994. Γöé                    Γöémust be specified in the pszName        Γöé
  9995. Γöé                    Γöéparameter of WinCreateWindow, that is,  Γöé
  9996. Γöé                    Γöéthe first byte of the pszName parameter Γöé
  9997. Γöé                    Γöémust be the cross-hatch character (#),  Γöé
  9998. Γöé                    Γöéand the remaining text must be the ASCIIΓöé
  9999. Γöé                    Γöérepresentation of the identifier, for   Γöé
  10000. Γöé                    Γöéexample, #125.                          Γöé
  10001. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10002. ΓöéSS_BKGNDFRAME       ΓöéCreates a box whose frame has the       Γöé
  10003. Γöé                    Γöébackground color.                       Γöé
  10004. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10005. ΓöéSS_BKGNDRECT        ΓöéCreates a rectangle filled with the     Γöé
  10006. Γöé                    Γöébackground color.                       Γöé
  10007. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10008. ΓöéSS_FGNDFRAME        ΓöéCreates a box whose frame has the       Γöé
  10009. Γöé                    Γöéforeground color.                       Γöé
  10010. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10011. ΓöéSS_FGNDRECT         ΓöéCreates a rectangle filled with the     Γöé
  10012. Γöé                    Γöéforeground color.                       Γöé
  10013. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10014. ΓöéSS_GROUPBOX         ΓöéCreates a box whose upper-right corner  Γöé
  10015. Γöé                    Γöécontains control text. This style is    Γöé
  10016. Γöé                    Γöéuseful for enclosing groups of radio    Γöé
  10017. Γöé                    Γöébuttons or check boxes in a box.        Γöé
  10018. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10019. ΓöéSS_HALFTONEFRAME    ΓöéCreates a box whose frame has halftone  Γöé
  10020. Γöé                    Γöéshading.                                Γöé
  10021. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10022. ΓöéSS_HALFTONERECT     ΓöéCreates a box filled with halftone      Γöé
  10023. Γöé                    Γöéshading.                                Γöé
  10024. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10025. ΓöéSS_ICON             ΓöéDraws an icon. The resource identifier  Γöé
  10026. Γöé                    Γöéfor the icon resource is determined the Γöé
  10027. Γöé                    Γöésame way as the SS_BITMAP style. The    Γöé
  10028. Γöé                    Γöéicon resource must be in the            Γöé
  10029. Γöé                    Γöéresource-definition file.               Γöé
  10030. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10031. ΓöéSS_SYSICON          ΓöéDraws a system-pointer icon. The        Γöé
  10032. Γöé                    Γöéresource identifier for the             Γöé
  10033. Γöé                    Γöésystem-pointer resource is determined   Γöé
  10034. Γöé                    Γöéthe same way as the SS_BITMAP style. To Γöé
  10035. Γöé                    Γöédisplay this system pointer, the system Γöé
  10036. Γöé                    Γöécalls WinQuerySysPointer with the       Γöé
  10037. Γöé                    Γöéspecified identifier.                   Γöé
  10038. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10039. ΓöéSS_TEXT             ΓöéCreates a box with formatted text. An   Γöé
  10040. Γöé                    Γöéapplication can combine various         Γöé
  10041. Γöé                    Γöéformatting options with this style to   Γöé
  10042. Γöé                    Γöéproduce formatted text in the boundariesΓöé
  10043. Γöé                    Γöéof the control. The formatting flags areΓöé
  10044. Γöé                    Γöéthe same as those used for WinDrawText. Γöé
  10045. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10046.  
  10047.  
  10048. ΓòÉΓòÉΓòÉ 14.1.4. Default Static Control Performance ΓòÉΓòÉΓòÉ
  10049.  
  10050. The messages specifically handled by the predefined static control class 
  10051. (WC_STATIC) are as follows: 
  10052.  
  10053. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10054. ΓöéMessage Name          ΓöéDescription                           Γöé
  10055. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10056. ΓöéSM_QUERYHANDLE        ΓöéReturns the handle associated with theΓöé
  10057. Γöé                      Γöéstatic control window.                Γöé
  10058. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10059. ΓöéSM_SETHANDLE          ΓöéSets the handle associated with the   Γöé
  10060. Γöé                      Γöéstatic control and invalidates the    Γöé
  10061. Γöé                      Γöécontrol window, forcing it to be      Γöé
  10062. Γöé                      Γöéredrawn.                              Γöé
  10063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10064. ΓöéWM_ADJUSTWINDOWPOS    ΓöéAdjusts the SWP data structure so thatΓöé
  10065. Γöé                      Γöéthe new window size matches the bit   Γöé
  10066. Γöé                      Γöémap, icon, or system-pointer          Γöé
  10067. Γöé                      Γöédimensions associated with the static Γöé
  10068. Γöé                      Γöécontrol.                              Γöé
  10069. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10070. ΓöéWM_CREATE             ΓöéSets the text for a static-text       Γöé
  10071. Γöé                      Γöécontrol. Loads the bit map or icon    Γöé
  10072. Γöé                      Γöéresource for the bit map or icon      Γöé
  10073. Γöé                      Γöéstatic control. Returns TRUE if the   Γöé
  10074. Γöé                      Γöéresource cannot be loaded.            Γöé
  10075. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10076. ΓöéWM_DESTROY            ΓöéFrees the text for a static-text      Γöé
  10077. Γöé                      Γöécontrol. Destroys the bit map or icon Γöé
  10078. Γöé                      Γöéfor a bit map or icon static control. Γöé
  10079. Γöé                      ΓöéThe icon for a system-pointer static  Γöé
  10080. Γöé                      Γöécontrol is not destroyed because it   Γöé
  10081. Γöé                      Γöébelongs to the system.                Γöé
  10082. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10083. ΓöéWM_ENABLE             ΓöéInvalidates the entire static control Γöé
  10084. Γöé                      Γöéwindow, forcing it to be redrawn.     Γöé
  10085. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10086. ΓöéWM_HITTEST            ΓöéReturns the value HT_TRANSPARENT for  Γöé
  10087. Γöé                      Γöéthe following static-control styles:  Γöé
  10088. Γöé                      Γöéo SS_BKGNDFRAME                       Γöé
  10089. Γöé                      Γöéo SS_BKGNDRECT                        Γöé
  10090. Γöé                      Γöéo SS_FGNDFRAME                        Γöé
  10091. Γöé                      Γöéo SS_FGNDRECT                         Γöé
  10092. Γöé                      Γöéo SS_GROUPBOX                         Γöé
  10093. Γöé                      Γöéo SS_HALFTONEFRAME                    Γöé
  10094. Γöé                      Γöéo SS_HALFTONERECT.                    Γöé
  10095. Γöé                      Γöé                                      Γöé
  10096. Γöé                      ΓöéFor other styles, this message returnsΓöé
  10097. Γöé                      Γöéthe result of WinDefWindowProc.       Γöé
  10098. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10099. ΓöéWM_MATCHMNEMONIC      ΓöéReturns TRUE if the mnemonic passed inΓöé
  10100. Γöé                      Γöéthe mp1 parameter matches the mnemonicΓöé
  10101. Γöé                      Γöéin the control-window text.           Γöé
  10102. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10103. ΓöéWM_MOUSEMOVE          ΓöéSets the mouse pointer to the arrow   Γöé
  10104. Γöé                      Γöépointer and returns TRUE.             Γöé
  10105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10106. ΓöéWM_PAINT              ΓöéDraws the static control based on its Γöé
  10107. Γöé                      Γöéstyle attributes.                     Γöé
  10108. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10109. ΓöéWM_QUERYDLGCODE       ΓöéReturns the predefined constant       Γöé
  10110. Γöé                      ΓöéDLGC_STATIC.                          Γöé
  10111. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10112. ΓöéWM_QUERYWINDOWPARAMS  ΓöéReturns the requested window          Γöé
  10113. Γöé                      Γöéparameters.                           Γöé
  10114. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10115. ΓöéWM_SETFOCUS           ΓöéSets the focus to the next sibling    Γöé
  10116. Γöé                      Γöéwindow that can accept the focus; or  Γöé
  10117. Γöé                      Γöéif no such sibling exists, sets the   Γöé
  10118. Γöé                      Γöéfocus to the parent window.           Γöé
  10119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10120. ΓöéWM_SETWINDOWPARAMS    ΓöéAllows the text to be set (static-textΓöé
  10121. Γöé                      Γöécontrols only).                       Γöé
  10122. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10123.  
  10124.  
  10125. ΓòÉΓòÉΓòÉ 14.2. Using Static Controls ΓòÉΓòÉΓòÉ
  10126.  
  10127. This section explains how to perform the following tasks: 
  10128.  
  10129.      Include a static control in a dialog window 
  10130.      Include a static control in a client window 
  10131.  
  10132.  
  10133. ΓòÉΓòÉΓòÉ 14.2.1. Including a Static Control in a Dialog Window ΓòÉΓòÉΓòÉ
  10134.  
  10135. To include a static control in a dialog window, you must define the control in 
  10136. a dialog-window template in a resource-definition file. The following 
  10137. resource-definition file creates a dialog window that contains a static-text 
  10138. control and three static-icon controls: 
  10139.  
  10140. DLGTEMPLATE IDD_TOOLDLG LOADONCALL MOVEABLE DISCARDABLE
  10141.   BEGIN
  10142.     DIALOG "",
  10143.            IDD_TOOLDLG,
  10144.            114, 53, 161, 127,
  10145.            FS_NOBYTEALIGN &vbar.
  10146.            FS_DLGBORDER   &vbar.
  10147.            WS_VISIBLE     &vbar.
  10148.            WS_SAVEBITS
  10149.  
  10150.     BEGIN
  10151.       CTEXT "Select a tool",
  10152.             IDS_TEXT,
  10153.             49, 110, 56, 8,
  10154.             SS_TEXT   &vbar.
  10155.             DT_CENTER &vbar.
  10156.             DT_TOP    &vbar.
  10157.             WS_GROUP  &vbar.
  10158.             WS_VISIBLE
  10159.  
  10160.       AUTORADIOBUTTON "Paintbrush",
  10161.                       IDB_BRUSH,
  10162.                       63, 87, 61, 10,
  10163.                       WS_TABSTOP &vbar.
  10164.                       WS_GROUP   &vbar.
  10165.                       WS_VISIBLE
  10166.  
  10167.       AUTORADIOBUTTON "Scissors",
  10168.                       IDB_SCISSORS,
  10169.                       63, 64, 60, 10,
  10170.                       WS_TABSTOP &vbar.
  10171.                       WS_VISIBLE
  10172.  
  10173.       AUTORADIOBUTTON "Eraser",
  10174.                       IDB_ERASER,
  10175.                       65, 39, 43, 10,
  10176.                       WS_TABSTOP &vbar.
  10177.                       WS_VISIBLE
  10178.  
  10179.       ICON IDI_BRUSH,
  10180.            IDI_BRUSHICON,
  10181.            33, 84, 22, 16,
  10182.            WS_GROUP &vbar.
  10183.            WS_VISIBLE
  10184.  
  10185.       ICON IDI_SCISSORS,
  10186.            IDI_SCISSORSICON,
  10187.            33, 60, 22, 16,
  10188.            WS_GROUP &vbar.
  10189.            WS_VISIBLE
  10190.  
  10191.       ICON IDI_ERASER,
  10192.            IDI_ERASERICON,
  10193.            33, 36, 22, 16,
  10194.            WS_GROUP &vbar.
  10195.            WS_VISIBLE
  10196.  
  10197.       PUSHBUTTON "OK",
  10198.                  DID_OK,
  10199.                  10, 12, 38, 13,
  10200.                  WS_TABSTOP &vbar.
  10201.                  WS_GROUP   &vbar.
  10202.                  WS_VISIBLE
  10203.  
  10204.       PUSHBUTTON "Cancel",
  10205.                  DID_CANCEL,
  10206.                  59, 12, 38, 13,
  10207.                  BS_DEFAULT &vbar.
  10208.                  WS_TABSTOP &vbar.
  10209.                  WS_GROUP   &vbar.
  10210.                  WS_VISIBLE
  10211.  
  10212.       PUSHBUTTON "Help",
  10213.                  IDB_HELP,
  10214.                  111, 13, 38, 13,
  10215.                  BS_HELP    &vbar.
  10216.                  WS_TABSTOP &vbar.
  10217.                  WS_GROUP   &vbar.
  10218.                  WS_VISIBLE
  10219.     END
  10220.   END
  10221.  
  10222. ICON IDI_BRUSH    brush.ico
  10223. ICON IDI_SCISSORS scissr.ico
  10224. ICON IDI_ERASER   eraser.ico
  10225.  
  10226.  
  10227. ΓòÉΓòÉΓòÉ 14.2.2. Including a Static Control in a Client Window ΓòÉΓòÉΓòÉ
  10228.  
  10229. An application can include a static control in a non-dialog window by calling 
  10230. WinCreateWindow with the window class WC_STATIC. The flStyle parameter to 
  10231. WinCreateWindow defines the appearance of the control. 
  10232.  
  10233. The following code fragment creates a static text control whose size and 
  10234. position are based on the size of the client window and the metrics for the 
  10235. current font: 
  10236.  
  10237.  
  10238. Uses
  10239.   Os2Def,Os2Base,Os2PmApi;
  10240.  
  10241. Const
  10242.   ID_TITLE = 5;
  10243.  
  10244. Var
  10245.   Hwnd,hwndStatic,hwndClient : HWND;        (* ╨ísken var tom!! *)
  10246.   Hps                        : HPS;         (* ╨ísken var tom!! *)
  10247.   Rcl                        : RECTL;       (* ╨ísken var tom!! *)
  10248.   Fm                         : FONTMETRICS; (* ╨ísken var tom!! *)
  10249.   UlTitleLen                 : ULONG;       (* ╨ísken var tom!! *)
  10250.   SzTitle                    : PCHAR;        (* ╨ísken var tom!! *)
  10251.  
  10252. Begin
  10253.   szTitle := 'Static Text Controls';
  10254.  
  10255.   (* Obtain the size of the client window *)
  10256.   hps := WinBeginPaint (hwnd, NULL, NULL);
  10257.   WinQueryWindowRect(hwnd, &rcl);
  10258.  
  10259.   (* Obtain a presentation space handle and *)
  10260.   (* the metrics for the current font       *)
  10261.   GpiQueryFontMetrics(hps, sizeof(FONTMETRICS), &fm);
  10262.  
  10263.   (* Obtain the size of the static control text string *)
  10264.   ulTitleLen := strlen(szTitle);
  10265.  
  10266.   (* Create the static control. Base the size and  *)
  10267.   (* position on the size of the client window and *)
  10268.   (* the metrics of the current font.              *)
  10269.  
  10270.   hwndStatic := WinCreateWindow(
  10271.               hwndClient,                    (* Parent window          *)
  10272.               WC_STATIC,                     (* Window class           *)
  10273.               szTitle,                       (* Window text            *)
  10274.               WS_VISIBLE Or                  (* Make it visible        *)
  10275.               SS_TEXT    Or                  (* Static-text control    *)
  10276.               DT_VCENTER Or                  (* Center text vert.      *)
  10277.               DT_CENTER,                     (* Center text horiz.     *)
  10278.  
  10279.               ((rcl.xRight / 2) -
  10280.               (ulTitleLen / 2) * fm.lEmInc), (* x position             *)
  10281.               rcl.yTop - fm.lEmHeight * 2,   (* y position             *)
  10282.               fm.lEmInc * ulTitleLen,        (* Width                  *)
  10283.               fm.lEmHeight * 2,              (* Height                 *)
  10284.               hwndClient,                    (* Owner window           *)
  10285.               HWND_TOP,                      (* Top of z-order         *)
  10286.               ID_TITLE,                      (* Window identIfier      *)
  10287.               nil,                           (* Control data           *)
  10288.               nil);                          (* Presentation parameters*)
  10289.  
  10290.   WinEndPaint(hps);
  10291. End.
  10292.  
  10293. If your application creates a static control with the SS_ICON or SS_BITMAP 
  10294. style, make sure that the resource identifier specified in the pszName 
  10295. parameter corresponds to an icon or a bit map resource in the 
  10296. resource-definition file. If there is no resource, the application cannot 
  10297. create the static control. 
  10298.  
  10299.  
  10300. ΓòÉΓòÉΓòÉ 15. Title-Bar Controls ΓòÉΓòÉΓòÉ
  10301.  
  10302. A title bar is one of several control windows that comprise a standard frame 
  10303. window, giving the frame window its distinctive look and performance 
  10304. capabilities.  This chapter describes how to create and use title-bar control 
  10305. windows in PM applications. 
  10306.  
  10307.  
  10308. ΓòÉΓòÉΓòÉ 15.1. About Title Bars ΓòÉΓòÉΓòÉ
  10309.  
  10310. The title bar in a standard frame window performs the following four functions: 
  10311.  
  10312.      Displays the title of the window across the top of the frame window 
  10313.  
  10314.      Changes its highlighted appearance to show whether the frame window is 
  10315.       active  (Ordinarily, the topmost window on the screen is the active 
  10316.       window.) 
  10317.  
  10318.      Responds to the actions of the user-for example, dragging the frame 
  10319.       window to a new location on the screen. 
  10320.  
  10321.      Flashes (as a result of the WinFlashWindow function) to get the attention 
  10322.       of the user. 
  10323.  
  10324.  Once the frame controls are in place in the frame window, an application 
  10325.  typically ignores them, because the system handles frame controls.  In some 
  10326.  cases, however, an application can take control of the title bar by sending 
  10327.  messages to the title-bar control window. 
  10328.  
  10329.  
  10330. ΓòÉΓòÉΓòÉ 15.1.1. Default Title-Bar Behavior ΓòÉΓòÉΓòÉ
  10331.  
  10332. A title-bar control window sends messages to its owner (the frame window) when 
  10333. the control receives user input.  Following are the messages that the title-bar 
  10334. control processes.  Each message is described in terms of how the title-bar 
  10335. control responds to that message. 
  10336.  
  10337. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10338. ΓöéMessage             ΓöéDescription                             Γöé
  10339. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10340. ΓöéTBM_QUERYHILITE     ΓöéReturns the highlighted state of the    Γöé
  10341. Γöé                    Γöétitle bar.                              Γöé
  10342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10343. ΓöéTBM_SETHILITE       ΓöéSets the highlighted state of the title Γöé
  10344. Γöé                    Γöébar, repainting the title bar if the    Γöé
  10345. Γöé                    Γöéstate is changing.                      Γöé
  10346. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10347. ΓöéWM_BUTTON1DBLCLK    ΓöéRestores the title bar if the owner     Γöé
  10348. Γöé                    Γöéwindow is minimized or maximized.  If   Γöé
  10349. Γöé                    Γöéthe window is neither minimized nor     Γöé
  10350. Γöé                    Γöémaximized, this message maximizes the   Γöé
  10351. Γöé                    Γöéwindow.                                 Γöé
  10352. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10353. ΓöéWM_BUTTON1DOWN      ΓöéSends the WM_TRACKFRAME message to the  Γöé
  10354. Γöé                    Γöéowner window to start the tracking      Γöé
  10355. Γöé                    Γöéoperation for the frame window.         Γöé
  10356. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10357. ΓöéWM_CREATE           ΓöéSets the text for the title bar. ReturnsΓöé
  10358. Γöé                    ΓöéFALSE if the text is already set.       Γöé
  10359. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10360. ΓöéWM_DESTROY          ΓöéFrees the window text for the title bar.Γöé
  10361. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10362. ΓöéWM_HITTEST          ΓöéAlways returns HT_NORMAL, so that the   Γöé
  10363. Γöé                    Γöétitle bar does not beep when it is      Γöé
  10364. Γöé                    Γöédisabled. (It is disabled when the frameΓöé
  10365. Γöé                    Γöéwindow is maximized.)                   Γöé
  10366. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10367. ΓöéWM_PAINT            ΓöéDraws the title bar.                    Γöé
  10368. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10369. ΓöéWM_QUERYDLGCODE     ΓöéReturns the predefined constant         Γöé
  10370. Γöé                    ΓöéDLGC_STATIC. The user cannot use the TabΓöé
  10371. Γöé                    Γöékey to move to the title bar in a dialogΓöé
  10372. Γöé                    Γöéwindow.                                 Γöé
  10373. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10374. ΓöéWM_QUERYWINDOWPARAMSΓöéReturns the requested window parameters.Γöé
  10375. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10376. ΓöéWM_SETWINDOWPARAMS  ΓöéSets the specified window parameters.   Γöé
  10377. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10378. ΓöéWM_WINDOWPOSCHANGED ΓöéReturns FALSE. Processes this message toΓöé
  10379. Γöé                    Γöéprevent the WinDefWindowProc function   Γöé
  10380. Γöé                    Γöéfrom sending the size and show messages.Γöé
  10381. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10382.  
  10383.  
  10384. ΓòÉΓòÉΓòÉ 15.2. Using Title-Bar Controls ΓòÉΓòÉΓòÉ
  10385.  
  10386. This section explains how to: 
  10387.  
  10388.      Include a title bar in a frame window 
  10389.      Alter the dragging action of a title bar 
  10390.  
  10391.  
  10392. ΓòÉΓòÉΓòÉ 15.2.1. Including a Title Bar in a Frame Window ΓòÉΓòÉΓòÉ
  10393.  
  10394. An application can include a title bar in a standard frame window by specifying 
  10395. the FCF_TITLEBAR flag in the WinCreateStdWindow function. 
  10396.  
  10397. The following code fragment shows how to create a standard frame window with a 
  10398. title bar, minimize and maximize (window-sizing) buttons, size border, system 
  10399. menu, and an application menu. 
  10400.  
  10401.  
  10402. Uses
  10403.   Os2Def,Os2Base,Os2PmApi;
  10404.  
  10405. Const ID_MENU_RESOURCE = 101;
  10406.  
  10407. Var
  10408.   HwndFrame,hwndClient         : HWND;  (* ╨ísken var tom!! *)
  10409.   SzClassName : Array[0..254] of UCHAR; (* ╨ísken var tom!! *)
  10410.  
  10411.   FlControlStyle : ULONG; (* ╨ísken var tom!! *)
  10412.  
  10413. Begin
  10414.     flControlStyle := FCF_TITLEBAR Or FCF_MINMAX Or FCF_SIZEBORDER Or
  10415.                       FCF_SYSMENU  Or FCF_MENU;
  10416.  
  10417.     hwndFrame := WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE Or FS_ACCELTABLE,
  10418.                                     &flControlStyle, szClassName, '',
  10419.                                     0, nil, ID_MENU_RESOURCE,
  10420.                                     &hwndClient);
  10421.  
  10422. End.
  10423.  
  10424. To get the window handle of a title-bar control, an application calls 
  10425. WinWindowFromID, specifying the frame-window handle and a constant identifying 
  10426. the title-bar control, as shown in the following code fragment: 
  10427.  
  10428.  
  10429.     hwndTitleBar := WinWindowFromID(hwndFrame, FID_TITLEBAR);
  10430.  
  10431. To set the text of a title bar, an application can use the WinSetWindowText 
  10432. function.  The frame window passes the new text to the title-bar control in a 
  10433. WM_SETWINDOWPARAMS message. 
  10434.  
  10435.  
  10436. ΓòÉΓòÉΓòÉ 15.2.2. Altering Dragging Action ΓòÉΓòÉΓòÉ
  10437.  
  10438. When the user clicks the title bar, the title-bar control sends a WM_TRACKFRAME 
  10439. message to its owner (the frame window).  When the frame window receives the 
  10440. WM_TRACKFRAME message, the frame sends a WM_QUERYTRACKINFO message to itself to 
  10441. fill in a TRACKINFO structure that defines the tracking parameters and 
  10442. boundaries.  To modify the default behavior, an application must subclass the 
  10443. frame window, intercept the WM_QUERYTRACKINFO message, and modify the TRACKINFO 
  10444. structure.  If the application returns TRUE for the WM_QUERYTRACKINFO message, 
  10445. the tracking operation proceeds according to the information in the TRACKINFO 
  10446. structure.  If the application returns FALSE, no tracking occurs. 
  10447.  
  10448.  
  10449. ΓòÉΓòÉΓòÉ 16. Value Set Controls ΓòÉΓòÉΓòÉ
  10450.  
  10451. A value set control (WC_VALUESET window class), like a radio button,  is a 
  10452. visual component that enables a user to select one choice from a group of 
  10453. mutually exclusive choices. However, unlike radio buttons, a value set can use 
  10454. graphic images (bit maps or icons), as well as colors, text, and numbers, to 
  10455. represent the items a user can select. This chapter presents the basics about 
  10456. value set controls and tells you how to create and use them in PM applications. 
  10457.  
  10458.  
  10459. ΓòÉΓòÉΓòÉ 16.1. About Value Set Controls ΓòÉΓòÉΓòÉ
  10460.  
  10461. Even though text is supported, the purpose of a value set control is to display 
  10462. choices as graphic images for faster selection. The user can see the selections 
  10463. instead of having to take time to read descriptions of the choices. Using 
  10464. graphic images in a value set also lets you conserve space on the display 
  10465. screen. For example, if you want to let a user choose from a variety of 
  10466. patterns, you can present those patterns as value set choices, If long strings 
  10467. of data are to be displayed as choices, radio buttons should be used. However, 
  10468. for small sets of numeric or textual information, you can use either a value 
  10469. set or radio buttons. 
  10470.  
  10471. The value set is customizable to meet varying application requirements, while 
  10472. providing a user interface component that can be used easily to develop 
  10473. products that conform to the Common User Access (CUA) user interface 
  10474. guidelines. The application can specify different types of items, sizes, and 
  10475. orientations for its value sets, but the underlying function of the control 
  10476. remains the same. For a complete description of CUA value sets, refer to the 
  10477. SAA CUA Guide to User Interface Design and the SAA CUA Advanced Interface 
  10478. Design Reference. 
  10479.  
  10480.  
  10481. ΓòÉΓòÉΓòÉ 16.1.1. Value Set Styles ΓòÉΓòÉΓòÉ
  10482.  
  10483. Value set control window styles are set when a value set window is created. 
  10484.  
  10485.      Set one of the following styles when creating a value set control window. 
  10486.       You can override these styles by specifying VIA_BITMAP, VIA_ICON, 
  10487.       VIA_TEXT, VIA_RGB, or VIA_COLORINDEX attributes for individual value set 
  10488.       items. 
  10489.  
  10490.       VS_BITMAP                The attribute for each value set item is set to 
  10491.                                the VIA_BITMAP value set item attribute, which 
  10492.                                means the value set treats each item as a bit 
  10493.                                map unless otherwise specified. This is the 
  10494.                                default. 
  10495.  
  10496.       VS_COLORINDEX            The attribute for each value set item is set to 
  10497.                                the VIA_COLORINDEX value set item attribute, 
  10498.                                which means the value set treats each item as an 
  10499.                                index into the logical color table unless 
  10500.                                otherwise specified. This style is most often 
  10501.                                used when the colors currently available are 
  10502.                                adequate. 
  10503.  
  10504.       VS_ICON                  The attribute for each value set item is set to 
  10505.                                the VIA_ICON value set item attribute, which 
  10506.                                means the value set treats each item as an icon 
  10507.                                unless otherwise specified. 
  10508.  
  10509.       VS_RGB                   The attribute for each value set item is set to 
  10510.                                the VIA_RGB value set item attribute, which 
  10511.                                means the value set treats each item as a RGB 
  10512.                                color value unless otherwise specified. This 
  10513.                                style is most often used when you need to create 
  10514.                                new colors. 
  10515.  
  10516.       VS_TEXT                  The attribute for each value set item is set to 
  10517.                                the VIA_TEXT value set item attribute, which 
  10518.                                means the value set treats each item as a text 
  10519.                                string unless otherwise specified. 
  10520.  
  10521.      Specify one or more of the following optional window styles, if desired, 
  10522.       by using an OR operator (Or) to combine them with the style specified 
  10523.       from the preceding list: 
  10524.  
  10525.       VS_BORDER                The value set draws a thin border around itself 
  10526.                                to delineate the control. 
  10527.  
  10528.       VS_ITEMBORDER            The value set draws a thin border around each 
  10529.                                item to delineate it from other items. 
  10530.  
  10531.                                Note:  The VS_ITEMBORDER style is useful for 
  10532.                                       items that are hard to see, such as faint 
  10533.                                       colors or patterns. 
  10534.  
  10535.       VS_OWNERDRAW             The application is notified whenever the 
  10536.                                background of the value set window is to be 
  10537.                                painted. 
  10538.  
  10539.       VS_RIGHTTOLEFT           The value set interprets column orientation as 
  10540.                                right-to-left, instead of the default 
  10541.                                left-to-right arrangement. This means columns 
  10542.                                are numbered from right-to-left with the 
  10543.                                rightmost column being 1 and counting up as you 
  10544.                                move left. Home is the rightmost column and end 
  10545.                                is the leftmost column. 
  10546.  
  10547.                                There is no visible difference between a value 
  10548.                                set ordered left-to-right and a value set 
  10549.                                ordered right-to-left. Therefore, if your 
  10550.                                application uses multiple value sets, the 
  10551.                                ordering of the items should be consistent in 
  10552.                                each value set to avoid confusing the user. 
  10553.  
  10554.                                Note:  The VS_RIGHTTOLEFT style is used on 
  10555.                                       creation of the control. Changing this 
  10556.                                       style after creation causes unexpected 
  10557.                                       results. 
  10558.  
  10559.       VS_SCALEBITMAPS          The value set automatically scales bit maps to 
  10560.                                the size of the cell. If this style is not used, 
  10561.                                each bit map is centered in its cell. Also, if 
  10562.                                the cell is smaller than the bit map, the bit 
  10563.                                map is clipped to the size of the cell. 
  10564.  
  10565.  
  10566. ΓòÉΓòÉΓòÉ 16.2. Using Value Set Controls ΓòÉΓòÉΓòÉ
  10567.  
  10568. This section provides information that will enable you to create and use a 
  10569. value set control effectively. 
  10570.  
  10571.  
  10572. ΓòÉΓòÉΓòÉ 16.2.1. Creating a Value Set ΓòÉΓòÉΓòÉ
  10573.  
  10574. You create a value set by using the WC_VALUESET window class name in the 
  10575. ClassName parameter of WinCreateWindow call. 
  10576.  
  10577. Before the value set is created, a temporary VSCDATA data structure is 
  10578. allocated so that the number of rows and columns of the value set can be 
  10579. specified. 
  10580.  
  10581. Also, VS_* values are specified in the ulValueSetStyle variable so that the 
  10582. value set can be customized. The following sample code shows the creation of a 
  10583. value set: 
  10584.  
  10585. Uses
  10586.   Os2Def,Os2Base,Os2PmApi;
  10587.  
  10588. Var
  10589.   VscData         : VSCDATA; (* VSCDATA data structure         *)
  10590.   HwndValueSet    : HWND;    (* Value set window handle        *)
  10591.   UlValueSetStyle : ULONG;   (* Value set style variable       *)
  10592.  
  10593. Begin
  10594.  
  10595.   (**********************************************************************)
  10596.   (* Initialize the parameters in the data structure.                   *)
  10597.   (**********************************************************************)
  10598.   vscData.cbSize :=                    (* Size of value set equals size  *)
  10599.      sizeof(VSCDATA);                  (* of VSCDATA                     *)
  10600.   vscData.usRowCount := 1;             (* 1 row in the value set         *)
  10601.   vscData.usColumnCount := 3;          (* 3 columns in the value set     *)
  10602.  
  10603.   (**********************************************************************)
  10604.   (* Set the VS_* style flags to customize the value set.               *)
  10605.   (**********************************************************************)
  10606.   ulValueSetStyle :=
  10607.     VS_RGB        Or                   (* Use colors for items.          *)
  10608.     VS_ITEMBORDER Or                   (* Put border around each value   *)
  10609.                                        (* set item.                      *)
  10610.      VS_BORDER;                        (* Put border around the entire   *)
  10611.                                        (* value set                      *)
  10612.  
  10613.   (**********************************************************************)
  10614.   (* Create the value set control window.                               *)
  10615.   (* The handle of the window is returned in hwndValueSet.              *)
  10616.   (**********************************************************************)
  10617.   hwndValueSet := WinCreateWindow(
  10618.                     hwndClient,        (* Parent window handle           *)
  10619.                     WC_VALUESET,       (* Value set class name           *)
  10620.                     nil,               (* No window text                 *)
  10621.                     ulValueSetStyle,   (* Value set styles               *)
  10622.                     10,                (* X coordinate                   *)
  10623.                     10,                (* Y coordinate                   *)
  10624.  
  10625.                     300,               (* Window width                   *)
  10626.                     200,               (* Window height                  *)
  10627.                     hwndClient,        (* Owner window handle            *)
  10628.                     HWND_TOP,          (* Z-order position               *)
  10629.                     ID_VALUESET,       (* Value set window ID            *)
  10630.                     &vscData,          (* Control data structure         *)
  10631.                     nil);              (* No presentation parameters     *)
  10632.  
  10633.   (**********************************************************************)
  10634.   (* Set the color value for each item in each row and column.          *)
  10635.   (**********************************************************************)
  10636.   WinSendMsg(hwndValueSet,            (* Value set window handle        *)
  10637.              VM_SETITEM,              (* Message for setting items      *)
  10638.              MPFROM2SHORT(1,1),       (* Set item in row 1, column 1    *)
  10639.               MPFROMLONG($00FF0000)); (* to the color red.              *)
  10640.  
  10641.   WinSendMsg(hwndValueSet,            (* Value set window handle        *)
  10642.              VM_SETITEM,              (* Message for setting items      *)
  10643.              MPFROM2SHORT(1,2),       (* Set item in row 1, column 2    *)
  10644.              MPFROMLONG($0000FF00));  (* to the color green.            *)
  10645.  
  10646.   WinSendMsg(hwndValueSet,            (* Value set window handle        *)
  10647.              VM_SETITEM,              (* Message for setting items      *)
  10648.              MPFROM2SHORT(1,3),       (* Set item in row 1, column 3    *)
  10649.              MPFROMLONG($000000FF));  (* to the color blue.             *)
  10650.  
  10651.   (**********************************************************************)
  10652.   (* Set the default selection.                                         *)
  10653.   (**********************************************************************)
  10654.   WinSendMsg(hwndValueSet,            (* Value set window handle        *)
  10655.              VM_SELECTITEM,           (* Message for selecting items    *)
  10656.              MPFROM2SHORT(1,2),       (* Item in row 1, column 2        *)
  10657.              nil);                    (* Reserved value                 *)
  10658.  
  10659.   (**********************************************************************)
  10660.   (* Since all items have been set in the control,                      *)
  10661.   (* make the control visible.                                          *)
  10662.   (**********************************************************************)
  10663.   WinShowWindow(hwndValueSet,         (* Value set window handle        *)
  10664.                 Ord(True));           (* Make the window visible        *)
  10665.  
  10666. End.
  10667.  
  10668.  
  10669. ΓòÉΓòÉΓòÉ 16.2.2. Retrieving Data for Selected Value Set Items ΓòÉΓòÉΓòÉ
  10670.  
  10671. The next step is to be able to retrieve the data represented by a value set 
  10672. item. To do this, variables are specified for combined row and column index 
  10673. values, item attributes, and item information. Then the VM_QUERYSELECTEDITEM, 
  10674. VM_QUERYITEMATTR, and VM_QUERYITEM messages are used to retrieve the index 
  10675. values, attributes, and data. The following sample code shows how data for 
  10676. selected value set items is retrieved: 
  10677.  
  10678. Uses
  10679.   Os2Def,Os2Base,Os2PmApi;
  10680.  
  10681. Var
  10682.   UlIdx      : ULONG;  (* Combined row and column        *)
  10683.                        (* index value                    *)
  10684.   UsItemAttr : USHORT; (* Item attributes                *)
  10685.   UlItemData : ULONG;  (* Item data                      *)
  10686.  
  10687. Begin
  10688.  
  10689.     (**********************************************************************)
  10690.     (* Get the row and column index values of the item selected by the    *)
  10691.     (* user.  These values are returned in the ulIdx parameter.           *)
  10692.     (**********************************************************************)
  10693.     ulIdx := (ULONG)WinSendMsg(
  10694.       hwndValueSet,                     (* Value set window handle        *)
  10695.       VM_QUERYSELECTEDITEM,             (* Message for querying           *)
  10696.                                         (* the selected item              *)
  10697.       nil, nil);                        (* Reserved values                *)
  10698.  
  10699.     (**********************************************************************)
  10700.     (* Determine the type of item that was selected. This message is      *)
  10701.     (* only to determine how to interpret item data when a value set      *)
  10702.     (* contains dIfferent types of items.                                 *)
  10703.     (**********************************************************************)
  10704.     usItemAttr := WinSendMsg(
  10705.       hwndValueSet,                (* Value set window handle             *)
  10706.       VM_QUERYITEMATTR,            (* Message for querying item attribute *)
  10707.       MPFROMLONG(ulIdx),           (* Row and column of selected item     *)
  10708.       nil);                        (* Reserved value                      *)
  10709.  
  10710.     (**********************************************************************)
  10711.     (* Get the information about the selected (non-textual) item.         *)
  10712.     (* If you are dealing with text, you need to allocate a buffer        *)
  10713.     (* for the text string.                                               *)
  10714.     (**********************************************************************)
  10715.     ulItemData := WinSendMsg(
  10716.       hwndValueSet,                (* Value set window handle             *)
  10717.       VM_QUERYITEM,                (* Message for querying an item        *)
  10718.       MPFROMLONG(ulIdx),           (* Row and column of selected item     *)
  10719.       nil);                        (* Set to nil because the item is not *)
  10720.                                    (* a text item                         *)
  10721. End.
  10722.  
  10723.  
  10724. ΓòÉΓòÉΓòÉ 16.2.3. Arranging Value Set Items ΓòÉΓòÉΓòÉ
  10725.  
  10726. The application defines the arrangement of value set items; they can be 
  10727. arranged in one or more rows, columns, or both. Items are placed from left to 
  10728. right in rows and from top to bottom in columns. The application can change the 
  10729. number of rows and columns at any time. 
  10730.  
  10731. The number of items that can be displayed depends on the number of items that 
  10732. fit into the spaces provided by the defined rows and columns. If the number of 
  10733. items exceeds the number of spaces, the excess items are not displayed. 
  10734.  
  10735. You can change the composition of a value set by specifying new items. The new 
  10736. items either can be added to the value set or can replace existing items. 
  10737.  
  10738.  
  10739. ΓòÉΓòÉΓòÉ 16.3. Graphical User Interface Support for Value Set Controls ΓòÉΓòÉΓòÉ
  10740.  
  10741. This section describes the support the value set control provides for graphical 
  10742. user interfaces (GUIs). Except where noted, this support conforms to the 
  10743. guidelines in the SAA CUA Advanced Interface Design Reference. 
  10744.  
  10745. The GUI support provided by the value set control consists of Navigating to and 
  10746. selecting value set items. 
  10747.  
  10748.  
  10749. ΓòÉΓòÉΓòÉ 16.3.1. Value Set Navigation Techniques ΓòÉΓòÉΓòÉ
  10750.  
  10751. Since all value set items are mutually exclusive, only one of them can be 
  10752. selected at a time. Therefore, the only type of selection supported by the 
  10753. value set control is single selection. 
  10754.  
  10755. Note:  If more than one value set window is open, navigating to and selecting 
  10756.        items in one value set window has no affect on the items displayed in 
  10757.        any other value set window. 
  10758.  
  10759.  An initial choice is selected when the value set control is first displayed. 
  10760.  If the application does not provide the initial selection by using the 
  10761.  VM_SELECTITEM message, the choice in row 1, column 1 is selected 
  10762.  automatically. 
  10763.  
  10764.  The value set control supports the use of a pointing device, such as a mouse, 
  10765.  and the keyboard for navigating to and selecting items, except for items that 
  10766.  are dimmed on the screen. This dimming of items is called unavailable-state 
  10767.  emphasis and indicates that the items cannot be selected. However, the 
  10768.  selection cursor, a dotted outline that usually indicates that an item can be 
  10769.  selected, can be moved to unavailable items so that a user can press F1 to 
  10770.  determine why they cannot be selected. The following sections describe the 
  10771.  pointing device and keyboard support for the value set control. 
  10772.  
  10773.  
  10774. ΓòÉΓòÉΓòÉ 16.3.1.1. Pointing Device Support ΓòÉΓòÉΓòÉ
  10775.  
  10776. A user can use a pointing device to select value set items. The SAA CUA Guide 
  10777. to User Interface Design defines mouse button 1, the select button, to be used 
  10778. for selecting items. This definition also applies to the same button on any 
  10779. other pointing device. 
  10780.  
  10781. An item can be selected by moving the pointer of the pointing device to the 
  10782. item and clicking the select button. When this happens, a black box is drawn 
  10783. around the item to show that it has been selected. The black box is called 
  10784. selected-state emphasis. In addition, the selection cursor is drawn inside the 
  10785. black box. 
  10786.  
  10787.  
  10788. ΓòÉΓòÉΓòÉ 16.3.1.2. Keyboard Support ΓòÉΓòÉΓòÉ
  10789.  
  10790. The value set control supports automatic selection, which means that an 
  10791. available item is selected when the selection cursor is moved to that item. The 
  10792. item is given selected-state emphasis as soon as the selection cursor is moved 
  10793. to it. No further action, such as pressing the spacebar, is required. The same 
  10794. black box and dotted outline are used, for selected-state emphasis and the 
  10795. selection cursor respectively, as when an item is selected with a pointing 
  10796. device. 
  10797.  
  10798. A user can navigate to and select an item by using either the navigation keys 
  10799. or mnemonic selection to move the selection cursor to the item, as described in 
  10800. the following list: 
  10801.  
  10802.      Items can be selected using the Up, Down, Left, and Right Arrow keys to 
  10803.       move the selection cursor from one item to another. 
  10804.  
  10805.      The Home and End keys can be used to select the leftmost and rightmost 
  10806.       items, respectively, in the current row. If the Ctrl key is pressed in 
  10807.       combination with the Home or End key, the item in the top row and the 
  10808.       leftmost column, or the item in the bottom row and the rightmost column, 
  10809.       respectively, is selected. 
  10810.  
  10811.       Note:  The preceding description assumes that the current style of the 
  10812.              value set window is left-to-right. However, if the VS_RIGHTTOLEFT 
  10813.              style bit is set, the directions described for the Home, End, 
  10814.              Ctrl+Home, and Ctrl+End keys in the preceding paragraph are 
  10815.              reversed. 
  10816.  
  10817.      The PgUp key can be used to select the item in the top row that is 
  10818.       directly above the current position of the selection cursor. The PgDn key 
  10819.       can be used to select the item in the bottom row that is directly below 
  10820.       the current position of the selection cursor. If the space in the top or 
  10821.       bottom row directly above or below the current cursor position is blank, 
  10822.       the cursor moves to the blank space. 
  10823.  
  10824.      Another keyboard method of selecting items is mnemonic selection. A user 
  10825.       performs mnemonic selection by pressing a character key that corresponds 
  10826.       to an underlined character. Coding a tilde (~) before a text character in 
  10827.       the item causes that character to be underlined and activates it as a 
  10828.       mnemonic selection character. When this happens, the selection cursor is 
  10829.       moved to the item that contains the underlined character, and that item 
  10830.       is selected. 
  10831.  
  10832.  
  10833. ΓòÉΓòÉΓòÉ 16.4. Enhancing Value Set Controls Performance and Effectiveness ΓòÉΓòÉΓòÉ
  10834.  
  10835. This section provides dynamic resizing and scrolling to enable you to fine-tune 
  10836. a value set control. 
  10837.  
  10838.  
  10839. ΓòÉΓòÉΓòÉ 16.4.1. Dynamic Resizing and Scrolling ΓòÉΓòÉΓòÉ
  10840.  
  10841. The value set control supports dynamic resizing if the application sends the 
  10842. WM_SIZE message to a value set window. This means that the value set control 
  10843. automatically recalculates the size of the items when either the user or the 
  10844. application changes the size of the value set window. 
  10845.  
  10846. If the value set window's size is decreased so that the window is not large 
  10847. enough to display all of the items the value set contains, the items are 
  10848. clipped. If scroll bars are desired to allow the clipped information to be 
  10849. scrolled into view, they must be provided by the application. 
  10850.  
  10851.  
  10852. ΓòÉΓòÉΓòÉ 17. Windows ΓòÉΓòÉΓòÉ
  10853.  
  10854. To most users, a window is a rectangular area of the display screen where an 
  10855. application receives input from the user and displays output.  This chapter 
  10856. describes the parts of the operating system that enable a Presentation Manager 
  10857. (PM) application to create and use windows; manage relationships between 
  10858. windows; and size, move, and display windows.  An overview of the following 
  10859. topics is presented: 
  10860.  
  10861.      Window types, classes, and styles 
  10862.      Window-creation techniques 
  10863.      Window messages and message queues 
  10864.      Methods of window input and output 
  10865.      Window resources and procedures 
  10866.      Window identification and modification 
  10867.  
  10868.  Subsequent chapters present more in-depth descriptions of windows, their 
  10869.  advantages and uses, along with example code fragments. 
  10870.  
  10871.  
  10872. ΓòÉΓòÉΓòÉ 17.1. About Windows ΓòÉΓòÉΓòÉ
  10873.  
  10874. A PM application can interact with the user and perform tasks only by way of 
  10875. windows.  Each window shares the screen with other windows, including those 
  10876. from other applications.  The user employs the mouse and keyboard to interact 
  10877. with windows and their owner applications. 
  10878.  
  10879.  
  10880. ΓòÉΓòÉΓòÉ 17.1.1. Desktop Window and Desktop-Object Window ΓòÉΓòÉΓòÉ
  10881.  
  10882. The OS/2 operating system automatically creates the desktop window (known as 
  10883. the workplace in user terminology) when it starts a PM session. 
  10884.  
  10885.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10886.  Γöé    Desktop Window                              Γöé
  10887.  Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                Γöé
  10888.  Γöé  Γöé Main Window 3              Γöé                Γöé
  10889.  Γöé  Γöé      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ         Γöé
  10890.  Γöé  Γöé      Γöé Main Window 2              Γöé         Γöé
  10891.  Γöé  Γöé      Γöé      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé
  10892.  Γöé  Γöé      Γöé  ΓöîΓöÇΓöÇΓöÇ
  10893.  Main Window 1              Γöé  Γöé
  10894.  Γöé  Γöé      Γöé  ΓöéChiΓöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ         Γöé  Γöé
  10895.  Γöé  Γöé      Γöé  ΓöéWinΓöé  Γöé               Γöé         Γöé  Γöé
  10896.  Γöé  Γöé      Γöé  Γöé2A Γöé  Γöé               Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé  Γöé
  10897.  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10898.   ΓööΓöÇΓöÇΓöÇ
  10899.   ΓöéChild Window 1aΓöé      Γöé  Γöé  Γöé
  10900.  Γöé         Γöé      Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ      Γöé  Γöé  Γöé
  10901.  Γöé         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10902.        Γöé Child Window 1b Γöé  Γöé  Γöé
  10903.  Γöé                Γöé       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé  Γöé
  10904.  Γöé                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé
  10905.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10906.  
  10907. Desktop Window Containing Windows of Several Applications The desktop window 
  10908. paints the background color of the screen and serves as the "progenitor" of all 
  10909. the windows displayed by all PM applications (but not of object windows, which 
  10910. do not require screen display).  To make the desktop the parent in the 
  10911. WinCreateStdWindow function, you specify HWND_DESKTOP. 
  10912.  
  10913. The windows immediately below the desktop are called main or top-level windows; 
  10914. these are called primary windows in user terminology.  Every PM application 
  10915. creates at least one window to serve as the main window for that application. 
  10916. Most applications also create many other windows, directly or indirectly, to 
  10917. perform tasks related to the main window. 
  10918.  
  10919. Each window helps display output and receive input from the user. The previous 
  10920. figure shows the desktop window containing windows of several applications. 
  10921. Notice that the main windows can overlap one another. (At times, it is possible 
  10922. for a main window to be completely hidden.) Operations in one main window 
  10923. normally do not affect the other main windows. 
  10924.  
  10925. The desktop-object window is like a desktop window that is never displayed; it 
  10926. serves as the base window to coordinate the activity of an application's object 
  10927. windows.  The desktop-object window cannot display windows nor process keyboard 
  10928. and mouse input.  The primary purpose of the desktop-object window is to enable 
  10929. you to create windows that need not respond to messages at the same rate as the 
  10930. user interface. 
  10931.  
  10932.  
  10933. ΓòÉΓòÉΓòÉ 17.1.2. Window Relationships ΓòÉΓòÉΓòÉ
  10934.  
  10935. Window relationships define how windows interact with each other-on the screen 
  10936. and through messages.  There are parent-child window relationships and 
  10937. window-owner relationships. 
  10938.  
  10939. The parent-child relationship determines where and how windows appear when 
  10940. drawn on the screen.  It also determines what happens to a window when a 
  10941. related window is destroyed or hidden.  The parent-child rules apply to all 
  10942. windows at all times and cannot be modified. 
  10943.  
  10944. Ownership determines how windows communicate using messages.  Cooperating 
  10945. windows define and carry out their rules of ownership.  Although some windows 
  10946. (such as windows of the preregistered public window class, WC_FRAME) have very 
  10947. complex rules of ownership, the application usually defines the ownership 
  10948. rules. The following figure represents the logical relationship of the windows 
  10949. in two applications. 
  10950.  
  10951.                           Desktop Window
  10952.                                ΓöîΓöÇΓöÉ
  10953.          Application 1         Γöé Γöé          Application 2
  10954. ΓöîΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÉ Γöé Γöé ΓöîΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÉ
  10955.              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÿ ΓööΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10956. Γöé            Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé             Γöé
  10957.              Γöé Γöé                                Γöé Γöé
  10958. Γöé       Main Window 1        Γöé     Γöé      Main Window 2         Γöé
  10959.              Γöé Γöé                                Γöé Γöé
  10960. Γöé     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ      Γöé     Γöé     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ      Γöé
  10961.       Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé                  Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  10962. Γöé     Γöé Γöé           Γöé Γöé      Γöé     Γöé     Γöé Γöé           Γöé Γöé      Γöé
  10963.       Γöé Γöé           ΓööΓöÇΓöÿ                  ΓööΓöÇΓöÿ           ΓööΓöÇΓöÿ
  10964. Γöé    Child         Child     Γöé     Γöé    Child         Child     Γöé
  10965.    Window 1.1    Window 1.2           Window 2.1    Window 2.2
  10966. Γöé     Γöé Γöé                    Γöé     Γöé                            Γöé
  10967.       ΓööΓöÇΓöÿ
  10968. Γöé    Child                   Γöé     Γöé                            Γöé
  10969.   Window 1.1.1
  10970. ΓööΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÿ     ΓööΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÿ
  10971.  
  10972. Typical Window Relationships 
  10973.  
  10974.  
  10975. ΓòÉΓòÉΓòÉ 17.1.2.1. Parent-Child Relationship ΓòÉΓòÉΓòÉ
  10976.  
  10977. Most windows have a parent window. (The exceptions are the desktop and 
  10978. desktop-object windows, which the system creates at system startup.)  An 
  10979. application specifies the parent when it creates a window; then, the system 
  10980. uses the parent to determine where and how to draw any new windows, as well as 
  10981. when to destroy the windows (free all associated resources and remove the 
  10982. windows from the screen). 
  10983.  
  10984. A child window is drawn relative to its parent.  The coordinates given to 
  10985. specify the position of a window's lower-left corner are relative to the 
  10986. lower-left corner of its parent.  For example, a main window (child of the 
  10987. desktop) is drawn relative to the lower-left corner of the screen (the desktop 
  10988. window's lower-left corner). 
  10989.  
  10990. All main windows are siblings because they share a common parent, the desktop 
  10991. window.  Because sibling windows can overlap, an application or a user arranges 
  10992. the windows, one behind another (like a stack of papers on a desk), in the 
  10993. desired viewing order (called z-order). Z-order uses the desktop as a reference 
  10994. point for a "three-dimensional" ranking of the overlapping windows: the topmost 
  10995. window has the highest ranking, while the window at the bottom of the stack has 
  10996. the lowest ranking.  The parent of the sibling windows is always at the bottom 
  10997. of the z-order. The following figure illustrates the hierarchy of such an 
  10998. arrangement. 
  10999.  
  11000.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11001.   Γöé Desktop Γöé
  11002.   ΓööΓöÇΓöÇΓö£ΓöÇΓö£ΓöÇΓö£ΓöÇΓöÇΓöÿ
  11003.      Γöé Γöé Γöé     Parent            Child
  11004.      Γöé Γöé Γöé                  ΓöîΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇΓöÉ
  11005.      Γöé Γöé Γöé                       Siblings
  11006.      Γöé Γöé Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  11007.      Γöé Γöé ΓööΓöÇΓöÇΓöé Main 1 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Child 1A Γöé
  11008.      Γöé Γöé     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÉ  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  11009.      Γöé Γöé                 Γöé  Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11010.      Γöé Γöé                 ΓööΓöÇΓöÇΓöÇΓöÇΓöé Child 1A Γöé Γöé
  11011.      Γöé Γöé                    Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11012.      Γöé Γöé                    ΓööΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇΓöÿ
  11013.      Γöé Γöé     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ        ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11014.      Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöé Main 2 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Child 2A Γöé
  11015.      Γöé       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11016.      Γöé       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11017.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Main 3 Γöé
  11018.              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11019.  
  11020. Window Hierarchy 
  11021.  
  11022. Although PM supports z-order, it does not enforce the expected appearance 
  11023. unless you specify the CS_CLIPCHILDREN or CS_CLIPSIBLINGS styles.  No part of a 
  11024. child window ever appears outside the borders of its parent.  If an application 
  11025. creates a window that is larger than its parent, or positions a window so that 
  11026. some or all of it extends beyond the borders of the parent, the extended 
  11027. portion of the child window is not drawn. 
  11028.  
  11029. An application can use the WS_CLIPCHILDREN or WS_CLIPSIBLINGS styles to remove 
  11030. from a window's clipping area (the area in which the window can paint) the area 
  11031. occupied by its child or sibling windows.  For example, an application can use 
  11032. these styles to prevent a window from painting over a child or sibling window 
  11033. containing a complex graphic that would be time-consuming to redraw. 
  11034.  
  11035. When a window is minimized, hidden, or destroyed, all of its children are 
  11036. hidden, minimized, or destroyed as well.  The order of destruction is always 
  11037. such that every window is destroyed before its parent.  The window-destruction 
  11038. sequence starts at the bottom of descendancy so that all related windows can be 
  11039. cleaned up; the last one to go is the window you asked to be destroyed.  The 
  11040. final PM task in a window-destruction sequence is to send a WM_DESTROY message 
  11041. to that window, so it has one last chance to release any resources it has 
  11042. allocated and may still be holding. 
  11043.  
  11044. Every window has only one parent, but can have any number of children. window 
  11045. in this tree is said to be a descendant of any window appearing above it in the 
  11046. branch, and an ancestor of any window appearing below it.  There are two 
  11047. special cases, of course: the window immediately above is called the window's 
  11048. parent, and any window immediately below it is called its child.  An 
  11049. application can change a window's parent window at any time by using the 
  11050. WinSetParent function.  Changing the parent window also changes where and how 
  11051. the child window is drawn.  The system displays the child within the borders of 
  11052. the new parent and draws the window according to the styles specified for the 
  11053. new parent. 
  11054.  
  11055.  
  11056. ΓòÉΓòÉΓòÉ 17.1.2.2. Ownership ΓòÉΓòÉΓòÉ
  11057.  
  11058. Any window can have an owner window.  Typically, an application uses ownership 
  11059. to establish a connection between windows so that they can perform useful tasks 
  11060. together.  For example, the title bar in an application's main window is owned 
  11061. by the frame window; but, together, the user can move the entire main window by 
  11062. clicking the mouse in the title bar and dragging.  An application can set the 
  11063. owner window when it creates the window or at a later time. 
  11064.  
  11065. Ownership establishes a relationship between windows that is independent of the 
  11066. parent-child relationship.  While there are few predefined rules for owner- and 
  11067. owned-window interaction, a window always notifies its owner of anything 
  11068. considered a significant event. 
  11069.  
  11070. The preregistered public window classes provided by the OS/2 operating system 
  11071. recognize ownership.  Control windows of classes such as WC_TITLEBAR and 
  11072. WC_SCROLLBAR, notify their owners of events; frame windows, of class WC_FRAME, 
  11073. receive and process notification messages from the control windows they own. 
  11074. For example, a title-bar control sends a notification message to its owner when 
  11075. it receives a mouse click.  If the owner is a frame window, it receives the 
  11076. notification message and prepares to move itself and its children. 
  11077.  
  11078. Owner and owned windows must be created by the same thread; that is, they must 
  11079. belong to the same message queue.  Because ownership is independent of the 
  11080. parent-child relationship, the owner and owned windows do not have to be 
  11081. descendants of the same parent window.  However, this can affect how windows 
  11082. are destroyed.  Destroying an owner window does not necessarily destroy an 
  11083. owned window.  Except for frame windows, an application that needs to destroy 
  11084. an owned window that is not a descendant of the owner window must do so 
  11085. explicitly. 
  11086.  
  11087. Frame windows sometimes own windows that are not descendants but, instead, are 
  11088. siblings.  A frame window has the following special ownership properties: 
  11089.  
  11090.      When the frame window is destroyed, it destroys all of the windows it 
  11091.       owns, even if they are not descendants. 
  11092.  
  11093.      When a frame window moves, the windows it owns move also.  Owned windows 
  11094.       that are not descendants maintain their positions, relative to the 
  11095.       upper-left (not the usual lower-left) corner of the owner window.  An 
  11096.       owned window with the style FS_NOMOVEWITHOWNER does not move. 
  11097.  
  11098.      When the frame window changes its position in the z-order, it changes the 
  11099.       z-order of all the windows it owns. 
  11100.  
  11101.      When the frame window is minimized or hidden, it hides all the windows it 
  11102.       owns.  Owned windows hidden this way are restored when the frame window 
  11103.       is restored. 
  11104.  
  11105.  If an application needs this type of special processing for its own window 
  11106.  classes, it must provide that support in the window procedures for those 
  11107.  classes. 
  11108.  
  11109.  
  11110. ΓòÉΓòÉΓòÉ 17.1.2.3. Object Windows ΓòÉΓòÉΓòÉ
  11111.  
  11112. Any descendant of the desktop-object window is called an object window. 
  11113. Typically, an application uses an object window to provide services for another 
  11114. window.  For example, an application can use an object window to manage a 
  11115. shared database.  In this way, a window can obtain information from the shared 
  11116. database by sending a message to and receiving a reply from the object window. 
  11117.  
  11118. Only two system-defined messages are available to an object window-WM_CREATE 
  11119. and WM_DESTROY-but the object window enables the user to implement a set of 
  11120. user-defined messages.  The window procedure for an object window does not have 
  11121. to process paint messages or user input.  The object window processes only 
  11122. messages that affect the data belonging to the object. 
  11123.  
  11124. HWND_OBJECT is the only identifier needed to create an object window.  It is 
  11125. very unwise to create descendants of HWND_OBJECT in the same thread that 
  11126. creates descendants of HWND_DESKTOP: this causes the system to hang up or, at 
  11127. the very least, behave slowly.  Object windows, sometimes referred to as orphan 
  11128. windows, require no owner. 
  11129.  
  11130. The rules for parent-child and ownership relationships also apply to object 
  11131. windows.  In particular, changing the parent window of an object window to the 
  11132. desktop window, or to a descendant of the desktop window, causes the system to 
  11133. display the object window if the object window has the WS_VISIBLE style. 
  11134.  
  11135.  
  11136. ΓòÉΓòÉΓòÉ 17.1.3. Application Windows ΓòÉΓòÉΓòÉ
  11137.  
  11138. An application can use several types of secondary windows:  frame windows, 
  11139. client windows, control windows, dialog windows, message boxes, and menus. 
  11140. Typically, an application's main window consists of several of these windows 
  11141. acting as one. 
  11142.  
  11143. A frame window is a window that an application uses as the base when 
  11144. constructing a main window or other composite window, such as a dialog window 
  11145. or message box.  (A composite window is a collection of windows that interact 
  11146. with one another and are kept together as a unit.)  A frame window provides 
  11147. basic features, such as borders and a menu bar.  Frame windows have a set of 
  11148. resources associated with them.  These include icons, menus, and accelerators 
  11149. (shortcut keys to the user), which, typically, are defined in an application's 
  11150. resource file. 
  11151.  
  11152. A dialog window is a frame window that contains one or more control windows. 
  11153. Dialog windows are used almost exclusively for prompting the user for input. 
  11154. An application usually creates a dialog window when it needs additional 
  11155. information to complete a command.  The application destroys the dialog window 
  11156. after the user has provided the requested information. 
  11157.  
  11158. A message box is a frame window that an application uses to display a note, 
  11159. caution, or warning to the user.  For instance, an application can use a 
  11160. message box to inform the user of a problem that the application encountered 
  11161. while performing a task. 
  11162.  
  11163. A client window is the window in which the application displays the current 
  11164. document or data.  For example, a desktop-publishing application displays the 
  11165. current page of a document in a client window.  Most applications create at 
  11166. least one client window.  The application must provide a function, called a 
  11167. window procedure, to process input to the client window and to display output. 
  11168.  
  11169. A control window is a window used in conjunction with another window to perform 
  11170. useful tasks, such as displaying a menu or scrolling information in a client 
  11171. window.  The operating system provides several predefined control-window 
  11172. classes that an application can use to create control windows.  Control windows 
  11173. include buttons, entry fields, list boxes, combination boxes, menus, scroll 
  11174. bars, static text, and title bars. 
  11175.  
  11176. A menu is a control window that presents a list of commands and other menus to 
  11177. the user.  Using a mouse or the keyboard, the user can select a task; the 
  11178. application then performs the selected task. 
  11179.  
  11180.  
  11181. ΓòÉΓòÉΓòÉ 17.1.4. Window Input and Output ΓòÉΓòÉΓòÉ
  11182.  
  11183. The user directs input data to windows from a mouse and the keyboard.  Keyboard 
  11184. input goes to the window with input focus, and, normally, mouse input goes to 
  11185. the window under the mouse pointer. 
  11186.  
  11187. Windows also are places to display output data.  PM uses windows to display 
  11188. text and graphics on the screen and to process input from the mouse and 
  11189. keyboard.  Windows provide the same input and output capabilities as a virtual 
  11190. graphics terminal without having direct control of the hardware. 
  11191.  
  11192. An application is responsible for painting the data for the window classes it 
  11193. registers and creates.  This data can be graphics text or pictures or 
  11194. fixed-size alphanumeric text.  Normally it is not necessary for the application 
  11195. to paint the system-provided window classes; the OS/2 window procedures for 
  11196. those window classes do the painting. 
  11197.  
  11198.  
  11199. ΓòÉΓòÉΓòÉ 17.1.4.1. Active Window and Focus Window ΓòÉΓòÉΓòÉ
  11200.  
  11201. All frame-window ancestors of the input focus window are said to be active, 
  11202. meaning that the user interacts with them.  The active window usually is the 
  11203. topmost main window, which is positioned above all other top-level windows on 
  11204. the screen.  The active window is indicated by some form of highlighting.  For 
  11205. example, a highlighted title bar shows that a standard frame window is active; 
  11206. an active dialog window has a highlighted border.  These types of highlighting 
  11207. ensure that the user can see the window that is accepting input. 
  11208.  
  11209. A main window (or one of its child windows) is activated by using a mouse or 
  11210. the keyboard.  When a window is activated, it receives a WM_ACTIVATE message 
  11211. with its first parameter set to TRUE.  When it is deactivated, it receives a 
  11212. WM_ACTIVATE message with its first parameter set to FALSE. 
  11213.  
  11214. The focus window can be the active window or one of its descendant windows. 
  11215. The user can change the input focus the same way active windows are changed-by 
  11216. mouse or keyboard.  However, the application has more control over the input 
  11217. focus.  For example, in a window containing several text entry fields, the tab 
  11218. keys can move the input focus from one input field to another.  A WM_SETFOCUS 
  11219. message is sent to the window procedure when a window is gaining or losing the 
  11220. input focus.  The WinQueryFocus function tells the user which window has the 
  11221. input focus. 
  11222.  
  11223.  
  11224. ΓòÉΓòÉΓòÉ 17.1.4.2. Messages ΓòÉΓòÉΓòÉ
  11225.  
  11226. Messages are a fundamental part of the operating system.  PM applications use 
  11227. messages to communicate with the operating system and one another.  The system 
  11228. uses messages to communicate with applications to ensure concurrent running and 
  11229. sharing of devices.  Typically, a message notifies the receiving application 
  11230. that an event has occurred.  The operating system identifies the appropriate 
  11231. application window to receive a message by the window handle included in the 
  11232. message.  Sources of events that cause messages to be issued to applications 
  11233. are the user, the operating system, the application, or another application. 
  11234.  
  11235.  
  11236. ΓòÉΓòÉΓòÉ 17.1.4.2.1. The User ΓòÉΓòÉΓòÉ
  11237.  
  11238. Mouse or keyboard input to an application window causes the operating system to 
  11239. direct messages to that window. 
  11240.  
  11241.  
  11242. ΓòÉΓòÉΓòÉ 17.1.4.2.2. The Operating System ΓòÉΓòÉΓòÉ
  11243.  
  11244. Managing the application windows on the screen, the operating system issues 
  11245. messages to the windows, usually as an indirect result of user interaction. 
  11246. These messages enable the system to work in a uniform and well-ordered manner. 
  11247. For example, where several application windows overlap, and the user terminates 
  11248. an application so that its window disappears, the operating system issues 
  11249. messages to the underlying application windows so that they can repaint 
  11250. themselves. 
  11251.  
  11252.  
  11253. ΓòÉΓòÉΓòÉ 17.1.4.2.3. The Application ΓòÉΓòÉΓòÉ
  11254.  
  11255. An event can occur in the application to which another part of that application 
  11256. should respond; for example, when the contents of its window no longer 
  11257. accurately reflect the status of the application.  The application can define 
  11258. its own messages outside the range of system-defined messages to communicate 
  11259. such events. 
  11260.  
  11261.  
  11262. ΓòÉΓòÉΓòÉ 17.1.4.2.4. Another Application ΓòÉΓòÉΓòÉ
  11263.  
  11264. Communication with other applications through the operating system ensures 
  11265. cooperative use of the system; it even can be used to exchange data.  For 
  11266. example, an arithmetic application can supply the results of a lengthy 
  11267. calculation to a business graphics application. 
  11268.  
  11269.  
  11270. ΓòÉΓòÉΓòÉ 17.1.4.3. Enabled and Disabled Windows ΓòÉΓòÉΓòÉ
  11271.  
  11272. An application uses the WinEnableWindow function to enable or disable window 
  11273. input.  By default, a window is enabled when it is created.  However, an 
  11274. application can disable a newly created window. 
  11275.  
  11276. An application usually disables a window to prevent the user from using the 
  11277. window.  For example, an application might disable a push button in a dialog 
  11278. window.  Enabling a window restores normal input; an application can enable a 
  11279. disabled window at any time. 
  11280.  
  11281. When an application uses the WinEnableWindow function to disable an existing 
  11282. window, that window also loses keyboard focus.  WinEnableWindow sets the 
  11283. keyboard focus to NULL, which means that no window has the focus.  If a child 
  11284. window or other descendant window has the keyboard focus, it loses the focus 
  11285. when the parent window is disabled. 
  11286.  
  11287. An application can determine whether a window is enabled by calling 
  11288. WinIsWindowEnabled. 
  11289.  
  11290.  
  11291. ΓòÉΓòÉΓòÉ 17.1.4.4. System-Modal Window ΓòÉΓòÉΓòÉ
  11292.  
  11293. An application can designate a system-modal window: a window that receives all 
  11294. keyboard and mouse input, effectively disabling all other windows.  The user 
  11295. must respond to the system-modal window before continuing work in other 
  11296. windows.  An application sets and clears the system-modal window by using the 
  11297. WinSetSysModalWindow function. 
  11298.  
  11299. Because system-modal windows have absolute control of input, you must be 
  11300. careful when using them in your applications.  Ideally, an application uses a 
  11301. system-modal window only when there is danger of losing data if the user does 
  11302. not respond to a problem immediately. 
  11303.  
  11304. Although an application can destroy a system-modal window, the new active 
  11305. window then becomes a system-modal window.  An application can make another 
  11306. window active while the first system-modal window exists.  But again, the new 
  11307. active window will become the system-modal window.  In general, once a 
  11308. system-modal window is set, it continues to exist in the PM session until the 
  11309. application explicitly clears it. 
  11310.  
  11311.  
  11312. ΓòÉΓòÉΓòÉ 17.1.5. Window Creation ΓòÉΓòÉΓòÉ
  11313.  
  11314. Before any thread in an application can create windows, it must: 
  11315.  
  11316.    1. Call WinInitialize to create an anchor block 
  11317.    2. Call WinCreateMsgQueue to create a message queue for the thread 
  11318.  
  11319.  Then, it can create one or more windows by calling one of the window-creation 
  11320.  functions, such as WinCreateWindow. 
  11321.  
  11322.  The window-creation functions require that the following information be 
  11323.  supplied in some form: 
  11324.  
  11325.      Class 
  11326.      Styles 
  11327.      Name 
  11328.      Parent window 
  11329.      Position relative to the parent window 
  11330.      Position relative to any sibling windows (z-order) 
  11331.      Dimensions 
  11332.      Owner window 
  11333.      Identifier 
  11334.      Class-specific data 
  11335.      Resources 
  11336.  
  11337.  Every window belongs to a window class that defines that window's appearance 
  11338.  and behavior.  The chief component of the window class is the window 
  11339.  procedure. The window procedure is the function that receives and processes 
  11340.  all messages sent to the window. 
  11341.  
  11342.  Every window has a style.  The window style specifies aspects of a window's 
  11343.  appearance and behavior that are not specified by the window's class.  For 
  11344.  example, the WC_FRAME class always creates a frame window, but the FS_BORDER, 
  11345.  FS_DLGBORDER, and FS_SIZEBORDER styles determine the style of a frame window's 
  11346.  border.  A few window styles apply to all windows, but most apply only to 
  11347.  windows of specific window classes.  The window procedure for a given class 
  11348.  interprets the style and allows an application to adapt a window of a given 
  11349.  class for a special circumstance.  For example, an application can give a 
  11350.  window the style WS_SYNCPAINT to cause it to be painted immediately whenever 
  11351.  any portion of the window becomes invalid.  Normally, a window is painted only 
  11352.  if there are no messages waiting in the message queue. 
  11353.  
  11354.  A window can have a text string associated with it.  Typically, the window 
  11355.  text is displayed in the window or in a title bar.  The class of window 
  11356.  determines whether the window displays the text and, if so, where the text 
  11357.  appears within the window. 
  11358.  
  11359.  Every window except the desktop window and desktop-object window has a parent 
  11360.  window.  The parent provides the coordinate system used to position the window 
  11361.  and also affects aspects of a window's appearance.  For example, when the 
  11362.  parent window is minimized, hidden, or destroyed, the parent's child windows 
  11363.  are minimized, hidden, or destroyed also. 
  11364.  
  11365.  Every window has a screen position, size, and z-order position.  The screen 
  11366.  position is the location of the window's lower-left corner, relative to the 
  11367.  lower-left corner of its parent window.  A window's size is its width and 
  11368.  height, measured in pels.  A window's z-order position is the position of the 
  11369.  window in the order of overlapping windows.  This viewing order is oriented 
  11370.  along an imaginary axis, the z axis, extending outward from the screen.  The 
  11371.  window at the top of the z-order overlaps all sibling windows (that is, 
  11372.  windows having the same parent window).  A window at the bottom of the z-order 
  11373.  is overlapped by all sibling windows.  An application sets a window's z-order 
  11374.  position by placing it behind a given sibling window or at the top or bottom 
  11375.  of the z-order of the windows. 
  11376.  
  11377.  A window can own, or be owned by, another window.  The owner-owned 
  11378.  relationship affects how messages are sent between windows, allowing an 
  11379.  application to create combinations of windows that work together.  A window 
  11380.  issues messages about its state to its owner window; the owner window issues 
  11381.  messages back about what action to perform next. 
  11382.  
  11383.  The window handle is a unique number across the system that is totally 
  11384.  unambiguous-it identifies one particular window in the system and is assigned 
  11385.  by the system.  A window identifier is analogous to a "given" name in family 
  11386.  relationships; the only requirement is that the name be unique among siblings. 
  11387.  
  11388.  A window can have class-specific data that further defines how the window 
  11389.  appears and behaves when it is created.  The system passes the class-specific 
  11390.  data to the window procedure, which then applies the data to the new window. 
  11391.  
  11392.  
  11393. ΓòÉΓòÉΓòÉ 17.1.5.1. Window-Creation Functions ΓòÉΓòÉΓòÉ
  11394.  
  11395. The basic window-creation function is WinCreateWindow.  This function uses 
  11396. information about a window's class, style, size, and position to create a new 
  11397. window.  All other window-creation functions, such as WinCreateStdWindow and 
  11398. WinCreateDlg, supply some of this information by default and create windows of 
  11399. a specific class or style. 
  11400.  
  11401. Although the WinCreateWindow function provides the most direct means of 
  11402. creating a window, most applications do not use it.  Instead, they often use 
  11403. the WinCreateStdWindow function to create a main window and the WinDlgBox or 
  11404. WinCreateDlg functions to create dialog windows. 
  11405.  
  11406. The WinCreateMenu, WinLoadMenu, WinLoadDlg, WinMessageBox, and 
  11407. WinCreateFrameControls functions also create windows.  Each of these functions 
  11408. substitutes for one or more required calls to WinCreateWindow to create a given 
  11409. window.  For example, an application can create a frame window, one or more 
  11410. control windows, and a client window in a single call to WinCreateStdWindow. 
  11411.  
  11412.  
  11413. ΓòÉΓòÉΓòÉ 17.1.5.2. Window-Creation Messages ΓòÉΓòÉΓòÉ
  11414.  
  11415. While creating a window, the system sends messages to that window's window 
  11416. procedure.  The window procedure receives a WM_CREATE message, saying that the 
  11417. window is being created.  The window also receives a WM_ADJUSTWINDOWPOS 
  11418. message, specifying the initial size and position of the window being created. 
  11419. This message lets the window procedure adjust the size and position of the 
  11420. window before the window is displayed. 
  11421.  
  11422. The system also sends other messages while creating a window; the number and 
  11423. order of these messages depend on the class and style of the window and the 
  11424. function used to create it. 
  11425.  
  11426.  
  11427. ΓòÉΓòÉΓòÉ 17.1.6. Window Classes ΓòÉΓòÉΓòÉ
  11428.  
  11429. Each window of a specific window class uses the window procedure associated 
  11430. with that class.  An application can create one or more windows that belong to 
  11431. the same window class.  Because each window of the same class is processed by 
  11432. the same window procedure, they all behave the same way.  Since many windows 
  11433. can result from one window procedure, coding overhead is greatly reduced. 
  11434. There are two types of window classes: public and private. 
  11435.  
  11436.  
  11437. ΓòÉΓòÉΓòÉ 17.1.6.1. Public Window Classes ΓòÉΓòÉΓòÉ
  11438.  
  11439. A public window class is one that has a reentrant window procedure that is 
  11440. registered and resides in a dynamic link library (DLL); it can be used by any 
  11441. process in the system to create windows.  The operating system provides several 
  11442. preregistered public window classes.  You can specify the system-provided 
  11443. window classes by using the symbolic identifiers that have the prefix WC_, as 
  11444. shown in the following table: 
  11445.  
  11446. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11447. ΓöéClass Name     ΓöéDescription                                  Γöé
  11448. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11449. ΓöéWC_BUTTON      ΓöéConsists of buttons and boxes the user can   Γöé
  11450. Γöé               Γöéselect by clicking the pointing device or    Γöé
  11451. Γöé               Γöéusing the keyboard.                          Γöé
  11452. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11453. ΓöéWC_CONTAINER   ΓöéCreates a control for the user to group      Γöé
  11454. Γöé               Γöéobjects in a logical manner.  A container canΓöé
  11455. Γöé               Γöédisplay those objects in various formats or  Γöé
  11456. Γöé               Γöéviews.  The container control supports drag  Γöé
  11457. Γöé               Γöéand drop so the user can place information inΓöé
  11458. Γöé               Γöéa container by simply dragging and dropping. Γöé
  11459. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11460. ΓöéWC_ENTRYFIELD  ΓöéConsists of a single line of text that the   Γöé
  11461. Γöé               Γöéuser can edit.                               Γöé
  11462. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11463. ΓöéWC_FRAME       ΓöéA window class that can contain child windowsΓöé
  11464. Γöé               Γöéof many of the other window classes.         Γöé
  11465. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11466. ΓöéWC_LISTBOX     ΓöéPresents a list of text items from which the Γöé
  11467. Γöé               Γöéuser can make selections.                    Γöé
  11468. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11469. ΓöéWC_MENU        ΓöéPresents a list of items that can be         Γöé
  11470. Γöé               Γöédisplayed horizontally as menu bars, or      Γöé
  11471. Γöé               Γöévertically as pull-down menus.  Menus usuallyΓöé
  11472. Γöé               Γöéare used to provide a command interface to   Γöé
  11473. Γöé               Γöéapplications.                                Γöé
  11474. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11475. ΓöéWC_NOTEBOOK    ΓöéCreates a control for the user that is       Γöé
  11476. Γöé               Γöédisplayed as a number of pages.  The top pageΓöé
  11477. Γöé               Γöéis visible, and the others are hidden, with  Γöé
  11478. Γöé               Γöétheir presence being indicated by a visible  Γöé
  11479. Γöé               Γöéedge on each of the back pages.              Γöé
  11480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11481. ΓöéWC_SCROLLBAR   ΓöéLets the user scroll the contents of an      Γöé
  11482. Γöé               Γöéassociated window.                           Γöé
  11483. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11484. ΓöéWC_SLIDER      ΓöéCreates a control that is usable for         Γöé
  11485. Γöé               Γöéproducing approximate (analog) values or     Γöé
  11486. Γöé               Γöéproperties.  Scroll bars were used for this  Γöé
  11487. Γöé               Γöéfunction in the past, but the slider providesΓöé
  11488. Γöé               Γöéa more flexible method of achieving the same Γöé
  11489. Γöé               Γöéresult, with less programming effort.        Γöé
  11490. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11491. ΓöéWC_SPINBUTTON  ΓöéCreates a control that presents itself to theΓöé
  11492. Γöé               Γöéuser as a scrollable ring of choices, giving Γöé
  11493. Γöé               Γöéthe user quick access to the data.  The user Γöé
  11494. Γöé               Γöéis presented only one item at a time, so the Γöé
  11495. Γöé               Γöéspin button should be used with data that is Γöé
  11496. Γöé               Γöéintuitively related.                         Γöé
  11497. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11498. ΓöéWC_STATIC      ΓöéSimple display items that do not respond to  Γöé
  11499. Γöé               Γöékeyboard or pointing device events.          Γöé
  11500. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11501. ΓöéWC_TITLEBAR    ΓöéDisplays the window title or caption and letsΓöé
  11502. Γöé               Γöéthe user move the window's owner.            Γöé
  11503. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11504. ΓöéWC_VALUESET    ΓöéCreates a control similar in function to the Γöé
  11505. Γöé               Γöéradio buttons but provides additional        Γöé
  11506. Γöé               Γöéflexibility to display graphical, textual,   Γöé
  11507. Γöé               Γöéand numeric formats.  The values set with    Γöé
  11508. Γöé               Γöéthis control are mutually exclusive.         Γöé
  11509. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11510.  
  11511. With the exception of WC_FRAME, the system-provided window classes are known as 
  11512. control window classes because they give the user an easy means of controlling 
  11513. specific types of interaction.  For example, the WC_BUTTON class allows single 
  11514. or multiple selections.  These windows conform to the IBM* Systems Application 
  11515. Architecture (SAA) Common User Access (CUA) definition. They are designed 
  11516. specifically to provide function that meets the needs for a graphics-based 
  11517. standard user interface.  The code fragments provided in this guide make 
  11518. extensive use of the system window classes. 
  11519.  
  11520.  
  11521. ΓòÉΓòÉΓòÉ 17.1.6.2. Private Window Classes ΓòÉΓòÉΓòÉ
  11522.  
  11523. A private window class is one that an application registers for its own use; it 
  11524. is available only to the process that registers it.  The application-provided 
  11525. window procedure for a private window class resides either in the application's 
  11526. executable files or in a DLL file.  A private window class is deleted when its 
  11527. registering process is terminated. 
  11528.  
  11529.  
  11530. ΓòÉΓòÉΓòÉ 17.1.7. Window Styles ΓòÉΓòÉΓòÉ
  11531.  
  11532. A window can have a combination of styles; an application can combine styles by 
  11533. using the bitwise inclusive OR operator.  An application usually sets the 
  11534. window styles when it creates the window.  The OS/2 operating system provides 
  11535. several standard window styles that apply to all windows.  It also provides 
  11536. many styles for the predefined frame and control windows.  The frame and 
  11537. control styles are unique to each predefined window class and can be used only 
  11538. for windows of the corresponding class. 
  11539.  
  11540. Initially, the styles of the window class used to create the window determine 
  11541. the styles of the new window.  For example, if the window class has the style 
  11542. CS_SYNCPAINT, all windows created using that class, by default, will have the 
  11543. window style WS_SYNCPAINT. The OS/2 operating system has the following standard 
  11544. window styles: 
  11545.  
  11546. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11547. ΓöéStyle Name               ΓöéDescription                                  Γöé
  11548. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11549. ΓöéWS_CLIPCHILDREN          ΓöéPrevents a window from painting over its     Γöé
  11550. Γöé                         Γöéchild windows. This style increases the time Γöé
  11551. Γöé                         Γöénecessary to calculate the visible region.   Γöé
  11552. Γöé                         ΓöéThis style is usually not necessary because  Γöé
  11553. Γöé                         Γöéif the parent and child windows overlap and  Γöé
  11554. Γöé                         Γöéboth are invalidated, the system draws the   Γöé
  11555. Γöé                         Γöéparent window before drawing the child       Γöé
  11556. Γöé                         Γöéwindow. If the child window is invalidated   Γöé
  11557. Γöé                         Γöéindependently of the parent window, the      Γöé
  11558. Γöé                         Γöésystem redraws only the child window. If the Γöé
  11559. Γöé                         Γöéupdate region of the parent window does not  Γöé
  11560. Γöé                         Γöéintersect the child window, drawing the      Γöé
  11561. Γöé                         Γöéparent window causes the child window to be  Γöé
  11562. Γöé                         Γöéredrawn. This style is useful to prevent a   Γöé
  11563. Γöé                         Γöéchild window that contains a complex graphic Γöé
  11564. Γöé                         Γöéfrom being redrawn unnecessarily.            Γöé
  11565. Γöé                         ΓöéWS_CLIPCHILDREN is an absolute requirement ifΓöé
  11566. Γöé                         Γöéa window with children ever performs output  Γöé
  11567. Γöé                         Γöéin response to any message other than        Γöé
  11568. Γöé                         ΓöéWM_PAINT. Only WM_PAINT processing is        Γöé
  11569. Γöé                         Γöésynchronized such that the children will get Γöé
  11570. Γöé                         Γöétheir messages after the parent.             Γöé
  11571. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11572. ΓöéWS_CLIPSIBLINGS          ΓöéPrevents a window from painting over its     Γöé
  11573. Γöé                         Γöésibling windows. This style protects sibling Γöé
  11574. Γöé                         Γöéwindows but increases the time necessary to  Γöé
  11575. Γöé                         Γöécalculate the visible region. This style is  Γöé
  11576. Γöé                         Γöéappropriate for windows that overlap and thatΓöé
  11577. Γöé                         Γöéhave the same parent window.                 Γöé
  11578. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11579. ΓöéWS_DISABLED              ΓöéUsed by an application to disable a window.  Γöé
  11580. Γöé                         ΓöéIt is up to the window to recognize this     Γöé
  11581. Γöé                         Γöéstyle and reject input.                      Γöé
  11582. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11583. ΓöéWS_GROUP                 ΓöéSpecifies the first control of a group of    Γöé
  11584. Γöé                         Γöécontrols in which the user can move from one Γöé
  11585. Γöé                         Γöécontrol to the next by using the ARROW keys. Γöé
  11586. Γöé                         ΓöéAll controls defined after the control with  Γöé
  11587. Γöé                         Γöéthe WS_GROUP style belong to the same group. Γöé
  11588. Γöé                         ΓöéThe next control with the WS_GROUP style endsΓöé
  11589. Γöé                         Γöéthe first group and starts a new group.      Γöé
  11590. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11591. ΓöéWS_MAXIMIZED             ΓöéEnlarges a window to the maximum size.       Γöé
  11592. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11593. ΓöéWS_MINIMIZED             ΓöéReduces a window to the size of an icon.     Γöé
  11594. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11595. ΓöéWS_PARENTCLIP            ΓöéExtends a window's visible region to include Γöé
  11596. Γöé                         Γöéthat of its parent window. This style        Γöé
  11597. Γöé                         Γöésimplifies the calculation of the child      Γöé
  11598. Γöé                         Γöéwindow's visible region but is potentially   Γöé
  11599. Γöé                         Γöédangerous because the parent window's visibleΓöé
  11600. Γöé                         Γöéregion is usually larger than the child      Γöé
  11601. Γöé                         Γöéwindow.                                      Γöé
  11602. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11603. ΓöéWS_SAVEBITS              ΓöéSaves the screen area under a window as a bitΓöé
  11604. Γöé                         Γöémap. When the user hides or moves the window,Γöé
  11605. Γöé                         Γöéthe system restores the image by copying the Γöé
  11606. Γöé                         Γöébits; there is no need to add the area to theΓöé
  11607. Γöé                         Γöéuncovered window's update region. The style  Γöé
  11608. Γöé                         Γöécan improve system performance but also can  Γöé
  11609. Γöé                         Γöéconsume a great deal of memory. It is        Γöé
  11610. Γöé                         Γöérecommended only for transient windows, such Γöé
  11611. Γöé                         Γöéas menus and dialog windows, not for main    Γöé
  11612. Γöé                         Γöéapplication windows.                         Γöé
  11613. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11614. ΓöéWS_SYNCPAINT             ΓöéCauses a window to receive WM_PAINT messages Γöé
  11615. Γöé                         Γöéimmediately after a part of the window       Γöé
  11616. Γöé                         Γöébecomes invalid. Without this style, the     Γöé
  11617. Γöé                         Γöéwindow receives WM_PAINT messages only if no Γöé
  11618. Γöé                         Γöéother message is waiting to be processed.    Γöé
  11619. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11620. ΓöéWS_TABSTOP               ΓöéSpecifies one of any number of controls      Γöé
  11621. Γöé                         Γöéthrough which the user can move by tabbing.  Γöé
  11622. Γöé                         ΓöéPressing the TAB key moves the keyboard focusΓöé
  11623. Γöé                         Γöéto the next control that has the WS_TABSTOP  Γöé
  11624. Γöé                         Γöéstyle.                                       Γöé
  11625. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11626. ΓöéWS_VISIBLE               ΓöéMakes a window visible. The operating system Γöé
  11627. Γöé                         Γöédraws the window on the screen unless        Γöé
  11628. Γöé                         Γöéoverlapping windows completely obscure it.   Γöé
  11629. Γöé                         ΓöéWindows without this style are hidden. If    Γöé
  11630. Γöé                         Γöéoverlapping windows completely obscure the   Γöé
  11631. Γöé                         Γöéwindow, the window is still considered       Γöé
  11632. Γöé                         Γöévisible.  (Visibility means that the         Γöé
  11633. Γöé                         Γöéoperating system draws the window if it can.)Γöé
  11634. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11635.  
  11636.  
  11637. ΓòÉΓòÉΓòÉ 17.1.8. Window Handles ΓòÉΓòÉΓòÉ
  11638.  
  11639. After creating a window, the creation function returns a window handle that 
  11640. uniquely identifies the window.  An application can use this handle to direct 
  11641. the action of functions to the window.  Window handles have the data type HWND; 
  11642. applications must use this data type when declaring variables that hold window 
  11643. handles. 
  11644.  
  11645. There are special constants that an application can use instead of a window 
  11646. handle in certain functions.  For example, an application can use HWND_DESKTOP 
  11647. in the WinCreateWindow function to specify the desktop window as the new 
  11648. window's parent. Similarly, HWND_OBJECT represents the desktop-object window. 
  11649. HWND_TOP and HWND_BOTTOM represent the top and bottom positions relative to the 
  11650. z-order position of a window. 
  11651.  
  11652. Although the NULL constant is not a window handle, an application can use it in 
  11653. some functions to specify that no window is affected.  For example, an 
  11654. application can use NULL in the WinCreateWindow function to create a window 
  11655. that has no owner window.  Some functions might return NULL, indicating that 
  11656. the given action applies to no window. 
  11657.  
  11658.  
  11659. ΓòÉΓòÉΓòÉ 17.1.9. Window Size and Position ΓòÉΓòÉΓòÉ
  11660.  
  11661. A window's size and position can be expressed as a bounding rectangle, given in 
  11662. coordinates relative to its parent.  An application specifies the window's 
  11663. initial size and position when creating the window. 
  11664.  
  11665. To use the system-default values for the initial size and position of a frame 
  11666. window, an application can specify the FCF_SHELLPOSITION frame-creation flag. 
  11667. The application can change a window's size and position at any time. 
  11668.  
  11669. Note: 
  11670.  
  11671. The default coordinate system for a window specifies that the point (0,0) is at 
  11672. the lower-left corner of the window, with coordinates increasing as they go 
  11673. upward and to the right. 
  11674.  
  11675. A window can be positioned anywhere in relation to its parent. 
  11676.  
  11677.  
  11678. ΓòÉΓòÉΓòÉ 17.1.9.1. Size ΓòÉΓòÉΓòÉ
  11679.  
  11680. A window's size (width and height) is given in pels, in the range 0 through 
  11681. 65535.  A window can have 0 width and height; however, a window with 0 width or 
  11682. height is not drawn on the screen, even though it has the WS_VISIBLE style. 
  11683.  
  11684. An application can create very large windows; however, it should check the size 
  11685. of the screen before enlarging a window size.  One way to choose an appropriate 
  11686. size is to use the WinGetMaxPosition function to retrieve the size of the 
  11687. maximized window.  A window that is larger than its maximized size will be 
  11688. larger than the screen also. 
  11689.  
  11690. An application can retrieve the current size of the window by using the 
  11691. WinQueryWindowRect function. 
  11692.  
  11693.  
  11694. ΓòÉΓòÉΓòÉ 17.1.9.2. Position ΓòÉΓòÉΓòÉ
  11695.  
  11696. A window's position is defined as the x,y coordinates of its lower-left corner. 
  11697. These coordinates, sometimes called window coordinates, always are relative to 
  11698. the lower-left corner of the parent window.  For example, a window having the 
  11699. coordinates (10,10) is placed 10 pels to the right of, and 10 pels up from, the 
  11700. lower-left corner of its parent window.  Notice, however, that a window can be 
  11701. positioned anywhere in relation to its parent, but always relative to the 
  11702. parent's lower-left corner. 
  11703.  
  11704. Adjusting a window's position can improve drawing performance.  For example, an 
  11705. application could position a window so that its horizontal position is a 
  11706. multiple of 8, relative to the screen origin (the lower-left corner of the 
  11707. screen).  Coordinates that are multiples of 8 correspond to byte boundaries in 
  11708. the screen-memory bit map.  It is usually faster to start drawing at a byte 
  11709. boundary. 
  11710.  
  11711. By default, the system positions a frame window on a byte boundary; but an 
  11712. application can override this action by using the FCF_NOBYTEALIGN style when 
  11713. creating the window. 
  11714.  
  11715.  
  11716. ΓòÉΓòÉΓòÉ 17.1.9.3. Size and Position Messages ΓòÉΓòÉΓòÉ
  11717.  
  11718. A window receives messages when it changes size or position.  Before a change 
  11719. is made, the system might send a WM_ADJUSTWINDOWPOS message to allow the window 
  11720. procedure to make final adjustments to the window's size and position.  This 
  11721. message includes a pointer to an SWP structure that contains the requested 
  11722. width, height, and position.  If the window procedure adjusts these values in 
  11723. the structure, the system uses the adjusted values to redraw the window.  The 
  11724. WM_ADJUSTWINDOWPOS message is not sent if the change is a result of a call to 
  11725. the WinSetWindowPos function with the SWP_NOADJUST constant specified. 
  11726.  
  11727. After a change has been made to a window, the system sends a WM_SIZE message to 
  11728. specify the new size of the window.  If the window has the class style 
  11729. CS_MOVENOTIFY, the system also sends a WM_MOVE message, which includes the new 
  11730. position for the window.  The system sends a WM_SHOW message if the visibility 
  11731. of the window has changed. 
  11732.  
  11733.  
  11734. ΓòÉΓòÉΓòÉ 17.1.9.4. System Commands ΓòÉΓòÉΓòÉ
  11735.  
  11736. An application that has a window with a system menu can change the size and 
  11737. position of that window by sending system commands.  The system commands are 
  11738. generated when the user chooses commands from the system menu.  An application 
  11739. can emulate the user action by sending a WM_SYSCOMMAND message to the window. 
  11740.  
  11741. Following are some of the system commands: 
  11742.  
  11743. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11744. ΓöéCommand        ΓöéDescription                                  Γöé
  11745. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11746. ΓöéSC_SIZE        ΓöéStarts a Size command.  The user can change  Γöé
  11747. Γöé               Γöéthe size of the window with a mouse and the  Γöé
  11748. Γöé               Γöékeyboard.                                    Γöé
  11749. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11750. ΓöéSC_MOVE        ΓöéStarts a Move command.  The user can move theΓöé
  11751. Γöé               Γöéwindow with a mouse and the keyboard.        Γöé
  11752. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11753. ΓöéSC_MINIMIZE    ΓöéMinimizes the window.                        Γöé
  11754. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11755. ΓöéSC_MAXIMIZE    ΓöéMaximizes the window.                        Γöé
  11756. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11757. ΓöéSC_RESTORE     ΓöéRestores a minimized or maximized window to  Γöé
  11758. Γöé               Γöéits previous size and position.              Γöé
  11759. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11760. ΓöéSC_CLOSE       ΓöéCloses the window.  This command sends a     Γöé
  11761. Γöé               ΓöéWM_CLOSE message to the window.  The window  Γöé
  11762. Γöé               Γöéperforms all tasks needed to clean up and    Γöé
  11763. Γöé               Γöédestroy itself.                              Γöé
  11764. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11765.  
  11766.  
  11767. ΓòÉΓòÉΓòÉ 17.1.10. Window Data ΓòÉΓòÉΓòÉ
  11768.  
  11769. Every window has an associated data structure. The window data structure 
  11770. contains all the information specified for the window at the time it was 
  11771. created and any additional information supplied for the window since that time. 
  11772. Although the exact size and meaning of the information in the window data 
  11773. structure are private to the system, an application can access any of the 
  11774. following data items via system-provided functions: 
  11775.  
  11776.      Pointer to window-instance data structure 
  11777.      Pointer to window procedure 
  11778.      Parent-window handle 
  11779.      Owner-window handle 
  11780.      Handle of first child window 
  11781.      Handle of next sibling window 
  11782.      Window size and position (expressed as a rectangle) 
  11783.      Window style 
  11784.      Window identifier 
  11785.      Update-region handle 
  11786.      Message-queue handle 
  11787.  
  11788.  An application can examine and modify this data by using functions such as 
  11789.  WinQueryWindowUShort and WinSetWindowUShort. These functions let an 
  11790.  application access data that is stored as 16-bit integers.  Other functions 
  11791.  let an application access data containing 32-bit integers and pointers. 
  11792.  Several functions indirectly affect the data items in the window data 
  11793.  structure.  For example, the WinSubclassWindow function replaces the 
  11794.  window-procedure pointer, and the WinSetWindowPos function changes the size 
  11795.  and position of the window. 
  11796.  
  11797.  An application can extend the number of available data items in the window 
  11798.  data structure by specifying a count of extra bytes when it registers the 
  11799.  corresponding window class.  Then, the window procedure can use these bytes to 
  11800.  store information about the window.  The WinQueryWindowUShort and 
  11801.  WinSetWindowUShort functions give direct access to the extra bytes. 
  11802.  
  11803.  It generally is not a good idea to use direct storage in the window data.  It 
  11804.  is better to allocate a data structure dynamically and set a pointer to that 
  11805.  data structure in the window words.  This provides two advantages: 
  11806.  
  11807.    1. Most importantly, it is a symbolic way of referencing the data structure. 
  11808.       It is very easy to make mistakes and provide the wrong offsets to 
  11809.       WinQueryWindowUShort and so forth. 
  11810.  
  11811.    2. You now can add and remove fields without cross dependencies because you 
  11812.       now use symbolic references; whereas, when you use the technique of 
  11813.       putting window words directly in the window data structure, you have to 
  11814.       account for changed offsets. 
  11815.  
  11816.  
  11817. ΓòÉΓòÉΓòÉ 17.1.11. Window Resources ΓòÉΓòÉΓòÉ
  11818.  
  11819. Window resources are read-only data segments stored in an application's EXE 
  11820. file or in a dynamic link library's DLL file.  Predefined PM window resources 
  11821. include keyboard accelerator tables, icons, menus, bit maps, dialog boxes, and 
  11822. so forth; these are not a regular part of the application window's code and 
  11823. data.  Because, in most cases, window resources are not loaded into memory when 
  11824. the operating system runs a program, the resources can be shared by multiple 
  11825. instances of the same application. 
  11826.  
  11827. Most window resources are stored in a format that is unique to each resource 
  11828. type.  The application does not need to know these formats because the system 
  11829. translates them, as necessary, for use in PM functions.  The following table 
  11830. lists the ten most commonly used PM window resource types. 
  11831.  
  11832. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11833. ΓöéResource       ΓöéDescription                                  Γöé
  11834. ΓöéIdentifier     Γöé                                             Γöé
  11835. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11836. ΓöéRT_ACCELTABLE  ΓöéKeyboard accelerator table                   Γöé
  11837. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11838. ΓöéRT_BITMAP      ΓöéBit map                                      Γöé
  11839. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11840. ΓöéRT_DIALOG      ΓöéDialog box template                          Γöé
  11841. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11842. ΓöéRT_FONT        ΓöéFont                                         Γöé
  11843. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11844. ΓöéRT_FONTDIR     ΓöéFont directory                               Γöé
  11845. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11846. ΓöéRT_MENU        ΓöéMenu template                                Γöé
  11847. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11848. ΓöéRT_MESSAGE     ΓöéMessage string                               Γöé
  11849. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11850. ΓöéRT_POINTER     ΓöéIcon or mouse                                Γöé
  11851. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11852. ΓöéRT_RCDATA      ΓöéProgrammer-defined data                      Γöé
  11853. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11854. ΓöéRT_STRING      ΓöéText string                                  Γöé
  11855. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11856.  
  11857. To access these resources, you must prepare a resource file (ASCII file with 
  11858. the extension .RC). Then the ASCII resource file must be compiled into binary 
  11859. images using the resource compiler.  The compiled resource file extension is 
  11860. RES; it can be linked into your program's EXE file or to a dynamic link 
  11861. library's DLL file. 
  11862.  
  11863.  
  11864. ΓòÉΓòÉΓòÉ 17.1.12. Maximized and Minimized Windows ΓòÉΓòÉΓòÉ
  11865.  
  11866. A maximized window is a window that has been enlarged to fill the screen. 
  11867. Although a window's size can be set so that it fills the screen exactly, a 
  11868. maximized window is slightly different: the system automatically moves the 
  11869. window's title bar to the top of the screen and sets the WS_MAXIMIZED style for 
  11870. the window. 
  11871.  
  11872. A minimized window is a window whose size has been reduced to exactly the size 
  11873. of an icon or, in the Workplace Shell*, it disappears altogether (by default). 
  11874. Like a maximized window, a minimized window is more than just a window of a 
  11875. given size; typically, the system moves the (icon) minimized window to the 
  11876. lower part of the screen and sets the WS_MINIMIZED style for that window.  The 
  11877. lower part of the screen is sometimes called the icon area.  Unless the 
  11878. application specifies another position, the system moves a minimized window 
  11879. into the first available icon position in the icon area. 
  11880.  
  11881. If a window is created with the WS_MAXIMIZED or WS_MINIMIZED styles, the system 
  11882. draws the window as a maximized or minimized window. 
  11883.  
  11884. An application can restore maximized or minimized windows to their previous 
  11885. size and position by specifying the SWP_RESTORE flag in a call to the 
  11886. WinSetWindowPos function. 
  11887.  
  11888.  
  11889. ΓòÉΓòÉΓòÉ 17.1.13. Window Visibility ΓòÉΓòÉΓòÉ
  11890.  
  11891. A window that is a descendant of the desktop window can be either visible or 
  11892. invisible.  The system displays a visible window on the screen.  It hides an 
  11893. invisible window by not drawing it.  If a window is visible, the user can 
  11894. supply input to the window and view the window's output.  If a window is 
  11895. invisible, the window, in effect, is disabled.  An invisible window can process 
  11896. messages from the system or from other windows, but it cannot process user 
  11897. input or display output.  An application sets a window's visibility state when 
  11898. it creates the window.  Later, a user or the application can change the 
  11899. visibility state. 
  11900.  
  11901. The visible region of a window is the position clipped by any overlapping 
  11902. windows.  These overlapping windows can be child windows or other main windows 
  11903. in the system.  The visible region is defined by a set of one or more 
  11904. rectangles, as shown in the following figure. 
  11905.  
  11906.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11907.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11908.  Γöé Γûæ A ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11909.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé            B  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11910.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ         Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11911.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé C             Γöé         Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11912.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé               Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11913.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé               Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11914.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11915.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé D             Γöé
  11916.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé               Γöé
  11917.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  11918.                Γöé
  11919.                                        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11920.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11921.  Γöé ΓûæΓûæΓûæΓûæΓûæ Γöé - Visible region for Window A
  11922.  Γöé ΓûæΓûæΓûæΓûæΓûæ Γöé
  11923.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11924.  
  11925. Visible Region for Window A 
  11926.  
  11927. A window is visible if the WS_VISIBLE style is set for the window.  By default, 
  11928. the WinCreateWindow function creates invisible windows unless the application 
  11929. specifies WS_VISIBLE.  The application often hides a window to keep its 
  11930. operational details from the user.  For example, an application can keep a new 
  11931. window invisible while it customizes the window's appearance.  An application 
  11932. can determine whether a window has the WS_VISIBLE style by using the 
  11933. WinIsWindowVisible function. 
  11934.  
  11935. Even if a window has the WS_VISIBLE style, the user might not be able to see 
  11936. the window on the screen because other windows completely overlap it, or it 
  11937. might have been moved beyond the edge of its parent.  A visible window is 
  11938. subject to the clipping rules established by its parent-child relationship.  If 
  11939. the window's parent window is not visible, the window will not be visible. 
  11940. Because a child window is drawn relative to its parent's lower-left corner, if 
  11941. the parent window is moved beyond the edge of the screen, the child window also 
  11942. will be moved.  In other words, if a user moves the parent window containing 
  11943. the child window far enough off the edge of the screen, the user will not be 
  11944. able to see the child window, even though the child window and its parent 
  11945. window have the WS_VISIBLE style.  To determine whether the user actually can 
  11946. see a window, an application can use the WinIsWindowShowing function. 
  11947.  
  11948.  
  11949. ΓòÉΓòÉΓòÉ 17.1.14. Window Destruction ΓòÉΓòÉΓòÉ
  11950.  
  11951. In general, an application must destroy all the windows it creates. It does 
  11952. this by using the WinDestroyWindow function.  When a window is destroyed, the 
  11953. system hides the window, if it is visible, and then removes any internal data 
  11954. associated with the window.  This invalidates the window handle so that it can 
  11955. no longer be used by the application. 
  11956.  
  11957. An application destroys many of the windows it creates soon after creating 
  11958. them.  For example, an application usually destroys a dialog window as soon as 
  11959. the application has sufficient input from the user to continue its task.  An 
  11960. application eventually destroys the main window of the application (before 
  11961. terminating). 
  11962.  
  11963. Destroying a window does not affect the window class from which the window was 
  11964. created.  New windows still can be created using that class, and any existing 
  11965. windows of that class continue to operate. 
  11966.  
  11967. When the application calls WinDestroyWindow, the system searches the 
  11968. descendancy tree for all windows below the specified window and destroys them 
  11969. from the bottom up, so each child receives WM_DESTROY before its parent.  Each 
  11970. destroyed window is responsible for cleaning up its own resources in response 
  11971. to the WM_DESTROY message. 
  11972.  
  11973. If a presentation space was created by the WinGetPS function for any of the 
  11974. windows to be destroyed, it must be released by calling the WinReleasePS 
  11975. function.  The application must do this before calling the WinDestroyWindow 
  11976. function.  If a presentation space is associated with the device context for 
  11977. the window, the application must disassociate or destroy the presentation space 
  11978. by using the GpiAssociate or GpiDestroyPS function before calling 
  11979. WinDestroyWindow.  Failing to release a resource can cause an error. 
  11980.  
  11981. For more information about presentation spaces and device contexts, see 
  11982. Painting and Drawing. 
  11983.  
  11984. If the window being destroyed is the active window, both the active and focus 
  11985. states are transferred to another window.  The window that becomes the active 
  11986. window is the next window, as determined by the Alt+Esc key combination.  The 
  11987. new active window then determines which window receives the keyboard focus. 
  11988.  
  11989.  
  11990. ΓòÉΓòÉΓòÉ 17.2. Using Windows ΓòÉΓòÉΓòÉ
  11991.  
  11992. The following sections explain how to create and use windows in an application, 
  11993. how to manage ownership and parent-child window relationships, and how to move 
  11994. and size windows. 
  11995.  
  11996.  
  11997. ΓòÉΓòÉΓòÉ 17.2.1. Creating a Top-Level Frame Window ΓòÉΓòÉΓòÉ
  11998.  
  11999. The main window in most applications is a top-level frame window. An 
  12000. application creates a top-level frame window by specifying the handle of the 
  12001. desktop window, or HWND_DESKTOP, as the hwndParent parameter in a call to the 
  12002. WinCreateStdWindow function. 
  12003.  
  12004. The following figure shows the main() function for a simple PM application. 
  12005. This function initializes the application, creates a message queue, and 
  12006. registers the window class for the client window before creating a top-level 
  12007. frame window. 
  12008.  
  12009.  
  12010. Uses
  12011.   Os2Def,Os2Base,Os2PmApi;
  12012.  
  12013. Const IDR_RESOURCES = 1;
  12014.  
  12015. Uses
  12016.   Os2Def,Os2Base,Os2PmApi;
  12017.  
  12018. Var
  12019.   HwndFrame  : HWND; (* ╨ísken var tom!! *)
  12020.   HwndClient : HWND; (* ╨ísken var tom!! *)
  12021.   Hmq        : HMQ;  (* ╨ísken var tom!! *)
  12022.   Qmsg       : QMSG; (* ╨ísken var tom!! *)
  12023.   Hab        : HAB;  (* ╨ísken var tom!! *)
  12024.   FlFrameFlags : ULONG; (* ╨ísken var tom!! *)
  12025.  
  12026. Begin
  12027.  
  12028.     (* Set the frame-window creation flags.                       *)
  12029.   FlFrameFlags :=
  12030.       FCF_TITLEBAR      Or   (* Title bar                        *)
  12031.       FCF_SIZEBORDER    Or   (* Size border                      *)
  12032.       FCF_MINMAX        Or   (* Minimize and maximize buttons.   *)
  12033.       FCF_SYSMENU       Or   (* System menu                      *)
  12034.       FCF_SHELLPOSITION Or   (* System-default size and position *)
  12035.       FCF_TASKLIST ;        (* Add name to Task List.           *)
  12036.  
  12037.   (* Initialize the application for PM                          *)
  12038.  
  12039.   hab := WinInitialize(0);
  12040.  
  12041.   (* Create the application message queue.                      *)
  12042.  
  12043.   (* Register the class for the client window.                  *)
  12044.   WinRegisterClass(
  12045.       hab,                    (* Anchor block handle            *)
  12046.       'MyPrivateClass',       (* Name of class being registered *)
  12047.       ClientWndProc,          (* Window procedure for class     *)
  12048.       CS_SIZEREDRAW Or        (* Class style                    *)
  12049.       CS_HITTEST,             (* Class style                    *)
  12050.       0);                     (* Extra bytes to reserve         *)
  12051.  
  12052.   (* Create a top-level frame window with a client window       *)
  12053.   (* that belongs to the window class "MyPrivateClass".         *)
  12054.   hwndFrame := WinCreateStdWindow(
  12055.       HWND_DESKTOP,      (* Parent is desktop window.           *)
  12056.       WS_VISIBLE,        (* Make frame window visible.          *)
  12057.       &flFrameFlags,     (* Frame controls                      *)
  12058.       'MyPrivateClass',  (* Window class for client             *)
  12059.       nil,               (* No window title                     *)
  12060.       WS_VISIBLE,        (* Make client window visible .        *)
  12061.       0,                 (* Resources in application module     *)
  12062.       IDR_RESOURCES,     (* Resource identIfier                 *)
  12063.       nil);              (* Pointer to client window handle     *)
  12064.  
  12065.   (* Start the main message loop. Get messages from the         *)
  12066.   (* queue and dispatch them to the appropriate windows.        *)
  12067.   While (WinGetMsg(hab, &qmsg, 0, 0, 0)<>0) Do
  12068.     WinDispatchMsg(hab, &qmsg);
  12069.  
  12070.   (* Main loop has terminated. Destroy all windows and the      *)
  12071.   (* message queue; then terminate the application.             *)
  12072.   WinDestroyWindow(hwndFrame);
  12073.   WinDestroyMsgQueue(hmq);
  12074.   WinTerminate(hab);
  12075.  
  12076.   Halt(0);
  12077. End.
  12078.  
  12079.  
  12080. ΓòÉΓòÉΓòÉ 17.2.2. Creating an Object Window ΓòÉΓòÉΓòÉ
  12081.  
  12082. An application can create an object window by using the WinCreateWindow 
  12083. function and setting the desktop-object window as the parent window.  The code 
  12084. fragment in the following figure shows how to create an object window. 
  12085.  
  12086.  
  12087. Uses
  12088.   Os2Def,Os2Base,Os2PmApi;
  12089.  
  12090. Const ID_OBJWINDOW = 2;
  12091. Var
  12092.   HwndObject : HWND; (* ╨ísken var tom!! *)
  12093.  
  12094. Begin
  12095.   hwndObject := WinCreateWindow(
  12096.       HWND_OBJECT,        (* Parent is object window.            *)
  12097.       'MyObjClass',       (* Window class for client             *)
  12098.       nil,                (* Window text                         *)
  12099.       0,                  (* No styles for object window         *)
  12100.       0, 0,               (* Lower-left corner                   *)
  12101.       0, 0,               (* Width and height                    *)
  12102.       nil,                (* No owner                            *)
  12103.       HWND_BOTTOM,        (* Inserts window at bottom of z-order *)
  12104.       ID_OBJWINDOW,       (* Window identIfier                   *)
  12105.       nil,               (* No class-specIfic data              *)
  12106.       nil);              (* No presentation data                *)
  12107.  
  12108. End.
  12109.  
  12110.  
  12111. ΓòÉΓòÉΓòÉ 17.2.3. Querying Window Data ΓòÉΓòÉΓòÉ
  12112.  
  12113. An application can examine the values in the data structure associated with a 
  12114. window by using the WinQueryWindowUShort and WinQueryWindowULong functions. 
  12115. Each of these functions specifies a structure data item to examine.  The index 
  12116. value can be an integer representing a zero-based byte index or a constant 
  12117. (QWS_) that identifies a specific item of data. The code fragment in the 
  12118. following figure obtains the programmer-defined identifier of the object window 
  12119. defined in the previous example: 
  12120.  
  12121.  
  12122. Uses
  12123.   Os2Def,Os2Base,Os2PmApi;
  12124.  
  12125. Var
  12126.   HwndObject : HWND;   (* ╨ísken var tom!! *)
  12127.   UsObjID    : USHORT; (* ╨ísken var tom!! *)
  12128.  
  12129. Begin
  12130.  
  12131.   usObjID := WinQueryWindowUShort(hwndObject, QWS_ID);
  12132.  
  12133. End.
  12134.  
  12135.  
  12136. ΓòÉΓòÉΓòÉ 17.2.4. Changing the Parent Window ΓòÉΓòÉΓòÉ
  12137.  
  12138. An application can change a window's parent window by using the WinSetParent 
  12139. function.  For example, in an application that uses child windows to display 
  12140. documents, you might want only the active document window to show a system 
  12141. menu.  You can do this by changing that menu's parent window back and forth 
  12142. between the document window and the object window when WM_ACTIVATE messages are 
  12143. received.  This technique is shown in the code fragment in the following 
  12144. figure. 
  12145.  
  12146.  
  12147. Var
  12148.   hwndFrame, hwndSysMenu, hwnd : HWND; (* ╨ísken var tom!! *)
  12149.  
  12150.   Case msg Of
  12151.  
  12152.     WM_ACTIVATE:
  12153.       (* Get the handles of the frame window and system menu.        *)
  12154.       hwndFrame := WinQueryWindow(hwnd, QW_PARENT);
  12155.       hwndSysMenu := WinWindowFromID(hwndFrame, FID_SYSMENU);
  12156.  
  12157.       (* If the window is being activated, make the frame window the *)
  12158.       (* parent of the system menu. Otherwise, hide the system menu  *)
  12159.       (* by making the object window the parent.                     *)
  12160.  
  12161.       If ( SHORT1FROMMP(mp1)) Then
  12162.         WinSetParent(hwndSysMenu, hwndFrame, Ord(True))
  12163.       Else
  12164.         WinSetParent(hwndSysMenu, HWND_OBJECT, Ord(True));
  12165.  
  12166.       Halt(0);
  12167.   End;
  12168.  
  12169.  
  12170. ΓòÉΓòÉΓòÉ 17.2.5. Finding a Parent, Child, or Owner Window ΓòÉΓòÉΓòÉ
  12171.  
  12172. An application can determine the parent, child, and owner windows for any 
  12173. window by using the WinQueryWindow function.  This function returns the window 
  12174. handle of the requested window. 
  12175.  
  12176. The code fragment in the following figure determines the parent window of the 
  12177. given window: 
  12178.  
  12179. Uses
  12180.   Os2Def,Os2Base,Os2PmApi;
  12181.  
  12182. Var
  12183.   HwndParent   : HWND; (* ╨ísken var tom!! *)
  12184.   HwndMyWindow : HWND; (* ╨ísken var tom!! *)
  12185.  
  12186. Begin
  12187.  
  12188.   hwndParent := WinQueryWindow(hwndMyWindow, QW_PARENT);
  12189.  
  12190. The code fragment in the following figure determines the topmost child window 
  12191. (the child window in the top z-order position): 
  12192.  
  12193. Uses
  12194.   Os2Def,Os2Base,Os2PmApi;
  12195.  
  12196. Var
  12197.   HwndTopChild : HWND; (* ╨ísken var tom!! *)
  12198.   HwndParent   : HWND; (* ╨ísken var tom!! *)
  12199.  
  12200. Begin
  12201.  
  12202.   hwndTopChild := WinQueryWindow(hwndParent, QW_TOP);
  12203.  
  12204. If a given window does not have an owner or child window, WinQueryWindow 
  12205. returns NULL. 
  12206.  
  12207.  
  12208. ΓòÉΓòÉΓòÉ 17.2.6. Setting an Owner Window ΓòÉΓòÉΓòÉ
  12209.  
  12210. An application can set the owner for a window by using the WinSetOwner 
  12211. function.  Typically, after setting the owner, a window notifies the owner 
  12212. window of the new relationship by sending it a message. 
  12213.  
  12214. The code fragment in the following figure shows how to set the owner window and 
  12215. send it a message: 
  12216.  
  12217.  
  12218. Uses
  12219.   Os2Def,Os2Base,Os2PmApi;
  12220.  
  12221. Var
  12222.   HwndMyWindow : HWND; (* ╨ísken var tom!! *)
  12223.   HwndNewOwner : HWND; (* ╨ísken var tom!! *)
  12224.  
  12225. Begin
  12226.  
  12227.   If (WinSetOwner(hwndMyWindow, hwndNewOwner))
  12228.  
  12229.   (* Send a notIfication message.                                 *)
  12230.   WinSendMsg(hwndNewOwner,   (* Sends to owner                    *)
  12231.   WM_CONTROL,            (* Control message for notIfication  *)
  12232.   (MPARAM) NEW_OWNER,    (* NotIfication code                 *)
  12233.   nil);                 (* No extra data                     *)
  12234.  
  12235. A window can have only one owner, so WinSetOwner removes any previous owner. 
  12236.  
  12237.  
  12238. ΓòÉΓòÉΓòÉ 17.2.7. Retrieving the Handle of a Child or Owned Window ΓòÉΓòÉΓòÉ
  12239.  
  12240. A parent or owner window can retrieve the handle of a child or owned window by 
  12241. using the WinWindowFromID function and supplying the identifier of the child or 
  12242. owned window.  WinWindowFromID searches all child and owned windows to locate 
  12243. the window with the given identifier.  The window identifier is set when the 
  12244. application creates the child or owned window. 
  12245.  
  12246. Typically, an owned window uses WinQueryWindow to get the handle of the owner 
  12247. window; then uses WinSendMsg to issue a notification message to its owner 
  12248. window. 
  12249.  
  12250. The code fragment in the following figure retrieves the window handle of an 
  12251. owner window and sends the window a WM_ENABLE message. 
  12252.  
  12253. Uses
  12254.   Os2Def,Os2Base,Os2PmApi;
  12255.  
  12256. Var
  12257.   HwndOwned : HWND; (* ╨ísken var tom!! *)
  12258.   HwndOwner : HWND; (* ╨ísken var tom!! *)
  12259.  
  12260. Begin
  12261.  
  12262.   case WM_CONTROL:
  12263.   switch (SHORT2FROMMP (mp2)) {
  12264.   case BN_CLICKED:
  12265.   hwndOwned := WinWindowFromID(hwndOwner,
  12266.   (ULONG)SHORT1FROMMP(mp1));
  12267.   WinSendMsg(hwndOwned, WM_ENABLE,
  12268.   (MPARAM)Ord(True), (MPARAM) nil);
  12269.   return 0;
  12270.   .
  12271.   . (* Check for other notIfication codes. *)
  12272.   .
  12273.  
  12274. End.
  12275.  
  12276. An application also can retrieve the handle of a child window by using the 
  12277. WinWindowFromPoint function and supplying a point in the corresponding parent 
  12278. window. 
  12279.  
  12280.  
  12281. ΓòÉΓòÉΓòÉ 17.2.8. Enumerating Top-Level Windows ΓòÉΓòÉΓòÉ
  12282.  
  12283. An application can enumerate all top-level windows in the system by using the 
  12284. WinBeginEnumWindows and WinGetNextWindow functions.  An application also can 
  12285. create a list of all child windows for a given parent window using 
  12286. WinBeginEnumWindows.  This list contains the window handles of immediate child 
  12287. windows.  By using WinGetNextWindow, the application then can retrieve the 
  12288. window handles, one at a time, from the list.  When the application has 
  12289. finished using the list, it must release the list with the WinEndEnumWindows 
  12290. function. 
  12291.  
  12292. The code fragment in the following figure shows how to enumerate all top-level 
  12293. windows (all immediate child windows of the desktop window): 
  12294.  
  12295.  
  12296. Uses
  12297.   Os2Def,Os2Base,Os2PmApi;
  12298.  
  12299. Var
  12300.   HwndTop : HWND;  (* ╨ísken var tom!! *)
  12301.   Henum   : HENUM; (* ╨ísken var tom!! *)
  12302.  
  12303. Begin
  12304.  
  12305.   (* Enumerate all top-level windows.           *)
  12306.  
  12307.  
  12308.   (* Loop through all enumerated windows.       *)
  12309.   while (hwndTop := WinGetNextWindow(henum)) {
  12310.   .
  12311.   . (* Perform desired task on each window. *)
  12312.   .
  12313. End.
  12314.  
  12315.                                                                                                                                                                                                                                                               W
  12316.  
  12317.  
  12318. ΓòÉΓòÉΓòÉ 17.2.9. Moving and Sizing a Window ΓòÉΓòÉΓòÉ
  12319.  
  12320. An application can move a window by using the WinSetWindowPos function and 
  12321. specifying the SWP_MOVE constant.  The function changes the position of the 
  12322. window to the specified position.  The position is always given in coordinates 
  12323. relative to the parent window. 
  12324.  
  12325. The code fragment in the following figure moves the window to the position 
  12326. (10,10): 
  12327.  
  12328. Uses
  12329.   Os2Def,Os2Base,Os2PmApi;
  12330.  
  12331. Var
  12332.   Hwnd : HWND; (* ╨ísken var tom!! *)
  12333.  
  12334. Begin
  12335.  
  12336.   WinSetWindowPos(
  12337.   hwnd,                 (* Window handle                  *)
  12338.   nil,                 (* Not used for moving and sizing *)
  12339.   10, 10,               (* New position                   *)
  12340.   0, 0,                 (* Not used for moving            *)
  12341.   SWP_MOVE);            (* Move window                    *)
  12342.  
  12343. An application can set the size of a window by using the WinSetWindowPos 
  12344. function and specifying the SWP_SIZE constant.  WinSetWindowPos changes the 
  12345. width and height of the window to the specified width and height. 
  12346.  
  12347. An application can combine moving and sizing in a single function call, as 
  12348. shown in the following figure. 
  12349.  
  12350.  
  12351. Uses
  12352.   Os2Def,Os2Base,Os2PmApi;
  12353.  
  12354. Var
  12355.   Hwnd : HWND; (* ╨ísken var tom!! *)
  12356.  
  12357. Begin
  12358.  
  12359.   WinSetWindowPos(
  12360.   hwnd,                 (* Window handle                  *)
  12361.   nil,                 (* Not used for moving and sizing *)
  12362.   10, 10,               (* New position                   *)
  12363.   200, 200,             (* Width and height               *)
  12364.   SWP_MOVE Or SWP_SIZE); (* Move and size window.          *)
  12365.  
  12366. An application can retrieve the current size and position of a window by using 
  12367. the WinQueryWindowPos function.  This function copies the current information 
  12368. to an SWP structure. 
  12369.  
  12370. The code fragment in the following figure uses the current size and position to 
  12371. change the height of the window, leaving the width and position unchanged. 
  12372.  
  12373.  
  12374. Uses
  12375.   Os2Def,Os2Base,Os2PmApi;
  12376.  
  12377. Var
  12378.   Hwnd : HWND; (* ╨ísken var tom!! *)
  12379.   Swp  : SWP;  (* ╨ísken var tom!! *)
  12380.  
  12381. Begin
  12382.  
  12383.   WinQueryWindowPos(hwnd, &swp);
  12384.   WinSetWindowPos(
  12385.   hwnd,                (* Window handle                  *)
  12386.   nil,                (* Not used for moving and sizing *)
  12387.   0, 0,                (* Not used for sizing            *)
  12388.   swp.cx,              (* Current width                  *)
  12389.   swp.cy + 200,        (* New height                     *)
  12390.   SWP_SIZE);           (* Change the size.               *)
  12391.  
  12392. An application also can move and change the size of several windows at once by 
  12393. using the WinSetMultWindowPos function.  This function takes an array of SWP 
  12394. structures.  Each structure specifies the window to be moved or changed. 
  12395.  
  12396. An application can move and size a window even if it is not visible, although 
  12397. the user is not able to see the effects of the moving and sizing until the 
  12398. window is visible. 
  12399.  
  12400.  
  12401. ΓòÉΓòÉΓòÉ 17.2.10. Redrawing Windows ΓòÉΓòÉΓòÉ
  12402.  
  12403. When the system moves a window or changes its size, it can invalidate all or 
  12404. part of that window.  The system attempts to preserve the contents of the 
  12405. window and copy them to the new position; however, if the window's size is 
  12406. increased, the window must fill the area exposed by the size change.  If a 
  12407. window is moved from behind an overlapping window, any area formerly obscured 
  12408. by the other window must be drawn.  In these cases, the system invalidates the 
  12409. exposed areas and sends a WM_PAINT message to the window. 
  12410.  
  12411. An application can require that the system invalidate an entire window every 
  12412. time the window moves or changes size.  To do this, the application sets the 
  12413. CS_SIZEREDRAW class style in the corresponding window class.  Typically, this 
  12414. class style is selected for use in an application that uses a window's current 
  12415. size and position to determine how to draw the window.  For example, a clock 
  12416. application always would draw the face of the clock so that it filled the 
  12417. window exactly. 
  12418.  
  12419. An application also can explicitly specify which parts of the window to 
  12420. preserve during a move or size change.  Before any change is made, the system 
  12421. sends a WM_CALCVALIDRECTS message to windows that do not have the style 
  12422. CS_SIZEREDRAW.  This enables the window procedure to specify what part of the 
  12423. window to save and where to align it after the move or size change. 
  12424.  
  12425.  
  12426. ΓòÉΓòÉΓòÉ 17.2.11. Changing the Z-Order of Windows ΓòÉΓòÉΓòÉ
  12427.  
  12428. An application can move a window to the top or bottom of the z-order by passing 
  12429. the SWP_ZORDER constant to the WinSetWindowPos function. An application 
  12430. specifies where to move the window by specifying the HWND_TOP or HWND_BOTTOM 
  12431. constants. 
  12432.  
  12433. The code fragment in the following figure uses WinSetWindowPos to change the 
  12434. z-order of a window. 
  12435.  
  12436. Uses
  12437.   Os2Def,Os2Base,Os2PmApi;
  12438.  
  12439. Var
  12440.   HwndParent : HWND;  (* ╨ísken var tom!! *)
  12441.   HwndNext   : HWND;  (* ╨ísken var tom!! *)
  12442.   Henum      : HENUM; (* ╨ísken var tom!! *)
  12443.  
  12444. Begin
  12445.  
  12446.   WinSetWindowPos(
  12447.   hwndNext,       (* Next window to move  *)
  12448.   HWND_TOP,       (* Put window on top    *)
  12449.   0, 0, 0, 0,     (* Not used for z-order *)
  12450.   SWP_ZORDER);    (* Change z-order       *)
  12451.  
  12452. An application also can specify the window that the given window is to move 
  12453. behind.  In this case, the application specifies the window handle instead of 
  12454. the HWND_TOP or HWND_BOTTOM constant. 
  12455.  
  12456. Uses
  12457.   Os2Def,Os2Base,Os2PmApi;
  12458.  
  12459. Var
  12460.   HwndParent   : HWND;  (* ╨ísken var tom!! *)
  12461.   HwndNext     : HWND;  (* ╨ísken var tom!! *)
  12462.   HwndExchange : HWND;  (* ╨ísken var tom!! *)
  12463.   Henum        : HENUM; (* ╨ísken var tom!! *)
  12464.  
  12465. Begin
  12466.  
  12467.  
  12468.   hwndExchange := WinGetNextWindow(henum);
  12469.  
  12470.   (* hwndNext has top window;
  12471.   hwndExchange has window under the top. *)
  12472.  
  12473.   WinSetWindowPos(
  12474.   hwndNext,       (* Next window to move     *)
  12475.   hwndExchange,   (* Put lower window on top *)
  12476.   0, 0, 0, 0,     (* Not used for z-order    *)
  12477.   SWP_ZORDER);    (* Change z-order          *)
  12478.  
  12479. WinEndEnumWindows(henum);
  12480.  
  12481.  
  12482. ΓòÉΓòÉΓòÉ 17.2.12. Showing or Hiding a Window ΓòÉΓòÉΓòÉ
  12483.  
  12484. An application can show or hide a window by using the WinShowWindow function. 
  12485. This function changes the WS_VISIBLE style of a window to the specified 
  12486. setting.  An application can also use the WinIsWindowVisible function to check 
  12487. the visibility of a window.  This function returns TRUE if the window is 
  12488. visible. 
  12489.  
  12490.  
  12491. ΓòÉΓòÉΓòÉ 17.2.13. Maximizing, Minimizing, and Restoring a Frame Window ΓòÉΓòÉΓòÉ
  12492.  
  12493. An application can maximize, minimize, or restore a frame window by using the 
  12494. WinSetWindowPos function and specifying the constant SWP_MAXIMIZE, 
  12495. SWP_MINIMIZE, or SWP_RESTORE.  Only a frame window can maximize and minimize by 
  12496. default.  For any other window, an application must provide support for these 
  12497. actions in the corresponding window procedure. 
  12498.  
  12499. The following figure shows how to maximize a frame window. 
  12500.  
  12501.  
  12502. Uses
  12503.   Os2Def,Os2Base,Os2PmApi;
  12504.  
  12505. Var
  12506.   SwpCurrent : SWP;  (* ╨ísken var tom!! *)
  12507.   HwndFrame  : HWND; (* ╨ísken var tom!! *)
  12508.  
  12509. Begin
  12510.  
  12511.   WinQueryWindowPos(hwndFrame, &swpCurrent);
  12512.   WinSetWindowPos(
  12513.   hwndFrame,           (* Window handle               *)
  12514.   nil,                (* Not used to maximize        *)
  12515.   swpCurrent.x,
  12516.   swpCurrent.y,        (* Stored for restoring window *)
  12517.   swpCurrent.cx,
  12518.   swpCurrent.cy,       (* Stored for restoring window *)
  12519.   SWP_MAXIMIZE Or SWP_SIZE Or SWP_MOVE);    (* Maximize *)
  12520.  
  12521.  
  12522. ΓòÉΓòÉΓòÉ 17.2.14. Destroying a Window ΓòÉΓòÉΓòÉ
  12523.  
  12524. An application can destroy a window by using the WinDestroyWindow function. The 
  12525. following figure shows how to create and then destroy a control window: 
  12526.  
  12527. Uses
  12528.   Os2Def,Os2Base,Os2PmApi;
  12529.  
  12530. Var
  12531.   HwndCtrl   : HWND; (* ╨ísken var tom!! *)
  12532.   HwndParent : HWND; (* ╨ísken var tom!! *)
  12533.  
  12534. Begin
  12535.  
  12536.   hwndCtrl := WinCreateWindow(hwndParent, WC_BUTTON, ...);
  12537.  
  12538.   WinDestroyWindow(hwndCtrl);
  12539.  
  12540.  
  12541. ΓòÉΓòÉΓòÉ 18. Window Classes ΓòÉΓòÉΓòÉ
  12542.  
  12543. A window class determines which styles and which window procedure are given to 
  12544. a window when it is created.  This chapter explains how a PM application 
  12545. creates and uses window classes. 
  12546.  
  12547.  
  12548. ΓòÉΓòÉΓòÉ 18.1. About Window Classes ΓòÉΓòÉΓòÉ
  12549.  
  12550. Every window is a member of a window class.  An application must specify a 
  12551. window class when it creates a window.  Each window class has an associated 
  12552. window procedure that is used by all windows of the same class.  The window 
  12553. procedure handles messages for all windows of that class and, therefore, 
  12554. controls the behavior and appearance of the window. 
  12555.  
  12556. A window class must be registered before an application can create a window of 
  12557. that class.  Registering a window class associates a window procedure and class 
  12558. styles with a class name.  When an application specifies the class name in a 
  12559. window-creation function such as WinCreateWindow, the system creates a window 
  12560. that uses the window procedure and styles associated with the class name. 
  12561.  
  12562. An application can register private classes or use preregistered public window 
  12563. classes. 
  12564.  
  12565.  
  12566. ΓòÉΓòÉΓòÉ 18.1.1. Private Window Classes ΓòÉΓòÉΓòÉ
  12567.  
  12568. A private window class is any class registered within an application.  An 
  12569. application registers a private class by calling the WinRegisterClass function. 
  12570. A private class cannot be shared with other applications.  When an application 
  12571. terminates, the system removes any data associated with the application's 
  12572. private window classes. 
  12573.  
  12574. An application can register a private class anytime but, typically, does so as 
  12575. part of application initialization.  To register a private class during 
  12576. application initialization, the application also must call WinInitialize and, 
  12577. usually, WinCreateMsgQueue before class registration. 
  12578.  
  12579. An application cannot de-register a private window class; it remains registered 
  12580. and available until the application terminates. 
  12581.  
  12582. When an application registers a private window class, it must supply the 
  12583. following information: 
  12584.  
  12585.      Class name 
  12586.      Class styles 
  12587.      Window procedure 
  12588.      Window data size 
  12589.  
  12590.  
  12591. ΓòÉΓòÉΓòÉ 18.1.1.1. Class Name ΓòÉΓòÉΓòÉ
  12592.  
  12593. The class name identifies the window class.  The application uses this name in 
  12594. the window-creation functions to specify the class of the window being created. 
  12595. The class name can be a character string or an atom, and it must be unique 
  12596. within the application.  The system checks as to whether a public class or a 
  12597. class already registered by the application has the same name.  If the class 
  12598. name is not unique to that application, the system returns an error. 
  12599.  
  12600.  
  12601. ΓòÉΓòÉΓòÉ 18.1.1.2. Class Styles ΓòÉΓòÉΓòÉ
  12602.  
  12603. Each window class has one or more values, called class styles, that tell the 
  12604. system which initial window styles to give a window created with that class. 
  12605. An application sets the class styles for a private window class when it 
  12606. registers the class.  Once a class is registered, the application cannot change 
  12607. the styles. 
  12608.  
  12609. An application can specify one or more of the following class styles in the 
  12610. WinRegisterClass function, combining them as necessary by using the bitwise OR 
  12611. operator: 
  12612.  
  12613. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12614. ΓöéStyle Name     ΓöéDescription                                  Γöé
  12615. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12616. ΓöéCS_CLIPCHILDRENΓöéPrevents a window from painting over its     Γöé
  12617. Γöé               Γöéchild windows, but increases the time        Γöé
  12618. Γöé               Γöénecessary to calculate the visible region.   Γöé
  12619. Γöé               ΓöéThis style usually is not necessary, because Γöé
  12620. Γöé               Γöéif the parent and child windows overlap and  Γöé
  12621. Γöé               Γöéare both invalidated, the operating system   Γöé
  12622. Γöé               Γöédraws the parent window before drawing the   Γöé
  12623. Γöé               Γöéchild window. If the child window is         Γöé
  12624. Γöé               Γöéinvalidated independently of the parent      Γöé
  12625. Γöé               Γöéwindow, the system redraws only the child    Γöé
  12626. Γöé               Γöéwindow. If the update region of the parent   Γöé
  12627. Γöé               Γöéwindow does not intersect the child window,  Γöé
  12628. Γöé               Γöédrawing the parent window causes the child   Γöé
  12629. Γöé               Γöéwindow to be redrawn. This style is useful toΓöé
  12630. Γöé               Γöéprevent a child window containing a complex  Γöé
  12631. Γöé               Γöégraphic from being redrawn unnecessarily.    Γöé
  12632. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12633. ΓöéCS_CLIPSIBLINGSΓöéPrevents a window from painting over its     Γöé
  12634. Γöé               Γöésibling windows. This style protects sibling Γöé
  12635. Γöé               Γöéwindows but increases the time necessary to  Γöé
  12636. Γöé               Γöécalculate the visible region. This style is  Γöé
  12637. Γöé               Γöéappropriate for windows that overlap and haveΓöé
  12638. Γöé               Γöéthe same parent window.                      Γöé
  12639. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12640. ΓöéCS_FRAME       ΓöéIdentifies the window as a frame window.     Γöé
  12641. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12642. ΓöéCS_HITTEST     ΓöéDirects the operating system to send         Γöé
  12643. Γöé               ΓöéWM_HITTEST messages to the window whenever   Γöé
  12644. Γöé               Γöéthe mouse pointer moves in the window.       Γöé
  12645. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12646. ΓöéCS_MOVENOTIFY  ΓöéDirects the system to send WM_MOVE messages  Γöé
  12647. Γöé               Γöéto the window whenever the user moves the    Γöé
  12648. Γöé               Γöéwindow.                                      Γöé
  12649. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12650. ΓöéCS_PARENTCLIP  ΓöéExtends a window's visible region to include Γöé
  12651. Γöé               Γöéthat of its parent window. This style        Γöé
  12652. Γöé               Γöésimplifies the calculation of the child      Γöé
  12653. Γöé               Γöéwindow's visible region but, potentially, is Γöé
  12654. Γöé               Γöédangerous, because the parent window's       Γöé
  12655. Γöé               Γöévisible region is usually larger than the    Γöé
  12656. Γöé               Γöéchild window.                                Γöé
  12657. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12658. ΓöéCS_SAVEBITS    ΓöéSaves the screen area under a window as a bitΓöé
  12659. Γöé               Γöémap. When the user hides or moves the window,Γöé
  12660. Γöé               Γöéthe system restores the image by copying the Γöé
  12661. Γöé               Γöébits; there is no need to add the area to theΓöé
  12662. Γöé               Γöéuncovered window's update region. This style Γöé
  12663. Γöé               Γöécan improve system performance, but also can Γöé
  12664. Γöé               Γöéconsume a great deal of memory. It is        Γöé
  12665. Γöé               Γöérecommended only for transient windows such  Γöé
  12666. Γöé               Γöéas menus and dialog windows-not for main     Γöé
  12667. Γöé               Γöéapplication windows.                         Γöé
  12668. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12669. ΓöéCS_SIZEREDRAW  ΓöéCauses the window to receive a WM_PAINT      Γöé
  12670. Γöé               Γöémessage and be completely invalidated        Γöé
  12671. Γöé               Γöéwhenever the window is resized, even if it isΓöé
  12672. Γöé               Γöémade smaller. (Typically, only the uncovered Γöé
  12673. Γöé               Γöéarea of a window is invalidated when a windowΓöé
  12674. Γöé               Γöéis resized.) This class style is useful when Γöé
  12675. Γöé               Γöéan application scales graphics to fill the   Γöé
  12676. Γöé               Γöéwindow.                                      Γöé
  12677. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12678. ΓöéCS_SYNCPAINT   ΓöéCauses the window to receive WM_PAINT        Γöé
  12679. Γöé               Γöémessages immediately after a part of the     Γöé
  12680. Γöé               Γöéwindow becomes invalid. Without this style,  Γöé
  12681. Γöé               Γöéthe window receives WM_PAINT messages only ifΓöé
  12682. Γöé               Γöéno other message is waiting to be processed. Γöé
  12683. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12684.  
  12685.  
  12686. ΓòÉΓòÉΓòÉ 18.1.1.3. Window Procedure ΓòÉΓòÉΓòÉ
  12687.  
  12688. The window procedure for a window class processes all messages sent or posted 
  12689. to all windows of that class.  It is the chief component of the window class 
  12690. because it controls the appearance and behavior of each window created with the 
  12691. class.  Window procedures are shared by all windows of a class, so an 
  12692. application must ensure that no conflicts arise when two windows of the same 
  12693. class attempt to access the same global data.  In other words, the window 
  12694. procedure must protect global data and other shared resources. 
  12695.  
  12696.  
  12697. ΓòÉΓòÉΓòÉ 18.1.1.4. Window Data Size ΓòÉΓòÉΓòÉ
  12698.  
  12699. The system creates a window data structure for each window, which includes 
  12700. extra space that an application can use to store additional data about a 
  12701. window.  An application specifies the number of extra bytes to allocate in the 
  12702. WinRegisterClass function.  All windows of the same class have the same amount 
  12703. of window data space. 
  12704.  
  12705. An application can store window data in a window's data structure by using the 
  12706. WinSetWindowUShort and WinSetWindowULong functions.  It can retrieve data by 
  12707. using the WinQueryWindowUShort and WinQueryWindowULong functions. 
  12708.  
  12709.  
  12710. ΓòÉΓòÉΓòÉ 18.1.1.5. Custom Window Styles ΓòÉΓòÉΓòÉ
  12711.  
  12712. An application that registers a window class also can support its own set of 
  12713. styles for windows of that class.  Standard window styles-for example, 
  12714. WS_VISIBLE and WS_SYNCPAINT-still apply to these windows.  A window style is a 
  12715. 32-bit integer, and only the high 16 bits are used for the standard window 
  12716. styles; an application can use the low 16 bits for custom styles specific to a 
  12717. window class. 
  12718.  
  12719. The operating system has unique window styles for all preregistered window 
  12720. classes.  Styles such as FS_BORDER and BS_PUSHBUTTON are processed by the 
  12721. window procedure for the corresponding class.  This means that an application 
  12722. can build the support for its own window styles into the window procedure for 
  12723. its private class.  A window style designed for one window class will not work 
  12724. with another window class. 
  12725.  
  12726.  
  12727. ΓòÉΓòÉΓòÉ 18.1.2. Public Window Classes ΓòÉΓòÉΓòÉ
  12728.  
  12729. Public window classes are registered during system initialization.  Their 
  12730. window procedures are in dynamic link libraries.  Therefore, to use a public 
  12731. window class, an application need not register it.  Nor does the application 
  12732. need to import the window procedure for a public window class because the 
  12733. system resolves references to the window procedure. 
  12734.  
  12735. An application cannot use a public window class name when it registers a 
  12736. private window class. 
  12737.  
  12738.  
  12739. ΓòÉΓòÉΓòÉ 18.1.2.1. System-Defined Public Window Classes ΓòÉΓòÉΓòÉ
  12740.  
  12741. The system provides a number of public window classes that support menus, frame 
  12742. windows, control windows, and dialog windows.  An application can create a 
  12743. window of a system-defined public window class by specifying one of the 
  12744. following class name constants in a call to WinCreateWindow: 
  12745.  
  12746. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12747. ΓöéClass Name     ΓöéDescription                                  Γöé
  12748. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12749. ΓöéWC_BUTTON      ΓöéConsists of buttons and boxes the user can   Γöé
  12750. Γöé               Γöéselect by clicking the pointing device or    Γöé
  12751. Γöé               Γöéusing the keyboard.                          Γöé
  12752. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12753. ΓöéWC_COMBOBOX    ΓöéCreates a combination-box control, which     Γöé
  12754. Γöé               Γöécombines a list-box control and an           Γöé
  12755. Γöé               Γöéentry-field control. It enables the user to  Γöé
  12756. Γöé               Γöéenter data either by typing in the entry     Γöé
  12757. Γöé               Γöéfield or by choosing from the list in the    Γöé
  12758. Γöé               Γöélist box.                                    Γöé
  12759. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12760. ΓöéWC_CONTAINER   ΓöéCreates a control in which the user can groupΓöé
  12761. Γöé               Γöéobjects in a logical manner.  A container canΓöé
  12762. Γöé               Γöédisplay those objects in various formats or  Γöé
  12763. Γöé               Γöéviews.  The container control supports drag  Γöé
  12764. Γöé               Γöéand drop so the user can place information inΓöé
  12765. Γöé               Γöéa container by simply dragging and dropping. Γöé
  12766. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12767. ΓöéWC_ENTRYFIELD  ΓöéConsists of a single line of text that the   Γöé
  12768. Γöé               Γöéuser can edit.                               Γöé
  12769. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12770. ΓöéWC_FRAME       ΓöéA composite window class that can contain    Γöé
  12771. Γöé               Γöéchild windows of many of the other window    Γöé
  12772. Γöé               Γöéclasses.                                     Γöé
  12773. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12774. ΓöéWC_LISTBOX     ΓöéPresents a list of text items from which the Γöé
  12775. Γöé               Γöéuser can make selections.                    Γöé
  12776. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12777. ΓöéWC_MENU        ΓöéPresents a list of items that can be         Γöé
  12778. Γöé               Γöédisplayed horizontally as menu bars, or      Γöé
  12779. Γöé               Γöévertically as pull-down menus.  Usually menusΓöé
  12780. Γöé               Γöéare used to provide a command interface to   Γöé
  12781. Γöé               Γöéapplications.                                Γöé
  12782. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12783. ΓöéWC_NOTEBOOK    ΓöéCreates a control for the user that is       Γöé
  12784. Γöé               Γöédisplayed as a number of pages.  The top pageΓöé
  12785. Γöé               Γöéis visible, and the others are hidden, with  Γöé
  12786. Γöé               Γöétheir presence being indicated by a visible  Γöé
  12787. Γöé               Γöéedge on each of the back pages.              Γöé
  12788. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12789. ΓöéWC_SCROLLBAR   ΓöéConsists of window scroll bars that let the  Γöé
  12790. Γöé               Γöéuser scroll the contents of the associated   Γöé
  12791. Γöé               Γöéwindow.                                      Γöé
  12792. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12793. ΓöéWC_SLIDER      ΓöéCreates a control that is usable for         Γöé
  12794. Γöé               Γöéproducing approximate (analog) values or     Γöé
  12795. Γöé               Γöéproperties.  Scroll bars were used for this  Γöé
  12796. Γöé               Γöéfunction in the past, but the slider providesΓöé
  12797. Γöé               Γöéa more flexible method of achieving the same Γöé
  12798. Γöé               Γöéresult, with less programming effort.        Γöé
  12799. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12800. ΓöéWC_SPINBUTTON  ΓöéCreates a control that presents itself to theΓöé
  12801. Γöé               Γöéuser as a scrollable ring of choices, giving Γöé
  12802. Γöé               Γöéthe user quick access to the data.  The user Γöé
  12803. Γöé               Γöéis presented only one item at a time, so the Γöé
  12804. Γöé               Γöéspin button should be used with data that is Γöé
  12805. Γöé               Γöéintuitively related.                         Γöé
  12806. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12807. ΓöéWC_STATIC      ΓöéSimple display items that do not respond to  Γöé
  12808. Γöé               Γöékeyboard or pointing device events.          Γöé
  12809. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12810. ΓöéWC_TITLEBAR    ΓöéDisplays the window title or caption and letsΓöé
  12811. Γöé               Γöéthe user move the window's owner.            Γöé
  12812. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12813. ΓöéWC_VALUESET    ΓöéCreates a control similar in function to     Γöé
  12814. Γöé               Γöéradio buttons but provides additional        Γöé
  12815. Γöé               Γöéflexibility to display graphical, textual,   Γöé
  12816. Γöé               Γöéand numeric formats.  The values set with    Γöé
  12817. Γöé               Γöéthis control are mutually exclusive.         Γöé
  12818. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12819.  
  12820. Each system-defined public window class has a corresponding set of window 
  12821. styles that an application can use to customize a window of that class.  For 
  12822. example, a window created with the WC_BUTTON class has styles that include 
  12823. BS_PUSHBUTTON and BS_CHECKBOX.  Window styles enable you to customize aspects 
  12824. of a window's behavior and appearance.  The application specifies the window 
  12825. styles in the WinCreateWindow function. 
  12826.  
  12827.  
  12828. ΓòÉΓòÉΓòÉ 18.1.2.2. Custom Public Window Classes ΓòÉΓòÉΓòÉ
  12829.  
  12830. An application can create a custom public window class, but it must do so 
  12831. during system initialization.  Only the shell can register a public window 
  12832. class, and it can do so only when the system starts.  Registering a public 
  12833. window class requires a special load entry in the os2.ini file.  That entry 
  12834. instructs the shell to load a dynamic link library whose initialization routine 
  12835. registers the window class.  Custom public window classes must be registered 
  12836. using WinRegisterClass and must have the class style CS_PUBLIC.  If a custom 
  12837. public window class registered this way has the same name as an existing public 
  12838. window class, the custom class replaces the original class. 
  12839.  
  12840. If a dynamic link library replaces an existing public window class, the library 
  12841. can save the address of the original window procedure and use the address to 
  12842. subclass the original window class.  The dynamic link library retrieves the 
  12843. original window procedure address using the WinQueryClassInfo function.  The 
  12844. custom window procedure then passes unprocessed messages to the original window 
  12845. procedure instead of calling WinDefWindowProc. 
  12846.  
  12847. When subclassing a public window class, the custom public window procedure must 
  12848. not make the window data size smaller than the original window data size, 
  12849. because all public window classes that the operating system defines use 4 extra 
  12850. bytes for storing a pointer to custom window data.  This size is guaranteed 
  12851. only for public window classes defined by the operating system dynamic link 
  12852. libraries. 
  12853.  
  12854.  
  12855. ΓòÉΓòÉΓòÉ 18.1.3. Class Data ΓòÉΓòÉΓòÉ
  12856.  
  12857. An application can examine public window class data by using the 
  12858. WinQueryClassInfo and WinQueryClassName functions.  An application retrieves 
  12859. the name of the class for a given window by using the WinQueryClassName 
  12860. function.  If the window is one of the preregistered public window classes, the 
  12861. name returned is in the form #nnnnn, where nnnnn is up to 5 digits, 
  12862. representing the value of the window class constant.  Using this window class 
  12863. name, the application can call WinQueryClassInfo to retrieve the window class 
  12864. data.  WinQueryClassInfo copies the class style, window procedure address, and 
  12865. window data size to a CLASSINFO data structure. 
  12866.  
  12867.  
  12868. ΓòÉΓòÉΓòÉ 18.2. Using Window Classes ΓòÉΓòÉΓòÉ
  12869.  
  12870. This section explains how to perform the following tasks: 
  12871.  
  12872.      Register a private window class 
  12873.      Register an imported window procedure 
  12874.  
  12875.  
  12876. ΓòÉΓòÉΓòÉ 18.2.1. Registering a Private Window Class ΓòÉΓòÉΓòÉ
  12877.  
  12878. An application can register a private window class at any time by using the 
  12879. WinRegisterClass function.  You must define the window procedure in the 
  12880. application, choose a unique name, and set the window styles for the class. The 
  12881. following code fragment shows how to register the window class name 
  12882. "MyPrivateClass": 
  12883.  
  12884.  
  12885. Uses
  12886.   Os2Def,Os2Base,Os2PmApi;
  12887.  
  12888. Var
  12889.   EXPENTRY : MRESULT; (* ╨ísken var tom!! *)
  12890.  
  12891. Begin
  12892.   EXPENTRY := MRESULT
  12893.  
  12894. Uses
  12895.   Os2Def,Os2Base,Os2PmApi;
  12896.  
  12897. Var
  12898.   Hab : HAB; (* ╨ísken var tom!! *)
  12899.  
  12900. Begin
  12901.  
  12902.     WinRegisterClass(hab,      (* Anchor block handle            *)
  12903.     "MyPrivateClass",      (* Name of class being registered *)
  12904.     ClientWndProc,         (* Window procedure for class     *)
  12905.     CS_SIZEREDRAW Or        (* Class style                    *)
  12906.     CS_HITTEST,            (* Class style                    *)
  12907.     0);                    (* Extra bytes to reserve         *)
  12908.  
  12909.  
  12910. ΓòÉΓòÉΓòÉ 19. Window Procedures ΓòÉΓòÉΓòÉ
  12911.  
  12912. Windows have an associated window procedure-a function that processes all 
  12913. messages sent or posted to a window.  Every aspect of a window's appearance and 
  12914. behavior depends on the window procedure's response to the messages.  This 
  12915. chapter explains how window procedures function, in general, and describes the 
  12916. default window procedure. 
  12917.  
  12918.  
  12919. ΓòÉΓòÉΓòÉ 19.1. About Window Procedures ΓòÉΓòÉΓòÉ
  12920.  
  12921. Every window belongs to a window class that determines which window procedure a 
  12922. particular window uses to process its messages.  All windows of the same class 
  12923. use the same window procedure.  For example, the operating system defines a 
  12924. window procedure for the frame window class (WC_FRAME), and all frame windows 
  12925. use that window procedure. 
  12926.  
  12927. An application typically defines at least one new window class and an 
  12928. associated window procedure.  Then, the application can create many windows of 
  12929. that class, all of which use the same window procedure.  This means that the 
  12930. same piece of code can be called from several sources simultaneously; 
  12931. therefore, you must be careful when modifying shared resources from a window 
  12932. procedure. 
  12933.  
  12934. Dialog procedures have the same structure and function as window procedures. 
  12935. The primary difference between a dialog procedure and a window procedure is the 
  12936. absence of a client window in the dialog procedure; that is, the controls in a 
  12937. dialog procedure are the immediate child windows of the frame, whereas the 
  12938. controls in a normal window are the grandchildren of the frame.  This makes 
  12939. significant differences in the code between the two; for example, 
  12940. WinSendDlgItemMsg does not work from a client window if you pass the client 
  12941. window handle as the first parameter. 
  12942.  
  12943.  
  12944. ΓòÉΓòÉΓòÉ 19.1.1. Structure of a Window Procedure ΓòÉΓòÉΓòÉ
  12945.  
  12946. A window procedure is a function that takes 4 arguments and returns a 32-bit 
  12947. pointer.  The arguments of a window procedure consist of a window handle, a 
  12948. ULONG message identifier, and two arguments, called message parameters, that 
  12949. are declared with the MPARAM data type.  The system defines an MPARAM as a 
  12950. 32-bit pointer to a VOID data type (a generic pointer).  The message parameters 
  12951. actually might contain any of the standard data types.  The message parameters 
  12952. are interpreted differently,depending on the value of the message identifier. 
  12953. The operating system includes several macros that enable the application to 
  12954. cast the information from the MPARAM values into the actual data type. 
  12955. SHORT1FROMMP, for example, extracts a 16-bit value from a 32-bit MPARAM. The 
  12956. window-procedure arguments are described in the following table: 
  12957.  
  12958. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12959. ΓöéArgument       ΓöéDescription                                  Γöé
  12960. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12961. Γöéhwnd           ΓöéHandle of the window receiving the message.  Γöé
  12962. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12963. Γöémsg            ΓöéMessage identifier. The message will         Γöé
  12964. Γöé               Γöécorrespond to one of the predefined constantsΓöé
  12965. Γöé               Γöé(for example, WM_CREATE) defined in the      Γöé
  12966. Γöé               Γöésystem include files or be an                Γöé
  12967. Γöé               Γöéapplication-defined message identifier.  The Γöé
  12968. Γöé               Γöévalue of an application-defined message      Γöé
  12969. Γöé               Γöéidentifier must be greater than the value of Γöé
  12970. Γöé               ΓöéWM_USER, and less than or equal to 0xffff.   Γöé
  12971. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12972. Γöémp1,mp2        ΓöéMessage parameters. Their interpretation     Γöé
  12973. Γöé               Γöédepends on the particular message.           Γöé
  12974. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12975.  
  12976. The return value of a window procedure is defined as an MRESULT data type.  The 
  12977. interpretation of the return value depends on the particular message.  Consult 
  12978. the description of each message to determine the appropriate return value. 
  12979.  
  12980.  
  12981. ΓòÉΓòÉΓòÉ 19.1.2. Default Window Procedure ΓòÉΓòÉΓòÉ
  12982.  
  12983. All windows in the system share certain fundamental behavior, defined in the 
  12984. default window-procedure function, WinDefWindowProc.  The default window 
  12985. procedure provides the minimal functionality for a window.  An 
  12986. application-defined window procedure should pass any messages it does not 
  12987. process to WinDefWindowProc for default processing. 
  12988.  
  12989.  
  12990. ΓòÉΓòÉΓòÉ 19.1.3. Window-Procedure Subclassing ΓòÉΓòÉΓòÉ
  12991.  
  12992. Subclassing enables an application to intercept and process messages sent or 
  12993. posted to a window before that window has a chance to process them. 
  12994. Subclassing most often is used to add functionality to a particular window or 
  12995. to alter a window's default behavior. 
  12996.  
  12997. An application subclasses a window by using the WinSubclassWindow function to 
  12998. replace the window's original window procedure with an application-defined 
  12999. window procedure.  Thereafter, the new window procedure processes any messages 
  13000. that are sent or posted to the window.  If the new window procedure does not 
  13001. process a particular message, it must pass the message to the original window 
  13002. procedure, not to WinDefWindowProc, for default processing. 
  13003.  
  13004.  
  13005. ΓòÉΓòÉΓòÉ 19.2. Using Window Procedures ΓòÉΓòÉΓòÉ
  13006.  
  13007. This section explains how to: 
  13008.  
  13009.      Design a window procedure 
  13010.      Associate a window procedure with a window class 
  13011.      Subclass a window 
  13012.  
  13013.  
  13014. ΓòÉΓòÉΓòÉ 19.2.1. Designing a Window Procedure ΓòÉΓòÉΓòÉ
  13015.  
  13016. The following code fragment shows the structure of a typical window procedure 
  13017. and how to use the message argument in a switch statement, with individual 
  13018. messages handled by separate case statements.  Notice that each case returns a 
  13019. specific value for each message.  For messages that it does not handle itself, 
  13020. the window procedure calls WinDefWindowProc. 
  13021.  
  13022. Uses
  13023.   Os2Def,Os2Base,Os2PmApi;
  13024.  
  13025. Var
  13026.   ClientWndProc( : MRESULT; (* ╨ísken var tom!! *)
  13027.   Hwnd,          : HWND;    (* ╨ísken var tom!! *)
  13028.   Msg,           : ULONG;   (* ╨ísken var tom!! *)
  13029.   Mp1,           : MPARAM;  (* ╨ísken var tom!! *)
  13030.   Mp2)           : MPARAM;  (* ╨ísken var tom!! *)
  13031.  
  13032. Begin
  13033.   ClientWndProc( := MRESULT
  13034.   Hwnd,          := HWND
  13035.   Msg,           := ULONG
  13036.   Mp1,           := MPARAM
  13037.   Mp2)           := MPARAM
  13038.   {
  13039.   (* Define local variables here, If required. *)
  13040.   switch (msg) {
  13041.   case WM_CREATE:
  13042.  
  13043.   (* Initialize private window data.           *)
  13044.   return (MRESULT) Ord(False);
  13045.  
  13046.   case WM_PAINT:
  13047.  
  13048.   (* Paint the window.                         *)
  13049.   return 0;
  13050.  
  13051.   case WM_DESTROY:
  13052.  
  13053.   (* Clean up private window data.             *)
  13054.   return 0;
  13055.  
  13056.   default:
  13057.   break;
  13058. End.
  13059. return WinDefWindowProc (hwnd, msg, mp1, mp2);
  13060.                                                                                                                                                                                                                                                               E
  13061.  
  13062. A dialog window procedure does not receive the WM_CREATE message; however, it 
  13063. does receive a WM_INITDLG message when all of its control windows have been 
  13064. created. At the very least, a window procedure should handle the WM_PAINT 
  13065. message to draw itself.  Typically, it should handle mouse and keyboard 
  13066. messages as well.  Consult the descriptions of individual messages to determine 
  13067. whether your window procedure should handle them. 
  13068.  
  13069. An application can call WinDefWindowProc as part of the processing of a 
  13070. message.  In such a case, the application can modify the message parameters 
  13071. before passing the message to WinDefWindowProc or can continue with the default 
  13072. processing after performing its own operations. 
  13073.  
  13074.  
  13075. ΓòÉΓòÉΓòÉ 19.2.2. Associating a Window Procedure with a Window Class ΓòÉΓòÉΓòÉ
  13076.  
  13077. To associate a window procedure with a window class, an application must pass a 
  13078. pointer to that window procedure to the WinRegisterClass function.  Once an 
  13079. application has registered the window procedure, the procedure automatically is 
  13080. associated with each new window created with that class. 
  13081.  
  13082. The following code fragment shows how to associate the window procedure in the 
  13083. previous example with a window class: 
  13084.  
  13085. Uses
  13086.   Os2Def,Os2Base,Os2PmApi;
  13087.  
  13088. Var
  13089.   Hab             : HAB;  (* ╨ísken var tom!! *)
  13090.   SzClientClass[] : CHAR; (* ╨ísken var tom!! *)
  13091.  
  13092. Begin
  13093.   Hab             := @NOTDEFINED@
  13094.   SzClientClass[] := "My
  13095.  
  13096.   WinRegisterClass(hab,      (* Anchor-block handle  *)
  13097.   szClientClass,         (* Class name           *)
  13098.   ClientWndProc,         (* Pointer to procedure *)
  13099.   CS_SIZEREDRAW,         (* Class style          *)
  13100.   0);                    (* Window data          *)
  13101.  
  13102.  
  13103. ΓòÉΓòÉΓòÉ 19.2.3. Subclassing a Window ΓòÉΓòÉΓòÉ
  13104.  
  13105. To subclass a window, an application calls the WinSubclassWindow function, 
  13106. specifying the handle of the window to subclass and a pointer to the new window 
  13107. procedure.  The WinSubclassWindow function returns a pointer to the original 
  13108. window procedure; the application can use this pointer to pass unprocessed 
  13109. messages to the original procedure. The following code fragment subclasses a 
  13110. push button control window.  The new window procedure generates a beep whenever 
  13111. the user clicks the push button. 
  13112.  
  13113. Uses
  13114.   Os2Def,Os2Base,Os2PmApi;
  13115.  
  13116. Var
  13117.   PfnPushBtn  : PFNWP; (* ╨ísken var tom!! *)
  13118.   SzCancel[]  : CHAR;  (* ╨ísken var tom!! *)
  13119.   HwndClient  : HWND;  (* ╨ísken var tom!! *)
  13120.   HwndPushBtn : HWND;  (* ╨ísken var tom!! *)
  13121.  
  13122. Begin
  13123.   .
  13124.   .
  13125.   .
  13126.  
  13127.   (* Create a push button control.                  *)
  13128.   hwndPushBtn := WinCreateWindow(
  13129.   hwndClient,     (* Parent-window handle       *)
  13130.   WC_BUTTON,      (* Window class               *)
  13131.   szCancel,       (* Window text                *)
  13132.   WS_VISIBLE   Or  (* Window style               *)
  13133.   WS_SYNCPAINT Or  (* Window style               *)
  13134.   BS_PUSHBUTTON,  (* Button style               *)
  13135.   50, 50,         (* Physical position          *)
  13136.   70, 30,         (* Width and height           *)
  13137.   hwndClient,     (* Owner-window handle        *)
  13138.   HWND_TOP,       (* Z-order position           *)
  13139.   1,              (* Window identIfier          *)
  13140.   nil,           (* No control data            *)
  13141.   nil);          (* No presentation parameters *)
  13142.  
  13143.   (* Subclass the push button control.              *)
  13144.   pfnPushBtn := WinSubclassWindow(hwndPushBtn,
  13145.   SubclassPushBtnProc);
  13146.   .
  13147.   .
  13148.   .
  13149. End.
  13150. (* This procedure subclasses the push button.     *)
  13151. Uses
  13152.   Os2Def,Os2Base,Os2PmApi;
  13153.  
  13154. Var
  13155.   EXPENTRY : MRESULT; (* ╨ísken var tom!! *)
  13156.  
  13157. Begin
  13158.   EXPENTRY := MRESULT
  13159.   {
  13160.   switch (msg) {
  13161.  
  13162.   (* Beep when the user clicks the push button.     *)
  13163.   case WM_BUTTON1DOWN:
  13164.   DosBeep(1000, 250);
  13165.   break;
  13166.  
  13167.   default:
  13168.   break;
  13169. End.
  13170.  
  13171. (* Pass all messages to the original window procedure. *)
  13172. return (MRESULT) pfnPushBtn(hwnd, msg, mp1, mp2);
  13173.                                                                                                                                                                                                                                                               E
  13174.  
  13175.  
  13176. ΓòÉΓòÉΓòÉ 20. Window Timers ΓòÉΓòÉΓòÉ
  13177.  
  13178. A window timer enables an application to post timer messages at specified 
  13179. intervals.  This chapter describes how to use window timers in PM applications. 
  13180.  
  13181.  
  13182. ΓòÉΓòÉΓòÉ 20.1. About Window Timers ΓòÉΓòÉΓòÉ
  13183.  
  13184. A window timer causes the system to post WM_TIMER messages to a message queue 
  13185. at specified time intervals called timeout values.  A timeout value is 
  13186. expressed in milliseconds. 
  13187.  
  13188. An application starts the timer for a given window, specifying the timeout 
  13189. value.  The system counts down approximately that number of milliseconds and 
  13190. posts a WM_TIMER message to the message queue for the corresponding window. 
  13191. The system repeats the countdown-post cycle continuously until the application 
  13192. stops the timer. 
  13193.  
  13194. The timeout value can be any value in the range from 0 through 4,294,967,295 
  13195. (full magnitude of ULONG) for OS/2 Version 3; for previous versions, the 
  13196. maximum value is 65535. However, the operating system cannot guarantee that all 
  13197. values are accurate.  The actual timeout depends on how often the application 
  13198. retrieves messages from the queue and the system clock rate.  In many 
  13199. computers, the operating system clock ticks about every 50 milliseconds, but 
  13200. this can vary widely from computer to computer.  In general, a timer message 
  13201. cannot be posted more frequently than every system clock tick.  To make the 
  13202. system post a timer message as often as possible, an application can set the 
  13203. timeout value to 0. 
  13204.  
  13205. An application starts a timer by using the WinStartTimer function.  If a window 
  13206. handle is given, the timer is created for that window.  In such case, the 
  13207. WinDispatchMsg function dispatches the WM_TIMER message to the given window 
  13208. when the message is retrieved from the message queue.  If a NULL window handle 
  13209. is given, it is up to the application to check the message queue for WM_TIMER 
  13210. messages and dispatch them to the appropriate window. 
  13211.  
  13212. A new timer starts counting down as soon as it is created.  An application can 
  13213. reset or change a timer's timeout value in subsequent calls to the 
  13214. WinStartTimer function.  To stop a timer, an application can use the 
  13215. WinStopTimer function. 
  13216.  
  13217. The system contains a limited number of timers that must be shared among all PM 
  13218. applications; each application should use as few timers as possible.  An 
  13219. application can determine how many timers currently are available by checking 
  13220. the SV_CTIMERS system value. 
  13221.  
  13222. Every timer has a unique timer identifier.  An application can request that a 
  13223. timer be created with a particular identifier or have the system choose a 
  13224. unique value.  When a WM_TIMER message is received, the timer identifier is 
  13225. contained in the first message parameter.  Timer identifiers enable an 
  13226. application to determine the source of the WM_TIMER message. Three timer 
  13227. identifiers are reserved by and for the system and cannot be used by 
  13228. applications; these system timer identifiers and their symbolic constants are 
  13229. shown in the following table: 
  13230.  
  13231. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13232. ΓöéValue          ΓöéMeaning                                      Γöé
  13233. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13234. ΓöéTID_CURSOR     ΓöéIdentifies the timer that controls cursor    Γöé
  13235. Γöé               Γöéblinking. Its timeout value is stored in the Γöé
  13236. Γöé               Γöéos2.ini file under the CursorBlinkRate       Γöé
  13237. Γöé               Γöékeyname in the PM_ControlPanel section.      Γöé
  13238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13239. ΓöéTID_FLASHWINDOWΓöéIdentifies the window-flashing timer.        Γöé
  13240. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13241. ΓöéTID_SCROLL     ΓöéIdentifies the scroll-bar repetition timer   Γöé
  13242. Γöé               Γöéthat controls scroll-bar response when the   Γöé
  13243. Γöé               Γöémouse button or a key is held down.  Its     Γöé
  13244. Γöé               Γöétimeout value is specified by the system     Γöé
  13245. Γöé               Γöévalue SV_SCROLLRATE.                         Γöé
  13246. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13247.  
  13248. WM_TIMER messages, like WM_PAINT and semaphore messages, are not actually 
  13249. posted to a message queue.  Instead, when the time elapses, the system sets a 
  13250. record in the queue indicating which timer message was posted.  The system 
  13251. builds the WM_TIMER message when the application retrieves the message from the 
  13252. queue. 
  13253.  
  13254. Although a timer message may be in the queue, if there are any messages with 
  13255. higher priority in the queue, the application retrieves those messages first. 
  13256. If the time elapses again before the message is retrieved, the system does not 
  13257. create a separate record for this timer, meaning that the application should 
  13258. not depend on the timer messages being processed at precise intervals.  To 
  13259. check the accuracy of the message, an application can retrieve the actual 
  13260. system time by using the WinGetCurrentTime function.  Comparing the actual time 
  13261. with the time of the previous timer message is useful in determining what 
  13262. action to take for the timer. 
  13263.  
  13264.  
  13265. ΓòÉΓòÉΓòÉ 20.2. Using Window Timers ΓòÉΓòÉΓòÉ
  13266.  
  13267. There are two methods of using window timers.  In the first method, you start 
  13268. the timer by using the WinStartTimer function, supplying the window handle and 
  13269. timer identifier.  The function associates the timer with the specified window. 
  13270. The following code fragment starts two timers:  the first timer is set for 
  13271. every half second (500 milliseconds); the second, for every two seconds (2000 
  13272. milliseconds). 
  13273.  
  13274.  
  13275. WinStartTimer(hab, (* Anchor-block handle *)
  13276. hwnd,          (* Window handle       *)
  13277. ID_TIMER1,     (* Timer identIfier    *)
  13278. 500);          (* 500 milliseconds    *)
  13279.  
  13280. WinStartTimer(hab, (* Anchor-block handle *)
  13281. hwnd,          (* Window handle       *)
  13282. ID_TIMER2,     (* Timer identIfier    *)
  13283. 2000);         (* 2000 milliseconds   *)
  13284.  
  13285. Once these timers are started, the WinDispatchMsg function dispatches WM_TIMER 
  13286. messages to the appropriate window.  To process these messages, add a WM_TIMER 
  13287. case to the window procedure for the given window.  By checking the first 
  13288. parameter of the WM_TIMER message, you can identify a particular timer, then 
  13289. carry out the actions related to it.  The following code fragment shows how to 
  13290. process WM_TIMER messages: 
  13291.  
  13292.  
  13293. case WM_TIMER:
  13294. switch (SHORT1FROMMP(mp1)) { (* Obtains timer identIfier *)
  13295. case ID_TIMER1:
  13296. .
  13297. . (* Carry out timer-related tasks.              *)
  13298. .
  13299. return 0;
  13300.  
  13301. case ID_TIMER2:
  13302. .
  13303. . (* Carry out timer-related tasks.              *)
  13304. .
  13305. return 0;
  13306.                                                                                                                                                                                                                                                               E
  13307.  
  13308. In the second method of using a timer, you specify NULL as the hwnd parameter 
  13309. of the WinStartTimer call.  The system starts a timer that has no associated 
  13310. window and assigns an arbitrary timer identifier.  The following code fragment 
  13311. starts two window timers using this method: 
  13312.  
  13313. Uses
  13314.   Os2Def,Os2Base,Os2PmApi;
  13315.  
  13316. Var
  13317.   IdTimer1, : ULONG; (* ╨ísken var tom!! *)
  13318.  
  13319. Begin
  13320.   IdTimer1, := ULONG
  13321.  
  13322.   idTimer1 := WinStartTimer(hab, (HWND) nil, 0, 500);
  13323.   idTimer2 := WinStartTimer(hab, (HWND) nil, 0, 2000);
  13324.  
  13325. These timers have no associated window, so the application must check the 
  13326. message queue for WM_TIMER messages and dispatch them to the appropriate window 
  13327. procedure.  The following code fragment shows a message loop that handles the 
  13328. window timers: 
  13329.  
  13330. Uses
  13331.   Os2Def,Os2Base,Os2PmApi;
  13332.  
  13333. Var
  13334.   HwndTimerHandler : HWND; (* Handle of window for timer messages *)
  13335.   Qmsg             : QMSG; (* Queue-message structure             *)
  13336.  
  13337. Begin
  13338.  
  13339.   while (WinGetMsg(hab, &qmsg, (HWND) nil, 0, 0)) {
  13340.   If (qmsg.msg = WM_TIMER)
  13341.   qmsg.hwnd := hwndTimerHandler;
  13342.   WinDispatchMsg(hab, &qmsg);
  13343. End.
  13344.  
  13345. You can use the WinStopTimer function at any time to stop a timer.  The 
  13346. following code fragment demonstrates how to stop a timer: 
  13347.  
  13348.  
  13349. WinStopTimer(hab, hwnd, ID_TIMER1);      (* Stops first timer *)
  13350.  
  13351.  
  13352. ΓòÉΓòÉΓòÉ 21. Appendices ΓòÉΓòÉΓòÉ
  13353.  
  13354. This section contains several topics related to Presentation Manager 
  13355. programming. 
  13356.  
  13357.  
  13358. ΓòÉΓòÉΓòÉ 21.1. Bit-Map Formats ΓòÉΓòÉΓòÉ
  13359.  
  13360. There are four standard bit-map formats. All device drivers must be able to 
  13361. translate between any of these formats and their own internal formats. The 
  13362. standard formats are: 
  13363.  
  13364.  Bitcount        Planes 
  13365.  1               1 
  13366.  4               1 
  13367.  8               1 
  13368.  24              1 
  13369.  
  13370.  These formats are chosen because they are identical or similar to all formats 
  13371.  commonly used by raster devices. Only single-plane formats are standard, but 
  13372.  it is very easy to convert these to any multiple-plane format used internally 
  13373.  by a device. 
  13374.  
  13375.  
  13376. ΓòÉΓòÉΓòÉ 21.1.1. Bit-Map Data ΓòÉΓòÉΓòÉ
  13377.  
  13378. The pel data is stored in the bit map in the order that the coordinates appear 
  13379. on a display screen. That is, the pel in the lower-left corner is the first in 
  13380. the bit map. Pels are scanned to the right, and upward, from that position. The 
  13381. bits of the first pel are stored, beginning with the most significant bits of 
  13382. the first byte. The data for pels in each scan line is packed together tightly, 
  13383. but all scan lines are padded at the end, so that each one begins on a ULONG 
  13384. boundary. 
  13385.  
  13386.  
  13387. ΓòÉΓòÉΓòÉ 21.1.2. Bit-Map Information Tables ΓòÉΓòÉΓòÉ
  13388.  
  13389. Each standard-format bit map must be accompanied by a bit-map information 
  13390. table. Because the standard-format bit maps are intended to be traded between 
  13391. devices, the color indexes in the bit map are meaningless without more 
  13392. information; for a description of this structure, see BITMAPINFO2. 
  13393.  
  13394. Some functions use a structure that is similar to BITMAPINFO2 but does not have 
  13395. the color table array; for a description of this structure, see 
  13396. BITMAPINFOHEADER2. Wherever BITMAPINFO2 is shown, BITMAPINFO is also allowed. 
  13397. Similarly, wherever BITMAPINFOHEADER2 is shown, BITMAPINFOHEADER is also 
  13398. allowed. 
  13399.  
  13400.  
  13401. ΓòÉΓòÉΓòÉ 21.1.3. Bit-Map Example ΓòÉΓòÉΓòÉ
  13402.  
  13403. To make the ordering of all the bytes clear, consider this simple example of a 
  13404. 5-by-3 array of colored pels: 
  13405.  
  13406.  
  13407. Red   Green Blue  Red   Green
  13408. Blue  Red   Green Blue  Red
  13409. Green Blue  Red   Green Blue
  13410.  
  13411. Uses
  13412.   Os2Def,Os2Base,Os2PmApi;
  13413.  
  13414. Var
  13415.   ExampleBitmap[] : ULONG; (* ╨ísken var tom!! *)
  13416.  
  13417. Begin
  13418.   ExampleBitmap[] := ULONG
  13419.   $23,$12,$30,$00                 (* bottom line *)
  13420.   $31,$23,$10,$00                 (* middle line *)
  13421.   $12,$31,$20,$00                 (* top line    *)
  13422. End;;
  13423.  
  13424.  
  13425. struct BitmapInfoTable ExampleInfo := {
  13426. 5,                               (* width       *)
  13427. 3,                               (* height      *)
  13428. 1,                               (* planes      *)
  13429. 4,                               (* bitcount    *)
  13430. BLACK,RED,GREEN,BLUE,            (* color table *)
  13431. BLACK,BLACK,BLACK,BLACK,
  13432. BLACK,BLACK,BLACK,BLACK,
  13433. BLACK,BLACK,BLACK,BLACK
  13434.                                                                                                                                                                                                                                                               E
  13435.  
  13436.  
  13437. ΓòÉΓòÉΓòÉ 21.1.4. Bit-Map File Format ΓòÉΓòÉΓòÉ
  13438.  
  13439. The operating system uses the same file format for bit maps, icons, and 
  13440. pointers in resource files. In the following description, "bit map" refers to 
  13441. bit maps, icons, and pointers unless otherwise specified. 
  13442.  
  13443. Two formats are supported. In the first, a single-size version of the bit map 
  13444. is defined. This is used whatever the target device. 
  13445.  
  13446. The second format allows multiple versions of the bit map to be defined, 
  13447. including one or more device-independent versions, and a number of 
  13448. device-dependent versions, each intended for use with a particular device. 
  13449.  
  13450. In the case of icons and pointers, when more than one version of the bit map 
  13451. exists, the preferred version is one that matches the device size of the icon 
  13452. or pointer; otherwise, the device-independent version is used to scale a bit 
  13453. map to the required size. 
  13454.  
  13455. The operating system provides pointers that match the requirements of the 
  13456. display device in use, typically pointers are 32x32 pels, one bit per plane. 
  13457.  
  13458. Icons provided with the operating system are designed to match the requirements 
  13459. of the most common display devices.  The following versions of each icon are 
  13460. included in each file: 
  13461.  
  13462.       32x32 4 bpp (16 color) 
  13463.       40x40 4 bpp (16 color) 
  13464.       32x32 1 bpp (black and white) 
  13465.       20x20 1 bpp (black and white) 
  13466.       16x16 1 bpp (black and white) 
  13467.  
  13468.  The 32x32 versions are designed for VGA displays and for device-independent 
  13469.  use. 
  13470.  
  13471.  The 40x40 version is for 8514/A and XGA displays. 
  13472.  
  13473.  The 20x20 and 16x16 are half-size icons designed for use as mini-icons. 
  13474.  
  13475.  For general bit maps, which may be of arbitrary size, the preferred version is 
  13476.  one matching the requested bit map size; otherwise one matching the display 
  13477.  size is selected. If neither is available, the device-independent version is 
  13478.  used from which to scale a bit map. 
  13479.  
  13480.  For both formats, the definition consists of two sections. The first section 
  13481.  contains general information about the type, dimensions, and other attributes 
  13482.  of the resource. The second section contains data describing the pels that 
  13483.  make up the bit map(s), and is in the format specified in Bit-Map Data. 
  13484.  
  13485.  In the multiple-version format, the first section contains an array of 
  13486.  BITMAPARRAYFILEHEADER or BITMAPARRAYFILEHEADER2 structures. 
  13487.  
  13488.  The device-independent version must be the first BITMAPARRAYFILEHEADER or 
  13489.  BITMAPARRAYFILEHEADER2 defined. 
  13490.  
  13491.  In the single-size format, the BITMAPARRAYFILEHEADER or BITMAPARRAYFILEHEADER2 
  13492.  structure is not present. The definition consists of one or two 
  13493.  BITMAPFILEHEADER or BITMAPFILEHEADER2 structures. 
  13494.  
  13495.  For icons and pointers, the cy field in bmp is actually twice the pel height 
  13496.  of the image that appears on the screen.  This is because these types actually 
  13497.  contain two full bit-map pel definitions. The first bit-map definition is the 
  13498.  XOR mask, which contains invert information (0 = no invert, 1 = invert) for 
  13499.  the pointer or icon. The second is the AND mask, which determines whether the 
  13500.  pointer or the screen is shown (0 = black/white, 1 = screen/inverse screen). 
  13501.  
  13502.  For color icons or pointers, there are two bit-maps involved: one that is 
  13503.  black and white and consists of an AND and an XOR mask, and one that is color 
  13504.  that defines the color content. 
  13505.  
  13506.  The cy field in the BITMAPINFOHEADER2 structure for the color bit-map must be 
  13507.  the real height, that is, half the value specified for the black and white 
  13508.  bit-map. The cx must be the same. 
  13509.  
  13510.  The following table shows how these two bit-maps are used for a color icon or 
  13511.  pointer: 
  13512.  
  13513.  
  13514.   XOR     AND     COLOR
  13515.   1       1        x       Invert screen
  13516.   0       0        x       Use color x
  13517.   0       1        x       Transparency
  13518.   1       0        x       Use color x
  13519.  
  13520.  For color icons or pointers, two BITMAPFILEHEADER or BITMAPFILEHEADER2 
  13521.  structures are therefore required: 
  13522.  
  13523.  
  13524.   BITMAPFILEHEADER2    with usType BFT_COLORICON or BFT_COLORPOINTER
  13525.   BITMAPINFOHEADER2 (part of BITMAPFILEHEADER2)
  13526.   Uses
  13527.     Os2Def,Os2Base,Os2PmApi;
  13528.  
  13529.   Var
  13530.     Table : COLOR; (* ╨ísken var tom!! *)
  13531.  
  13532.   Begin
  13533.     Table := Color
  13534.     BITMAPFILEHEADER2    with same usType
  13535.     BITMAPINFOHEADER2 (part of BITMAPFILEHEADER2)
  13536.   Uses
  13537.     Os2Def,Os2Base,Os2PmApi;
  13538.  
  13539.   Var
  13540.     Table : COLOR; (* ╨ísken var tom!! *)
  13541.  
  13542.   Begin
  13543.     Table := Color
  13544.       **
  13545.       bits for one bit-map
  13546.       **
  13547.       **
  13548.       bits for other bit-map
  13549.       **
  13550.  
  13551.  The usType for the first BITMAPFILEHEADER2 is either BFT_COLORICON or 
  13552.  BFT_COLORPOINTER. This means that a second BITMAPFILEHEADER2 is present as 
  13553.  part of the definition of a color icon or pointer. The first The first 
  13554.  BITMAPFILEHEADER2 structure contains the information for the black and white 
  13555.  AND and XOR masks, while the second BITMAPFILEHEADER2 structure contains the 
  13556.  information for the color part of the pointer or icon. 
  13557.  
  13558.  BITMAPFILEHEADER and BITMAPINFOHEADER can occur in place of BITMAPFILEHEADER2 
  13559.  and BITMAPINFOHEADER2 in this example. 
  13560.  
  13561.  For the multiple version format, the file is as follows: 
  13562.  
  13563.  
  13564.   BITMAPARRAYFILEHEADER2   for device-independent version
  13565.   BITMAPFILEHEADER2     (part of BITMAPARRAYFILEHEADER2)
  13566.   BITMAPINFOHEADER2  (part of BITMAPFILEHEADER2)
  13567.   Uses
  13568.     Os2Def,Os2Base,Os2PmApi;
  13569.  
  13570.   Var
  13571.     Table : COLOR; (* ╨ísken var tom!! *)
  13572.  
  13573.   Begin
  13574.     Table := Color
  13575.  
  13576.     BITMAPFILEHEADER2     )
  13577.     BITMAPINFOHEADER2  )  only If this is a color icon or pointer
  13578.   Uses
  13579.     Os2Def,Os2Base,Os2PmApi;
  13580.  
  13581.   Var
  13582.     Table : COLOR; (* ╨ísken var tom!! *)
  13583.  
  13584.   Begin
  13585.     Table := Color
  13586.  
  13587.       BITMAPARRAYFILEHEADER2   for first device-dependent version
  13588.       BITMAPFILEHEADER2     (part of BITMAPARRAYFILEHEADER2)
  13589.       BITMAPINFOHEADER2  (part of BITMAPFILEHEADER2)
  13590.   Uses
  13591.     Os2Def,Os2Base,Os2PmApi;
  13592.  
  13593.   Var
  13594.     Table : COLOR; (* ╨ísken var tom!! *)
  13595.  
  13596.   Begin
  13597.     Table := Color
  13598.  
  13599.         BITMAPFILEHEADER2     )
  13600.         BITMAPINFOHEADER2  )  only If this is a color icon or pointer
  13601.   Uses
  13602.     Os2Def,Os2Base,Os2PmApi;
  13603.  
  13604.   Var
  13605.     Table : COLOR; (* ╨ísken var tom!! *)
  13606.  
  13607.   Begin
  13608.     Table := Color
  13609.  
  13610.           Further BITMAPARRAYFILEHEADER2 groups occur here as required
  13611.           for additional device-dependent versions
  13612.  
  13613.           **
  13614.           bits for one bit-map
  13615.           **
  13616.           **
  13617.           bits for next bit-map
  13618.           **
  13619.  
  13620.  As before, BITMAPARRAYFILEHEADER, BITMAPFILEHEADER, and BITMAPINFOHEADER, can 
  13621.  occur in place of BITMAPARRAYFILEHEADER2, BITMAPFILEHEADER2, and 
  13622.  BITMAPINFOHEADER2 
  13623.  
  13624.  
  13625. ΓòÉΓòÉΓòÉ 21.2. Code Pages ΓòÉΓòÉΓòÉ
  13626.  
  13627. The initialization file contains country information relating to date, time, 
  13628. and numeric formats.  It does not contain code-page information; this is 
  13629. obtained from the CONFIG.SYS file. 
  13630.  
  13631. Applications start with the default code page. The default code page is set 
  13632. when the operating system is installed. It can be changed subsequently either 
  13633. by reinstalling the operating system or by editing the COUNTRY statement in the 
  13634. CONFIG.SYS file. 
  13635.  
  13636. A GPI presentation space inherits the code page of the process that created it. 
  13637. The code page changes only when the process calls GpiSetCp 
  13638.  
  13639. See the printed version of the Presentation Manager Programming Reference for 
  13640. the ASCII and EBCDIC versions of the code pages. 
  13641.  
  13642.  
  13643. ΓòÉΓòÉΓòÉ 21.2.1. Windowed PM Applications ΓòÉΓòÉΓòÉ
  13644.  
  13645. Windowed PM applications allow the code-page calls to use any of the supported 
  13646. ASCII code pages. These are: 
  13647.  
  13648. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13649. Γöé                      ΓöéChar. Set  ΓöéCode Page  Γöé
  13650. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13651. ΓöéCanadian-French       Γöé993        Γöé863        Γöé
  13652. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13653. ΓöéDesktop Publishing    Γöé1146       Γöé1004       Γöé
  13654. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13655. ΓöéIceland               Γöé991        Γöé861        Γöé
  13656. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13657. ΓöéLatin 1 Multilingual  Γöé980        Γöé850        Γöé
  13658. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13659. ΓöéLatin 2 Multilingual  Γöé982        Γöé852        Γöé
  13660. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13661. ΓöéNordic                Γöé995        Γöé865        Γöé
  13662. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13663. ΓöéPortuguese            Γöé990        Γöé860        Γöé
  13664. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13665. ΓöéTurkey                Γöé987        Γöé857        Γöé
  13666. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13667. ΓöéU.S. (IBM PC)         Γöé919        Γöé437        Γöé
  13668. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13669.  
  13670. Code page 1004 is compatible with Microsoft** Windows**. 
  13671.  
  13672. The following EBCDIC code pages, based on character set 697, are also available 
  13673. for output: 
  13674.  
  13675. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13676. Γöé                      ΓöéChar. Set  ΓöéCode Page  Γöé
  13677. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13678. ΓöéAustrian/German       Γöé697        Γöé273        Γöé
  13679. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13680. ΓöéBelgian               Γöé697        Γöé500        Γöé
  13681. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13682. ΓöéBrazil                Γöé697        Γöé037        Γöé
  13683. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13684. ΓöéCzechoslovakia        Γöé959        Γöé870        Γöé
  13685. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13686. ΓöéDanish/Norwegian      Γöé697        Γöé277        Γöé
  13687. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13688. ΓöéFinnish/Swedish       Γöé697        Γöé278        Γöé
  13689. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13690. ΓöéFrench                Γöé697        Γöé297        Γöé
  13691. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13692. ΓöéHungary               Γöé959        Γöé870        Γöé
  13693. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13694. ΓöéIceland               Γöé697        Γöé871        Γöé
  13695. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13696. ΓöéInternational         Γöé697        Γöé500        Γöé
  13697. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13698. ΓöéItalian               Γöé697        Γöé280        Γöé
  13699. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13700. ΓöéPoland                Γöé959        Γöé870        Γöé
  13701. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13702. ΓöéPortuguese            Γöé697        Γöé037        Γöé
  13703. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13704. ΓöéSpanish               Γöé697        Γöé284        Γöé
  13705. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13706. ΓöéTurkey                Γöé1152       Γöé1026       Γöé
  13707. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13708. ΓöéU.K.-English          Γöé697        Γöé285        Γöé
  13709. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13710. ΓöéU.S.-English          Γöé697        Γöé037        Γöé
  13711. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13712. ΓöéYugoslavia            Γöé959        Γöé870        Γöé
  13713. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13714.  
  13715. Note:  Code pages 274 (Belgian) and 282 (Portuguese) can be used to provide 
  13716.        access to old data. 
  13717.  
  13718.  The operating system provides the following additional code-page setting and 
  13719.  query calls for the supported ASCII and EBCDIC code pages. These calls work 
  13720.  independently of the CONFIG.SYS file. 
  13721.  
  13722.  GpiSetCp                  Sets the code page for GPI. 
  13723.  GpiQueryCp                Queries the code page for GPI. 
  13724.  GpiCreateLogFont          Creates fonts in a code page. 
  13725.  WinSetCp                  Sets the code page for a message queue. 
  13726.  WinQueryCp                Queries the code page for a message queue. 
  13727.  
  13728.  WinQueryCpList creates a list of code pages supported by the operating system. 
  13729.  
  13730.  Text entered in a dialog box is supplied to the application in the code page 
  13731.  of the queue ("queue code page"). If possible, the code page of a resource 
  13732.  (for example, a menu or dialog box) should match the code page of the queue. 
  13733.  In general, code page 850 is the best choice for both an application and its 
  13734.  resources. 
  13735.  
  13736.  Applications should be able to process data from a variety of sources. Because 
  13737.  code page 850 contains most of the characters in other supported code pages, 
  13738.  this is usually the best choice for the queue code page. 
  13739.  
  13740.  
  13741. ΓòÉΓòÉΓòÉ 21.2.2. OS/2 Code Page Options for PM Applications ΓòÉΓòÉΓòÉ
  13742.  
  13743.  
  13744. ΓöîΓöÇΓöÇΓöÇApplicationΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13745. Γöé                                         ΓöéΓöÇΓöÇΓöÇ
  13746.  CONFIG.SYS   Γöé
  13747. Γöé ΓöîΓöÇDosSetProcessCp (see note 1)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé    Γöé contains the Γöé
  13748. Γöé Γöé Set code page for this process      Γöé Γöé    Γöé default code Γöé
  13749. Γöé Γöé (keyboard/display not changed).     Γöé Γöé    Γöé page set by  Γöé
  13750. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé    Γöé CODEPAGE=    Γöé
  13751. Γöé                                         Γöé    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13752. Γöé ΓöîΓöÇWinQueryCpList (see note 2)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  13753. Γöé Γöé Query list of supported code pages. Γöé Γöé
  13754. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  13755. Γöé                                         Γöé
  13756. Γöé ΓöîΓöÇWinSetCp, WinQueryCp (see note 1)ΓöÇΓöÇΓöÇΓöÉ Γöé
  13757. Γöé Γöé Set or query code page for          ΓöéΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇKeyboard
  13758. Γöé Γöé translating incoming messages       Γöé Γöé    Γöé   Γöé
  13759. Γöé Γöé (keystrokes).                       Γöé Γöé    ΓöéΓöÇΓöÇΓöÇΓöÇΓöÇΓöé
  13760. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé    ΓöéΓöÇΓöÇΓöÇΓöÇΓöÇΓöé  Message
  13761. Γöé                                         Γöé    ΓöéΓöÇΓöÇΓöÇΓöÇΓöÇΓöé  queue
  13762. Γöé ΓöîΓöÇGpiSetCp, GpiQueryCp (see note 2)ΓöÇΓöÇΓöÇΓöÉ Γöé    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13763. Γöé Γöé Set or query default GPI code page. Γöé Γöé
  13764. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  13765. Γöé                                         Γöé
  13766. Γöé ΓöîΓöÇGpiCreateLogFont (see note 2)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  13767. Γöé Γöé Create font in a code page.         ΓöéΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇDisplay
  13768. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  13769. Γöé                                         Γöé
  13770. Γöé ΓöîΓöÇWinCpTranslateChar (see note 2)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  13771. Γöé Γö£ΓöÇWinCpTranslateString (see note 2)ΓöÇΓöÇΓöÇ
  13772.  Γöé
  13773. Γöé Γöé Convert character or string from    ΓöéΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇDisk
  13774. Γöé Γöé one code page to another.           Γöé Γöé
  13775. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  13776. Γöé                                        Γöé
  13777. Γöé                    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇLAN or host
  13778. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13779.  
  13780. Note 1:  Either of the two ASCII code pages specified in CONFIG.SYS.
  13781.          Code page 1004 is also supported.
  13782. Note 2:  Any supported ASCII or EBCDIC code page as reported by
  13783.          WinQueryCpList.
  13784.          Code page 1004 is also supported.
  13785.  
  13786.  
  13787. ΓòÉΓòÉΓòÉ 21.2.3. OS/2 Font Support for Multiple Code Pages ΓòÉΓòÉΓòÉ
  13788.  
  13789. The operating system supports multiple code pages for text input and output. A 
  13790. single font resource is used to support all the code pages. This section 
  13791. describes the font resource format. 
  13792.  
  13793.  
  13794. ΓòÉΓòÉΓòÉ 21.2.3.1. Font Code-Page Functions ΓòÉΓòÉΓòÉ
  13795.  
  13796. Many of the characters required by each code page are common; for example, the 
  13797. first 128 characters of all the ASCII code pages are identical. This set of 
  13798. characters is called the Universal Glyph List (UGL). A code page is simply a 
  13799. set of pointers into the UGL. 
  13800.  
  13801. As the characters in every font are in the same order, only one set of 
  13802. code-page translation tables is necessary. 
  13803.  
  13804. Note:  The fonts of Microsoft Windows support only code page 1004. 
  13805.  
  13806.  
  13807. ΓòÉΓòÉΓòÉ 21.2.3.2. Font Layout ΓòÉΓòÉΓòÉ
  13808.  
  13809. The following table lists the full character set in the order in which the 
  13810. characters occur in the multi-code-page font. Characters are listed in order of 
  13811. their universal glyph list (UGL) number; the graphic character global 
  13812. identifier (GCGID) and a description of each character are also given. 
  13813.  
  13814. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13815. ΓöéUGL  ΓöéGCGID     ΓöéDescription                             Γöé
  13816. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13817. Γöé1    ΓöéSS000000  ΓöéSmiling face                            Γöé
  13818. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13819. Γöé2    ΓöéSS010000  ΓöéSmiling face, reverse image             Γöé
  13820. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13821. Γöé3    ΓöéSS020000  ΓöéHeart suit symbol                       Γöé
  13822. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13823. Γöé4    ΓöéSS030000  ΓöéDiamond suit symbol                     Γöé
  13824. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13825. Γöé5    ΓöéSS040000  ΓöéClub suit symbol                        Γöé
  13826. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13827. Γöé6    ΓöéSS050000  ΓöéSpade suit symbol                       Γöé
  13828. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13829. Γöé7    ΓöéSM570000  ΓöéBullet                                  Γöé
  13830. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13831. Γöé8    ΓöéSM570001  ΓöéBullet, reverse image                   Γöé
  13832. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13833. Γöé9    ΓöéSM750000  ΓöéOpen circle                             Γöé
  13834. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13835. Γöé10   ΓöéSM750002  ΓöéOpen circle, reverse image              Γöé
  13836. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13837. Γöé11   ΓöéSM280000  ΓöéMale symbol                             Γöé
  13838. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13839. Γöé12   ΓöéSM290000  ΓöéFemale symbol                           Γöé
  13840. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13841. Γöé13   ΓöéSM930000  ΓöéMusical note                            Γöé
  13842. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13843. Γöé14   ΓöéSM910000  ΓöéTwo musical notes                       Γöé
  13844. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13845. Γöé15   ΓöéSM690000  ΓöéSun symbol                              Γöé
  13846. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13847. Γöé16   ΓöéSM590000  ΓöéForward arrow indicator                 Γöé
  13848. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13849. Γöé17   ΓöéSM630000  ΓöéBack arrow indicator                    Γöé
  13850. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13851. Γöé18   ΓöéSM760000  ΓöéUp-down arrow                           Γöé
  13852. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13853. Γöé19   ΓöéSP330000  ΓöéDouble exclamation point                Γöé
  13854. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13855. Γöé20   ΓöéSM250000  ΓöéParagraph symbol (USA)                  Γöé
  13856. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13857. Γöé21   ΓöéSM240000  ΓöéSection symbol (USA), paragraph (Europe)Γöé
  13858. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13859. Γöé22   ΓöéSM700000  ΓöéSolid horizontal rectangle              Γöé
  13860. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13861. Γöé23   ΓöéSM770000  ΓöéUp-down arrow, perpendicular            Γöé
  13862. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13863. Γöé24   ΓöéSM320000  ΓöéUp arrow                                Γöé
  13864. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13865. Γöé25   ΓöéSM330000  ΓöéDown arrow                              Γöé
  13866. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13867. Γöé26   ΓöéSM310000  ΓöéRight arrow                             Γöé
  13868. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13869. Γöé27   ΓöéSM300000  ΓöéLeft arrow                              Γöé
  13870. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13871. Γöé28   ΓöéSA420000  ΓöéRight angle symbol                      Γöé
  13872. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13873. Γöé29   ΓöéSM780000  ΓöéLeft-right arrow                        Γöé
  13874. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13875. Γöé30   ΓöéSM600000  ΓöéSolid triangle                          Γöé
  13876. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13877. Γöé31   ΓöéSV040000  ΓöéSolid triangle, inverted                Γöé
  13878. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13879. Γöé32   ΓöéSP010000  ΓöéSpace                                   Γöé
  13880. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13881. Γöé33   ΓöéSP020000  ΓöéExclamation point                       Γöé
  13882. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13883. Γöé34   ΓöéSP040000  ΓöéQuotation marks                         Γöé
  13884. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13885. Γöé35   ΓöéSM010000  ΓöéNumber sign                             Γöé
  13886. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13887. Γöé36   ΓöéSC030000  ΓöéDollar sign                             Γöé
  13888. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13889. Γöé37   ΓöéSM020000  ΓöéPercent sign                            Γöé
  13890. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13891. Γöé38   ΓöéSM030000  ΓöéAmpersand                               Γöé
  13892. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13893. Γöé39   ΓöéSP050000  ΓöéApostrophe                              Γöé
  13894. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13895. Γöé40   ΓöéSP060000  ΓöéLeft parenthesis                        Γöé
  13896. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13897. Γöé41   ΓöéSP070000  ΓöéRight parenthesis                       Γöé
  13898. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13899. Γöé42   ΓöéSM040000  ΓöéAsterisk                                Γöé
  13900. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13901. Γöé43   ΓöéSA010000  ΓöéPlus sign                               Γöé
  13902. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13903. Γöé44   ΓöéSP080000  ΓöéComma                                   Γöé
  13904. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13905. Γöé45   ΓöéSP100000  ΓöéHyphen/minus sign                       Γöé
  13906. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13907. Γöé46   ΓöéSP110000  ΓöéPeriod/full stop                        Γöé
  13908. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13909. Γöé47   ΓöéSP120000  ΓöéSlash                                   Γöé
  13910. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13911. Γöé48   ΓöéND100000  ΓöéZero                                    Γöé
  13912. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13913. Γöé49   ΓöéND010000  ΓöéOne                                     Γöé
  13914. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13915. Γöé50   ΓöéND020000  ΓöéTwo                                     Γöé
  13916. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13917. Γöé51   ΓöéND030000  ΓöéThree                                   Γöé
  13918. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13919. Γöé52   ΓöéND040000  ΓöéFour                                    Γöé
  13920. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13921. Γöé53   ΓöéND050000  ΓöéFive                                    Γöé
  13922. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13923. Γöé54   ΓöéND060000  ΓöéSix                                     Γöé
  13924. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13925. Γöé55   ΓöéND070000  ΓöéSeven                                   Γöé
  13926. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13927. Γöé56   ΓöéND080000  ΓöéEight                                   Γöé
  13928. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13929. Γöé57   ΓöéND090000  ΓöéNine                                    Γöé
  13930. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13931. Γöé58   ΓöéSP130000  ΓöéColon                                   Γöé
  13932. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13933. Γöé59   ΓöéSP140000  ΓöéSemicolon                               Γöé
  13934. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13935. Γöé60   ΓöéSA030000  ΓöéLess than sign/greater than (arabic)    Γöé
  13936. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13937. Γöé61   ΓöéSA040000  ΓöéEqual Sign                              Γöé
  13938. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13939. Γöé62   ΓöéSA050000  ΓöéGreater than sign/less than (arabic)    Γöé
  13940. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13941. Γöé63   ΓöéSP150000  ΓöéQuestion mark                           Γöé
  13942. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13943. Γöé64   ΓöéSM050000  ΓöéAt sign                                 Γöé
  13944. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13945. Γöé65   ΓöéLA020000  ΓöéA capital                               Γöé
  13946. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13947. Γöé66   ΓöéLB020000  ΓöéB capital                               Γöé
  13948. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13949. Γöé67   ΓöéLC020000  ΓöéC capital                               Γöé
  13950. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13951. Γöé68   ΓöéLD020000  ΓöéD capital                               Γöé
  13952. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13953. Γöé69   ΓöéLE020000  ΓöéE capital                               Γöé
  13954. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13955. Γöé70   ΓöéLF020000  ΓöéF capital                               Γöé
  13956. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13957. Γöé71   ΓöéLG020000  ΓöéG capital                               Γöé
  13958. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13959. Γöé72   ΓöéLH020000  ΓöéH capital                               Γöé
  13960. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13961. Γöé73   ΓöéLI020000  ΓöéI capital                               Γöé
  13962. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13963. Γöé74   ΓöéLJ020000  ΓöéJ capital                               Γöé
  13964. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13965. Γöé75   ΓöéLK020000  ΓöéK capital                               Γöé
  13966. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13967. Γöé76   ΓöéLL020000  ΓöéL capital                               Γöé
  13968. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13969. Γöé77   ΓöéLM020000  ΓöéM capital                               Γöé
  13970. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13971. Γöé78   ΓöéLN020000  ΓöéN capital                               Γöé
  13972. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13973. Γöé79   ΓöéLO020000  ΓöéO capital                               Γöé
  13974. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13975. Γöé80   ΓöéLP020000  ΓöéP capital                               Γöé
  13976. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13977. Γöé81   ΓöéLQ020000  ΓöéQ capital                               Γöé
  13978. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13979. Γöé82   ΓöéLR020000  ΓöéR capital                               Γöé
  13980. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13981. Γöé83   ΓöéLS020000  ΓöéS capital                               Γöé
  13982. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13983. Γöé84   ΓöéLT020000  ΓöéT capital                               Γöé
  13984. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13985. Γöé85   ΓöéLU020000  ΓöéU capital                               Γöé
  13986. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13987. Γöé86   ΓöéLV020000  ΓöéV capital                               Γöé
  13988. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13989. Γöé87   ΓöéLW020000  ΓöéW capital                               Γöé
  13990. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13991. Γöé88   ΓöéLX020000  ΓöéX capital                               Γöé
  13992. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13993. Γöé89   ΓöéLY020000  ΓöéY capital                               Γöé
  13994. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13995. Γöé90   ΓöéLZ020000  ΓöéZ capital                               Γöé
  13996. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13997. Γöé91   ΓöéSM060000  ΓöéLeft bracket                            Γöé
  13998. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13999. Γöé92   ΓöéSM070000  ΓöéBackslash                               Γöé
  14000. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14001. Γöé93   ΓöéSM080000  ΓöéRight bracket                           Γöé
  14002. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14003. Γöé94   ΓöéSD150000  ΓöéCircumflex Accent                       Γöé
  14004. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14005. Γöé95   ΓöéSP090000  ΓöéUnderline, continuous underscore        Γöé
  14006. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14007. Γöé96   ΓöéSD130000  ΓöéGrave accent                            Γöé
  14008. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14009. Γöé97   ΓöéLA010000  Γöéa small                                 Γöé
  14010. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14011. Γöé98   ΓöéLB010000  Γöéb small                                 Γöé
  14012. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14013. Γöé99   ΓöéLC010000  Γöéc small                                 Γöé
  14014. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14015. Γöé100  ΓöéLD010000  Γöéd small                                 Γöé
  14016. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14017. Γöé101  ΓöéLE010000  Γöée small                                 Γöé
  14018. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14019. Γöé102  ΓöéLF010000  Γöéf small                                 Γöé
  14020. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14021. Γöé103  ΓöéLG010000  Γöég small                                 Γöé
  14022. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14023. Γöé104  ΓöéLH010000  Γöéh small                                 Γöé
  14024. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14025. Γöé105  ΓöéLI010000  Γöéi small                                 Γöé
  14026. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14027. Γöé106  ΓöéLJ010000  Γöéj small                                 Γöé
  14028. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14029. Γöé107  ΓöéLK010000  Γöék small                                 Γöé
  14030. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14031. Γöé108  ΓöéLL010000  Γöél small                                 Γöé
  14032. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14033. Γöé109  ΓöéLM010000  Γöém small                                 Γöé
  14034. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14035. Γöé110  ΓöéLN010000  Γöén small                                 Γöé
  14036. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14037. Γöé111  ΓöéLO010000  Γöéo small                                 Γöé
  14038. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14039. Γöé112  ΓöéLP010000  Γöép small                                 Γöé
  14040. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14041. Γöé113  ΓöéLQ010000  Γöéq small                                 Γöé
  14042. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14043. Γöé114  ΓöéLR010000  Γöér small                                 Γöé
  14044. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14045. Γöé115  ΓöéLS010000  Γöés small                                 Γöé
  14046. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14047. Γöé116  ΓöéLT010000  Γöét small                                 Γöé
  14048. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14049. Γöé117  ΓöéLU010000  Γöéu small                                 Γöé
  14050. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14051. Γöé118  ΓöéLV010000  Γöév small                                 Γöé
  14052. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14053. Γöé119  ΓöéLW010000  Γöéw small                                 Γöé
  14054. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14055. Γöé120  ΓöéLX010000  Γöéx small                                 Γöé
  14056. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14057. Γöé121  ΓöéLY010000  Γöéy small                                 Γöé
  14058. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14059. Γöé122  ΓöéLZ010000  Γöéz small                                 Γöé
  14060. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14061. Γöé123  ΓöéSM110000  ΓöéLeft brace                              Γöé
  14062. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14063. Γöé124  ΓöéSM130000  ΓöéVertical line, logical OR               Γöé
  14064. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14065. Γöé125  ΓöéSM140000  ΓöéRight brace                             Γöé
  14066. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14067. Γöé126  ΓöéSD190000  ΓöéTilde                                   Γöé
  14068. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14069. Γöé127  ΓöéSM790000  ΓöéHouse                                   Γöé
  14070. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14071. Γöé128  ΓöéLC420000  ΓöéC cedilla capital                       Γöé
  14072. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14073. Γöé129  ΓöéLU170000  ΓöéU diaeresis small                       Γöé
  14074. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14075. Γöé130  ΓöéLE110000  ΓöéE acute small                           Γöé
  14076. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14077. Γöé131  ΓöéLA150000  ΓöéA circumflex small                      Γöé
  14078. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14079. Γöé132  ΓöéLA170000  ΓöéA diaeresis small                       Γöé
  14080. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14081. Γöé133  ΓöéLA130000  ΓöéA grave small                           Γöé
  14082. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14083. Γöé134  ΓöéLA270000  ΓöéA overcircle small                      Γöé
  14084. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14085. Γöé135  ΓöéLC410000  ΓöéC cedilla small                         Γöé
  14086. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14087. Γöé136  ΓöéLE150000  ΓöéE circumflex small                      Γöé
  14088. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14089. Γöé137  ΓöéLE170000  ΓöéE diaeresis small                       Γöé
  14090. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14091. Γöé138  ΓöéLE130000  ΓöéE grave small                           Γöé
  14092. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14093. Γöé139  ΓöéLI170000  ΓöéI diaeresis small                       Γöé
  14094. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14095. Γöé140  ΓöéLI150000  ΓöéI circumflex small                      Γöé
  14096. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14097. Γöé141  ΓöéLI130000  ΓöéI grave small                           Γöé
  14098. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14099. Γöé142  ΓöéLA180000  ΓöéA diaeresis capital                     Γöé
  14100. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14101. Γöé143  ΓöéLA280000  ΓöéA overcircle capital                    Γöé
  14102. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14103. Γöé144  ΓöéLE120000  ΓöéE acute capital                         Γöé
  14104. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14105. Γöé145  ΓöéLA510000  ΓöéAE diphthong small                      Γöé
  14106. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14107. Γöé146  ΓöéLA520000  ΓöéAE diphthong capital                    Γöé
  14108. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14109. Γöé147  ΓöéLO150000  ΓöéO circumflex small                      Γöé
  14110. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14111. Γöé148  ΓöéLO170000  ΓöéO diaeresis small                       Γöé
  14112. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14113. Γöé149  ΓöéLO130000  ΓöéO grave small                           Γöé
  14114. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14115. Γöé150  ΓöéLU150000  ΓöéU circumflex small                      Γöé
  14116. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14117. Γöé151  ΓöéLU130000  ΓöéU grave small                           Γöé
  14118. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14119. Γöé152  ΓöéLY170000  ΓöéY diaeresis small                       Γöé
  14120. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14121. Γöé153  ΓöéLO180000  ΓöéO diaeresis capital                     Γöé
  14122. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14123. Γöé154  ΓöéLU180000  ΓöéU diaeresis capital                     Γöé
  14124. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14125. Γöé155  ΓöéLO610000  ΓöéO slash small                           Γöé
  14126. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14127. Γöé156  ΓöéSC020000  ΓöéPound sterling sign                     Γöé
  14128. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14129. Γöé157  ΓöéLO620000  ΓöéO slash capital                         Γöé
  14130. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14131. Γöé158  ΓöéSA070000  ΓöéMultiply sign                           Γöé
  14132. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14133. Γöé159  ΓöéSC070000  ΓöéFlorin sign                             Γöé
  14134. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14135. Γöé160  ΓöéLA110000  ΓöéA acute small                           Γöé
  14136. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14137. Γöé161  ΓöéLI110000  ΓöéI acute small                           Γöé
  14138. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14139. Γöé162  ΓöéLO110000  ΓöéO acute small                           Γöé
  14140. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14141. Γöé163  ΓöéLU110000  ΓöéU acute small                           Γöé
  14142. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14143. Γöé164  ΓöéLN190000  ΓöéN tilde small                           Γöé
  14144. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14145. Γöé165  ΓöéLN200000  ΓöéN tilde capital                         Γöé
  14146. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14147. Γöé166  ΓöéSM210000  ΓöéOrdinal indicator, feminine             Γöé
  14148. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14149. Γöé167  ΓöéSM200000  ΓöéOrdinal indicator, masculine            Γöé
  14150. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14151. Γöé168  ΓöéSP160000  ΓöéQuestion mark, inverted                 Γöé
  14152. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14153. Γöé169  ΓöéSM530000  ΓöéRegistered trademark symbol             Γöé
  14154. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14155. Γöé170  ΓöéSM660000  ΓöéLogical NOT, end of line symbol         Γöé
  14156. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14157. Γöé171  ΓöéNF010000  ΓöéOne-half                                Γöé
  14158. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14159. Γöé172  ΓöéNF040000  ΓöéOne-quarter                             Γöé
  14160. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14161. Γöé173  ΓöéSP030000  ΓöéExclamation point, inverted             Γöé
  14162. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14163. Γöé174  ΓöéSP170000  ΓöéLeft angled quotes                      Γöé
  14164. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14165. Γöé175  ΓöéSP180000  ΓöéRight angled quotes                     Γöé
  14166. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14167. Γöé176  ΓöéSF140000  ΓöéFill character, light                   Γöé
  14168. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14169. Γöé177  ΓöéSF150000  ΓöéFill character, medium                  Γöé
  14170. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14171. Γöé178  ΓöéSF160000  ΓöéFill character, heavy                   Γöé
  14172. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14173. Γöé179  ΓöéSF110000  ΓöéCenter box bar vertical                 Γöé
  14174. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14175. Γöé180  ΓöéSF090000  ΓöéRight middle box side                   Γöé
  14176. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14177. Γöé181  ΓöéLA120000  ΓöéA acute capital                         Γöé
  14178. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14179. Γöé182  ΓöéLA160000  ΓöéA circumflex capital                    Γöé
  14180. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14181. Γöé183  ΓöéLA140000  ΓöéA grave capital                         Γöé
  14182. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14183. Γöé184  ΓöéSM520000  ΓöéCopyright symbol                        Γöé
  14184. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14185. Γöé185  ΓöéSF230000  ΓöéRight box side double                   Γöé
  14186. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14187. Γöé186  ΓöéSF240000  ΓöéCenter box bar vertical double          Γöé
  14188. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14189. Γöé187  ΓöéSF250000  ΓöéUpper right box corner double           Γöé
  14190. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14191. Γöé188  ΓöéSF260000  ΓöéLower right box corner double           Γöé
  14192. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14193. Γöé189  ΓöéSC040000  ΓöéCent sign                               Γöé
  14194. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14195. Γöé190  ΓöéSC050000  ΓöéYen sign                                Γöé
  14196. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14197. Γöé191  ΓöéSF030000  ΓöéUpper right box corner                  Γöé
  14198. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14199. Γöé192  ΓöéSF020000  ΓöéLower left box corner                   Γöé
  14200. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14201. Γöé193  ΓöéSF070000  ΓöéMiddle box bottom                       Γöé
  14202. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14203. Γöé194  ΓöéSF060000  ΓöéMiddle box top                          Γöé
  14204. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14205. Γöé195  ΓöéSF080000  ΓöéLeft middle box side                    Γöé
  14206. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14207. Γöé196  ΓöéSF100000  ΓöéCenter box bar horizontal               Γöé
  14208. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14209. Γöé197  ΓöéSF050000  ΓöéBox intersection                        Γöé
  14210. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14211. Γöé198  ΓöéLA190000  ΓöéA tilde small                           Γöé
  14212. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14213. Γöé199  ΓöéLA200000  ΓöéA tilde capital                         Γöé
  14214. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14215. Γöé200  ΓöéSF380000  ΓöéLower left box corner double            Γöé
  14216. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14217. Γöé201  ΓöéSF390000  ΓöéUpper left box corner double            Γöé
  14218. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14219. Γöé202  ΓöéSF400000  ΓöéMiddle box bottom double                Γöé
  14220. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14221. Γöé203  ΓöéSF410000  ΓöéMiddle box top double                   Γöé
  14222. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14223. Γöé204  ΓöéSF420000  ΓöéLeft box side double                    Γöé
  14224. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14225. Γöé205  ΓöéSF430000  ΓöéCenter box bar horizontal double        Γöé
  14226. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14227. Γöé206  ΓöéSF440000  ΓöéBox intersection double                 Γöé
  14228. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14229. Γöé207  ΓöéSC010000  ΓöéInternational currency symbol           Γöé
  14230. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14231. Γöé208  ΓöéLD630000  Γöéeth Icelandic small                     Γöé
  14232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14233. Γöé209  ΓöéLD620000  ΓöéD stroke capital, Eth Icelandic capital Γöé
  14234. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14235. Γöé210  ΓöéLE160000  ΓöéE circumflex capital                    Γöé
  14236. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14237. Γöé211  ΓöéLE180000  ΓöéE diaeresis capital                     Γöé
  14238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14239. Γöé212  ΓöéLE140000  ΓöéE grave capital                         Γöé
  14240. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14241. Γöé213  ΓöéLI610000  ΓöéI dotless small                         Γöé
  14242. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14243. Γöé214  ΓöéLI120000  ΓöéI acute capital                         Γöé
  14244. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14245. Γöé215  ΓöéLI160000  ΓöéI circumflex capital                    Γöé
  14246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14247. Γöé216  ΓöéLI180000  ΓöéI diaeresis capital                     Γöé
  14248. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14249. Γöé217  ΓöéSF040000  ΓöéLower right box corner                  Γöé
  14250. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14251. Γöé218  ΓöéSF010000  ΓöéUpper left box corner                   Γöé
  14252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14253. Γöé219  ΓöéSF610000  ΓöéSolid fill character                    Γöé
  14254. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14255. Γöé220  ΓöéSF570000  ΓöéSolid fill character, bottom half       Γöé
  14256. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14257. Γöé221  ΓöéSM650000  ΓöéVertical line, broken                   Γöé
  14258. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14259. Γöé222  ΓöéLI140000  ΓöéI grave capital                         Γöé
  14260. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14261. Γöé223  ΓöéSF600000  ΓöéSolid fill character, top half          Γöé
  14262. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14263. Γöé224  ΓöéLO120000  ΓöéO acute capital                         Γöé
  14264. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14265. Γöé225  ΓöéLS610000  ΓöéSharp s small                           Γöé
  14266. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14267. Γöé226  ΓöéLO160000  ΓöéO circumflex capital                    Γöé
  14268. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14269. Γöé227  ΓöéLO140000  ΓöéO grave capital                         Γöé
  14270. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14271. Γöé228  ΓöéLO190000  ΓöéO tilde small                           Γöé
  14272. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14273. Γöé229  ΓöéLO200000  ΓöéO tilde capital                         Γöé
  14274. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14275. Γöé230  ΓöéSM170000  ΓöéMicro symbol                            Γöé
  14276. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14277. Γöé231  ΓöéLT630000  ΓöéThorn Icelandic small                   Γöé
  14278. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14279. Γöé232  ΓöéLT640000  ΓöéThorn Icelandic capital                 Γöé
  14280. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14281. Γöé233  ΓöéLU120000  ΓöéU acute capital                         Γöé
  14282. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14283. Γöé234  ΓöéLU160000  ΓöéU circumflex capital                    Γöé
  14284. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14285. Γöé235  ΓöéLU140000  ΓöéU grave capital                         Γöé
  14286. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14287. Γöé236  ΓöéLY110000  Γöéy acute small                           Γöé
  14288. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14289. Γöé237  ΓöéLY120000  ΓöéY acute capital                         Γöé
  14290. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14291. Γöé238  ΓöéSM150000  ΓöéOverline                                Γöé
  14292. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14293. Γöé239  ΓöéSD110000  ΓöéAcute accent                            Γöé
  14294. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14295. Γöé240  ΓöéSP320000  ΓöéSyllable hyphen                         Γöé
  14296. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14297. Γöé241  ΓöéSA020000  ΓöéPlus or minus sign                      Γöé
  14298. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14299. Γöé242  ΓöéSM100000  ΓöéDouble underscore                       Γöé
  14300. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14301. Γöé243  ΓöéNF050000  ΓöéThree-quarters                          Γöé
  14302. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14303. Γöé244  ΓöéSM250000  ΓöéParagraph symbol (USA)                  Γöé
  14304. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14305. Γöé245  ΓöéSM240000  ΓöéSection symbol (USA), paragraph (Europe)Γöé
  14306. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14307. Γöé246  ΓöéSA060000  ΓöéDivide sign                             Γöé
  14308. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14309. Γöé247  ΓöéSD410000  ΓöéCedilla (or sedila) accent              Γöé
  14310. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14311. Γöé248  ΓöéSM190000  ΓöéDegree symbol                           Γöé
  14312. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14313. Γöé249  ΓöéSD170000  ΓöéDiaeresis, umlaut accent                Γöé
  14314. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14315. Γöé250  ΓöéSD630000  ΓöéMiddle dot                              Γöé
  14316. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14317. Γöé251  ΓöéND011000  ΓöéOne superscript                         Γöé
  14318. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14319. Γöé252  ΓöéND031000  ΓöéThree superscript                       Γöé
  14320. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14321. Γöé253  ΓöéND021000  ΓöéTwo superscript                         Γöé
  14322. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14323. Γöé254  ΓöéSM470000  ΓöéSolid square, histogram, square bullet  Γöé
  14324. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14325. Γöé255  ΓöéSP300000  ΓöéRequired space                          Γöé
  14326. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14327. Γöé256  ΓöéSC060000  ΓöéPeseta sign                             Γöé
  14328. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14329. Γöé257  ΓöéSM680000  ΓöéStart of line symbol                    Γöé
  14330. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14331. Γöé258  ΓöéSF190000  ΓöéRight box side double to single         Γöé
  14332. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14333. Γöé259  ΓöéSF200000  ΓöéRight box side single to double         Γöé
  14334. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14335. Γöé260  ΓöéSF210000  ΓöéUpper right box corner single to double Γöé
  14336. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14337. Γöé261  ΓöéSF220000  ΓöéUpper right box corner double to single Γöé
  14338. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14339. Γöé262  ΓöéSF270000  ΓöéLower right box corner single to double Γöé
  14340. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14341. Γöé263  ΓöéSF280000  ΓöéLower right box corner double to single Γöé
  14342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14343. Γöé264  ΓöéSF360000  ΓöéLeft box side single to double          Γöé
  14344. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14345. Γöé265  ΓöéSF370000  ΓöéLeft box side double to single          Γöé
  14346. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14347. Γöé266  ΓöéSF450000  ΓöéMiddle box bottom single to double      Γöé
  14348. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14349. Γöé267  ΓöéSF460000  ΓöéMiddle box bottom double to single      Γöé
  14350. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14351. Γöé268  ΓöéSF470000  ΓöéMiddle box top double to single         Γöé
  14352. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14353. Γöé269  ΓöéSF480000  ΓöéMiddle box top single to double         Γöé
  14354. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14355. Γöé270  ΓöéSF490000  ΓöéLower left box corner double to single  Γöé
  14356. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14357. Γöé271  ΓöéSF500000  ΓöéLower left box corner single to double  Γöé
  14358. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14359. Γöé272  ΓöéSF510000  ΓöéUpper left box corner single to double  Γöé
  14360. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14361. Γöé273  ΓöéSF520000  ΓöéUpper left box corner double to single  Γöé
  14362. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14363. Γöé274  ΓöéSF530000  ΓöéBox intersection single to double       Γöé
  14364. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14365. Γöé275  ΓöéSF540000  ΓöéBox intersection double to single       Γöé
  14366. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14367. Γöé276  ΓöéSF580000  ΓöéSolid fill character, left half         Γöé
  14368. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14369. Γöé277  ΓöéSF590000  ΓöéSolid fill character, right half        Γöé
  14370. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14371. Γöé278  ΓöéGA010000  ΓöéAlpha small                             Γöé
  14372. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14373. Γöé279  ΓöéGG020000  ΓöéGamma capital                           Γöé
  14374. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14375. Γöé280  ΓöéGP010000  ΓöéPi small                                Γöé
  14376. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14377. Γöé281  ΓöéGS020000  ΓöéSigma capital                           Γöé
  14378. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14379. Γöé282  ΓöéGS010000  ΓöéSigma small                             Γöé
  14380. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14381. Γöé283  ΓöéGT010000  ΓöéTau small                               Γöé
  14382. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14383. Γöé284  ΓöéGF020000  ΓöéPhi capital                             Γöé
  14384. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14385. Γöé285  ΓöéGT620000  ΓöéTheta capital                           Γöé
  14386. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14387. Γöé286  ΓöéGO320000  ΓöéOmega capital                           Γöé
  14388. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14389. Γöé287  ΓöéGD010000  ΓöéDelta small                             Γöé
  14390. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14391. Γöé288  ΓöéSA450000  ΓöéInfinity symbol                         Γöé
  14392. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14393. Γöé289  ΓöéGF010000  ΓöéPhi small                               Γöé
  14394. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14395. Γöé290  ΓöéGE010000  ΓöéEpsilon small                           Γöé
  14396. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14397. Γöé291  ΓöéSA380000  ΓöéIntersection, logical product           Γöé
  14398. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14399. Γöé292  ΓöéSA480000  ΓöéIndentity symbol, almost equal          Γöé
  14400. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14401. Γöé293  ΓöéSA530000  ΓöéGreater than or equal sign              Γöé
  14402. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14403. Γöé294  ΓöéSA520000  ΓöéLess than or equal sign                 Γöé
  14404. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14405. Γöé295  ΓöéSS260000  ΓöéUpper integral symbol section           Γöé
  14406. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14407. Γöé296  ΓöéSS270000  ΓöéLower integral symbol section           Γöé
  14408. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14409. Γöé297  ΓöéSA700000  ΓöéNearly equals symbol                    Γöé
  14410. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14411. Γöé298  ΓöéSA790000  ΓöéProduct dot                             Γöé
  14412. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14413. Γöé299  ΓöéSA800000  ΓöéRadical symbol                          Γöé
  14414. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14415. Γöé300  ΓöéLN011000  ΓöéN small superscript                     Γöé
  14416. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14417. Γöé301  ΓöéSD310000  ΓöéMacron accent                           Γöé
  14418. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14419. Γöé302  ΓöéSD230000  ΓöéBreve accent                            Γöé
  14420. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14421. Γöé303  ΓöéSD290000  ΓöéOverdot accent (over small Alpha)       Γöé
  14422. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14423. Γöé304  ΓöéSD270000  ΓöéOvercircle accent                       Γöé
  14424. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14425. Γöé305  ΓöéSD250000  ΓöéDouble acute accent                     Γöé
  14426. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14427. Γöé306  ΓöéSD430000  ΓöéOgonek accent                           Γöé
  14428. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14429. Γöé307  ΓöéSD210000  ΓöéCaron accent                            Γöé
  14430. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14431. Γöé308  ΓöéSP190000  ΓöéLeft single quote                       Γöé
  14432. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14433. Γöé309  ΓöéSP200000  ΓöéRight single quote                      Γöé
  14434. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14435. Γöé310  ΓöéSP210000  ΓöéLeft double quotes                      Γöé
  14436. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14437. Γöé311  ΓöéSP220000  ΓöéRight double quotes                     Γöé
  14438. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14439. Γöé312  ΓöéSS680000  ΓöéEndash                                  Γöé
  14440. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14441. Γöé313  ΓöéSM900000  ΓöéEmdash                                  Γöé
  14442. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14443. Γöé314  ΓöéSD150000  ΓöéCircumflex accent                       Γöé
  14444. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14445. Γöé315  ΓöéSD190000  ΓöéTilde accent                            Γöé
  14446. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14447. Γöé316  ΓöéSP260000  ΓöéSingle quote on baseline (German lower) Γöé
  14448. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14449. Γöé317  ΓöéSP230000  ΓöéLeft lower double quotes                Γöé
  14450. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14451. Γöé318  ΓöéSV520000  ΓöéEllipsis                                Γöé
  14452. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14453. Γöé319  ΓöéSM340000  ΓöéDagger footnote indicator               Γöé
  14454. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14455. Γöé320  ΓöéSM350000  ΓöéDouble dagger footnote indicator        Γöé
  14456. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14457. Γöé321  ΓöéSD150100  ΓöéCircumflex accent (over small alpha)    Γöé
  14458. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14459. Γöé322  ΓöéSM560000  ΓöéPermille symbol                         Γöé
  14460. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14461. Γöé323  ΓöéLS220000  ΓöéS caron capital                         Γöé
  14462. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14463. Γöé324  ΓöéSP270000  ΓöéFrench single open quote                Γöé
  14464. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14465. Γöé325  ΓöéLO520000  ΓöéOE ligature capital                     Γöé
  14466. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14467. Γöé326  ΓöéSD190100  ΓöéTilde accent (over small alpha)         Γöé
  14468. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14469. Γöé327  ΓöéSM540000  ΓöéTrademark symbol                        Γöé
  14470. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14471. Γöé328  ΓöéLS210000  Γöés caron small                           Γöé
  14472. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14473. Γöé329  ΓöéSP280000  ΓöéFrench single close quote               Γöé
  14474. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14475. Γöé330  ΓöéLO510000  Γöéoe ligature small                       Γöé
  14476. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14477. Γöé331  ΓöéLY180000  ΓöéY diaeresis capital                     Γöé
  14478. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14479. Γöé332  ΓöéLG230000  Γöég Breve Small                           Γöé
  14480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14481. Γöé333  ΓöéLG240000  ΓöéG Breve Capital                         Γöé
  14482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14483. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14484. Γöé334  ΓöéLI300000  ΓöéI Overdot Capital                       Γöé
  14485. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14486. Γöé335  ΓöéLS410000  Γöés Cedilla Small                         Γöé
  14487. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14488. Γöé336  ΓöéLS420000  ΓöéS Cedilla Capital                       Γöé
  14489. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14490. Γöé337  ΓöéLA230000  Γöéa Breve Small                           Γöé
  14491. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14492. Γöé338  ΓöéLA240000  ΓöéA Breve Capital                         Γöé
  14493. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14494. Γöé339  ΓöéLA430000  Γöéa Ogonek Small                          Γöé
  14495. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14496. Γöé340  ΓöéLA440000  ΓöéA Ogonek Capital                        Γöé
  14497. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14498. Γöé341  ΓöéLC110000  Γöéc Acute Small                           Γöé
  14499. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14500. Γöé342  ΓöéLC120000  ΓöéC Acute Capital                         Γöé
  14501. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14502. Γöé343  ΓöéLC210000  Γöéc Caron Small                           Γöé
  14503. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14504. Γöé344  ΓöéLC220000  ΓöéC Caron Capital                         Γöé
  14505. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14506. Γöé345  ΓöéLD210000  Γöéd Caron Small                           Γöé
  14507. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14508. Γöé346  ΓöéLD220000  ΓöéD Caron Capital                         Γöé
  14509. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14510. Γöé347  ΓöéLD610000  Γöéd Stroke Small                          Γöé
  14511. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14512. Γöé348  ΓöéLE210000  Γöée Caron Small                           Γöé
  14513. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14514. Γöé349  ΓöéLE220000  ΓöéE Caron Capital                         Γöé
  14515. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14516. Γöé350  ΓöéLE430000  Γöée Ogenek Small                          Γöé
  14517. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14518. Γöé351  ΓöéLE440000  ΓöéE Ogonek Capital                        Γöé
  14519. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14520. Γöé352  ΓöéLL110000  Γöél Acute Small                           Γöé
  14521. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14522. Γöé353  ΓöéLL120000  ΓöéL Acute Capital                         Γöé
  14523. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14524. Γöé354  ΓöéLL210000  Γöél Caron Small                           Γöé
  14525. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14526. Γöé355  ΓöéLL220000  ΓöéL Caron Capital                         Γöé
  14527. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14528. Γöé356  ΓöéLL610000  Γöél Stroke Small                          Γöé
  14529. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14530. Γöé357  ΓöéLL620000  ΓöéL Stroke Capital                        Γöé
  14531. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14532. Γöé358  ΓöéLN110000  Γöén Acute Small                           Γöé
  14533. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14534. Γöé359  ΓöéLN120000  ΓöéN Acute Capital                         Γöé
  14535. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14536. Γöé360  ΓöéLN210000  Γöén Caron Small                           Γöé
  14537. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14538. Γöé361  ΓöéLN220000  ΓöéN Caron Capital                         Γöé
  14539. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14540. Γöé362  ΓöéLO250000  Γöéo Double Acute Small                    Γöé
  14541. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14542. Γöé363  ΓöéLO260000  ΓöéO Double Acute Capital                  Γöé
  14543. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14544. Γöé364  ΓöéLR110000  Γöér Acute Small                           Γöé
  14545. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14546. Γöé365  ΓöéLR120000  ΓöéR Acute Capital                         Γöé
  14547. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14548. Γöé366  ΓöéLR210000  Γöér Caron Small                           Γöé
  14549. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14550. Γöé367  ΓöéLR220000  ΓöéR Caron Capital                         Γöé
  14551. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14552. Γöé368  ΓöéLS110000  Γöés Acute Small                           Γöé
  14553. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14554. Γöé369  ΓöéLS120000  ΓöéS Acute Capital                         Γöé
  14555. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14556. Γöé370  ΓöéLT210000  Γöét Caron Small                           Γöé
  14557. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14558. Γöé371  ΓöéLT220000  ΓöéT Caron Capital                         Γöé
  14559. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14560. Γöé372  ΓöéLT410000  Γöét Cedilla Small                         Γöé
  14561. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14562. Γöé373  ΓöéLT420000  ΓöéT Cedilla Capital                       Γöé
  14563. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14564. Γöé374  ΓöéLU250000  Γöéu Double Acute Small                    Γöé
  14565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14566. Γöé375  ΓöéLU260000  ΓöéU Double Acute Capital                  Γöé
  14567. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14568. Γöé376  ΓöéLU270000  Γöéu Overcircle Small                      Γöé
  14569. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14570. Γöé377  ΓöéLU280000  Γöéu Overcircle Capital                    Γöé
  14571. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14572. Γöé378  ΓöéLZ110000  Γöéz Acute Small                           Γöé
  14573. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14574. Γöé379  ΓöéLZ120000  ΓöéZ Acute Capital                         Γöé
  14575. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14576. Γöé380  ΓöéLZ210000  Γöéz Caron Small                           Γöé
  14577. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14578. Γöé381  ΓöéLZ220000  ΓöéZ Caron Capital                         Γöé
  14579. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14580. Γöé382  ΓöéLZ290000  Γöéz Overdot Small                         Γöé
  14581. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14582. Γöé383  ΓöéLZ300000  ΓöéZ Overdot Capital                       Γöé
  14583. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14584.  
  14585.  
  14586. ΓòÉΓòÉΓòÉ 21.3. Fonts Supplied with the OS/2 Operating System ΓòÉΓòÉΓòÉ
  14587.  
  14588. OS/2 outline fonts and Presentation Manager bit map fonts are supplied by the 
  14589. operating system. 
  14590.  
  14591. OS/2 Outline Fonts 
  14592.  
  14593. The following Adobe Type 1 fonts are supplied with OS/2: 
  14594.  
  14595. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14596. ΓöéFamily Name                   ΓöéFace Name                     Γöé
  14597. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14598. ΓöéTimes New Roman               ΓöéTimes New Roman               Γöé
  14599. Γöé                              ΓöéTimes New Roman Bold          Γöé
  14600. Γöé                              ΓöéTimes New Roman Bold Italic   Γöé
  14601. Γöé                              ΓöéTimes New Roman Italic        Γöé
  14602. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14603. ΓöéHelvetica                     ΓöéHelvetica                     Γöé
  14604. Γöé                              ΓöéHelvetica Bold                Γöé
  14605. Γöé                              ΓöéHelvetica Bold Italic         Γöé
  14606. Γöé                              ΓöéHelvetica Italic              Γöé
  14607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14608. ΓöéCourier                       ΓöéCourier                       Γöé
  14609. Γöé                              ΓöéCourier Bold                  Γöé
  14610. Γöé                              ΓöéCourier Bold Italic           Γöé
  14611. Γöé                              ΓöéCourier Italic                Γöé
  14612. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14613. ΓöéSymbol                        ΓöéSymbol                        Γöé
  14614. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14615.  
  14616. The Courier, Tms Rmn, and Swiss family fonts that were supplied with OS/2 
  14617. release 1.1 and 1.2 are no longer supplied.  Using one of the old names results 
  14618. in one of the new fonts listed above being used, as follows: 
  14619.  
  14620.  Old Family/Face Name     Font Used. 
  14621.  Roman/Tms Rmn            Times New Roman 
  14622.  Swiss/Helv               Helvetica 
  14623.  
  14624.  These fonts are provided in an efficient binary format for use by the OS/2 
  14625.  Adobe Type Manager. They are also provided in standard Type 1 format (PFB and 
  14626.  AFM) for use with the OS/2 PostScript printer device driver. 
  14627.  
  14628.  Presentation Manager Bit Map Fonts 
  14629.  
  14630.  The following tables list all system bit map fonts available using the 
  14631.  Graphics Programming Interface. The first table applies to hardware that does 
  14632.  not conform to the International Standards Organization (ISO) 9241. (See 
  14633.  International Standards Organization (ISO) 9241 for more information on ISO 
  14634.  9241.) The second table lists the fonts supplied with OS/2 for IBM hardware 
  14635.  that does conform to ISO 9241. 
  14636.  
  14637.  During system installation, the operating system determines the type of 
  14638.  display adapter available on your computer and installs only the fonts which 
  14639.  match the device resolution. Since additional device bit map fonts may be 
  14640.  available on specific devices, you may have to install the correct bit map 
  14641.  fonts if you change your display device after the operating system is 
  14642.  installed. 
  14643.  
  14644.  Fonts Supplied for ISO 9241 Non-Conforming Hardware 
  14645.  
  14646.  The following information for each font is included in the table: 
  14647.  
  14648.  Points   This is the point size of the font, on a device whose resolution 
  14649.           matches that of the font, (see "Device" below). 
  14650.  
  14651.  Ave Wid  This is the average width in pels of alphabetic characters weighted 
  14652.           according to US English letter frequencies. 
  14653.  
  14654.  Max Wid  This is the maximum width in pels of all characters in the font. This 
  14655.           field is not necessarily the maximum width of any character in the 
  14656.           code page. It could be used to ensure that the horizontal space 
  14657.           allocated on a display or printer is big enough to handle any 
  14658.           character. 
  14659.  
  14660.  Height   This is the height in pels of the font.  This is the minimum number 
  14661.           of rows of pels needed to output any character of the font on a given 
  14662.           baseline. This field may be larger than necessary for a given code 
  14663.           page. It could be used to ensure that the vertical space allocated on 
  14664.           a display or printer is big enough to handle any character. 
  14665.  
  14666.  Device   This is the X and Y resolution in pels per inch at which the font is 
  14667.           intended to be used. Only those fonts which match the device 
  14668.           resolution of the installed display driver are available on the 
  14669.           system. If the installed display is changed, the install process will 
  14670.           reinstall the proper font sets for the new adapter. The IBM devices 
  14671.           whose device drivers report these resolutions are: 
  14672.  
  14673.           96 x 48              CGA 
  14674.           96 x 72              EGA 
  14675.           96 x 96              VGA and XGA (in 640 x 480 mode) 
  14676.           120 x 120            8514/A and XGA (in 1024 x 768 mode) 
  14677.  
  14678.           Note:  These values are approximate representations of the actual 
  14679.                  resolution, which in the case of displays depends on which 
  14680.                  monitor is attached. Consequently the point size of characters 
  14681.                  on the screen is also approximate. 
  14682.  The following table applies to hardware that does not conform to ISO 9241. 
  14683.  
  14684.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14685.   ΓöéFamily ΓöéFace Name      ΓöéPoints ΓöéAve WidΓöéMax WidΓöéHeightΓöéDevice Γöé
  14686.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14687.   ΓöéCourierΓöéCourier        Γöé8      Γöé8      Γöé8      Γöé7     Γöé96x48  Γöé
  14688.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14689.   Γöé       Γöé               Γöé       Γöé8      Γöé8      Γöé10    Γöé96x72  Γöé
  14690.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14691.   Γöé       Γöé               Γöé       Γöé8      Γöé8      Γöé13    Γöé96x96  Γöé
  14692.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14693.   Γöé       Γöé               Γöé       Γöé9      Γöé9      Γöé16    Γöé120x120Γöé
  14694.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14695.   Γöé       Γöé               Γöé10     Γöé9      Γöé9      Γöé8     Γöé96x48  Γöé
  14696.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14697.   Γöé       Γöé               Γöé       Γöé9      Γöé9      Γöé12    Γöé96x72  Γöé
  14698.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14699.   Γöé       Γöé               Γöé       Γöé9      Γöé9      Γöé16    Γöé96x96  Γöé
  14700.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14701.   Γöé       Γöé               Γöé       Γöé12     Γöé12     Γöé20    Γöé120x120Γöé
  14702.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14703.   Γöé       Γöé               Γöé12     Γöé12     Γöé12     Γöé10    Γöé96x48  Γöé
  14704.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14705.   Γöé       Γöé               Γöé       Γöé12     Γöé12     Γöé15    Γöé96x72  Γöé
  14706.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14707.   Γöé       Γöé               Γöé       Γöé12     Γöé12     Γöé20    Γöé96x96  Γöé
  14708.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14709.   Γöé       Γöé               Γöé       Γöé15     Γöé15     Γöé25    Γöé120x120Γöé
  14710.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14711.   ΓöéSystem ΓöéSystem         Γöé8      Γöé6      Γöé20     Γöé8     Γöé96x48  Γöé
  14712.   ΓöéProportΓöéProportional   Γöé       Γöé       Γöé       Γöé      Γöé       Γöé
  14713.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14714.   Γöé       Γöé               Γöé10     Γöé6      Γöé20     Γöé12    Γöé96x96  Γöé
  14715.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14716.   Γöé       Γöé               Γöé10     Γöé6      Γöé20     Γöé16    Γöé96x96  Γöé
  14717.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14718.   Γöé       Γöé               Γöé10     Γöé8      Γöé23     Γöé20    Γöé120x120Γöé
  14719.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14720.   Γöé       Γöé               Γöé11     Γöé10     Γöé23     Γöé23    Γöé120x120Γöé
  14721.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14722.   ΓöéSystem ΓöéSystem         Γöé8      Γöé8      Γöé8      Γöé8     Γöé96x48  Γöé
  14723.   ΓöéMono-  ΓöéMonospaced     Γöé       Γöé       Γöé       Γöé      Γöé       Γöé
  14724.   Γöéspaced Γöé               Γöé       Γöé       Γöé       Γöé      Γöé       Γöé
  14725.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14726.   Γöé       Γöé               Γöé10     Γöé8      Γöé8      Γöé12    Γöé96x72  Γöé
  14727.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14728.   Γöé       Γöé               Γöé10     Γöé8      Γöé8      Γöé16    Γöé96x96  Γöé
  14729.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14730.   Γöé       Γöé               Γöé10     Γöé9      Γöé9      Γöé20    Γöé120x120Γöé
  14731.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14732.   ΓöéHelv   ΓöéHelv           Γöé8      Γöé5      Γöé13     Γöé6     Γöé96x48  Γöé
  14733.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14734.   Γöé       Γöé               Γöé       Γöé5      Γöé13     Γöé10    Γöé96x72  Γöé
  14735.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14736.   Γöé       Γöé               Γöé       Γöé5      Γöé13     Γöé13    Γöé96x96  Γöé
  14737.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14738.   Γöé       Γöé               Γöé       Γöé6      Γöé14     Γöé16    Γöé120x120Γöé
  14739.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14740.   Γöé       Γöé               Γöé10     Γöé6      Γöé15     Γöé8     Γöé96x48  Γöé
  14741.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14742.   Γöé       Γöé               Γöé       Γöé6      Γöé14     Γöé12    Γöé96x72  Γöé
  14743.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14744.   Γöé       Γöé               Γöé       Γöé6      Γöé14     Γöé16    Γöé96x96  Γöé
  14745.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14746.   Γöé       Γöé               Γöé       Γöé7      Γöé20     Γöé20    Γöé120x120Γöé
  14747.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14748.   Γöé       Γöé               Γöé12     Γöé7      Γöé17     Γöé10    Γöé96x48  Γöé
  14749.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14750.   Γöé       Γöé               Γöé       Γöé7      Γöé17     Γöé15    Γöé96x72  Γöé
  14751.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14752.   Γöé       Γöé               Γöé       Γöé7      Γöé17     Γöé20    Γöé96x96  Γöé
  14753.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14754.   Γöé       Γöé               Γöé       Γöé9      Γöé21     Γöé25    Γöé120x120Γöé
  14755.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14756.   Γöé       Γöé               Γöé14     Γöé8      Γöé21     Γöé12    Γöé96x48  Γöé
  14757.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14758.   Γöé       Γöé               Γöé       Γöé8      Γöé21     Γöé18    Γöé96x72  Γöé
  14759.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14760.   Γöé       Γöé               Γöé       Γöé8      Γöé21     Γöé24    Γöé96x96  Γöé
  14761.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14762.   Γöé       Γöé               Γöé       Γöé11     Γöé26     Γöé29    Γöé120x120Γöé
  14763.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14764.   Γöé       Γöé               Γöé18     Γöé11     Γöé26     Γöé15    Γöé96x48  Γöé
  14765.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14766.   Γöé       Γöé               Γöé       Γöé10     Γöé26     Γöé22    Γöé96x72  Γöé
  14767.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14768.   Γöé       Γöé               Γöé       Γöé11     Γöé26     Γöé29    Γöé96x96  Γöé
  14769.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14770.   Γöé       Γöé               Γöé       Γöé13     Γöé34     Γöé36    Γöé120x120Γöé
  14771.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14772.   Γöé       Γöé               Γöé24     Γöé14     Γöé35     Γöé19    Γöé96x48  Γöé
  14773.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14774.   Γöé       Γöé               Γöé       Γöé14     Γöé35     Γöé28    Γöé96x72  Γöé
  14775.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14776.   Γöé       Γöé               Γöé       Γöé14     Γöé35     Γöé37    Γöé96x96  Γöé
  14777.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14778.   Γöé       Γöé               Γöé       Γöé18     Γöé45     Γöé46    Γöé120x120Γöé
  14779.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14780.   ΓöéTms RmnΓöéTms Rmn        Γöé8      Γöé4      Γöé12     Γöé6     Γöé96x48  Γöé
  14781.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14782.   Γöé       Γöé               Γöé       Γöé4      Γöé13     Γöé10    Γöé96x72  Γöé
  14783.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14784.   Γöé       Γöé               Γöé       Γöé4      Γöé12     Γöé13    Γöé96x96  Γöé
  14785.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14786.   Γöé       Γöé               Γöé       Γöé5      Γöé14     Γöé16    Γöé120x120Γöé
  14787.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14788.   Γöé       Γöé               Γöé10     Γöé6      Γöé15     Γöé8     Γöé96x48  Γöé
  14789.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14790.   Γöé       Γöé               Γöé       Γöé5      Γöé14     Γöé12    Γöé96x72  Γöé
  14791.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14792.   Γöé       Γöé               Γöé       Γöé5      Γöé14     Γöé16    Γöé96x96  Γöé
  14793.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14794.   Γöé       Γöé               Γöé       Γöé7      Γöé19     Γöé20    Γöé120x120Γöé
  14795.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14796.   Γöé       Γöé               Γöé12     Γöé7      Γöé18     Γöé10    Γöé96x48  Γöé
  14797.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14798.   Γöé       Γöé               Γöé       Γöé6      Γöé18     Γöé15    Γöé96x72  Γöé
  14799.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14800.   Γöé       Γöé               Γöé       Γöé6      Γöé16     Γöé19    Γöé96x96  Γöé
  14801.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14802.   Γöé       Γöé               Γöé       Γöé8      Γöé23     Γöé23    Γöé120x120Γöé
  14803.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14804.   Γöé       Γöé               Γöé14     Γöé7      Γöé21     Γöé11    Γöé96x48  Γöé
  14805.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14806.   Γöé       Γöé               Γöé       Γöé7      Γöé21     Γöé16    Γöé96x72  Γöé
  14807.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14808.   Γöé       Γöé               Γöé       Γöé7      Γöé20     Γöé21    Γöé96x96  Γöé
  14809.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14810.   Γöé       Γöé               Γöé       Γöé10     Γöé26     Γöé27    Γöé120x120Γöé
  14811.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14812.   Γöé       Γöé               Γöé18     Γöé10     Γöé26     Γöé14    Γöé96x48  Γöé
  14813.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14814.   Γöé       Γöé               Γöé       Γöé10     Γöé26     Γöé20    Γöé96x72  Γöé
  14815.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14816.   Γöé       Γöé               Γöé       Γöé10     Γöé26     Γöé27    Γöé96x96  Γöé
  14817.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14818.   Γöé       Γöé               Γöé       Γöé12     Γöé34     Γöé33    Γöé120x120Γöé
  14819.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14820.   Γöé       Γöé               Γöé24     Γöé14     Γöé35     Γöé18    Γöé96x48  Γöé
  14821.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14822.   Γöé       Γöé               Γöé       Γöé13     Γöé35     Γöé26    Γöé96x72  Γöé
  14823.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14824.   Γöé       Γöé               Γöé       Γöé13     Γöé35     Γöé35    Γöé96x96  Γöé
  14825.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14826.   Γöé       Γöé               Γöé       Γöé16     Γöé46     Γöé43    Γöé120x120Γöé
  14827.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14828.  
  14829.  Fonts Supplied for ISO 9241 Conforming Hardware 
  14830.  
  14831.  The following table lists the fonts and sizes that have been tested and 
  14832.  certified as passing the ISO 9241 black text on white background criteria for 
  14833.  the three IBM displays that conform to the standard. These displays are: 
  14834.  
  14835.      9515 - A 14 inch XGA display. 
  14836.      9517 - A 17 inch XGA display. 
  14837.      9518 - A 14 inch VGA display. 
  14838.  
  14839.  See International Standards Organization (ISO) 9241 for information on ISO 
  14840.  9241. 
  14841.  
  14842.  The following information about each font is also included in the table: 
  14843.  
  14844.  P        The point size of the font. 
  14845.  AW       The average character width in pels in the font. 
  14846.  MW       The maximum character width in pels in the font. 
  14847.  HE       The height in pels of the font (maximum baseline extent). 
  14848.  Device   The X and Y resolution in pels per inch on the device the font is 
  14849.           intended to be used. The IBM devices whose device drivers report 
  14850.           these resolutions are: 
  14851.           96 x 96              VGA and XGA (in 640 x 480 mode) 
  14852.           120 x 120            XGA (in 1024 x 768 mode) 
  14853.  
  14854.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14855.   ΓöéFamily  ΓöéFace NamΓöéP   AW  MW  HE  ΓöéDevice   Γöé9515  9517  9518 Γöé
  14856.   ΓöéName    Γöé        Γöé                Γöé         Γöé                 Γöé
  14857.   Γöé        ΓöéFace NamΓöé                Γöé         Γöé                 Γöé
  14858.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14859.   ΓöéCourier ΓöéCourier Γöé 8   8   8  13  Γöé 96   96 ΓöéNo    No    No   Γöé
  14860.   Γöé        ΓöéISO     Γöé 8  10  10  16  Γöé120  120 ΓöéNo    No    n/a  Γöé
  14861.   Γöé        Γöé        Γöé 9   8   8  15  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14862.   Γöé        Γöé        Γöé10  10  10  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14863.   Γöé        Γöé        Γöé10  12  12  20  Γöé120  120 ΓöéNo    No    n/a  Γöé
  14864.   Γöé        Γöé        Γöé12  12  12  20  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14865.   Γöé        Γöé        Γöé12  15  15  25  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14866.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14867.   ΓöéHelv    ΓöéHelv ISOΓöé 8   5  13  13  Γöé 96   96 ΓöéNo    No    No   Γöé
  14868.   Γöé        Γöé        Γöé 8   7  14  16  Γöé120  120 ΓöéNo    No    n/a  Γöé
  14869.   Γöé        Γöé        Γöé 9   6  13  15  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14870.   Γöé        Γöé        Γöé 9   8  20  21  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14871.   Γöé        Γöé        Γöé10   7  14  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14872.   Γöé        Γöé        Γöé10   9  20  21  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14873.   Γöé        Γöé        Γöé12   9  17  20  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14874.   Γöé        Γöé        Γöé12  10  21  25  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14875.   Γöé        Γöé        Γöé14  10  21  24  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14876.   Γöé        Γöé        Γöé14  12  26  29  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14877.   Γöé        Γöé        Γöé18  12  26  29  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14878.   Γöé        Γöé        Γöé18  15  34  36  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14879.   Γöé        Γöé        Γöé24  14  34  36  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14880.   Γöé        Γöé        Γöé24  19  45  46  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14881.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14882.   ΓöéTms Rmn ΓöéTms Rmn Γöé 8   5  12  13  Γöé 96   96 ΓöéNo    No    No   Γöé
  14883.   Γöé        ΓöéISO     Γöé 8   7  15  16  Γöé120  120 ΓöéNo    No    n/a  Γöé
  14884.   Γöé        Γöé        Γöé 9   6  12  15  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14885.   Γöé        Γöé        Γöé10   7  14  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14886.   Γöé        Γöé        Γöé10   8  17  19  Γöé120  120 ΓöéNo    Yes   n/a  Γöé
  14887.   Γöé        Γöé        Γöé12   8  16  19  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14888.   Γöé        Γöé        Γöé12  10  23  22  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14889.   Γöé        Γöé        Γöé14   9  23  22  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14890.   Γöé        Γöé        Γöé14  11  26  27  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14891.   Γöé        Γöé        Γöé18  11  26  27  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14892.   Γöé        Γöé        Γöé18  14  34  34  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14893.   Γöé        Γöé        Γöé24  14  34  34  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14894.   Γöé        Γöé        Γöé24  17  46  43  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14895.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14896.   ΓöéSystem  ΓöéSystem  Γöé 9   6  13  15  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14897.   ΓöéPropor- ΓöéPropor- Γöé10   6  20  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14898.   Γöétional  Γöétional  Γöé10   8  23  20  Γöé120  120 ΓöéNo    Yes   n/a  Γöé
  14899.   Γöé        Γöé        Γöé12  10  23  22  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14900.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14901.   ΓöéSystem  ΓöéSystem  Γöé10   8   8  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14902.   ΓöéMono-   ΓöéMono-   Γöé10  10  10  21  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14903.   Γöéspaced  Γöéspaced  Γöé                Γöé         Γöé                 Γöé
  14904.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14905.  
  14906.  See International Standards Organization (ISO) 9241 for more information on 
  14907.  ISO 9241. 
  14908.  
  14909.  
  14910. ΓòÉΓòÉΓòÉ 21.3.1. International Standards Organization (ISO) 9241 ΓòÉΓòÉΓòÉ
  14911.  
  14912. ISO 9241 is an international standard covering health and safety in the work 
  14913. place for users of visual display terminals. Part 3 of this standard covers 
  14914. clarity and legibility of text displayed on computer screens; it places 
  14915. requirements on minimum sizes and luminance contrast. The presence of the 
  14916. FM_SEL_ISO9241_TESTED flag in the FONTMETRICS structure indicates that the font 
  14917. has been tested for ISO compliance. 
  14918.  
  14919. Note:  While the fonts were primarily tested for meeting the ISO standard, they 
  14920.        have also been designed to meet the German standard DIN 66 234. Where 
  14921.        the two standards differ, the fonts have been designed to meet the 
  14922.        stricter requirement. 
  14923.  
  14924.  The FM_ISO_xxx flags indicate the results of the test on the three IBM 
  14925.  displays that conform to the standard. These are the IBM 9515, 9517, and 9518 
  14926.  color displays at the supported resolutions of 640 x 480 and 1024 x 768. To 
  14927.  determine whether a non-IBM display complies with ISO 9241, contact the 
  14928.  manufacturer. The current display type can be established using VioGetConfig. 
  14929.  
  14930.  In order for applications to meet the standard, they have to ensure that they 
  14931.  use only fonts that have been tested and passed. You can determine this by 
  14932.  examining the new FM_SEL_ISO9241_TESTED flag in the fsSelection parameter in 
  14933.  the FONTMETRICS structure, the FM_ISO_xxx flags and the sXDeviceRes and 
  14934.  sYDeviceRes fields in the structure. 
  14935.  
  14936.  See Fonts Supplied with the OS/2 Operating System for the table describing ISO 
  14937.  9241 compliant fonts. 
  14938.  
  14939.  
  14940. ΓòÉΓòÉΓòÉ 21.4. Initialization File Information ΓòÉΓòÉΓòÉ
  14941.  
  14942. Initialization files include information about printers, queues, and system 
  14943. preferences set by the user from the control panel.  Applications can query 
  14944. this information by using the PrfQueryProfileData, PrfQueryProfileInt, 
  14945. PrfQueryProfileSize, and PrfQueryProfileString functions. 
  14946.  
  14947. All data in initialization files is accessed by a two-level hierarchy of 
  14948. application name, and key name within an application.  Presentation Manager 
  14949. system data is keyed off "applications" that have names starting with PM_. 
  14950.  
  14951. The application name/key name combinations that applications may need to use 
  14952. are listed below, together with the definition of the corresponding data. 
  14953.  
  14954. Note:  Information that is prefixed with PM_SPOOLERxxxx can not always be 
  14955.        modified directly:  The spooler validates all attempts to write 
  14956.        information to the INI file that it depends on. 
  14957.  
  14958.  Application name      "PM_ControlPanel" 
  14959.  Key name              "Beep" 
  14960.  Type                  integer 
  14961.  Content/value         1 or 0. 
  14962.  
  14963.  Application name      "PM_ControlPanel" 
  14964.  Key name              "LogoDisplayTime" 
  14965.  Type                  integer 
  14966.  Content/value         -1 <= time <= 32767 milliseconds. 
  14967.                           Indefinite display       -1 
  14968.                           No display                0 
  14969.                           Timed display            >0 
  14970.  
  14971.  Application name      "PM_ControlPanel" 
  14972.  Key name              "cxDoubleClick" 
  14973.  Type                  integer 
  14974.  Content/value         SV_CXDBLCLK size in pels. 
  14975.  
  14976.  Application name      "PM_ControlPanel" 
  14977.  Key name              "cyDoubleClick" 
  14978.  Type                  integer 
  14979.  Content/value         SV_CYDBLCLK size in pels. 
  14980.  
  14981.  Application name      "PM_ControlPanel" 
  14982.  Key name              "cxMotionStart" 
  14983.  Type                  integer 
  14984.  Content/value         SV_CXMOTIONSTART size in pels. 
  14985.  
  14986.  Application name      "PM_ControlPanel" 
  14987.  Key name              "cyMotionStart" 
  14988.  Type                  integer 
  14989.  Content/value         SV_CYMOTIONSTART size in pels. 
  14990.  
  14991.  Application name      "PM_National" 
  14992.  Key name              "iCountry" 
  14993.  Type                  integer 
  14994.  Content/value         country code: 
  14995.                           Arabic                  785 
  14996.                           Australian               61 
  14997.                           Belgian                  32 
  14998.                           Canadian-French           2 
  14999.                           Danish                   45 
  15000.                           Finnish                 358 
  15001.                           French                   33 
  15002.                           German                   49 
  15003.                           Hebrew                  972 
  15004.                           Italian                  39 
  15005.                           Japanese                 81 
  15006.                           Korean                   82 
  15007.                           Latin-American            3 
  15008.                           Netherlands              31 
  15009.                           Norwegian                47 
  15010.                           Portuguese              351 
  15011.                           Simpl. Chinese           86 
  15012.                           Spanish                  34 
  15013.                           Swedish                  46 
  15014.                           Swiss                    41 
  15015.                           Trad. Chinese            88 
  15016.                           UK-English               44 
  15017.                           US-English                1 
  15018.                           Other country             0. 
  15019.  
  15020.  Application name      "PM_National" 
  15021.  Key name              "iDate" 
  15022.  Type                  integer 
  15023.  Content/value         0=MDY; 1=DMY; 2=YMD. 
  15024.  
  15025.  Application name      "PM_National" 
  15026.  Key name              "iCurrency" 
  15027.  Type                  integer 
  15028.  Content/value         Values have the following meanings: 
  15029.                           0        Prefix, no separator 
  15030.                           1        Suffix, no separator 
  15031.                           2        Prefix, 1 character separator 
  15032.                           3        Suffix, 1 character separator. 
  15033.  
  15034.  Application name      "PM_National" 
  15035.  Key name              "iDigits" 
  15036.  Type                  integer 
  15037.  Content/value         n = number of decimal digits. 
  15038.  
  15039.  Application name      "PM_National" 
  15040.  Key name              "iTime" 
  15041.  Type                  integer 
  15042.  Content/value         0 = 12-hour clock; 1 = 24-hour clock. 
  15043.  
  15044.  Application name      "PM_National" 
  15045.  Key name              "iLzero" 
  15046.  Type                  integer 
  15047.  Content/value         0 = no leading zero; 1 = leading zero. 
  15048.  
  15049.  Application name      "PM_National" 
  15050.  Key name              "s1159" 
  15051.  Type                  string 
  15052.  Content/value         "am" for example. 3 chars max. 
  15053.  
  15054.  Application name      "PM_National" 
  15055.  Key name              "s2359" 
  15056.  Type                  string 
  15057.  Content/value         "pm" for example. 3 chars max. 
  15058.  
  15059.  Application name      "PM_National" 
  15060.  Key name              "sCurrency" 
  15061.  Type                  string 
  15062.  Content/value         "$" for example. 3 chars max. 
  15063.  
  15064.  Application name      "PM_National" 
  15065.  Key name              "sThousand" 
  15066.  Type                  string 
  15067.  Content/value         "," for example. 1 char max. 
  15068.  
  15069.  Application name      "PM_National" 
  15070.  Key name              "sDecimal" 
  15071.  Type                  string 
  15072.  Content/value         "." for example. 1 char max. 
  15073.  
  15074.  Application name      "PM_National" 
  15075.  Key name              "sDate" 
  15076.  Type                  string 
  15077.  Content/value         "/" for example. 1 char max. 
  15078.  
  15079.  Application name      "PM_National" 
  15080.  Key name              "sTime" 
  15081.  Type                  string 
  15082.  Content/value         ":" for example. 1 char max. 
  15083.  
  15084.  Application name      "PM_National" 
  15085.  Key name              "sList" 
  15086.  Type                  string 
  15087.  Content/value         "," for example. 1 char max. 
  15088.  
  15089.  Application name      PM_Fonts 
  15090.  Key name              <Font module name> 
  15091.  Type                  string 
  15092.  Content/value         fully-qualified drive:\path\filename.ext. 
  15093.  
  15094.  Application name      "PM_SPOOLER" 
  15095.  Key name              "QUEUE" 
  15096.  Type                  string 
  15097.  Content/value         <Queue name>; 
  15098.  
  15099.                        where: <Queue name> is the name of the default queue 
  15100.                        (might be NULL). This must be a key name for the 
  15101.                        PM_SPOOLER_QUEUE application. 
  15102.  
  15103.  Application name      "PM_SPOOLER" 
  15104.  Key name              " PRINTER" 
  15105.  Type                  string 
  15106.  Content/value         <Printer name>; 
  15107.  
  15108.                        where: <Printer name> is the name of the default printer 
  15109.                        (might be NULL). 
  15110.  
  15111.  Note:  Use the SplQueryDevice and SplQueryQueue functions to retrieve the 
  15112.         spooler configuration data. 
  15113.  
  15114.  
  15115. ΓòÉΓòÉΓòÉ 21.5. Interchange File Format ΓòÉΓòÉΓòÉ
  15116.  
  15117. A metafile is a file in which graphics are stored. The file is 
  15118. application-created, and it contains the graphics orders generated from those 
  15119. GPI calls that are valid in a metafile. Metafiled graphics can be reused by the 
  15120. application that created them. They can also be made available to other 
  15121. applications at the same, or at a different, workstation. 
  15122.  
  15123. This section describes the restrictions which apply when generating the 
  15124. metafile and gives detail of the overall structure. For the graphics orders 
  15125. descriptions, see "Graphics Orders" in the Graphics Programming Interface 
  15126. Programming Reference. 
  15127.  
  15128.  
  15129. ΓòÉΓòÉΓòÉ 21.5.1. Metafile Restrictions ΓòÉΓòÉΓòÉ
  15130.  
  15131. The following restrictions apply to the generation of all metafiles, and also 
  15132. to the generation of a PM_Q_STD print file to a OD_QUEUED device: 
  15133.  
  15134.      If GpiWCBitBlt or GpiBitBlt is used to copy a bit map to a device context 
  15135.       in an application, the application should not delete that bit map handle 
  15136.       with GpiDeleteBitmap before the device context is closed (metafile is 
  15137.       closed). 
  15138.  
  15139.      GpiSetPS must not be used. 
  15140.  
  15141.      GpiSetPageViewport is ignored. 
  15142.  
  15143.  The following section lists some general rules that must be followed when 
  15144.  creating a metafile that is to be acceptable to SAA-conforming 
  15145.  implementations, or replayed into a presentation space that is in 
  15146.  draw-and-retain or retain mode (see "GpiSetDrawingMode" in Graphics 
  15147.  Programming Interface Programming Reference). 
  15148.  
  15149.      These items must be established or defaulted before any drawing occurs to 
  15150.       the graphics presentation space, and not changed subsequently: 
  15151.  
  15152.         -  The graphics field (GpiSetGraphicsField). For an SAA-conforming 
  15153.            metafile, the graphics field must be defaulted or set to no 
  15154.            clipping. 
  15155.         -  The code page for the default character set (GpiSetCp). 
  15156.         -  The color table or palette (GpiCreateLogColorTable or 
  15157.            GpiCreatePalette). The size of the color table must not exceed 31KB 
  15158.            (KB equals 1024 bytes). 
  15159.         -  The default viewing transform (GpiSetDefaultViewMatrix). 
  15160.         -  The setting of the draw controls (GpiSetDrawControl). DCTL_DISPLAY 
  15161.            must be defaulted or set ON. 
  15162.         -  The default values of attributes (see "GpiSetDefAttrs" in the 
  15163.            Graphics Programming Interface Programming Reference), viewing 
  15164.            limits (see "GpiSetDefViewingLimits" in the Graphics Programming 
  15165.            Interface Programming Reference), primitive tag (see "GpiSetDefTag" 
  15166.            in the Graphics Programming Interface Programming Reference) and arc 
  15167.            parameters (see "GpiSetDefArcParams" in the Graphics Programming 
  15168.            Interface Programming Reference). 
  15169.  
  15170.      These calls should not be used: 
  15171.  
  15172.         -  GpiBitBlt 
  15173.         -  GpiDeleteSetId (note that this means that local identifiers cannot 
  15174.            be used again within the picture) 
  15175.         -  GpiErase 
  15176.         -  GpiExcludeClipRectangle 
  15177.         -  GpiIntersectClipRectangle 
  15178.         -  GpiOffsetClipRegion 
  15179.         -  GpiPaintRegion 
  15180.         -  GpiResetPS 
  15181.         -  GpiSetClipRegion 
  15182.         -  GpiSetPel 
  15183.         -  GpiSetPS 
  15184.         -  DevEscape (for an escape which is metafiled). 
  15185.  
  15186.      GpiCreateLogFont must not redefine a local identifier that has previously 
  15187.       been used within the picture. 
  15188.  
  15189.      The metafile context must not be reassociated. 
  15190.  
  15191.      If a bit map is used as the source of a GpiWCBitBlt operation, or as an 
  15192.       area-fill pattern, it must not be modified or deleted (GpiDeleteBitmap) 
  15193.       before the metafile is closed. 
  15194.  
  15195.      Only these foreground mixes must be used (see "GpiSetMix" in the Graphics 
  15196.       Programming Interface Programming Reference): 
  15197.  
  15198.         -  FM_DEFAULT 
  15199.         -  FM_OR 
  15200.         -  FM_OVERPAINT 
  15201.         -  FM_LEAVEALONE 
  15202.  
  15203.      Only these background mixes must be used (see "GpiSetBackMix" in the 
  15204.       Graphics Programming Interface Programming Reference): 
  15205.  
  15206.         -  BM_DEFAULT 
  15207.         -  BM_OVERPAINT 
  15208.         -  BM_LEAVEALONE 
  15209.  
  15210.      If palettes are used (see "GpiCreatePalette" in the Graphics Programming 
  15211.       Interface Programming Reference): the palette that is metafiled is the 
  15212.       one in force when the metafile device context is dissociated from the 
  15213.       (final) presentation space. If the palette is changed during the course 
  15214.       of the picture (using GpiSetPaletteEntries), it must therefore only be 
  15215.       with incremental additions. 
  15216.  
  15217.  Note:  There is no restriction concerning the use of primitives outside 
  15218.         segments. These are metafiled in segment(s) with zero identifier. 
  15219.  
  15220.  
  15221. ΓòÉΓòÉΓòÉ 21.5.2. Metafile Data Format ΓòÉΓòÉΓòÉ
  15222.  
  15223. This section describes the format of the data in a metafile, as it would be 
  15224. stored in an OS/2 disk file. 
  15225.  
  15226. Metafile data is stored as a sequence of structured fields. Each structured 
  15227. field starts with an eight-byte header consisting of a two-byte length field 
  15228. and a three-byte identifier field. These are followed by a one-byte flags field 
  15229. and a two-byte segment sequence number field. 
  15230.  
  15231. The length field contains a count of the total number of bytes in the 
  15232. structured field, including the length field. The identifier field uniquely 
  15233. identifies the type of the structured field. 
  15234.  
  15235. The flags and segment sequence number fields are always zero. 
  15236.  
  15237. Following the header are positional parameters that are optional and dependent 
  15238. on the particular structured field. 
  15239.  
  15240. Following the positional parameters are non-positional parameters called 
  15241. triplets. These are self-defining parameters and consist of a one-byte length 
  15242. field, followed by a one-byte identifier field, followed by the data of the 
  15243. parameter. 
  15244.  
  15245. The length field contains a count of the total number of bytes in the triplet, 
  15246. including the length and identifier fields. The identifier field identifies 
  15247. uniquely the type of the triplet. 
  15248.  
  15249. A metafile is structured into a number of different functional components; for 
  15250. example, document and graphics object. Each component comprises a number of 
  15251. structured fields, and is delimited by "begin-component" and "end-component" 
  15252. structured fields. Structured fields marked as required, inside an optional 
  15253. structured field bracket, are required if the containing bracket is present. 
  15254.  
  15255. The graphics orders that describe a picture occur in the graphics data 
  15256. structured field. See Structured Field Formats for more information. 
  15257.  
  15258.  
  15259. ΓòÉΓòÉΓòÉ 21.5.3. Structured Field Formats ΓòÉΓòÉΓòÉ
  15260.  
  15261. Following is the format of the various structured fields: 
  15262.  
  15263. Begin Document 
  15264.  
  15265. Structured Field Introducer (BDT): required 
  15266.  
  15267.  0-1       Length 0xn+1E 
  15268.  2-4       BDT 0xD3A8A8 
  15269.  5         Flags 0x00 
  15270.  6-7       Segment sequence number 0x0000 
  15271.  
  15272.  Parameters 
  15273.  
  15274.  0-7       Document name C'0000 0001' 
  15275.  8         Architecture version 0x00 
  15276.  9         Document security 0x00 
  15277.  
  15278.  Triplets (all required) 
  15279.  
  15280.  0         Length 0x05 
  15281.  1         Triplet Id 0x18 
  15282.  2         Interchange set type 0x03 (resource document) 
  15283.  3-4       Base set definition 0x0C00 (level 12, version 0) 
  15284.  
  15285.  0         Length 0x06 
  15286.  1         Triplet Id 0x01 
  15287.  2-5       GCID 
  15288.  
  15289.  0         Length 0xn+1 
  15290.  1         Triplet Id 0x65 
  15291.  2-n       Comment, used for metafile description of up to 252 bytes. 
  15292.  
  15293.  Begin Resource Group (BRG): required 
  15294.  
  15295.  Structured Field Introducer 
  15296.  
  15297.  0-1       Length 0x0010 
  15298.  2-4       BRG 0xD3A8C6 
  15299.  5         Flags 0x00 
  15300.  6-7       Segment sequence number 0x0000 
  15301.  
  15302.  Parameters 
  15303.  
  15304.  0-7       Resource group name  C'0000 0002' 
  15305.  
  15306.  Begin Color Attribute (BCA) Table: required 
  15307.  
  15308.  Structured Field Introducer 
  15309.  
  15310.  0-1       Length 0x0010 
  15311.  2-4       BCA 0xD3A877 
  15312.  5         Flags 0x00 
  15313.  6-7       Segment sequence number 0x0000 
  15314.  
  15315.  Parameters 
  15316.  
  15317.  0-7       Color table name C'0000 0004' 
  15318.  
  15319.  Color Attribute Table (CAT): required 
  15320.  
  15321.  Structured Field Introducer 
  15322.  
  15323.  0-1       Length 0xn+8 
  15324.  2-4       CAT 0xD3B077 
  15325.  5         Flags 0x00 
  15326.  6-7       Segment sequence number 0x0000 
  15327.  
  15328.  Parameters 
  15329.  
  15330.  Base Part (required) 
  15331.  
  15332.  0         Flags 
  15333.            0         Reserved B'0' 
  15334.            1         Reset 
  15335.                      B'0'       Do not reset to default 
  15336.                      B'1'       Do reset to default 
  15337.            2-7       Reserved B'000000' 
  15338.  1         Reserved 0x00 
  15339.  2         LCTID 0x00 
  15340.  
  15341.  Element list(s) (triple generating) are mutually-exclusive.  One or other is 
  15342.  required. 
  15343.  
  15344.  Element List (repeating) 
  15345.  
  15346.  0         Length of this parameter 
  15347.  1         Type 0x01: element list 
  15348.  2         Flags 0x00: reserved 
  15349.  3         Format 
  15350.            0x01       RGB 
  15351.  4-6       Starting Index 
  15352.            (Top Byte Truncated) 
  15353.  7         Size of RGB component1 0x08 
  15354.  8         Size of RGB component2 0x08 
  15355.  9         Size of RGB component3 0x08 
  15356.  10        Number of bytes in each following color triple 0x04 
  15357.  11-m      Color triples 
  15358.  
  15359.  Triple Generating 
  15360.  
  15361.  0         Length of this parameter 0x0A 
  15362.  1         Type 0x02: bit generator 
  15363.  2         Flags 
  15364.            0         ABFlag 
  15365.                      B'0'       Normal 
  15366.            1-7       Reserved B'0000000' 
  15367.  3         Format 
  15368.            0x01           RGB 
  15369.            4-6            Starting index (top byte truncated) 
  15370.  7         Size of RGB component1 0x08 
  15371.  8         Size of RGB component2 0x08 
  15372.  9         Size of RGB component3 0x08 
  15373.  End Color Attribute (ECA) Table: required 
  15374.  
  15375.  Structured Field Introducer 
  15376.  
  15377.  0-1       Length 0x0010 
  15378.  2-4       ECA 0xD3A977 
  15379.  5         Flags 0x00 
  15380.  6-7       Segment sequence number 0x0000 
  15381.  
  15382.  Parameters 
  15383.  
  15384.  0-7       Color table name C'0000 0004' 
  15385.  
  15386.  Begin Image Object (BIM): optional, repeating 
  15387.  
  15388.  Structured Field Introducer 
  15389.  
  15390.  0-1       Length 0x0010 
  15391.  2-4       BIM 0xD3A8FB 
  15392.  5         Flags 0x00 
  15393.  6-7       Segment sequence number 0x0000 
  15394.  
  15395.  Parameters 
  15396.  
  15397.  0-7       Image name C'xxxx xxxx' 
  15398.  
  15399.  Begin Resource Group (BRG): optional 
  15400.  
  15401.  Structured Field Introducer 
  15402.  
  15403.  0-1       Length 0x0010 
  15404.  2-4       BRG 0xD3A8C6 
  15405.  5         Flags 0x00 
  15406.  6-7       Segment sequence number 0x0000 
  15407.  
  15408.  Parameters 
  15409.  
  15410.  0-7       Resource group name C'xxxx xxxx' 
  15411.  
  15412.  Color Attribute Table (BCA): optional 
  15413.  
  15414.  Structured Field Introducer 
  15415.  
  15416.  0-1       Length 0x0010 
  15417.  2-4       BCA 0xD3A877 
  15418.  5         Flags 0x00 
  15419.  6-7       Segment sequence number 0x0000 
  15420.  
  15421.  Parameters 
  15422.  
  15423.  0-7       Color table name C'xxxx xxxx' 
  15424.  
  15425.  Color Attribute Table (CAT): required 
  15426.  
  15427.  Structured Field Introducer 
  15428.  
  15429.  0-1       Length 
  15430.  2-4       CAT 0xD3B077 
  15431.  5         Flags 0x00 
  15432.  6-7       Segment sequence number 0x0000 
  15433.  
  15434.  Parameters 
  15435.  
  15436.  Base Part 
  15437.  
  15438.  0         Flags 0x00 
  15439.  1         Reserved 0x00 
  15440.  2         LUTID 
  15441.  
  15442.  Element List (repeating) 
  15443.  
  15444.  0         Length of this parameter 
  15445.  1         Type 0x01: element list 
  15446.  2         Flags 0x00: reserved 
  15447.  3         Format 0x01: RGB 
  15448.  4-6       Starting index 
  15449.            (top byte truncated) 
  15450.  7         Size of RGB component1 0x08 
  15451.  8         Size of RGB component2 0x08 
  15452.  9         Size of RGB component3 0x08 
  15453.  10        Number of bytes in each following color triple 0x03 
  15454.  11-n      Color triples 
  15455.  
  15456.  End Color Attribute Table (ECA): required if BCA present 
  15457.  
  15458.  Structured Field Introducer 
  15459.  
  15460.  0-1       Length 0x0010 
  15461.  2-4       ECA 0xD3A977 
  15462.  5         Flags 0x00 
  15463.  6-7       Segment sequence number 0x0000 
  15464.  
  15465.  Parameters 
  15466.  
  15467.  0-7       Color Table name C'xxxx xxxx' 
  15468.  
  15469.  End Resource Group (ERG): required if BRG present 
  15470.  
  15471.  Structured Field Introducer 
  15472.  
  15473.  0-1       Length 0x0010 
  15474.  2-4       ERG 0xD3A9C6 
  15475.  5         Flags 0x00 
  15476.  6-7       Segment sequence number 0x0000 
  15477.  
  15478.  Parameters 
  15479.  
  15480.  0-7       Resource Group name C'xxxx xxxx' 
  15481.  
  15482.  Begin Object Environment Group (BOG): optional 
  15483.  
  15484.  Structured Field Introducer 
  15485.  
  15486.  0-1       Length 0x0010 
  15487.  2-4       BOG 0xD3A8C7 
  15488.  5         Flags 0x00 
  15489.  6-7       Segment sequence number 0x0000 
  15490.  
  15491.  Parameters 
  15492.  
  15493.  0-7       Object environment group name C'xxxx xxxx' 
  15494.  
  15495.  Map Color Attribute (MCA) Table: required 
  15496.  
  15497.  Structured Field Introducer 
  15498.  
  15499.  0-1       Length 0x001A 
  15500.  2-4       MCA 0xD3AB77 
  15501.  5         Flags 0x00 
  15502.  6-7       Segment sequence number 0x0000 
  15503.  
  15504.  Parameters 
  15505.  
  15506.  0-1       Length 
  15507.  
  15508.  Triplet (required) 
  15509.  
  15510.  0         Length 0x0C 
  15511.  1         Triplet type: fully qualified name 0x02 
  15512.  2         Type: ref to Begin Resource Object 0x84 
  15513.  3         ID 0x00 
  15514.  4-11      Color table name C'xxxx xxxx' 
  15515.  
  15516.  lcid (required) 
  15517.  
  15518.  0         Length 0x04 
  15519.  1         Triplet type: resource local ID 0x24 
  15520.  2         Type color table resource 0x07 
  15521.  3         Local identifier (LUT-ID) 0x01 
  15522.  
  15523.  End Object Environment Group (EOG): required if BOG present 
  15524.  
  15525.  Structured Field Introducer 
  15526.  
  15527.  0-1       Length 0x0010 
  15528.  2-4       EOG 0xD3A9C7 
  15529.  5         Flags 0x00 
  15530.  6-7       Segment sequence number 0x0000 
  15531.  
  15532.  Parameters 
  15533.  
  15534.  0-7       Object Environment Group name C'xxxx xxxx' 
  15535.  
  15536.  Image Data Descriptor (IDD): required 
  15537.  
  15538.  Structured Field Introducer 
  15539.  
  15540.  0-1       Length 0x0011 
  15541.  2-4       IDD 0xD3A6FB 
  15542.  5         Flags 0x00 
  15543.  6-7       Segment sequence number 0x0000 
  15544.  
  15545.  Parameters 
  15546.  
  15547.  0         Unit of measure: 
  15548.            0x00       tens of inches 
  15549.            0x01       tens of centimeters 
  15550.  1-2       X resolution image points / UOM 
  15551.  3-4       Y resolution image points / UOM 
  15552.  5-6       X extent of image PS 
  15553.  7-8       Y extent of image PS 
  15554.  
  15555.  Image Picture Data (IPD): required 
  15556.  
  15557.  Structured Field Introducer 
  15558.  
  15559.  0-1       Length 
  15560.  2-4       IPD 0xD3EEFB 
  15561.  5         Flags 0x00 
  15562.  6-7       Segment sequence number 0x0000 
  15563.  
  15564.  Parameters (all required and in this order, except that only one of Image 
  15565.  LUT-ID and IDE structure is present) 
  15566.  
  15567.  Begin Segment 
  15568.  
  15569.  0         Type 0x70: begin segment 
  15570.  1         Length of following 0x00 
  15571.  
  15572.  Begin Image Content 
  15573.  
  15574.  0         Type 0x91: Begin Image Content 
  15575.  1         Length of following 0x01 
  15576.  2         Format 0xFF 
  15577.  
  15578.  Image Size 
  15579.  
  15580.  0         Type 0x94: image size 
  15581.  1         Length of following 0x09 
  15582.  2         Units of measure 0x02: logical 
  15583.  3-4       Horizontal resolution 
  15584.  5-6       Vertical resolution 
  15585.  7-8       Height in pels 
  15586.  9-10      Width in pels 
  15587.  
  15588.  Image Encoding 
  15589.  
  15590.  0         Type 0x95: image encoding 
  15591.  1         Length of following 0x02 
  15592.  2         Compression algorithm 0x03: none 
  15593.  3         Recording algorithm 0x03: bottom-to-top 
  15594.  
  15595.  Image IDE-Size 
  15596.  
  15597.  0         Type 0x96: image IDE-Size 
  15598.  1         Length of following 0x01 
  15599.  2         Number of bits per element 
  15600.  
  15601.  Image LUT-ID (For bit maps with other than 24 bits per pel) 
  15602.  
  15603.  0         Type 0x97 Image LUT-ID 
  15604.  1         Length of following 0x01 
  15605.  2         LUT-ID 
  15606.  
  15607.  IDE Structure (For bit maps with 24 bits per pel) 
  15608.  
  15609.  0         Type 0x9B: IDE structure 
  15610.  1         Length of following 0x08 
  15611.  2         Flags: 
  15612.            0         ABFlag 
  15613.                      B'0'       Normal (Additive) 
  15614.            1-7       Reserved B'0000000' 
  15615.  3         Format 
  15616.            0x01       RGB 
  15617.  4-6       Reserved 0x000000 
  15618.  7         Size of element 1 
  15619.  8         Size of element 2 
  15620.  9         Size of element 3 
  15621.  
  15622.  Image Picture Data (IPD): required, repeating 
  15623.  
  15624.  Structured Field Introducer 
  15625.  
  15626.  0-1       Length 
  15627.  2-4       IPD 0xD3EEFB 
  15628.  5         Flags 0x00 
  15629.  6-7       Segment sequence number 0x0000 
  15630.  
  15631.  Parameters 
  15632.  
  15633.  Image Data 
  15634.  
  15635.  0-1       Type 0xFE92: image data 
  15636.  2-3       Length of following 
  15637.  4-n       Image data (scan lines of bit maps) 
  15638.  
  15639.  End Image Content (required, only present in last Image Picture Data) 
  15640.  
  15641.  0         Type 0x93: End Image Content 
  15642.  1         Length of following 0x00 
  15643.  
  15644.  End Segment (required, only present in last Image Picture Data) 
  15645.  
  15646.  0         Type 0x71: end segment 
  15647.  1         Length of following 0x00 
  15648.  
  15649.  End Image Object (EIM): required if BIM present 
  15650.  
  15651.  Structured Field Introducer 
  15652.  
  15653.  0-1       Length 0x0010 
  15654.  2-4       EIM 0xD3A9FB 
  15655.  5         Flags 0x00 
  15656.  6-7       Segment sequence number 0x0000 
  15657.  
  15658.  Parameters 
  15659.  
  15660.  0-7       Image name C'xxxx xxxx' 
  15661.  
  15662.  Begin Graphics Object (BGR): required 
  15663.  
  15664.  Structured Field Introducer 
  15665.  
  15666.  0-1       Length 0x0010 
  15667.  2-4       BGR 0xD3A8BB 
  15668.  5         Flags 0x00 
  15669.  6-7       Segment sequence number 0x0000 
  15670.  
  15671.  Parameters 
  15672.  
  15673.  0-7       Graphics object name C'0000 0007' 
  15674.  
  15675.  Begin Object Environment Group (BOG): optional 
  15676.  
  15677.  Structured Field Introducer 
  15678.  
  15679.  0-1       Length 0x0010 
  15680.  2-4       LOG 0xD3A8C7 
  15681.  5         Flags 0x00 
  15682.  6-7       Segment sequence number 0x0000 
  15683.  
  15684.  Parameters 
  15685.  
  15686.  0-7       Object Environment Group name C'0000 0007' 
  15687.  
  15688.  Map Color Attribute Table (MCA): required 
  15689.  
  15690.  Structured Field Introducer 
  15691.  
  15692.  0-1       Length 0x0016 
  15693.  2-4       MCA 0xD3AB77 
  15694.  5         Flags 0x00 
  15695.  6-7       Segment sequence number 0x0000 
  15696.  
  15697.  Parameters 
  15698.  
  15699.  0-1       Length 
  15700.  
  15701.  Triplet (required) 
  15702.  
  15703.  0         Length 0x0C 
  15704.  1         Triplet type: fully qualified name 0x02 
  15705.  2         Type: ref to Begin Resource Object 0x84 
  15706.  3         ID 0x00 
  15707.  4-11      Color table name C'0000 0004' 
  15708.  
  15709.  Map Coded Font (MCF): required, for default font 
  15710.  
  15711.  Structured Field Introducer 
  15712.  
  15713.  0-1       Length 0x20 
  15714.  2-4       MCF 0xD3AB8A 
  15715.  5         Flags 0x00 
  15716.  6-7       Segment sequence number 0x0000 
  15717.  
  15718.  Parameters 
  15719.  
  15720.  0-1       Length 
  15721.  
  15722.  Triplets (required) 
  15723.  
  15724.  Font name 
  15725.  
  15726.  0         Length 0x0C 
  15727.  1         Triplet type: fully qualified name 0x02 
  15728.  2         Type: ref to coded font 0x84 
  15729.  3         ID 0x00 
  15730.  4-11      Coded font name: C'nnxx xxxx' 
  15731.            where n is 0xFF 
  15732.  
  15733.  lcid 
  15734.  
  15735.  0         Length 0x04 
  15736.  1         Triplet type: Resource Local ID 0x24 
  15737.  2         Type: Coded Font Resource 0x05 
  15738.  3         Local identifier (LCID) 0x00 
  15739.  
  15740.  Font Binary GCID 
  15741.  
  15742.  0         Length 0x06 
  15743.  1         Triplet type: Font Binary GCID 0x20 
  15744.  2-5       GCID 
  15745.  
  15746.  Map Coded Font (MCF): optional, repeating, for loaded fonts 
  15747.  
  15748.  Structured Field Introducer 
  15749.  
  15750.  0-1       Length 0x58 
  15751.  2-4       MCF 0xD3AB8A 
  15752.  5         Flags 0x00 
  15753.  6-7       Segment sequence number 0x0000 
  15754.  
  15755.  Parameters 
  15756.  
  15757.  0-1       Length 
  15758.  
  15759.  Triplets (required) 
  15760.  
  15761.  Font name 
  15762.  
  15763.  0         Length 0x0C 
  15764.  1         Triplet type: fully qualified name 0x02 
  15765.  2         Type: ref to coded font 0x84 
  15766.  3         ID 0x00 
  15767.  4-11      Coded font name 
  15768.  
  15769.  lcid 
  15770.  
  15771.  0         Length 0x04 
  15772.  1         Triplet type: Resource Local ID 0x24 
  15773.  2         Type: coded font resource 0x05 
  15774.  3         Local identifier (LCID) 
  15775.  
  15776.  Font Attributes 
  15777.  
  15778.  0         Length 0x14 
  15779.  1         Triplet type: Font Descriptor 0x1F 
  15780.  2         Weight Class 
  15781.  3         Width Class 
  15782.  4-5       Font Height 
  15783.  6-7       Char Width 
  15784.  8         Descript Flags 
  15785.  9         Usage Codes 
  15786.  10        Family 
  15787.  11        Activity Class 
  15788.  12        Font Quality 
  15789.  13-14     CAP Height 
  15790.  15-16     X Height 
  15791.  17-18     Line Density 
  15792.  19        Use Flags 
  15793.  
  15794.  Font Binary GCID 
  15795.  
  15796.  0         Length 0x06 
  15797.  1         Triplet type: Font Binary GCID 0x20 
  15798.  2-5       GCID 
  15799.  
  15800.  Font Typeface 
  15801.  
  15802.  0         Length 0x24 
  15803.  1         Triplet type: fully qualified name 0x02 
  15804.  2         Type: ref to font typeface 0x08 
  15805.  3         ID 0x00 
  15806.  4-35      Font typeface C'xxx..xxx' 
  15807.  
  15808.  Map Data Resource (MDR): optional, repeating 
  15809.  
  15810.  Structured Field Introducer 
  15811.  
  15812.  0-1       Length 0x1D 
  15813.  2-4       MDR 0xD3ABC3 
  15814.  5         Flags 0x00 
  15815.  6-7       Segment sequence number 0x0000 
  15816.  
  15817.  Parameters 
  15818.  
  15819.  0-1       Length 
  15820.  
  15821.  Triplets (required) 
  15822.  
  15823.  Bit-map Name 
  15824.  
  15825.  0         Length 0x0C 
  15826.  1         Triplet type: fully qualified name 0x02 
  15827.  2         Type: ref to Image Object 0x84 
  15828.  3         ID 0x00 
  15829.  4-11      Image name C'xxxx xxxx' 
  15830.  
  15831.  Extended Resource lcid 
  15832.  
  15833.  0         Length 0x07 
  15834.  1         Triplet type: Extended Resource Local ID 0x22 
  15835.  2         Type: Image Resource 0x10 
  15836.  3-6       Bit-map handle 
  15837.  
  15838.  End Object Environment Group (EOG): required if BOG present 
  15839.  
  15840.  Structured Field Introducer 
  15841.  
  15842.  0-1       Length 0x0010 
  15843.  2-4       EOG 0xD3A9C7 
  15844.  5         Flags 0x00 
  15845.  6-7       Segment sequence number 0x0000 
  15846.  
  15847.  Parameters 
  15848.  
  15849.  0-7       Object Environment Group name C'0000 0007' 
  15850.  
  15851.  Graphics Data Descriptor (GDD): required 
  15852.  
  15853.  Structured Field Introducer 
  15854.  
  15855.  0-1       Length 0xnnnn 
  15856.  2-4       GDD 0xD3A6BB 
  15857.  5         Flags 0x00 
  15858.  6-7       Segment sequence number 0x0000 
  15859.  
  15860.  Parameters (all required and in this order) 
  15861.  
  15862.  0         0xF7 Specify GVM Subset 
  15863.  1         Length of following data 0x07 
  15864.  2         0xB0 drawing order subset 
  15865.  3-4       0x0000 
  15866.  5         0x23 Level 3.2 
  15867.  6         0x01 Version 1 
  15868.  7         Length of following field 0x01 
  15869.  8         Coordinate types in data 
  15870.            0x04      Intel16 
  15871.            0x05      Intel32 
  15872.  
  15873.  0         0xF6 Set Picture Descriptor 
  15874.  1         Length of following data 
  15875.  2         Flags 
  15876.            0         B'0' Picture in 2D 
  15877.            1         Picture Dimensions 
  15878.                      B'0'       Not absolute (PU_ARBITRARY PS) 
  15879.                      B'1'       Absolute (example: PU_TWIPS PS) 
  15880.            2         Picture Elements 
  15881.                      B'0'       Not pels 
  15882.                      B'1'       Pels (PU_PELS PS) 
  15883.                                 (Bit 1 must also be set) 
  15884.            3-7       B'00000' 
  15885.  3         0x00 Reserved 
  15886.  4         Picture frame size coordinate type 
  15887.            0x04       Intel16 
  15888.            0x05       Intel32 
  15889.  5         UnitsOfMeasure 
  15890.            0x00       Ten inches 
  15891.            0x01       Decimeter 
  15892.  6-11 or 6-17(2 or 4 bytes) Resolution. 
  15893.                 GPS Units / UOM on x axis 
  15894.                 GPS Units / UOM on y axis 
  15895.                 GPS Units / UOM on z axis 
  15896.  12-23 or 18-41(2 or 4 bytes) Window Size. 
  15897.                 GPS X left, X right 
  15898.                 GPS Y bottom, Y top 
  15899.                 GPS Z near, Z far 
  15900.  
  15901.  0         0x21 Set Current Defaults 
  15902.  1         Length of following data 
  15903.  2         Set Default Parameter Format 0x08 
  15904.  3-4       Mask 0xE000 
  15905.  5         Names 0x8F 
  15906.  6         Coordinates 
  15907.            0x00       Picture in 2D 
  15908.  7         Transforms 
  15909.            0x04       Intel16 
  15910.            0x05       Intel32 
  15911.  8         Geometrics 
  15912.            0x04       Intel16 
  15913.            0x05       Intel32 
  15914.  
  15915.  0         0x21 Set Current Defaults 
  15916.  1         Length of following data 
  15917.  2         Set default viewing transform 0x07 
  15918.  3-4       Mask 0xCC0C 
  15919.  5         Names 0x8F 
  15920.  6-n       M11, M12, M21, M22, M41, M42  Matrix elements 
  15921.  
  15922.  0         0x21 Set Current Defaults 
  15923.  1         Length of following data 
  15924.  2         Set default line attributes 0x01 
  15925.  3-4       Mask - OR of as many of the following bits as are required: 
  15926.            0x8000       Line type 
  15927.            0x4000       Line width 
  15928.            0x2000       Line end 
  15929.            0x1000       Line join 
  15930.            0x0800       Stroke width 
  15931.            0x0008       Line color 
  15932.            0x0002       Line mix 
  15933.  5         Flags 
  15934.            0x0F       Set indicated default attributes to initial values. (Data 
  15935.                       field is not present in this instance). 
  15936.            0x8F       Set indicated default attributes to specified values. 
  15937.  6-n       Data - data values as required, in the following order if present. 
  15938.            No space is reserved for attributes for which the corresponding mask 
  15939.            flag was not set. 
  15940.            (1 byte)       - Line type 
  15941.            (1 byte)       - Line width 
  15942.            (1 byte)       - Line end 
  15943.            (1 byte)       - Line join 
  15944.            (G bytes)      - Stroke width 
  15945.            (4 bytes)      - Line color 
  15946.            (1 byte)       - Line mix (G=2 or 4 depending on the Geometrics 
  15947.            parameter of Set Default Parameter Format) 
  15948.  
  15949.  0         0x21 Set Current Defaults 
  15950.  1         Length of following data 
  15951.  2         Set Default Character Attributes 0x02 
  15952.  3-4       Mask - OR of as many of the following bits as are required: 
  15953.            0x8000       Character angle 
  15954.            0x4000       Character box 
  15955.            0x2000       Character direction 
  15956.            0x1000       Character precision 
  15957.            0x0800       Character set 
  15958.            0x0400       Character shear 
  15959.            0x0040       Character break extra 
  15960.            0x0020       Character extra 
  15961.            0x0008       Character color 
  15962.            0x0004       Character background color 
  15963.            0x0002       Character mix 
  15964.            0x0001       Character background mix 
  15965.  5         Flags 
  15966.            0x0F      Set indicated default attributes to initial values.  (Data 
  15967.                      field is not present in this case). 
  15968.            0x8F      Set indicated default attributes to specified values. 
  15969.  6-n       Data - data values as required, in the following order if present. 
  15970.            No space is reserved for attributes for which the corresponding Mask 
  15971.            flag was not set. 
  15972.            (2*G bytes)          - Character angle 
  15973.            (2*G + 4 bytes)      - Character box 
  15974.            (1 byte)             - Character direction 
  15975.            (1 byte)             - Character precision 
  15976.            (1 byte)             - Character set 
  15977.            (2*G bytes)          - Character shear 
  15978.            (4 bytes)            - Character break extra 
  15979.            (4 bytes)            - Character extra 
  15980.            (4 bytes)            - Character color 
  15981.            (4 bytes)            - Character background color 
  15982.            (1 byte)             - Character mix 
  15983.            (1 byte)             - Character background mix (G=2 or 4 depending 
  15984.            on the Geometrics parameter of Set Default Parameter Format) 
  15985.  
  15986.  0         0x21 Set Current Defaults 
  15987.  1         Length of following data 
  15988.  2         Set Default Marker Attributes 0x03 
  15989.  3-4       Mask - OR of as many of the following bits as are required: 
  15990.            0x4000       Marker box 
  15991.            0x1000       Marker precision 
  15992.            0x0800       Marker set 
  15993.            0x0100       Marker symbol 
  15994.            0x0008       Marker color 
  15995.            0x0004       Marker background color 
  15996.            0x0002       Marker mix 
  15997.            0x0001       Marker background mix 
  15998.  5         Flags 
  15999.            0x0F       Set indicated default attributes to initial values. 
  16000.                       (Data field is not present in this instance) 
  16001.            0x8F       Set indicated default attributes to specified values. 
  16002.  6-n       Data - data values as required, in this order if present. 
  16003.            No space is reserved for attributes for which the corresponding Mask 
  16004.            flag was not set. 
  16005.            (2*G bytes)         - Marker box 
  16006.            (1 byte)            - Marker precision 
  16007.            (1 byte)            - Marker set 
  16008.            (1 byte)            - Marker symbol 
  16009.            (4 bytes)           - Marker color 
  16010.            (4 bytes)           - Marker background color 
  16011.            (1 byte)            - Marker mix 
  16012.            (1 byte)            - Marker background mix (G=2 or 4 depending on 
  16013.            the Geometrics parameter of Set Default Parameter Format) 
  16014.  
  16015.  0         0x21 Set Current Defaults 
  16016.  1         Length of following data 
  16017.  2         Set Default Pattern Attributes 0x04 
  16018.  3-4       Mask - OR of as many of the following bits as are required: 
  16019.            0x0800       Pattern set 
  16020.            0x0100       Pattern symbol 
  16021.            0x0080       Pattern reference point 
  16022.            0x0008       Pattern color 
  16023.            0x0004       Pattern background color 
  16024.            0x0002       Pattern mix 
  16025.            0x0001       Pattern background mix 
  16026.            5            Flags 
  16027.                         0x0F       Set indicated default attributes to initial 
  16028.                                    values. 
  16029.                                    (Data field is not present in this instance) 
  16030.                         0x8F       Set indicated default attributes to 
  16031.                                    specified values. 
  16032.            6-n          Data - data values as required, in this order if 
  16033.                         present. 
  16034.                         No space is reserved for attributes for which the 
  16035.                         corresponding Mask flag was not set. 
  16036.                         (1 byte)          - Pattern set 
  16037.                         (1 byte)          - Pattern symbol 
  16038.                         (2*G bytes)       - Pattern reference point 
  16039.                         (4 bytes)         - Pattern color 
  16040.                         (4 bytes)         - Pattern background color 
  16041.                         (1 byte)          - Pattern mix 
  16042.                         (1 byte)          - Pattern background mix (G=2 or 4 
  16043.                         depending on the Geometrics parameter of Set Default 
  16044.                         Parameter Format) 
  16045.  
  16046.            0            0x21 Set Current Defaults 
  16047.            1            Length of following data 
  16048.            2            Set Default Image Attributes 0x06 
  16049.            3-4          Mask - OR of as many of these bits as are required: 
  16050.                         0x0008       Image color 
  16051.                         0x0004       Image background color 
  16052.                         0x0002       Image mix 
  16053.                         0x0001       Image background mix 
  16054.            5            Flags 
  16055.                         0x0F       Set indicated default attributes to initial 
  16056.                                    values. (Data field is not present in this 
  16057.                                    instance) 
  16058.                         0x8F       Set indicated default attributes to 
  16059.                                    specified values. 
  16060.            6-n          Data - data values as required, in this order if 
  16061.                         present. 
  16062.                         No space is reserved for attributes for which the 
  16063.                         corresponding Mask flag was not set. 
  16064.                         (4 bytes)       - Image color 
  16065.                         (4 bytes)       - Image background color 
  16066.                         (1 byte)        - Image mix 
  16067.                         (1 byte)        - Image background mix 
  16068.  
  16069.            0            0x21 Set Current Defaults 
  16070.            1            Length of following data 
  16071.            2            Set Default Viewing Window 0x05 
  16072.            3-4          Mask - OR of as many of the following bits as are 
  16073.                         required: 
  16074.                         0x8000       x left limit 
  16075.                         0x4000       x right limit 
  16076.                         0x2000       y bottom limit 
  16077.                         0x1000       y top limit 
  16078.            5            Flags 
  16079.                         0x0F       Set indicated default attributes to initial 
  16080.                                    values. 
  16081.                                    (Data field is not present in this case). 
  16082.                         0x8F       Set indicated default attributes to 
  16083.                                    specified values. 
  16084.            6-n          Data - data values as required, in the following order 
  16085.                         if present. 
  16086.                         No space is reserved for attributes for which the 
  16087.                         corresponding Mask flag was not set. 
  16088.                         (2*G bytes)       - x left limit 
  16089.                         (2*G bytes)       - x right limit 
  16090.                         (2*G bytes)       - y bottom limit 
  16091.                         (2*G bytes)       - y top limit (G=2 or 4 depending on 
  16092.                         the Geometrics parameter of Set Default Parameter 
  16093.                         Format) 
  16094.  
  16095.            0            0x21 Set Current Defaults 
  16096.            1            Length of following data 
  16097.            2            Set Default Arc Parameters 0x0B 
  16098.            3-4          Mask - OR of as many of the following bits as are 
  16099.                         required: 
  16100.                         0x8000       P value 
  16101.                         0x4000       Q value 
  16102.                         0x2000       R value 
  16103.                         0x1000       S value 
  16104.            5            Flags 
  16105.                         0x0F       Set indicated default attributes to initial 
  16106.                                    values. 
  16107.                                    (Data field is not present in this case). 
  16108.                         0x8F       Set indicated default attributes to 
  16109.                                    specified values. 
  16110.            6-n          Data - data values as required, in the following order 
  16111.                         if present. 
  16112.                         No space is reserved for attributes for which the 
  16113.                         corresponding Mask flag was not set. 
  16114.                         (G bytes)       - P value 
  16115.                         (G bytes)       - Q value 
  16116.                         (G bytes)       - R value 
  16117.                         (G bytes)       - S value (G=2 or 4 depending on the 
  16118.                         Geometrics parameter of Set Default Parameter Format) 
  16119.  
  16120.            0            0x21 Set Current Defaults 
  16121.            1            Length of following data 
  16122.            2            Set Default Pick Identifier 0x0C 
  16123.            3-4          Mask - OR of as many of the following bits as are 
  16124.                         required: 
  16125.                         0x8000       Pick identifier 
  16126.            5            Flags 
  16127.                         0x0F       Set indicated default attributes to initial 
  16128.                                    values. 
  16129.                                    (Data field is not present in this case). 
  16130.                         0x8F       Set indicated default attributes to 
  16131.                                    specified values. 
  16132.            6-n          Data - data values as required, in the following order 
  16133.                         if present. 
  16134.                         No space is reserved for attributes for which the 
  16135.                         corresponding Mask flag was not set. 
  16136.                         (4 bytes)       - Pick identifier 
  16137.  
  16138.            0            0xE7 Set Bit-map Identifier 
  16139.            1            Length of following data 0x07 
  16140.            2-3          Usage Flags 0x8000 
  16141.            4-7          Bit-map handle 
  16142.            8            Lcid 
  16143.  
  16144.  Graphics Data (GAD): optional, repeating 
  16145.  
  16146.  Structured Field Introducer 
  16147.  
  16148.  0-1       Length 0xn+9 
  16149.  2-4       GAD 0xD3EEBB 
  16150.  5         Flags 0x00 
  16151.  6-7       Segment sequence number 0x0000 
  16152.  Parameters (maximum length in one structured field is 32759) 
  16153.  
  16154.  Graphics Segment (optional, repeating) 
  16155.  
  16156.  Segment data (including the Begin Segment parameter) can be split at any point 
  16157.  between successive Graphics Data structured fields. 
  16158.  
  16159.  0         0x70 Begin Segment 
  16160.  1         Length of following data 0x0E 
  16161.  2-5       Segment identifier 
  16162.  6         Segment attributes (1) 
  16163.            0 B'1'       Invisible 
  16164.            1 B'1'       Propagate invisibility 
  16165.            2 B'1'       Detectable 
  16166.            3 B'1'       Propagate detectability 
  16167.            6 B'1'       Dynamic 
  16168.            7 B'1'       Fast chaining 
  16169.  7         Segment attributes (2) 
  16170.            0 B'1'       Non-chained 
  16171.            3 B'1'       Prolog 
  16172.  8-9       Segment data length (low-order 2 bytes) 
  16173.  10-13     Reserved 
  16174.  14-15     Segment data length (high-order 2 bytes) 
  16175.  16-n      Graphics orders (see the Graphics Programming Interface Programming 
  16176.            Reference) 
  16177.  
  16178.  End Graphics Object (EGR) 
  16179.  
  16180.  Structured Field Introducer 
  16181.  
  16182.  0-1       Length 0x0010 
  16183.  2-4       EGR 0xD3A9BB 
  16184.  5         Flags 0x00 
  16185.  6-7       Segment sequence number 0x0000 
  16186.  
  16187.  Parameters 
  16188.  
  16189.  0-7       Graphics object name C'0000 0007' 
  16190.  
  16191.  End Resource Group (ERG): required 
  16192.  
  16193.  Structured Field Introducer 
  16194.  
  16195.  0-1       Length 0x0010 
  16196.  2-4       ERG 0xD3A9C6 
  16197.  5         Flags 0x00 
  16198.  6-7       Segment sequence number 0x0000 
  16199.  
  16200.  Parameters 
  16201.  
  16202.  0-7       Resource Group name  C'0000 0002' 
  16203.  
  16204.  End Document (EDT): required 
  16205.  
  16206.  Structured Field Introducer 
  16207.  
  16208.  0-1       Length 0x0010 
  16209.  2-4       EDT 0xD3A9A8 
  16210.  5         Flags 0x00 
  16211.  6-7       Segment sequence number 0x0000 
  16212.  
  16213.  Parameters 
  16214.  
  16215.  0-7       Document name  C'0000 0001' 
  16216.  
  16217.  
  16218. ΓòÉΓòÉΓòÉ 21.6. Resource Files ΓòÉΓòÉΓòÉ
  16219.  
  16220. This section describes the syntax for the resource language using railroad 
  16221. syntax, and describes the formats used. 
  16222.  
  16223. Resource files are used to build dialog templates, menu templates, accelerator 
  16224. tables, extended attribute association tables, keyboard scancode mapping 
  16225. tables, keyboard names and fonts. The files must be compiled before they can be 
  16226. used by application programs. 
  16227.  
  16228. How to Read the Syntax Definitions 
  16229.  
  16230. Throughout this reference, syntax is described using the following structure. 
  16231.  
  16232.      Read the syntax diagrams from left to right, from top to bottom, 
  16233.       following the path of the line. 
  16234.  
  16235.       The ΓöÇΓöÇΓöÇ symbol indicates the beginning of a statement. 
  16236.  
  16237.       The ΓöÇΓöÇΓöÇ symbol indicates that the statement syntax is continued on the 
  16238.       next line. 
  16239.  
  16240.       The ΓöÇΓöÇΓöÇ symbol indicates that a statement is continued from the previous 
  16241.       line. 
  16242.  
  16243.       The ΓöÇΓöÇΓöÇ symbol indicates the end of a statement. 
  16244.  
  16245.       Diagrams of syntactical units other than complete statements start with 
  16246.       the ΓöÇΓöÇΓöÇ symbol and end with the ΓöÇΓöÇΓöÇ symbol. 
  16247.  
  16248.      Required items appear on the horizontal line (the main path). 
  16249.  
  16250.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇrequired_itemΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16251.  
  16252.      Optional items appear below the main path. 
  16253.  
  16254.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16255.                                ΓööΓöÇoptional_itemΓöÇΓöÿ
  16256.  
  16257.      If a choice can be made from two or more items, they appear vertically, 
  16258.       in a stack. 
  16259.  
  16260.       If one of the items must be chosen, one item of the stack appears on the 
  16261.       main path. 
  16262.  
  16263.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇrequired_choice1ΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16264.                              ΓööΓöÇΓöÇrequired_choice2ΓöÇΓöÇΓöÿ
  16265.  
  16266.       If choosing one of the items is optional, the entire stack appears below 
  16267.       the main path. 
  16268.  
  16269.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16270.                              Γö£ΓöÇΓöÇoptional_choice1ΓöÇΓöÇ
  16271.  
  16272.                              ΓööΓöÇΓöÇoptional_choice2ΓöÇΓöÇΓöÿ
  16273.  
  16274.      An arrow returning to the left above the main path indicates an item that 
  16275.       can be repeated. 
  16276.  
  16277.                              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16278.                                                Γöé
  16279.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓöÇΓöÇrepeatable_itemΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16280.  
  16281.       A repeat arrow above a stack indicates that a choice can be made from the 
  16282.       stacked items, or a single choice can be repeated. 
  16283.  
  16284.      Keywords appear in uppercase, for example: 
  16285.  
  16286.  
  16287.             PARM1
  16288.  
  16289.       They must be spelled exactly as shown. Variables appear in all lowercase 
  16290.       letters, for example: 
  16291.  
  16292.  
  16293.             parmx
  16294.  
  16295.       They represent user-supplied names or values. 
  16296.  
  16297.      If punctuation marks, parentheses, arithmetic operators, or such symbols 
  16298.       are shown, they must be entered as part of the syntax. 
  16299.  
  16300.  
  16301. ΓòÉΓòÉΓòÉ 21.6.1. Definitions Used in all Resources ΓòÉΓòÉΓòÉ
  16302.  
  16303. The definitions used in all resources are defined in Specification of Values 
  16304. and Resource Load and Memory Options. 
  16305.  
  16306.  
  16307. ΓòÉΓòÉΓòÉ 21.6.1.1. Specification of Values ΓòÉΓòÉΓòÉ
  16308.  
  16309. These rules apply to values specified in resources: 
  16310.  
  16311.      Coordinates must be integers. There must be no space between the sign of 
  16312.       the value and the value itself. For example, "-1" is allowed but "- 1" is 
  16313.       not. 
  16314.  
  16315.      Resource identifiers may be any of the following: 
  16316.  
  16317.         -  Positive integers 
  16318.         -  Names that resolve to positive integers 
  16319.         -  Strings (for some resources) 
  16320.  
  16321.      Real values, containing a decimal point, cannot be used. 
  16322.  
  16323.  
  16324. ΓòÉΓòÉΓòÉ 21.6.1.2. Resource Load and Memory Options ΓòÉΓòÉΓòÉ
  16325.  
  16326. The following options define when each resource is loaded and how memory is 
  16327. allocated for each resource. 
  16328.  
  16329.  LOADOPTION     Resource loading options. 
  16330.  
  16331.                 PRELOAD               Resource is loaded immediately. 
  16332.                 LOADONCALL            Resource is loaded when called. 
  16333.  
  16334.  MEMOPTION      Resource memory options. 
  16335.  
  16336.                 FIXED                     Resource remains at a fixed memory 
  16337.                                           location. 
  16338.                 MOVEABLE                  Resource can be moved if necessary to 
  16339.                                           compact. 
  16340.                 DISCARDABLE               Resource can be discarded if no 
  16341.                                           longer needed. 
  16342.                 SEGALIGN                  Resources are aligned on 64K byte 
  16343.                                           boundaries. 
  16344.  
  16345.  
  16346. ΓòÉΓòÉΓòÉ 21.6.2. Resource Script File Specification ΓòÉΓòÉΓòÉ
  16347.  
  16348. The resource script file defines the names and attributes of the resources to 
  16349. be added to the executable file of the application. The file consists of one or 
  16350. more resource statements that define the resource type and original file, if 
  16351. any. See the following for a description of the resource statements: 
  16352.  
  16353.      Single-Line Statements 
  16354.      User-Defined Resources 
  16355.      Directives 
  16356.      Multiple-Line Statements. 
  16357.  
  16358.  
  16359. ΓòÉΓòÉΓòÉ 21.6.2.1. Single-Line Statements ΓòÉΓòÉΓòÉ
  16360.  
  16361. The general form for all single-line statements is: 
  16362.  
  16363.  ΓöÇΓöÇresourcetypeΓöÇΓöÇnameidΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇ
  16364.                            ΓööΓöÇloadoptionΓöÇΓöÿ
  16365.  
  16366.  ΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇfilenameΓöÇΓöÇ
  16367.     ΓööΓöÇmemoptionΓöÇΓöÿ
  16368.  
  16369.  resourcetype (USHORT) 
  16370.     One of the following keywords, specifying the type of resource to be 
  16371.     loaded: 
  16372.  
  16373.          Keyword        Resource type 
  16374.  
  16375.     BITMAP              A bit-map resource is a custom bit map that an 
  16376.                         application intends to use in its screen display or as 
  16377.                         an item in a menu. 
  16378.  
  16379.     DEFAULTICON         This keyword installs the filename.ico icon definition 
  16380.                         under the ICON EA of the program file. 
  16381.  
  16382.                         Example: 
  16383.  
  16384.  
  16385.                                                 Uses
  16386.                                                   Os2Def,Os2Base,Os2PmApi;
  16387.  
  16388.                                                 Var
  16389.                                                   <filename.ico> : DEFAULTICON; (* ╨ísken var tom!! *)
  16390.  
  16391.                                                 Begin
  16392.                                                   <filename.ico> := DEFAULTICON
  16393.  
  16394.     DLGINCLUDE          This statement tells the dialog editor which file to 
  16395.                         use as an include file for the dialogs in the resource 
  16396.                         file. The nameid is not applicable. 
  16397.  
  16398.     FONT                A font resource is a file containing a font. 
  16399.  
  16400.     ICON                An icon resource is a bit map defining the shape of the 
  16401.                         icon to be used for a given application. 
  16402.  
  16403.     POINTER             A pointer resource is a bit map defining the shape of 
  16404.                         the pointing device pointer on the display screen. 
  16405.  
  16406.  nameid (USHORT) 
  16407.     is either a unique name or an integer number identifying the resource. For 
  16408.     a FONT resource, the nameid must be a number; it cannot be a name. 
  16409.  
  16410.  loadoption (LOADOPTION) 
  16411.     The default is LOADONCALL. 
  16412.  
  16413.     See Resource Load and Memory Options for a description of LOADOPTION. 
  16414.  
  16415.  memoption (MEMOPTION) 
  16416.     The default is MOVEABLE and DISCARDABLE for POINTER, ICON, and FONT 
  16417.     resources. The default for BITMAP resources is MOVEABLE. The FIXED option 
  16418.     overrides both MOVEABLE and DISCARDABLE. The SEGALIGN option can be 
  16419.     specified independently of other options, if it is not present the default 
  16420.     (for all resources) is that the resource is not aligned on a 64KB boundary. 
  16421.  
  16422.     See Resource Load and Memory Options for a description of MEMOPTION. 
  16423.  
  16424.  filename (PCH) 
  16425.     An ASCII string specifying the OS/2* name of the file containing the 
  16426.     resource. A full path must be given if the file is not in the current 
  16427.     working directory. 
  16428.  
  16429.  Example 
  16430.  
  16431.   Uses
  16432.     Os2Def,Os2Base,Os2PmApi;
  16433.  
  16434.   Var
  16435.     "pointer"    : POINTER; (* ╨ísken var tom!! *)
  16436.     "discardable : POINTER; (* ╨ísken var tom!! *)
  16437.     10           : POINTER; (* ╨ísken var tom!! *)
  16438.  
  16439.   Begin
  16440.     "pointer"    := POINTER
  16441.     "discardable := POINTER
  16442.     10           := POINTER
  16443.  
  16444.   Uses
  16445.     Os2Def,Os2Base,Os2PmApi;
  16446.  
  16447.   Var
  16448.     "desk"       : ICON; (* ╨ísken var tom!! *)
  16449.     "discardable : ICON; (* ╨ísken var tom!! *)
  16450.     11           : ICON; (* ╨ísken var tom!! *)
  16451.  
  16452.   Begin
  16453.     "desk"       := ICON
  16454.     "discardable := ICON
  16455.     11           := ICON
  16456.  
  16457.   Uses
  16458.     Os2Def,Os2Base,Os2PmApi;
  16459.  
  16460.   Var
  16461.     "disk"       : BITMAP; (* ╨ísken var tom!! *)
  16462.     "discardable : BITMAP; (* ╨ísken var tom!! *)
  16463.     12           : BITMAP; (* ╨ísken var tom!! *)
  16464.  
  16465.   Begin
  16466.     "disk"       := BITMAP
  16467.     "discardable := BITMAP
  16468.     12           := BITMAP
  16469.  
  16470.   Uses
  16471.     Os2Def,Os2Base,Os2PmApi;
  16472.  
  16473.   Var
  16474.     5 : FONT; (* ╨ísken var tom!! *)
  16475.  
  16476.   Begin
  16477.     5 := FONT
  16478.  
  16479.  
  16480. ΓòÉΓòÉΓòÉ 21.6.2.2. User-Defined Resources ΓòÉΓòÉΓòÉ
  16481.  
  16482. An application can also define its own resource. The resource can be any data 
  16483. that the application intends to use. A user-defined resource statement has the 
  16484. form: 
  16485.  
  16486.  ΓöÇΓöÇΓöÇresource-typeΓöÇΓöÇΓöÇtypeIDΓöÇΓöÇΓöÇnameIDΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16487.  
  16488.  ΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇfilenameΓöÇΓöÇΓöÇΓöÇ
  16489.       ΓööΓöÇΓöÇloadoptionΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇmemoptionΓöÇΓöÇΓöÿ
  16490.  
  16491.  typeID 
  16492.     Either a unique name or an integer number identifying the resource type. If 
  16493.     a number is given, it must be greater than 255. The type numbers 1 through 
  16494.     255 are reserved for existing and future predefined resource types. Value 
  16495.     1000 is reserved for custom fonts. 
  16496.  
  16497.  nameID 
  16498.     Either a unique name or an integer number identifying the resource. 
  16499.  
  16500.  loadoption (LOADOPTION) 
  16501.     The default is LOADONCALL. 
  16502.  
  16503.     See Resource Load and Memory Options for a description of LOADOPTION. 
  16504.  
  16505.  memoption (MEMOPTION) 
  16506.     The default is MOVEABLE. 
  16507.  
  16508.     See Resource Load and Memory Options for a description of MEMOPTION. 
  16509.  
  16510.  filename 
  16511.     Can be either: 
  16512.  
  16513.         An ASCII string specifying the OS/2* name of the file containing the 
  16514.          cursor bit map. A full path must be given if the file is not in the 
  16515.          current working directory. 
  16516.  
  16517.         A BEGIN END data definition construct as follows: 
  16518.  
  16519.                   BEGIN
  16520.                   data - definition  [ ,  data - definition ]  & period . & period . & period .
  16521.                   & period .
  16522.                   & period .
  16523.                   & period .
  16524.                   END
  16525.  
  16526.          For example, the RESOURCE statement might be written as follows: 
  16527.  
  16528.                   Uses
  16529.                     Os2Def , Os2Base , Os2PmApi ;
  16530.  
  16531.                   Var
  16532.                     MYRES  :  RESOURCE ;  ( *  ╨í sken  var  tom ! !  * )
  16533.  
  16534.                   Begin
  16535.                     MYRES  : =  RESOURCE
  16536.                     BEGIN
  16537.                     13L ,  26L
  16538.                     END
  16539.                     : elines .
  16540.  
  16541.  When the resource compiler (RC.EXE) encounters one or more font resources, or 
  16542.  any custom resource having type-id of 1000, it creates a font directory 
  16543.  resource which it adds to the output binary data. 
  16544.  
  16545.  Example 
  16546.  
  16547.  
  16548. ΓòÉΓòÉΓòÉ 21.6.2.2.1. RCDATA statement ΓòÉΓòÉΓòÉ
  16549.  
  16550. The RCDATA statement is provided to allow an application to define a simple 
  16551. data resource. 
  16552.  
  16553.  ΓöÇRCDATAΓöÇΓöÇΓöÇidΓöÇΓöÇΓöÇΓöÇloadoptionΓöÇΓöÇΓöÇΓöÇΓöÇmemoptionΓöÇΓöÇΓöÇ
  16554.  
  16555.              ΓöîΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÉ
  16556.               ΓööΓöÇnewlineΓöÇΓöÿ Γöé
  16557.  ΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇdataΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16558.  
  16559.  id 
  16560.     Either a unique name or an integer number identifying the resource. 
  16561.  
  16562.  loadoption (LOADOPTION) 
  16563.     The default is LOADONCALL. 
  16564.  
  16565.     See Resource Load and Memory Options for a description of LOADOPTION. 
  16566.  
  16567.  memoption (MEMOPTION) 
  16568.     The default is MOVEABLE. 
  16569.  
  16570.     See Resource Load and Memory Options for a description of MEMOPTION. 
  16571.  
  16572.  data 
  16573.     A number or string. 
  16574.  
  16575.  Example: 
  16576.  
  16577.  
  16578.   Uses
  16579.     Os2Def,Os2Base,Os2PmApi;
  16580.  
  16581.   Var
  16582.     4 : RCDATA; (* ╨ísken var tom!! *)
  16583.  
  16584.   Begin
  16585.     4 := RCDATA
  16586.     BEGIN
  16587.     "Sample string."
  16588.     "TEST DATA."
  16589.     "A message."
  16590.     END
  16591.  
  16592.  
  16593. ΓòÉΓòÉΓòÉ 21.6.2.3. Directives ΓòÉΓòÉΓòÉ
  16594.  
  16595. The resource directives are special statements that define actions to perform 
  16596. on the file before it is compiled. The directives can assign values to names, 
  16597. include the contents of files, and control compilation of the file. 
  16598.  
  16599. #include filename 
  16600.  
  16601. rcinclude filename 
  16602.            These directives copy the contents of the file specified by filename 
  16603.            into the resource before it is compiled. If rcinclude is used, the 
  16604.            entire file is copied. If #include is used, only #define statements 
  16605.            are copied. 
  16606.  
  16607.            Note:  If an rcinclude is to be commented out, the open comment (/*) 
  16608.                   must appear on the same line as the directive. Filename is an 
  16609.            ASCII string. A full path must be given if the file is not in the 
  16610.            current directory or in the directory specified by the INCLUDE 
  16611.            environment variable. The file extensions .I and .TMP must not be 
  16612.            used as these are reserved for system use. 
  16613.  
  16614.            The filename parameter is handled as a C string, and two 
  16615.            back-slashes must be given wherever one is expected in the path name 
  16616.            (for example, root\\sub.) or, a single forward slash (/) can be used 
  16617.            instead of double back-slashes (for example, root/sub.) 
  16618.  
  16619.            Example: 
  16620.  
  16621.  
  16622.  
  16623.                       Uses
  16624.                         Os2Def,Os2Base,Os2PmApi;
  16625.  
  16626.                       Var
  16627.                         PenSelect : MENU; (* ╨ísken var tom!! *)
  16628.  
  16629.                       Begin
  16630.                         PenSelect := MENU
  16631.                         BEGIN
  16632.                       Uses
  16633.                         Os2Def,Os2Base,Os2PmApi;
  16634.  
  16635.                       Var
  16636.                         "black : MENUITEM; (* ╨ísken var tom!! *)
  16637.  
  16638.                       Begin
  16639.                         "black := MENUITEM
  16640.                           END
  16641.  
  16642.            Files included in resource script files constants that use #define 
  16643.            statements may not include any casting of those constants that are 
  16644.            used in the resource script. The resource compiler does not parse 
  16645.            this casting syntax. For example, the following statement may not be 
  16646.            included: 
  16647.  
  16648.  
  16649.  
  16650.            If casting is required for C source compilation, you may use two 
  16651.            statements such as: 
  16652.  
  16653.  
  16654.  
  16655.  
  16656.  #define name value 
  16657.            This directive assigns the given value to name. All subsequent 
  16658.            occurrences of name are replaced by the value. 
  16659.  
  16660.            name is any combination of letters, digits, or punctuation. 
  16661.  
  16662.            value is any integer, character string, or line of text. 
  16663.  
  16664.            Example: 
  16665.  
  16666.  
  16667.  
  16668.  
  16669.  #undef name 
  16670.            This directive removes the current definition of name. All 
  16671.            subsequent occurrences of name are processed without replacement. 
  16672.  
  16673.            name is any combination of letters, digits, or punctuation. 
  16674.  
  16675.            Example: 
  16676.  
  16677.  
  16678.                       #undef     nonzero
  16679.                       #undef     USERCLASS
  16680.  
  16681.  
  16682.  #ifdef name 
  16683.            This directive performs a conditional compilation of the resource 
  16684.            file by checking the specified name. If the name has been defined 
  16685.            using a #define directive, #ifdef directs the resource compiler to 
  16686.            continue with the statement immediately after it. If the name has 
  16687.            not been defined, #ifdef directs the compiler to skip all statements 
  16688.            up to the next #endif directive. 
  16689.  
  16690.            name is the name to be checked by the directive. 
  16691.  
  16692.            Example: 
  16693.  
  16694.  
  16695.                       #Ifdef Debug
  16696.                       Uses
  16697.                         Os2Def,Os2Base,Os2PmApi;
  16698.  
  16699.                       Var
  16700.                         4 : FONT; (* ╨ísken var tom!! *)
  16701.  
  16702.                       Begin
  16703.                         4 := FONT
  16704.                         .********
  16705.                         #endIf
  16706.  
  16707.  
  16708.  #ifndef name 
  16709.            This directive performs a conditional compilation of the resource 
  16710.            file by checking the specified name. If the name has not been 
  16711.            defined or if its definition has been removed using the #undef 
  16712.            directive, #ifndef directs the resource compiler to continue 
  16713.            processing statements up to the next #endif, #else, or #elif 
  16714.            directive, then skip to the statement after the #endif. If the name 
  16715.            is defined, #ifndef directs the compiler to skip to the next #endif, 
  16716.            #else, or #elif directive. 
  16717.  
  16718.            name is the name to be checked by the directive. 
  16719.  
  16720.            Example: 
  16721.  
  16722.  
  16723.                       #Ifndef Optimize
  16724.                       Uses
  16725.                         Os2Def,Os2Base,Os2PmApi;
  16726.  
  16727.                       Var
  16728.                         4 : FONT; (* ╨ísken var tom!! *)
  16729.  
  16730.                       Begin
  16731.                         4 := FONT
  16732.                         .********
  16733.                         #endIf
  16734.  
  16735.  
  16736.  #if constant expression 
  16737.  
  16738.            This directive performs a conditional compilation of the resource 
  16739.            file by checking the specified constant-expression. If the 
  16740.            constant-expression is nonzero, #if directs the resource compiler to 
  16741.            continue processing statements up to the next #endif, #else, or 
  16742.            #elif directive, then skip to the statement after the #endif. If the 
  16743.            constant-expression is zero, #if directs the compiler to skip to the 
  16744.            next #endif, #else, or #elif directive. 
  16745.  
  16746.            constant expression is a defined name, an integer constant, or an 
  16747.            expression consisting of names, integers, and arithmetic and 
  16748.            relational operators. 
  16749.  
  16750.            Example: 
  16751.  
  16752.  
  16753.                       #If Version<3
  16754.                       Uses
  16755.                         Os2Def,Os2Base,Os2PmApi;
  16756.  
  16757.                       Var
  16758.                         4 : FONT; (* ╨ísken var tom!! *)
  16759.  
  16760.                       Begin
  16761.                         4 := FONT
  16762.                         .********
  16763.                         #endIf
  16764.  
  16765.  
  16766.  #elif constant expression 
  16767.            This directive marks an optional clause of a conditional compilation 
  16768.            block defined by an #ifdef, #ifndef, or #if directive. The directive 
  16769.            carries out conditional compilation of the resource file by checking 
  16770.            the specified constant-expression. If the constant-expression is 
  16771.            nonzero, #elif directs the resource compiler to continue processing 
  16772.            statements up to the next #endif, #else, or #elif directive, then 
  16773.            skip to the statement after the #endif. If the constant-expression 
  16774.            is zero, #elif directs the compiler to skip to the next #endif, 
  16775.            #else, or #elif directive. Any number of #elif directives can be 
  16776.            used in a conditional block. 
  16777.  
  16778.            constant expression Is a defined name, an integer constant, or an 
  16779.            expression consisting of names, integers, and arithmetic and 
  16780.            relational operators. 
  16781.  
  16782.            Example: 
  16783.  
  16784.  
  16785.                       #If Version<3
  16786.                       Uses
  16787.                         Os2Def,Os2Base,Os2PmApi;
  16788.  
  16789.                       Var
  16790.                         4 : FONT; (* ╨ísken var tom!! *)
  16791.  
  16792.                       Begin
  16793.                         4 := FONT
  16794.                         .********
  16795.                         #elIf Version<7
  16796.                       Uses
  16797.                         Os2Def,Os2Base,Os2PmApi;
  16798.  
  16799.                       Var
  16800.                         4 : FONT; (* ╨ísken var tom!! *)
  16801.  
  16802.                       Begin
  16803.                         4 := FONT
  16804.                           .********
  16805.                           #endIf
  16806.  
  16807.  
  16808.  #else 
  16809.  
  16810.            This directive marks an optional clause of a conditional compilation 
  16811.            block defined by an #ifdef, #ifndef, or #if directive. The #else 
  16812.            directive must be the last directive before #endif. 
  16813.  
  16814.            Example: 
  16815.  
  16816.  
  16817.                       #Ifdef Debug
  16818.                       Uses
  16819.                         Os2Def,Os2Base,Os2PmApi;
  16820.  
  16821.                       Var
  16822.                         4 : FONT; (* ╨ísken var tom!! *)
  16823.  
  16824.                       Begin
  16825.                         4 := FONT
  16826.                         .********
  16827.                         #Else
  16828.                       Uses
  16829.                         Os2Def,Os2Base,Os2PmApi;
  16830.  
  16831.                       Var
  16832.                         4 : FONT; (* ╨ísken var tom!! *)
  16833.  
  16834.                       Begin
  16835.                         4 := FONT
  16836.                           .********
  16837.                           #endIf
  16838.  
  16839.  
  16840.  #endif 
  16841.            This directive marks the end of a conditional compilation block 
  16842.            defined by an #ifdef, #ifndef, or #if directive. One #endif is 
  16843.            required for each #ifdef, #ifndef, and #if directive. 
  16844.  
  16845.  
  16846. ΓòÉΓòÉΓòÉ 21.6.2.4. Multiple-Line Statements ΓòÉΓòÉΓòÉ
  16847.  
  16848. This sections covers Code Page Flagging, Keyboard Resources, and the following 
  16849. multiple-line statements: 
  16850.  
  16851.      ACCELTABLE Statement 
  16852.      ASSOCTABLE Statement 
  16853.      MENU Statement 
  16854.      STRINGTABLE Statement 
  16855.      Dialog and Window Template Statements 
  16856.  
  16857.  
  16858. ΓòÉΓòÉΓòÉ 21.6.2.4.1. Code Page Flagging ΓòÉΓòÉΓòÉ
  16859.  
  16860. The CODEPAGE statement may be placed within the source, to set the code page 
  16861. used for these resources: 
  16862.  
  16863.      ACCELTABLE 
  16864.      MENU 
  16865.      STRINGTABLE 
  16866.      DIALOGTEMPLATE and WINDOWTEMPLATE. 
  16867.  
  16868.  The CODEPAGE statement cannot be encoded within any other statement. All items 
  16869.  following a CODEPAGE statement are assumed to be in that code page. The code 
  16870.  page is encoded in the resource, and the data in the resource is assumed to be 
  16871.  in the specified code page.  However, no checking is performed. 
  16872.  
  16873.  These code pages can be specified: 
  16874.  
  16875.      437 
  16876.      850 
  16877.      860 
  16878.      863 
  16879.      865. 
  16880.  
  16881.  If the code page is not specified, code page 850 is assumed. 
  16882.  
  16883.  
  16884. ΓòÉΓòÉΓòÉ 21.6.2.4.2. Keyboard Resources ΓòÉΓòÉΓòÉ
  16885.  
  16886. RT_FKALONG (=17), is defined in BSEDOS.H, and the resource compiler (RC.EXE) 
  16887. recognizes FKALONG. This type identifies a 256-byte table, that can be used for 
  16888. either primary or secondary scan-code mapping. 
  16889.  
  16890. The resource ID contains three bytes, the least significant byte identifying 
  16891. the type of scan-code mapping table as follows: 
  16892.  
  16893.  0    Primary scan-code mapping 
  16894.  1    Secondary scan-code mapping. 
  16895.  
  16896.  The other two bytes are 0 for the primary mapping table, and the keyboard ID 
  16897.  (as defined in PMWINP.H) for secondary mapping tables. This is to enable 
  16898.  simple support to be provided for future keyboards with conflicting scan 
  16899.  codes. 
  16900.  
  16901.  The primary scan-code mapping table in the interrupt handler is stored as a 
  16902.  resource of this type. The secondary scan-code mapping table in the interrupt 
  16903.  handler is also stored as a resource of this type. 
  16904.  
  16905.  Depending on which keyboard is attached, the resources are loaded when the 
  16906.  system is initialized, and transferred to RING-0 byte arrays, where they can 
  16907.  be accessed by the interrupt handler as necessary. A default primary scan-code 
  16908.  mapping table is transferred if the resource cannot be loaded. 
  16909.  
  16910.  
  16911. ΓòÉΓòÉΓòÉ 21.6.2.4.3. ACCELTABLE Statement ΓòÉΓòÉΓòÉ
  16912.  
  16913. The ACCELTABLE statement defines a table of accelerator keys for an 
  16914. application. 
  16915.  
  16916. An accelerator is a keystroke defined by the application to give the user a 
  16917. quick way to perform a task. The WinGetMsg function automatically translates 
  16918. accelerator messages from the application queue into WM_COMMAND, WM_HELP, or 
  16919. WM_SYSCOMMAND messages. 
  16920.  
  16921. The ACCELTABLE statement has the form: 
  16922.  
  16923.  ΓöÇΓöÇΓöÇACCELTABLEΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇ
  16924.                   ΓööΓöÇΓöÇidΓöÇΓöÇΓöÿ    ΓööΓöÇmemoptionΓöÇΓöÿ
  16925.  
  16926.  ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16927.  
  16928.    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16929.    Γöé                        ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉΓöé
  16930.                                          ΓöéΓöé
  16931.  ΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇ,ΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇacceloptionΓöÇΓöÇΓö£Γö£ΓöÇ
  16932.     ΓöökeyvalΓöÇΓöÿ   ΓööΓöÇcmdΓöÇΓöÿ
  16933.  
  16934.  ΓöÇΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  16935.  
  16936.  id (USHORT) 
  16937.     The resource identifier. This is either an integer in the range of 1 
  16938.     through 65535 or a unique string enclosed in double quote marks. 
  16939.  
  16940.  memoption 
  16941.     Optional. It consists of the following keyword or keywords, specifying 
  16942.     whether the resource is fixed or movable, and whether it can be discarded: 
  16943.  
  16944.     FIXED               Resource remains at a fixed memory location. 
  16945.     MOVEABLE            Resource can be moved if necessary to compact memory. 
  16946.     DISCARDABLE         Resource can be discarded if no longer needed. 
  16947.  
  16948.     See Resource Load and Memory Options for a description of LOADOPTION. 
  16949.  
  16950.  keyval (USHORT) 
  16951.     The accelerator character code.  This can be either a constant or a quoted 
  16952.     character. If it is a quoted character, the CHAR acceloption is assumed. 
  16953.     If the quoted character is preceded with a caret character (^), a control 
  16954.     character is specified as if the CONTROL acceloption had been used. 
  16955.  
  16956.  cmd (USHORT) 
  16957.     The value of the WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message generated 
  16958.     from the accelerator for the indicated key. 
  16959.  
  16960.  acceloption (BIT_16) 
  16961.     Defines the kind of accelerator. 
  16962.  
  16963.     The following options are available: 
  16964.  
  16965.               ALT 
  16966.               CHAR 
  16967.               CONTROL 
  16968.               HELP 
  16969.               LONEKEY 
  16970.               SCANCODE 
  16971.               SHIFT 
  16972.               SYSCOMMAND 
  16973.               VIRTUALKEY. 
  16974.  
  16975.     The VIRTUALKEY, SCANCODE, LONEKEY, and CHAR acceloptions specify the type 
  16976.     of message that matches the accelerator.  Only one of these options can be 
  16977.     specified for each accelerator. For information on the corresponding KC_* 
  16978.     values, see WM_CHAR. 
  16979.  
  16980.     The acceloptions SHIFT, CONTROL, and ALT, cause a match of the accelerator 
  16981.     only if the corresponding key is down. 
  16982.  
  16983.     If there are two accelerators that use the same key with different SHIFT, 
  16984.     CONTROL, or ALT options, the more restrictive accelerator should be 
  16985.     specified first in the table.  For example, Shift-Enter should be placed 
  16986.     before Enter. 
  16987.  
  16988.     The SYSCOMMAND acceloption causes the keystroke to be passed to the 
  16989.     application as a WM_SYSCOMMAND message. The HELP acceloption causes the 
  16990.     keystroke to be passed to the application as a WM_HELP message. If neither 
  16991.     is specified, a WM_COMMAND message is used. 
  16992.  
  16993.  Example: 
  16994.  
  16995.   Uses
  16996.     Os2Def,Os2Base,Os2PmApi;
  16997.  
  16998.   Var
  16999.     "MainAcc" : ACCELTABLE; (* ╨ísken var tom!! *)
  17000.  
  17001.   Begin
  17002.     "MainAcc" := ACCELTABLE
  17003.     BEGIN
  17004.     VK_F1,101,HELP
  17005.     VK_F3,102,SYSCOMMAND
  17006.     END
  17007.  
  17008.  This generates a WM_HELP with value 101 from VIRTUALKEY accelerator F1 and a 
  17009.  WM_SYSCOMMAND with value 102 from VIRTUALKEY accelerator F3. 
  17010.  
  17011.  
  17012. ΓòÉΓòÉΓòÉ 21.6.2.4.4. ASSOCTABLE Statement ΓòÉΓòÉΓòÉ
  17013.  
  17014. The ASSOCTABLE statement defines the extended attributes (EA) for an 
  17015. application. 
  17016.  
  17017. The ASSOCTABLE statement has the form: 
  17018.  
  17019.  ΓöÇΓöÇΓöÇΓöÇASSOCTABLEΓöÇΓöÇassoctableidΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17020.  
  17021.  
  17022.  ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17023.  
  17024.  
  17025.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17026.                                            Γöé
  17027.  ΓöÇΓöÇΓöÇassocname,extensionsΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇ,ΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓö£Γö£ΓöÇ
  17028.                           ΓööΓöÇflagsΓöÿ    ΓööiconΓöÿ
  17029.  
  17030.  ΓöÇΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  17031.  
  17032. The source for the ASSOCTABLE description is contained in the resource file for 
  17033. a particular project: 
  17034.  
  17035.  
  17036. Uses
  17037.   Os2Def,Os2Base,Os2PmApi;
  17038.  
  17039. Var
  17040.   Assoctableid : ASSOCTABLE; (* ╨ísken var tom!! *)
  17041.  
  17042. Begin
  17043.   Assoctableid := ASSOCTABLE
  17044.   BEGIN
  17045.   "association name", "extension", flags, icon filename
  17046.   "association name", "extension", flags, icon filename
  17047.   ...
  17048.   END
  17049.  
  17050.  association name 
  17051.     Program recognizes data files of this EA TYPE. This is the same name found 
  17052.     in the TYPE field of data files. 
  17053.  
  17054.  assoctableid 
  17055.     A name or number used to identify the assoctable resource. 
  17056.  
  17057.  extension 
  17058.     3 letter file extension that is used to identify files of this type if they 
  17059.     have no EA TYPE entry. (This may be empty.) 
  17060.  
  17061.  flags 
  17062.  
  17063.     EAF_DEFAULTOWNER 
  17064.             The default application for the file. 
  17065.  
  17066.     EAF_UNCHANGEABLE 
  17067.             This flag is set if the entry in the ASSOCTABLE is not to be 
  17068.             edited. 
  17069.  
  17070.     EAF_REUSEICON 
  17071.             This flag is specified if a previously defined icon in the 
  17072.             ASSOCTABLE is to be reused. Entries with this flag set have no icon 
  17073.             data defined. The icon used for this entry is the icon used for the 
  17074.             previous entry (see below). Note that EAF_* flags may be ORed 
  17075.             together when specified in the ASSOCTABLE. 
  17076.  
  17077.  icon filename 
  17078.     Filename of the icon used to represent this file type. (This may be empty.) 
  17079.  
  17080.  Example 
  17081.  
  17082.   Uses
  17083.     Os2Def,Os2Base,Os2PmApi;
  17084.  
  17085.   Var
  17086.     3000 : ASSOCTABLE; (* ╨ísken var tom!! *)
  17087.  
  17088.   Begin
  17089.     3000 := ASSOCTABLE
  17090.     BEGIN
  17091.     "Product XYZ Spreadsheet", "xys", EAF_DEFAULTOWNER, xyzspr.ico
  17092.     "Product XYZ Chart", "xyc", EAF_DEFAULTOWNER Or EAF_REUSEICON
  17093.     END
  17094.  
  17095.  
  17096. ΓòÉΓòÉΓòÉ 21.6.2.4.5. Dialog and Window Template Statements ΓòÉΓòÉΓòÉ
  17097.  
  17098. This section describes how to define dialog and window templates. 
  17099.  
  17100. It also describes the control data and presentation parameter structures that 
  17101. the application needs to create windows and define dialog templates. 
  17102.  
  17103. DLGTEMPLATE and WINDOWTEMPLATE statements are used by an application to create 
  17104. predefined window and dialog resource templates. These statements are treated 
  17105. identically by the resource compiler and have the following format: 
  17106.  
  17107.  ΓöÇΓöÇΓöÇΓö£ΓöÇDLGTEMPLATEΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇresourceidΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17108.       ΓööΓöÇWINDOWTEMPLATEΓöÇΓöÇΓöÿ
  17109.  
  17110.  ΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇ
  17111.       ΓööloadoptionΓöÇΓöÿΓööΓöÇmemoptionΓöÇΓöÿΓööΓöÇcodepageΓöÇΓöÿ
  17112.  
  17113.  ΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓö£ΓöÇΓöÇDIALOG statementΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  17114.             Γö£ΓöÇΓöÇCONTROL statementΓöÇΓöÇ
  17115.  
  17116.             ΓööΓöÇΓöÇWINDOW statementΓöÇΓöÇΓöÇΓöÿ
  17117.  
  17118. In the following description of the parts of the DLGTEMPLATE and WINDOWTEMPLATE 
  17119. statements, data types are shown after each parameter or option. These are the 
  17120. data types that the parameter or option is converted to when it is compiled. 
  17121.  
  17122.  Purpose 
  17123.     The DLGTEMPLATE or WINDOWTEMPLATE statement marks the beginning of a window 
  17124.     template. It defines the name of the window, and its memory and load 
  17125.     options. 
  17126.  
  17127.  resourceid (USHORT) 
  17128.     This is either: 
  17129.  
  17130.         An integer (or a name that resolves to an integer) in the range of 1 
  17131.          through 65535 
  17132.  
  17133.         A unique string enclosed in double quote marks 
  17134.  
  17135.  loadoption (LOADOPTION) 
  17136.     The default is LOADONCALL. 
  17137.  
  17138.     See Resource Load and Memory Options for a description of LOADOPTION. 
  17139.  
  17140.  memoption (MEMOPTION) 
  17141.     The default is MOVEABLE. 
  17142.  
  17143.     See Resource Load and Memory Options for a description of MEMOPTION. 
  17144.  
  17145.  code page (USHORT) 
  17146.     The code page of the text in the template. 
  17147.  
  17148.  Alternatively, ({) can be used in place of BEGIN and (}) in place of END. 
  17149.  
  17150.  The DLGTEMPLATE and WINDOWTEMPLATE keywords are synonymous. 
  17151.  
  17152.  The DIALOG statement defines a dialog-box window that can be created by an 
  17153.  application and has the following format: 
  17154.  
  17155.    ΓöÇΓöÇΓöÇDIALOGΓöÇΓöÇΓöÇtextΓöÇ,ΓöÇidΓöÇ,ΓöÇxΓöÇ,ΓöÇyΓöÇ,ΓöÇcxΓöÇ,ΓöÇcyΓöÇΓöÇΓöÇΓöÇ
  17156.  
  17157.    ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17158.            ΓööΓöÇ,styleΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17159.  
  17160.                     ΓööΓöÇ,controlΓöÇΓöÿ
  17161.  
  17162.    ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£
  17163.     Γöé                 ΓöéΓöéΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉΓöé
  17164.     Γöé                 ΓöéΓöé                     ΓöéΓöé
  17165.     ΓööCTLDATAΓöÇstatementΓöÿΓööΓöÇPRESPARAMSΓöÇstatementΓöÇΓö£Γöÿ
  17166.  
  17167.              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17168.                                      Γöé
  17169.    ΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇDIALOGΓöÇstatementΓöÇΓöÇΓö£ΓöÇΓö£ΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  17170.                Γö£ΓöÇΓöÇCONTROLΓöÇstatementΓöÇ
  17171.  
  17172.                ΓööΓöÇΓöÇWINDOWΓöÇstatementΓöÇΓöÇΓöÿ
  17173.  
  17174.       Control Data Statement 
  17175.       Presentation Parameters Statement 
  17176.  
  17177.  The WINDOW and CONTROL statements have the format: 
  17178.  
  17179.    ΓöÇΓö£ΓöÇWINDOWΓöÇΓö£ΓöÇtext,ΓöÇid,ΓöÇx,ΓöÇy,ΓöÇcx,ΓöÇcy,ΓöÇclassΓöÇΓöÇ
  17180.       ΓööΓöÇCONTROLΓöÿ
  17181.  
  17182.    ΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇ
  17183.       ΓööΓöÇΓöÇΓöÇ,styleΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17184.  
  17185.                    ΓööΓöÇΓöÇ,controlΓöÇΓöÇΓöÇΓöÿ
  17186.  
  17187.  
  17188.    ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£
  17189.     Γöé                 ΓöéΓöéΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉΓöé
  17190.     Γöé                 ΓöéΓöé                     ΓöéΓöé
  17191.     ΓööCTLDATAΓöÇstatementΓöÿΓööΓöÇPRESPARAMSΓöÇstatementΓöÇΓö£Γöÿ
  17192.  
  17193.              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17194.                                      Γöé
  17195.    ΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇDIALOGΓöÇstatementΓöÇΓöÇΓö£ΓöÇΓö£ΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  17196.                Γö£ΓöÇΓöÇCONTROLΓöÇstatementΓöÇ
  17197.  
  17198.                ΓööΓöÇΓöÇWINDOWΓöÇstatementΓöÇΓöÇΓöÿ
  17199.  
  17200.       Control Data Statement 
  17201.       Presentation Parameters Statement 
  17202.  
  17203.  Note:  The WINDOW and CONTROL keywords are synonymous. 
  17204.  
  17205.  The DIALOG, CONTROL, and WINDOW statements between the BEGIN and END 
  17206.  statements are defined as child windows. Presentation parameters always apply 
  17207.  to the whole control. They cannot be changed for the individual items within 
  17208.  the control. 
  17209.  
  17210.  Following is the description of the parameters for these statements. 
  17211.  
  17212.  Purpose 
  17213.     These statements mark the beginning of a window. They define the starting 
  17214.     location on the display screen, its width, its height, and other details 
  17215.     such as style. 
  17216.  
  17217.     Note:  Not all values may be specified for each statement type. For 
  17218.            details, see the call syntax diagrams. 
  17219.  
  17220.  text (PCH) 
  17221.     A string, enclosed in double quotes, that is displayed in the title-bar 
  17222.     control, if it exists. To insert a double-quote character (") in the text, 
  17223.     use two double-quote characters (""). 
  17224.  
  17225.  id (USHORT) 
  17226.     Item identifier. 
  17227.  
  17228.  x,y (SHORT) 
  17229.     Integer numbers specifying the x- and y-coordinates on the display screen 
  17230.     of the lower left corner of the dialog. X and y are in dialog coordinates. 
  17231.     The exact meaning of the coordinates depends on the style defined by the 
  17232.     style argument. For normal dialogs, the coordinates are relative to the 
  17233.     origin of the parent window. For FCF_SCREENALIGN style boxes, the 
  17234.     coordinates are relative to the origin of the display screen. With 
  17235.     FCF_MOUSEALIGN, the coordinates are relative to the position of the pointer 
  17236.     at the time  the dialog is created. 
  17237.  
  17238.  cx,cy (SHORT) 
  17239.     Integer numbers specifying the width and height of the window. 
  17240.  
  17241.  class (PCH) 
  17242.     The class of the window or control to be created. 
  17243.  
  17244.     Note:  For a DIALOG statement the class is fixed as WC_FRAME and cannot be 
  17245.            specified. 
  17246.  
  17247.  style (ULONG) 
  17248.     Any additional window style, frame style, or other class-specific style. 
  17249.  
  17250.     The default style is WS_SYNCPAINT Or WS_CLIPSIBLINGS Or WS_SAVEBITS Or 
  17251.     FS_DLGBORDER. If the FS_DLGBORDER or WS_SAVEBITS styles are not required, 
  17252.     they should be preceded by the keyword "NOT". For example: 
  17253.  
  17254.  
  17255.         Uses
  17256.           Os2Def,Os2Base,Os2PmApi;
  17257.  
  17258.         Var
  17259.           FS_DLGBORDER : NOT; (* ╨ísken var tom!! *)
  17260.  
  17261.         Begin
  17262.           FS_DLGBORDER := NOT
  17263.  
  17264.     replaces the FS_DLGBORDER default style by the FS_BORDER style and removes 
  17265.     the WS_SAVEBITS style. Note that the logic of the NOT keyword is different 
  17266.     from the corresponding operator in the C language. 
  17267.  
  17268.     It is not possible to remove the default WS_SYNCPAINT and WS_CLIPSIBLINGS 
  17269.     styles. 
  17270.  
  17271.  control (ULONG) 
  17272.     Frame Creation Flags (FCF_*) for the window. 
  17273.  
  17274.     This data is placed in the control data field in the correct format for a 
  17275.     window of class WC_FRAME. 
  17276.  
  17277.     Note:  FCF_SHELLPOSITION has no effect if specified in a template. 
  17278.  
  17279.  CTLDATA Statement 
  17280.     A statement used to define control data for the control. For more 
  17281.     information on this statement, see Control Data Statement 
  17282.  
  17283.  PRESPARAMS Statement 
  17284.     A statement used to define presentation parameters. For more information on 
  17285.     this statement, see Presentation Parameters Statement 
  17286.  
  17287.  
  17288. ΓòÉΓòÉΓòÉ 21.6.2.4.6. MENU Statement ΓòÉΓòÉΓòÉ
  17289.  
  17290. The MENU statement defines the contents of a menu resource. A menu resource is 
  17291. a collection of information that defines the appearance and function of an 
  17292. application menu. A menu can be used to create an action bar. 
  17293.  
  17294. The MENU statement has the form: 
  17295.  
  17296.  ΓöÇMENU-menuidΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇ
  17297.                  ΓööΓöÇloadoptionΓöÇΓöÿΓööΓöÇmemoptionΓöÇΓöÿ
  17298.  
  17299.  ΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17300.       ΓööΓöÇΓöÇcodepageΓöÇΓöÇΓöÿ
  17301.  
  17302.                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17303.                                     Γöé
  17304.              ΓöîΓöÇΓöÇPRESPARAMSΓöÇstatementΓöÇΓö£ΓöÉ
  17305.  ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17306.           ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17307.                                   Γöé
  17308.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇMENUITEMΓöÇstatementΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇENDΓöÇΓöÇΓöÇΓöÇ
  17309.           Γöé                        Γöé
  17310.           ΓööΓöÇΓöÇΓöÇSUBMENUΓöÇstatementΓöÇΓöÇΓöÇΓöÇΓöÿ
  17311.  
  17312.       Menu Item Statements 
  17313.       Submenu Statements 
  17314.       Presentation Parameters Statement. 
  17315.  
  17316.  menuid (USHORT) 
  17317.     This is either: 
  17318.  
  17319.         An integer (or a name that resolves to an integer) in the range of 1 
  17320.          through 65535 
  17321.  
  17322.         A unique string enclosed in double quote marks 
  17323.  
  17324.  loadoption (LOADOPTION) 
  17325.     The default is LOADONCALL. 
  17326.  
  17327.     SeeResource Load and Memory Options for a description of LOADOPTION. 
  17328.  
  17329.  memoption (MEMOPTION) 
  17330.     The default is MOVEABLE. 
  17331.  
  17332.     See Resource Load and Memory Options for a description of MEMOPTION. 
  17333.  
  17334.  codepage (USHORT) 
  17335.     The code page of the text. 
  17336.  
  17337.  PRESPARAMS statement 
  17338.     A special resource statement used to define presentation parameters. These 
  17339.     are discussed in more detail in Presentation Parameters Statement. 
  17340.  
  17341.  MENUITEM statement 
  17342.     A special resource statement used to define the items in the menu. These 
  17343.     are discussed in more detail in Menu Item Statements. 
  17344.  
  17345.  SUBMENU statement 
  17346.     A special resource statement used to define a submen. SUBMENU statements 
  17347.     are discussed in more detail in Submenu Statements. 
  17348.  
  17349.  Example 
  17350.  
  17351.  Following is an example of a complete MENU statement: 
  17352.  
  17353.  
  17354.   Uses
  17355.     Os2Def,Os2Base,Os2PmApi;
  17356.  
  17357.   Var
  17358.     "sample" : MENU; (* ╨ísken var tom!! *)
  17359.  
  17360.   Begin
  17361.     "sample" := MENU
  17362.     BEGIN
  17363.   Uses
  17364.     Os2Def,Os2Base,Os2PmApi;
  17365.  
  17366.   Var
  17367.     "&tilde.Alpha", : MENUITEM; (* ╨ísken var tom!! *)
  17368.     "&tilde.Beta",  : SUBMENU;  (* ╨ísken var tom!! *)
  17369.  
  17370.   Begin
  17371.     "&tilde.Alpha", := MENUITEM
  17372.     "&tilde.Beta",  := SUBMENU
  17373.       BEGIN
  17374.   Uses
  17375.     Os2Def,Os2Base,Os2PmApi;
  17376.  
  17377.   Var
  17378.     "&tilde.Green", : MENUITEM; (* ╨ísken var tom!! *)
  17379.     "&tilde.Blue",  : MENUITEM; (* ╨ísken var tom!! *)
  17380.  
  17381.   Begin
  17382.     "&tilde.Green", := MENUITEM
  17383.     "&tilde.Blue",  := MENUITEM
  17384.         END
  17385.         END
  17386.  
  17387.  
  17388. ΓòÉΓòÉΓòÉ 21.6.2.4.6.1. Menu Item Statements ΓòÉΓòÉΓòÉ
  17389.  
  17390. MENUITEM statements are used in the item-definition section of a MENU statement 
  17391. to define the names and attributes of the actual menu items. Any number of 
  17392. statements can be given; each defines a unique item. The order of the 
  17393. statements defines the order of the menu items. 
  17394.  
  17395. Note:  The MENUITEM statements can only be used within an item-definition 
  17396.        section of a MENU statement. 
  17397.  
  17398.    ΓöÇΓöÇMENUITEMΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17399.  
  17400.    ΓöÇΓö£ΓöÇΓöÇstringΓöÇΓöÇ,Γö£ΓöÇΓöÇΓöÇΓöÇΓö£,Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇ,Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£Γö£
  17401.      Γöé           ΓööcmdΓöÇΓöÿ ΓööstylesΓöÿ  ΓööattributesΓöÿΓöé
  17402.      Γöé                                        Γöé
  17403.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇSEPARATORΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17404.  
  17405.  string (PCH) 
  17406.     A string, enclosed in double quotation marks, specifying the text of the 
  17407.     menu item. 
  17408.  
  17409.     To insert a double-quote character (") in the text, use two double-quote 
  17410.     characters (""). 
  17411.  
  17412.     If the styles parameter does not contain MIS_TEXT, the string is ignored 
  17413.     but must still be specified. An empty string ("") should be specified in 
  17414.     this instance. 
  17415.  
  17416.     To indicate the mnemonic for each item, insert the tilde character (~) in 
  17417.     the string preceding the mnemonic character. 
  17418.  
  17419.     For MENUITEM statements within a SUBMENU (that is, pull-down menus) text 
  17420.     may be split into a second column with an alignment substring. To 
  17421.     right-align items insert "\a" in the text where alignment should begin. To 
  17422.     left-align a second column of text insert "\t" in the text where alignment 
  17423.     should begin. For each SUBMENU the longest item in the second column 
  17424.     determines the width of that column. Only one alignment substring should be 
  17425.     used in a menu item. 
  17426.  
  17427.  cmd (USHORT) 
  17428.     The value of the WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message generated by 
  17429.     the item when it is selected. It identifies the selection made and should 
  17430.     be unique within one menu definition. 
  17431.  
  17432.  styles (USHORT) 
  17433.     One or more menu options defined by the MIS_* constants, ORed together with 
  17434.     the "Or" operator. For definitions of the MIS_* constants, see Menu Item 
  17435.     Styles. 
  17436.  
  17437.  attributes (USHORT) 
  17438.     One or more menu options defined by the MIA_* constants, ORed together with 
  17439.     the "Or" operator. For definitions of the MIA_* constants, see Menu Item 
  17440.     Attributes. 
  17441.  
  17442.     The style MIS_SUBMENU must not be used with this statement. See Submenu 
  17443.     Statements for the SUBMENU statement. 
  17444.  
  17445.  Examples: 
  17446.  
  17447.  
  17448.   Uses
  17449.     Os2Def,Os2Base,Os2PmApi;
  17450.  
  17451.   Var
  17452.     "Alpha", : MENUITEM; (* ╨ísken var tom!! *)
  17453.     "Beta",  : MENUITEM; (* ╨ísken var tom!! *)
  17454.  
  17455.   Begin
  17456.     "Alpha", := MENUITEM
  17457.     "Beta",  := MENUITEM
  17458.  
  17459.  
  17460. ΓòÉΓòÉΓòÉ 21.6.2.4.6.2. Submenu Statements ΓòÉΓòÉΓòÉ
  17461.  
  17462. In addition to simple items, a menu definition can contain the definition of a 
  17463. submenu. A submenu can itself invoke a lower level submenu. 
  17464.  
  17465.  ΓöÇΓöÇSUBMENUΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17466.  
  17467.  ΓöÇΓöÇΓöÇΓöÇstringΓöÇΓöÇ,Γö£ΓöÇΓöÇΓöÇΓöÇΓö£,Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇ,Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇ
  17468.                ΓööcmdΓöÇΓöÿ ΓööstylesΓöÿ  ΓööattributesΓöÿ
  17469.  
  17470.  
  17471.                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17472.                                     Γöé
  17473.              ΓöîΓöÇΓöÇPRESPARAMSΓöÇstatementΓöÇΓö£ΓöÉ
  17474.  ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17475.           ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17476.                                   Γöé
  17477.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇMENUITEMΓöÇstatementΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇENDΓöÇΓöÇΓöÇΓöÇ
  17478.           Γöé                        Γöé
  17479.           ΓööΓöÇΓöÇΓöÇSUBMENUΓöÇstatementΓöÇΓöÇΓöÇΓöÇΓöÿ
  17480.  
  17481.  string (PCH) 
  17482.     A string, enclosed in double quotation marks, specifying the text of the 
  17483.     menu item. 
  17484.  
  17485.     To insert a double-quote character (") in the text, use two double-quote 
  17486.     characters (""). 
  17487.  
  17488.     If the styles parameter does not contain MIS_TEXT, the string is ignored 
  17489.     but must still be specified. An empty string ("") should be specified in 
  17490.     this instance. 
  17491.  
  17492.  cmd (USHORT) 
  17493.     The value of the WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message generated by 
  17494.     the item when it is selected. It identifies the selection made and should 
  17495.     be unique within one menu definition. 
  17496.  
  17497.  styles (USHORT) 
  17498.     One or more menu options defined by the MIS_ constants, ORed together with 
  17499.     the "Or" operator. 
  17500.  
  17501.     In the SUBMENU statement, the style MIS_SUBMENU is always ORed with the 
  17502.     styles given. If no value is supplied, the default value of MIS_TEXT and 
  17503.     MIS_SUBMENU is used. 
  17504.  
  17505.  attributes (USHORT) 
  17506.     One or more menu options defined by the MIA_ constants, ORed together with 
  17507.     the Or operator. 
  17508.  
  17509.  Example: 
  17510.  
  17511.  
  17512.   Uses
  17513.     Os2Def,Os2Base,Os2PmApi;
  17514.  
  17515.   Var
  17516.     "chem" : MENU; (* ╨ísken var tom!! *)
  17517.  
  17518.   Begin
  17519.     "chem" := MENU
  17520.     BEGIN
  17521.  
  17522.   Uses
  17523.     Os2Def,Os2Base,Os2PmApi;
  17524.  
  17525.   Var
  17526.     "&tilde.Elements", : SUBMENU; (* ╨ísken var tom!! *)
  17527.  
  17528.   Begin
  17529.     "&tilde.Elements", := SUBMENU
  17530.       BEGIN
  17531.   Uses
  17532.     Os2Def,Os2Base,Os2PmApi;
  17533.  
  17534.   Var
  17535.     "&tilde.Oxygen",   : MENUITEM; (* ╨ísken var tom!! *)
  17536.     "&tilde.Carbon",   : MENUITEM; (* ╨ísken var tom!! *)
  17537.     "&tilde.Hydrogen", : MENUITEM; (* ╨ísken var tom!! *)
  17538.  
  17539.   Begin
  17540.     "&tilde.Oxygen",   := MENUITEM
  17541.     "&tilde.Carbon",   := MENUITEM
  17542.     "&tilde.Hydrogen", := MENUITEM
  17543.         END
  17544.  
  17545.   Uses
  17546.     Os2Def,Os2Base,Os2PmApi;
  17547.  
  17548.   Var
  17549.     "&tilde.Compounds", : SUBMENU; (* ╨ísken var tom!! *)
  17550.  
  17551.   Begin
  17552.     "&tilde.Compounds", := SUBMENU
  17553.           BEGIN
  17554.   Uses
  17555.     Os2Def,Os2Base,Os2PmApi;
  17556.  
  17557.   Var
  17558.     "&tilde.Glucose",  : MENUITEM; (* ╨ísken var tom!! *)
  17559.     "&tilde.Sucrose",  : MENUITEM; (* ╨ísken var tom!! *)
  17560.     "&tilde.Lactose",  : MENUITEM; (* ╨ísken var tom!! *)
  17561.     "&tilde.Fructose", : MENUITEM; (* ╨ísken var tom!! *)
  17562.  
  17563.   Begin
  17564.     "&tilde.Glucose",  := MENUITEM
  17565.     "&tilde.Sucrose",  := MENUITEM
  17566.     "&tilde.Lactose",  := MENUITEM
  17567.     "&tilde.Fructose", := MENUITEM
  17568.             END
  17569.  
  17570.             END
  17571.  
  17572.  
  17573. ΓòÉΓòÉΓòÉ 21.6.2.4.6.3. SEPARATOR Menu Item ΓòÉΓòÉΓòÉ
  17574.  
  17575. There is a special form of the MENUITEM statement that is used to create a 
  17576. horizontal dividing bar between two active menu items in a pull-down menu. The 
  17577. SEPARATOR menu item is itself inactive and has no text associated with it nor a 
  17578. cmd value. 
  17579.  
  17580. Example 
  17581.  
  17582.  
  17583. Uses
  17584.   Os2Def,Os2Base,Os2PmApi;
  17585.  
  17586. Var
  17587.   "&tilde.Roman", : MENUITEM; (* ╨ísken var tom!! *)
  17588.   SEPARATOR       : MENUITEM; (* ╨ísken var tom!! *)
  17589.   "20             : MENUITEM; (* ╨ísken var tom!! *)
  17590.  
  17591. Begin
  17592.   "&tilde.Roman", := MENUITEM
  17593.   SEPARATOR       := MENUITEM
  17594.   "20             := MENUITEM
  17595.  
  17596.  
  17597. ΓòÉΓòÉΓòÉ 21.6.2.4.6.4. Menu Template ΓòÉΓòÉΓòÉ
  17598.  
  17599. Menu templates are data structures used to define menus. Menu templates can be 
  17600. loaded as resources or created dynamically, or embedded in dialog templates, 
  17601. which in turn can be loaded as resources or created dynamically. Templates 
  17602. loaded as resources cannot contain references to bit maps or owner-drawn items. 
  17603. A menu template consists of a sequence of variable-length records. Each record 
  17604. in a menu template defines a menu item. If a menu item contains a reference to 
  17605. a submenu, the menu template that defines that submenu is placed after the 
  17606. definition of that particular menu item. 
  17607.  
  17608.  
  17609. ΓòÉΓòÉΓòÉ 21.6.2.4.6.5. Template Format ΓòÉΓòÉΓòÉ
  17610.  
  17611. A menu template has the following format: 
  17612.  
  17613.  Length (USHORT) 
  17614.     The length of the menu template. 
  17615.  
  17616.  Version (USHORT) 
  17617.     The template version. Versions 0 and 1 are valid. 
  17618.  
  17619.  Code page (USHORT) 
  17620.     The identifier of the code page used for the text items within the menu 
  17621.     (but not any submenus, which each have their own code pages). 
  17622.  
  17623.  Item offset (USHORT) 
  17624.     The offset of the items from the start of the template, in bytes. 
  17625.  
  17626.  Count (USHORT) 
  17627.     The count of menu items. 
  17628.  
  17629.  Presentation parameters offset (USHORT) 
  17630.     Offset of presentation parameters from the start of the template, in bytes. 
  17631.     This field is only present for version 1 of the template. 
  17632.  
  17633.  Menu Items 
  17634.     A variable-sized array of menu items as follows: 
  17635.  
  17636.     Style (USHORT) 
  17637.             Menu item styles (MIS_*; see Menu Item Styles) combined with the 
  17638.             logical-OR operator. 
  17639.  
  17640.     Attributes (USHORT) 
  17641.             Menu item attributes (MIA_*; see Menu Item Attributes) combined 
  17642.             with the logical-OR operator. 
  17643.  
  17644.     Item (USHORT) 
  17645.             An application-provided identifier for the menu item. 
  17646.  
  17647.     Variable data 
  17648.             Following the identifier is a variable data structure whose format 
  17649.             depends upon the value of Style: 
  17650.  
  17651.             MIS_TEXT 
  17652.  
  17653.                     Text (PSZ) 
  17654.                             Null-terminated text string. 
  17655.  
  17656.             MIS_SUBMENU 
  17657.                     A menu template structure. 
  17658.  
  17659.             MIS_BITMAP 
  17660.  
  17661.                     Text (PCH) 
  17662.                             Null-terminated text string. 
  17663.  
  17664.                             For MIS_BITMAP menu items, the item text string can 
  17665.                             be used to derive the resource identifier from 
  17666.                             which a bit map is loaded. There are three 
  17667.                             instances: 
  17668.  
  17669.                                 The first byte is null; that is, no resource 
  17670.                                  is defined and it is assumed that the 
  17671.                                  application subsequently provides a bit-map 
  17672.                                  handle for the item. 
  17673.  
  17674.                                 The first byte is 0xFF, the second byte is the 
  17675.                                  low byte of the resource identifier, and the 
  17676.                                  third byte is the high byte of the resource 
  17677.                                  identifier. 
  17678.  
  17679.                                 The first character is "#", and subsequent 
  17680.                                  characters make up the decimal text 
  17681.                                  representation of the resource identifier. 
  17682.  
  17683.                             The resource is assumed to reside in the resource 
  17684.                             file of the current process. 
  17685.  
  17686.                             If the string is empty or does not follow the 
  17687.                             format above, no resource is loaded. 
  17688.  
  17689.  
  17690. ΓòÉΓòÉΓòÉ 21.6.2.4.7. STRINGTABLE Statement ΓòÉΓòÉΓòÉ
  17691.  
  17692. The STRINGTABLE statement defines one or more string resources for an 
  17693. application. String resources are null-terminated ASCII strings that can be 
  17694. loaded, when needed, from the executable file, using the WinLoadString 
  17695. function. 
  17696.  
  17697. Note:  The ASCII strings can include no more than 256 characters, including the 
  17698.        NULL termination character. 
  17699.  
  17700.  The STRINGTABLE statement has the form: 
  17701.  
  17702.    ΓöÇSTRINGTABLEΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇ
  17703.                   ΓööΓöÇloadoptionΓöÇΓöÿΓööΓöÇmemoptionΓöÇΓöÿ
  17704.  
  17705.  
  17706.    ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇstring-definitionsΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  17707.  String-definitions 
  17708.  
  17709.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17710.         Γöé                                 Γöé
  17711.                                          Γöé
  17712.     ΓöÇΓöÇΓöÇΓöÇΓöÇintegerΓöÇΓöÇΓöÇΓöÇΓöÇstringΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇ
  17713.  
  17714.  loadoption (LOADOPTION) 
  17715.     An optional keyword specifying when the resource is to be loaded. It must 
  17716.     be one of: 
  17717.  
  17718.     PRELOAD                Resource is loaded immediately. 
  17719.     LOADONCALL             Resource is loaded when called. 
  17720.  
  17721.     The default is LOADONCALL. 
  17722.  
  17723.     See Resource Load and Memory Options for a description of LOADOPTION. 
  17724.  
  17725.  memoption (MEMOPTION) 
  17726.     Consists of the following keyword or keywords, specifying whether the 
  17727.     resource is fixed or movable and whether it is discardable: 
  17728.  
  17729.     FIXED                  Resource remains at a fixed memory location. 
  17730.     MOVEABLE               Resource can be moved if necessary to compact 
  17731.                            memory. 
  17732.     DISCARDABLE            Resource can be discarded if no longer needed. 
  17733.  
  17734.     The default is MOVEABLE and DISCARDABLE. 
  17735.  
  17736.     See Resource Load and Memory Options for a description of MEMOPTION. 
  17737.  
  17738.  string (PCH) 
  17739.     A string, enclosed in double quotation marks. To insert a double-quote 
  17740.     character (") in the text, use two double-quote characters (""). 
  17741.  
  17742.     Note:  A string may be defined on more than one line if each line begins 
  17743.            and ends with a double-quote. If newline characters are desired 
  17744.            after each line, there should be a double-quote at the beginning of 
  17745.            the first line and at the end of the last line only. The string may 
  17746.     contain any ASCII characters.  Because (\) is interpreted as an escape 
  17747.     character, use (\\) to generate a (\). 
  17748.  
  17749.     The following escape sequences may be used: 
  17750.  
  17751.     Escape 
  17752.     Sequence           Name 
  17753.     \t                 Horizontal tab 
  17754.     \a                 Bell (alert) 
  17755.     \nnn               ASCII character (octal) 
  17756.     \xdd               ASCII character (hexadecimal). 
  17757.  
  17758.     The sequences \ddd and \xdd allow any character in the ASCII character set 
  17759.     to be inserted in the character string. Thus, the horizontal tab could be 
  17760.     entered as \X09, \011 or \t. 
  17761.  
  17762.  Example 
  17763.  
  17764.  
  17765.   STRINGTABLE
  17766.   BEGIN
  17767.   IDS_STRING1, "The first two strings in this table are identical."
  17768.   IDS_STRING2, "The first two strings "
  17769.   "in this table are identical."
  17770.   IDS_STRING3, "This string will contain a newline character
  17771.   before it continues on this line."
  17772.   END
  17773.  
  17774.  
  17775. ΓòÉΓòÉΓòÉ 21.6.3. Templates, Control Data, and Presentation Parameters ΓòÉΓòÉΓòÉ
  17776.  
  17777. This section describes: 
  17778.  
  17779.      Dialog Template 
  17780.      Dialog Coordinates 
  17781.      Dialog Template Format and Contents 
  17782.      Header 
  17783.      Items 
  17784.      Data Area 
  17785.      Control Data Statement 
  17786.      Presentation Parameters Statement 
  17787.      Parent/Child/Owner Relationship 
  17788.      Predefined Window Classes 
  17789.      Predefined Control Statements 
  17790.  
  17791.  
  17792. ΓòÉΓòÉΓòÉ 21.6.3.1. Dialog Template ΓòÉΓòÉΓòÉ
  17793.  
  17794. A dialog template is a data structure used to define a dialog box. Dialog 
  17795. templates can be loaded from resources or created dynamically in memory. Dialog 
  17796. templates define windows of any window class that contain child windows of any 
  17797. class. For standard dialog windows, the dialog window itself is created with 
  17798. the WC_FRAME class, and its children are any of the preregistered control 
  17799. classes. 
  17800.  
  17801. The dialog template specifies all the information required to create a dialog 
  17802. box and its children. 
  17803.  
  17804.  
  17805. ΓòÉΓòÉΓòÉ 21.6.3.2. Dialog Coordinates ΓòÉΓòÉΓòÉ
  17806.  
  17807. Coordinates in a dialog template are specified in dialog coordinates. These are 
  17808. based on the default character cell size; a unit in the horizontal direction is 
  17809. 1/4 the default character-cell width, and a unit in the vertical direction is 
  17810. 1/8 the default character-cell height. The origin is the bottom left-hand 
  17811. corner of the dialog box. 
  17812.  
  17813.  
  17814. ΓòÉΓòÉΓòÉ 21.6.3.3. Dialog Template Format and Contents ΓòÉΓòÉΓòÉ
  17815.  
  17816. A dialog template has these sections: 
  17817.  
  17818.  Header      Defines the type of template format and contains information about 
  17819.              the location of the other sections of the template. It also 
  17820.              contains a summary of the status of the individual controls 
  17821.              contained within the dialog box. 
  17822.  
  17823.  Items       Defines each of the controls that comprise the dialog box. 
  17824.  
  17825.  Data area   Contains the data values associated with each control. Each 
  17826.              control defined in the item section contains pointers to the data 
  17827.              area section. The data area also contains presentation parameter 
  17828.              definitions. The data area is not necessarily a contiguous portion 
  17829.              of the template. User data can be placed anywhere in the template 
  17830.              if it does not interfere with other defined information. 
  17831.  
  17832.  The sections of a dialog template are illustrated in the following figure. 
  17833.  
  17834.  Notes 
  17835.  
  17836.    1. Throughout the dialog template all lengths are in bytes. String lengths 
  17837.       do not include any null terminator that may be present. When strings are 
  17838.       passed to the Presentation Interface, the length specifications are used 
  17839.       and any null terminators are ignored. When strings are returned by the 
  17840.       Presentation Interface, length specifications and null terminators are 
  17841.       both supplied; therefore, space must be allowed for a null terminator. 
  17842.  
  17843.    2. All offsets are in bytes from the start of the dialog template structure. 
  17844.  
  17845.  
  17846. ΓòÉΓòÉΓòÉ 21.6.3.4. Header ΓòÉΓòÉΓòÉ
  17847.  
  17848. The dialog template header consists of: 
  17849.  
  17850.  Template length (USHORT) 
  17851.    The overall length of the dialog template. 
  17852.  
  17853.  Template type (USHORT) 
  17854.    The dialog template format type. The format defined is type 0. 
  17855.  
  17856.  Code page (USHORT) 
  17857.    The code page of the text in the dialog template. 
  17858.  
  17859.  Items offset (USHORT) 
  17860.    The offset of the array of dialog items. 
  17861.  
  17862.  Reserved (USHORT) 
  17863.    Must be 0. 
  17864.  
  17865.  Focus item (USHORT) 
  17866.    The index in the array of dialog items of the control to receive the focus. 
  17867.    If this value is 0, or if the identified control cannot receive the focus, 
  17868.    for example because it is a static control, the focus is passed to the first 
  17869.    item within the template that can receive the focus. 
  17870.  
  17871.  Reserved (USHORT) 
  17872.    Must be 0. 
  17873.  
  17874.  
  17875. ΓòÉΓòÉΓòÉ 21.6.3.5. Items ΓòÉΓòÉΓòÉ
  17876.  
  17877. The dialog template items are specified as elements of an array that also 
  17878. defines the hierarchy of the control windows of the dialog box. Each element of 
  17879. the array is a control window descriptor and defines some control or a child of 
  17880. some control, so that every control within the dialog box is described by this 
  17881. array. The first descriptor is the specification of the dialog box itself. 
  17882.  
  17883. The dialog template items consist of: 
  17884.  
  17885.  Reserved (USHORT) (BOOL16) 
  17886.    Must be 0. 
  17887.  
  17888.  Children (USHORT) 
  17889.    The number of dialog item child windows that are owned by this dialog item. 
  17890.  
  17891.    This is the number of elements following in the array that are created as 
  17892.    child windows of this window. Each window can have any number of child 
  17893.    windows, which allows for a tree-structured arrangement. 
  17894.  
  17895.    For example, in the figure in Dialog Template Format and Contents, assuming 
  17896.    that there are no more dialog items than are shown, the first item, the 
  17897.    dialog box control window descriptor, has three children. The second item 
  17898.    has no children, the third item has two children, and the remaining three 
  17899.    items have no children. 
  17900.  
  17901.  Class name length (USHORT) 
  17902.    The length of the window class name string. 
  17903.  
  17904.  Class name offset (USHORT) 
  17905.    The offset of the window class name string. 
  17906.  
  17907.  Text length (USHORT) 
  17908.    The length of the text string. 
  17909.  
  17910.    For controls that allow input of text, this is the current text length, not 
  17911.    the maximum text length, and so this value changes when text is put into the 
  17912.    control. 
  17913.  
  17914.  Text offset (USHORT) 
  17915.    The offset of the text string. 
  17916.  
  17917.  Style (ULONG) (BOOL32) 
  17918.    The window style of the control. 
  17919.  
  17920.    The standard style bits are 16 bits. The use of the remaining 16 bits 
  17921.    depends on the class of the control. 
  17922.  
  17923.  x (SHORT) 
  17924.  
  17925.  y (SHORT) 
  17926.    The position of the origin of the dialog item. This is specified in dialog 
  17927.    coordinates, with x and y relative to the origin of the parent window. 
  17928.  
  17929.  cx (SHORT) 
  17930.  
  17931.  cy (SHORT) 
  17932.    The size of the dialog item in dialog coordinates; it must be greater than 
  17933.    0. 
  17934.  
  17935.  Identifier (USHORT) 
  17936.    An application-defined identifier for the dialog item. 
  17937.  
  17938.  Reserved (USHORT) 
  17939.    Must be zero. 
  17940.  
  17941.  Control data offset (USHORT) 
  17942.    The offset of the control-specific data for this dialog item. A value of 0 
  17943.    indicates that there is no control data for this dialog item. 
  17944.  
  17945.  
  17946. ΓòÉΓòÉΓòÉ 21.6.3.6. Data Area ΓòÉΓòÉΓòÉ
  17947.  
  17948. The dialog template data area contains the following different types of 
  17949. objects: text, class name, presentation parameters, and control data. These 
  17950. objects can be placed anywhere within the data area. They do not have to be in 
  17951. contiguous storage, and so an application can place data for its own use 
  17952. between these objects. 
  17953.  
  17954. The dialog template data area contains: 
  17955.  
  17956.  Text (PCH) 
  17957.    The textual data associated with a dialog item. 
  17958.  
  17959.  Class name (PCH) 
  17960.    The name of the window class. 
  17961.  
  17962.  Presentation parameters (PRESPARAMS) 
  17963.    Presentation parameters are defined in Presentation Parameters Statement. 
  17964.  
  17965.  Control data (CTLDATA) 
  17966.    For more information, see Control Data Statement. 
  17967.  
  17968.  
  17969. ΓòÉΓòÉΓòÉ 21.6.3.7. Control Data Statement ΓòÉΓòÉΓòÉ
  17970.  
  17971. The optional CTLDATA statement is used to define control data for the control. 
  17972. Hexadecimal or decimal word constants follow the CTLDATA statement, separated 
  17973. with commas. 
  17974.  
  17975.               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17976.               Γöé                          Γöé
  17977.                                         Γöé
  17978.  ΓöÇΓöÇCTLDATAΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇdecimalΓöÇvalueΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓö£ΓöÇ
  17979.                  Γöé                     Γöé
  17980.                  Γö£ΓöÇΓöÇhexadecimalΓöÇvalueΓöÇΓöÇ
  17981.  
  17982.                  Γöé                     Γöé
  17983.                  ΓööΓöÇΓöÇstringΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17984.  
  17985. In addition to hexadecimal or decimal data, the CTLDATA statement can be 
  17986. followed by the MENU keyword, followed by a menu template in a BEGIN/END block. 
  17987. This creates a menu template as the control data of the window. 
  17988.  
  17989.  
  17990. ΓòÉΓòÉΓòÉ 21.6.3.8. Presentation Parameters Statement ΓòÉΓòÉΓòÉ
  17991.  
  17992. The optional PRESPARAMS statement is used to define presentation parameters. 
  17993. The syntax of the PRESPARAMS statement is as follows. 
  17994.  
  17995.                                  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÉ
  17996.                                  Γöé         Γöé
  17997.                                           Γöé
  17998.  ΓöÇΓöÇΓöÇPRESPARAMSΓöÇΓöÇΓöÇΓöÇtypeΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇvalueΓöÇΓöÇΓö£ΓöÇ
  17999.  
  18000. A presentation parameter consists of: 
  18001.  
  18002.  type (ULONG) 
  18003.    The presentation parameter attribute type.  See the PARAM data type for a 
  18004.    description of valid types. 
  18005.  
  18006.    A string can be used to specify the type for a user type. If this is done, 
  18007.    the string type is converted into a string atom when the dialog template is 
  18008.    read into memory. Thereafter, this presentation parameter is referred to by 
  18009.    this string atom. The application can use the atom manager API to match the 
  18010.    string and the string atom. 
  18011.  
  18012.  value (LONG or PSZ) 
  18013.    One or more values depending upon the attribute type. 
  18014.  
  18015.    If the value is enclosed in quotes it is a zero-terminated string. 
  18016.    Otherwise, it is converted to a LONG. There may be more than one value, 
  18017.    depending upon the type. See PARAM data type for a description of the values 
  18018.    required for system-defined presentation parameters. 
  18019.  
  18020.  Examples 
  18021.  
  18022.  The following are examples of PRESPARAMS statements: 
  18023.  
  18024.  
  18025.   Uses
  18026.     Os2Def,Os2Base,Os2PmApi;
  18027.  
  18028.   Var
  18029.     PP_BORDERCOLOR,  : PRESPARAMS; (* ╨ísken var tom!! *)
  18030.     PP_FONTNAMESIZE, : PRESPARAMS; (* ╨ísken var tom!! *)
  18031.     "my              : PRESPARAMS; (* ╨ísken var tom!! *)
  18032.     "my              : PRESPARAMS; (* ╨ísken var tom!! *)
  18033.  
  18034.   Begin
  18035.     PP_BORDERCOLOR,  := PRESPARAMS
  18036.     PP_FONTNAMESIZE, := PRESPARAMS
  18037.     "my              := PRESPARAMS
  18038.     "my              := PRESPARAMS
  18039.  
  18040.  
  18041. ΓòÉΓòÉΓòÉ 21.6.3.9. Parent/Child/Owner Relationship ΓòÉΓòÉΓòÉ
  18042.  
  18043. The format of the DLGTEMPLATE and WINDOWTEMPLATE resources is very general to 
  18044. allow tree-structured relationships within the resource format. The general 
  18045. layout of the templates is: 
  18046.  
  18047.  
  18048. Uses
  18049.   Os2Def,Os2Base,Os2PmApi;
  18050.  
  18051. Var
  18052.   Id : WINDOWTEMPLATE; (* ╨ísken var tom!! *)
  18053.  
  18054. Begin
  18055.   Id := WINDOWTEMPLATE
  18056.   BEGIN
  18057. Uses
  18058.   Os2Def,Os2Base,Os2PmApi;
  18059.  
  18060. Var
  18061.   WinTop : WINDOW; (* ╨ísken var tom!! *)
  18062.  
  18063. Begin
  18064.   WinTop := WINDOW
  18065.     BEGIN
  18066. Uses
  18067.   Os2Def,Os2Base,Os2PmApi;
  18068.  
  18069. Var
  18070.   Wind1 : WINDOW; (* ╨ísken var tom!! *)
  18071.   Wind2 : WINDOW; (* ╨ísken var tom!! *)
  18072.   Wind3 : WINDOW; (* ╨ísken var tom!! *)
  18073.  
  18074. Begin
  18075.   Wind1 := WINDOW
  18076.   Wind2 := WINDOW
  18077.   Wind3 := WINDOW
  18078.       BEGIN
  18079. Uses
  18080.   Os2Def,Os2Base,Os2PmApi;
  18081.  
  18082. Var
  18083.   Wind4 : WINDOW; (* ╨ísken var tom!! *)
  18084.  
  18085. Begin
  18086.   Wind4 := WINDOW
  18087.         END
  18088. Uses
  18089.   Os2Def,Os2Base,Os2PmApi;
  18090.  
  18091. Var
  18092.   Wind5 : WINDOW; (* ╨ísken var tom!! *)
  18093.  
  18094. Begin
  18095.   Wind5 := WINDOW
  18096.           END
  18097.           END
  18098.  
  18099. In this example, the top-level window is identified by winTop. It has four 
  18100. child windows: wind1, wind2, wind3, and wind5.  wind3 has one child window, 
  18101. wind4. When each of these windows is created, the parent and the owner are set 
  18102. to be the same. 
  18103.  
  18104. The only time when the parent and owner windows are not the same is when frame 
  18105. controls are automatically created by a frame window. 
  18106.  
  18107. Note that the WINDOW statements in the example above could also have been 
  18108. CONTROL or DIALOG statements. 
  18109.  
  18110.  
  18111. ΓòÉΓòÉΓòÉ 21.6.3.10. Predefined Window Classes ΓòÉΓòÉΓòÉ
  18112.  
  18113. The CONTROL statement can be used to define a window control of any class. 
  18114. Window classes may be user defined of one of a predefined set provided by the 
  18115. operating system. The following classes are provided in the OS/2 operating 
  18116. system. 
  18117.  
  18118.  WC_FRAME                 Application frame control. 
  18119.  WC_STATIC                Text and group boxes. 
  18120.  WC_BUTTON                Push button, check box or radio button. 
  18121.  WC_COMBOBOX              Combination of an entry field and list box. 
  18122.  WC_ENTRYFIELD            Single line entry field. 
  18123.  WC_MLE                   Multiple line entry field. 
  18124.  WC_LISTBOX               List box. 
  18125.  WC_MENU                  Application action bar, menus and popup menus. 
  18126.  WC_SCROLLBAR             Horizontal or vertical scroll bar. 
  18127.  WC_TITLEBAR              Application title bar. 
  18128.  WC_SPINBUTTON            Spin button entry field. 
  18129.  WC_CONTAINER             Container list. 
  18130.  WC_SLIDER                Horizontal or vertical slider control. 
  18131.  WC_VALUESET              Value set control. 
  18132.  WC_NOTEBOOK              Notebook control. 
  18133.  
  18134.  These controls make up the standard user interface components for 
  18135.  applications. The following example shows a simple listbox control. 
  18136.  
  18137.  
  18138.   Uses
  18139.     Os2Def,Os2Base,Os2PmApi;
  18140.  
  18141.   Var
  18142.     "", : CONTROL; (* ╨ísken var tom!! *)
  18143.  
  18144.   Begin
  18145.     "", := CONTROL
  18146.  
  18147.  
  18148. ΓòÉΓòÉΓòÉ 21.6.3.11. Predefined Control Statements ΓòÉΓòÉΓòÉ
  18149.  
  18150. In addition to the general form of the CONTROL statement, there are special 
  18151. control statements for commonly used controls. These statements define the 
  18152. attributes of the child control windows that appear in the window. 
  18153.  
  18154. Control statements have this general form: 
  18155.  
  18156.  ΓöÇcontroltypeΓöÇtextΓöÇ,ΓöÇidΓöÇ,ΓöÇxΓöÇ,ΓöÇyΓöÇ,ΓöÇcxΓöÇ,ΓöÇcyΓöÇΓöÇΓöÇ
  18157.  
  18158.  ΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  18159.      ΓööΓöÇΓöÇ,ΓöÇΓöÇΓöÇstyleΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18160.  
  18161.             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18162.                                      Γöé
  18163.  ΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇDIALOG statementΓöÇΓöÇΓöÇΓö£ΓöÇΓö£ΓöÇENDΓöÇΓöÇΓöÇ
  18164.               Γö£ΓöÇΓöÇCONTROL statementΓöÇΓöÇ
  18165.  
  18166.               ΓööΓöÇΓöÇWINDOW statementΓöÇΓöÇΓöÇΓöÿ
  18167.  
  18168. The following six controls are exceptions to this form because they do not take 
  18169. a text field. See the LISTBOX control statement for the form of these six 
  18170. controls. 
  18171.  
  18172.      CONTAINER 
  18173.      LISTBOX 
  18174.      NOTEBOOK 
  18175.      SLIDER 
  18176.      SPINBUTTON 
  18177.      VALUESET 
  18178.  
  18179.  controltype 
  18180.    is one of the keywords described below, defining the type of the control. 
  18181.  
  18182.  text (PCH) 
  18183.    is a string specifying the text to be displayed.  The string must be 
  18184.    enclosed in double quotation marks. The manner in which the text is 
  18185.    displayed depends on the particular control, as detailed below. 
  18186.  
  18187.    To indicate the mnemonic for each item, insert the tilde character (~) in 
  18188.    the string preceding the mnemonic character. 
  18189.  
  18190.    The double quotation marks are required for the COMBOBOX title even if no 
  18191.    title is used. 
  18192.  
  18193.  id (USHORT) 
  18194.    is a unique integer number identifying the control. 
  18195.  
  18196.  x,y (SHORT) 
  18197.    are integer numbers specifying the x- and y-coordinates of the lower left 
  18198.    corner of the control, in dialog coordinates. The coordinates are relative 
  18199.    to the origin of the dialog. 
  18200.  
  18201.  cx,cy (SHORT) 
  18202.    are integer numbers specifying the width and height of the control. 
  18203.  
  18204.  The x, y, cx, and cy fields can use addition and subtraction operators (+ and 
  18205.  -). For example, 15 + 6 can be used for the x-field. 
  18206.  
  18207.  Styles can be combined using the (Or) operator. 
  18208.  
  18209.  The control type keywords are shown below, with their classes and default 
  18210.  styles: 
  18211.  
  18212.  AUTOCHECKBOX 
  18213.  
  18214.     Class              WC_BUTTON 
  18215.     Default style      WS_TABSTOP, WS_VISIBLE, BS_AUTOCHECKBOX 
  18216.  
  18217.  AUTORADIOBUTTON 
  18218.  
  18219.     Class              WC_BUTTON 
  18220.     Default style      BS_AUTORADIOBUTTON, WS_TABSTOP, WS_VISIBLE 
  18221.  
  18222.  CHECKBOX 
  18223.  
  18224.     Class              WC_BUTTON 
  18225.     Default style      BS_CHECKBOX, WS_TABSTOP, WS_VISIBLE 
  18226.  
  18227.  COMBOBOX 
  18228.  
  18229.     Format             The form of the COMBOBOX control statement is shown 
  18230.                        below. 
  18231.  
  18232.                        The fields have the same meaning as in the other control 
  18233.                        statements. 
  18234.  
  18235.                                                ΓöÇΓöÇΓöÇCOMBOBOXΓöÇΓöÇ"title"ΓöÇΓöÇ,ΓöÇΓöÇidΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇxΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇyΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇcxΓöÇ
  18236.  
  18237.                                                ΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇcyΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇ
  18238.                                                            ΓööΓöÇΓöÇ,ΓöÇΓöÇΓöÇstyleΓöÇΓöÇΓöÿ
  18239.  
  18240.     Class              WC_COMBOBOX 
  18241.     Default style      CBS_SIMPLE, WS_TABSTOP, WS_VISIBLE 
  18242.  
  18243.  CONTAINER 
  18244.  
  18245.     Format             The CONTAINER control statement does not contain a text 
  18246.                        field, so it has the same format as the LISTBOX 
  18247.                        statement. 
  18248.  
  18249.     Class              WC_CONTAINER 
  18250.     Default style      WS_TABSTOP, WS_VISIBLE, CCS_SINGLESEL 
  18251.  
  18252.  CTEXT 
  18253.  
  18254.     Class              WC_STATIC 
  18255.     Default style      SS_TEXT, DT_CENTER, WS_GROUP, WS_VISIBLE 
  18256.  
  18257.  DEFPUSHBUTTON 
  18258.  
  18259.     Class              WC_BUTTON 
  18260.     Default style      BS_DEFAULT, BS_PUSHBUTTON, WS_TABSTOP, WS_VISIBLE 
  18261.  
  18262.  EDITTEXT 
  18263.  
  18264.     Class              WC_ENTRYFIELD 
  18265.     Default style      WS_ENTRYFIELD, WS_TABSTOP, WS_VISIBLE, ES_AUTOSCROLL 
  18266.  
  18267.  ENTRYFIELD 
  18268.  
  18269.     Class              WC_ENTRYFIELD 
  18270.     Default style      WS_TABSTOP, ES_LEFT, WS_VISIBLE 
  18271.  
  18272.  FRAME 
  18273.  
  18274.     Class              WC_FRAME 
  18275.     Default style      WS_VISIBLE 
  18276.  
  18277.  GROUPBOX 
  18278.  
  18279.     Class              WC_STATIC 
  18280.     Default style      SS_GROUPBOX, WS_TABSTOP, WS_VISIBLE 
  18281.  
  18282.  ICON 
  18283.  
  18284.     Class              WC_STATIC 
  18285.     Default style      SS_ICON, WS_VISIBLE 
  18286.  
  18287.  LISTBOX 
  18288.  
  18289.     Format             The form of the LISTBOX control statement is different 
  18290.                        from the general form because it does not take a text 
  18291.                        field, however the fields have the same meaning as in 
  18292.                        the other control statements. The form of the LISTBOX 
  18293.                        control statement is shown below. 
  18294.  
  18295.                                                ΓöÇΓöÇcontroltypeΓöÇΓöÇΓöÇidΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇxΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇyΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇcxΓöÇΓöÇ
  18296.  
  18297.                                                ΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇcyΓöÇΓöÇΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö£ΓöÇΓöÇ
  18298.                                                            ΓööΓöÇΓöÇ,ΓöÇΓöÇΓöÇstyleΓöÇΓöÇΓöÿ
  18299.  
  18300.     Class              WC_LISTBOX 
  18301.     Default style      LBS_NOTIFY, LBS_SORT, WS_VSCROLL, WS_BORDER, WS_VISIBLE 
  18302.  
  18303.  LTEXT 
  18304.  
  18305.     Class              WC_STATIC 
  18306.     Default style      SS_TEXT, DT_LEFT, WS_GROUP, WS_VISIBLE 
  18307.  
  18308.  MLE 
  18309.  
  18310.     Class              WC_MLE 
  18311.     Default style      WS_MLE, WS_TABSTOP, WS_VISIBLE, MLS_BORDER 
  18312.  
  18313.  NOTEBOOK 
  18314.  
  18315.     Format             The NOTEBOOK control statement does not contain a text 
  18316.                        field, so it has the same format as the LISTBOX 
  18317.                        statement. 
  18318.  
  18319.     Class              WC_NOTEBOOK 
  18320.     Default style      WS_NOTEBOOK, WS_TABSTOP, WS_VISIBLE 
  18321.  
  18322.  PUSHBUTTON 
  18323.  
  18324.     Class              WC_BUTTON 
  18325.     Default style      BS_PUSHBUTTON, WS_TABSTOP, WS_VISIBLE 
  18326.  
  18327.  RADIOBUTTON 
  18328.  
  18329.     Class              WC_BUTTON 
  18330.     Default style      BS_RADIOBUTTON, WS_TABSTOP, WS_VISIBLE 
  18331.  
  18332.  RTEXT 
  18333.  
  18334.     Class              WC_STATIC 
  18335.     Default style      SS_TEXT, DT_RIGHT, WS_GROUP, WS_VISIBLE 
  18336.  
  18337.  SLIDER 
  18338.  
  18339.     Format             The SLIDER control statement does not contain a text 
  18340.                        field, so it has the same format as the LISTBOX 
  18341.                        statement. 
  18342.  
  18343.     Class              WC_SLIDER 
  18344.     Default style      WS_SLIDER, WS_TABSTOP, WS_VISIBLE 
  18345.  
  18346.  SPINBUTTON 
  18347.  
  18348.     Format             The SPINBUTTON control statement does not contain a text 
  18349.                        field, so it has the same format as the LISTBOX 
  18350.                        statement. 
  18351.  
  18352.     Class              WC_SPINBUTTON 
  18353.     Default style      WS_TABSTOP, WS_VISIBLE, SPBS_MASTER 
  18354.  
  18355.  VALUESET 
  18356.  
  18357.     Format             The VALUESET control statement does not contain a text 
  18358.                        field, so it has the same format as the LISTBOX 
  18359.                        statement. 
  18360.  
  18361.     Class              WC_VALUESET 
  18362.     Default style      WS_VALUESET, WS_TABSTOP, WS_VISIBLE 
  18363.  
  18364.  Examples 
  18365.  
  18366.  The following is a complete example of a DIALOG statement: 
  18367.  
  18368.  
  18369.   Uses
  18370.     Os2Def,Os2Base,Os2PmApi;
  18371.  
  18372.   Var
  18373.     "errmess" : DLGTEMPLATE; (* ╨ísken var tom!! *)
  18374.  
  18375.   Begin
  18376.     "errmess" := DLGTEMPLATE
  18377.     BEGIN
  18378.   Uses
  18379.     Os2Def,Os2Base,Os2PmApi;
  18380.  
  18381.   Var
  18382.     "Disk : DIALOG; (* ╨ísken var tom!! *)
  18383.  
  18384.   Begin
  18385.     "Disk := DIALOG
  18386.       BEGIN
  18387.   Uses
  18388.     Os2Def,Os2Base,Os2PmApi;
  18389.  
  18390.   Var
  18391.     "Select   : CTEXT;       (* ╨ísken var tom!! *)
  18392.     "Retry",  : RADIOBUTTON; (* ╨ísken var tom!! *)
  18393.     "Abort",  : RADIOBUTTON; (* ╨ísken var tom!! *)
  18394.     "Ignore", : RADIOBUTTON; (* ╨ísken var tom!! *)
  18395.  
  18396.   Begin
  18397.     "Select   := CTEXT
  18398.     "Retry",  := RADIOBUTTON
  18399.     "Abort",  := RADIOBUTTON
  18400.     "Ignore", := RADIOBUTTON
  18401.         END
  18402.         END
  18403.  
  18404.  This is an example of a WINDOWTEMPLATE statement that is used to define a 
  18405.  specific kind of window frame. Calling Load Dialog with this resource 
  18406.  automatically creates the frame window, the frame controls, and the client 
  18407.  window (of class MyClientClass). 
  18408.  
  18409.  
  18410.   Uses
  18411.     Os2Def,Os2Base,Os2PmApi;
  18412.  
  18413.   Var
  18414.     "wind1" : WINDOWTEMPLATE; (* ╨ísken var tom!! *)
  18415.  
  18416.   Begin
  18417.     "wind1" := WINDOWTEMPLATE
  18418.     BEGIN
  18419.   Uses
  18420.     Os2Def,Os2Base,Os2PmApi;
  18421.  
  18422.   Var
  18423.     "My : FRAME; (* ╨ísken var tom!! *)
  18424.  
  18425.   Begin
  18426.     "My := FRAME
  18427.       FCF_STANDARD Or FCF_VERTSCROLL
  18428.       BEGIN
  18429.   Uses
  18430.     Os2Def,Os2Base,Os2PmApi;
  18431.  
  18432.   Var
  18433.     "", : WINDOW; (* ╨ísken var tom!! *)
  18434.  
  18435.   Begin
  18436.     "", := WINDOW
  18437.         style
  18438.         END
  18439.         END
  18440.  
  18441.  This example creates a resource template for a parallel dialog identified by 
  18442.  the constant parallel1. It includes a frame with a title bar, a system menu, 
  18443.  and a dialog-style border. The parallel dialog has three auto radio buttons in 
  18444.  it. 
  18445.  
  18446.  
  18447.   Uses
  18448.     Os2Def,Os2Base,Os2PmApi;
  18449.  
  18450.   Var
  18451.     Parallel1 : DLGTEMPLATE; (* ╨ísken var tom!! *)
  18452.  
  18453.   Begin
  18454.     Parallel1 := DLGTEMPLATE
  18455.     BEGIN
  18456.   Uses
  18457.     Os2Def,Os2Base,Os2PmApi;
  18458.  
  18459.   Var
  18460.     "Parallel    : DIALOG;  (* ╨ísken var tom!! *)
  18461.     FCF_TITLEBAR : CTLDATA; (* ╨ísken var tom!! *)
  18462.  
  18463.   Begin
  18464.     "Parallel    := DIALOG
  18465.     FCF_TITLEBAR := CTLDATA
  18466.       BEGIN
  18467.   Uses
  18468.     Os2Def,Os2Base,Os2PmApi;
  18469.  
  18470.   Var
  18471.     "Retry",  : AUTORADIOBUTTON; (* ╨ísken var tom!! *)
  18472.     "Abort",  : AUTORADIOBUTTON; (* ╨ísken var tom!! *)
  18473.     "Ignore", : AUTORADIOBUTTON; (* ╨ísken var tom!! *)
  18474.  
  18475.   Begin
  18476.     "Retry",  := AUTORADIOBUTTON
  18477.     "Abort",  := AUTORADIOBUTTON
  18478.     "Ignore", := AUTORADIOBUTTON
  18479.         END
  18480.         END
  18481.  
  18482.  
  18483. ΓòÉΓòÉΓòÉ 21.6.4. Resource (.RES) File Specification ΓòÉΓòÉΓòÉ
  18484.  
  18485. The format for the .RES file is: 
  18486.  
  18487.  
  18488. (/TYPE NAME FLAGS SIZE BYTES/)+
  18489.  
  18490. Where: 
  18491.  
  18492.  TYPE      is either a null-terminated string or an ordinal, in which instance 
  18493.            the first byte is 0xFF followed by an INT that is the ordinal. 
  18494.  
  18495.  
  18496.                       (* Predefined resource types *)
  18497.  
  18498.  NAME      is the same format as TYPE. There are no predefined names. 
  18499.  
  18500.  FLAGS     is an unsigned value containing the memory manager flags: 
  18501.  
  18502.  
  18503.                       /* or read-only (data segment)  */
  18504.                       (* OR READ-ONLY (DATA SEGMENT)  *)
  18505.  
  18506.  SIZE      is a LONG value defining how many bytes follow in the resource. 
  18507.  
  18508.  BYTES     is the stream of bytes that makes up the resource. 
  18509.  
  18510.  Any number of resources can appear one after another in the .RES file. 
  18511.  
  18512.  
  18513. ΓòÉΓòÉΓòÉ 21.7. Virtual Key Definitions ΓòÉΓòÉΓòÉ
  18514.  
  18515. The PC VKEY set is shown in the following table: 
  18516.  
  18517. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18518. ΓöéSymbol         ΓöéPersonal Computer AT   ΓöéEnhanced Keyboard        Γöé
  18519. Γöé               ΓöéKeyboard               Γöé                         Γöé
  18520. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18521. ΓöéVK_BUTTON1     ΓöéThese values are only  ΓöéThese values are only    Γöé
  18522. ΓöéVK_BUTTON2     Γöéused to access the     Γöéused to access the       Γöé
  18523. ΓöéVK_BUTTON3     Γöéup/down and toggled    Γöéup/down and toggled      Γöé
  18524. Γöé               Γöéstates of the pointing Γöéstates of the pointing   Γöé
  18525. Γöé               Γöédevice buttons; they   Γöédevice buttons; they     Γöé
  18526. Γöé               Γöénever actually appear  Γöénever actually appear in Γöé
  18527. Γöé               Γöéin a WM_CHAR message.  Γöéa WM_CHAR message.       Γöé
  18528. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18529. ΓöéVK_BREAK       ΓöéCtrl + Scroll Lock     ΓöéCtrl + Pause             Γöé
  18530. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18531. ΓöéVK_BACKSPACE   ΓöéBackspace              ΓöéBackspace                Γöé
  18532. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18533. ΓöéVK_TAB         ΓöéTab                    ΓöéTab                      Γöé
  18534. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18535. ΓöéVK_BACKTAB     ΓöéShift + Tab            ΓöéShift + Tab              Γöé
  18536. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18537. ΓöéVK_NEWLINE     ΓöéEnter                  ΓöéEnter                    Γöé
  18538. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18539. ΓöéVK_SHIFT  *    ΓöéLeft and Right Shift   ΓöéLeft and Right Shift     Γöé
  18540. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18541. ΓöéVK_CTRL  *     ΓöéCtrl                   ΓöéLeft and Right Ctrl      Γöé
  18542. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18543. ΓöéVK_ALT  *      ΓöéAlt                    ΓöéLeft and Right Alt       Γöé
  18544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18545. ΓöéVK_ALTGRAF  *  ΓöéNone                   ΓöéAlt Graf (if available)  Γöé
  18546. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18547. ΓöéVK_PAUSE       ΓöéCtrl + Num Lock        ΓöéPause                    Γöé
  18548. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18549. ΓöéVK_CAPSLOCK    ΓöéCaps Lock              ΓöéCaps Lock                Γöé
  18550. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18551. ΓöéVK_ESC         ΓöéEsc                    ΓöéEsc                      Γöé
  18552. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18553. ΓöéVK_SPACE  *    ΓöéSpace                  ΓöéSpace                    Γöé
  18554. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18555. ΓöéVK_PAGEUP  *   ΓöéNumpad 9               ΓöéPg Up and Numpad 9       Γöé
  18556. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18557. ΓöéVK_PAGEDOWN  * ΓöéNumpad 3               ΓöéPg Dn and Numpad 3       Γöé
  18558. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18559. ΓöéVK_END  *      ΓöéNumpad 1               ΓöéEnd and Numpad 1         Γöé
  18560. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18561. ΓöéVK_HOME  *     ΓöéNumpad 7               ΓöéHome and Numpad 7        Γöé
  18562. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18563. ΓöéVK_LEFT  *     ΓöéNumpad 4               ΓöéLeft and Numpad 4        Γöé
  18564. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18565. ΓöéVK_UP  *       ΓöéNumpad 8               ΓöéUp and Numpad 8          Γöé
  18566. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18567. ΓöéVK_RIGHT  *    ΓöéNumpad 6               ΓöéRight and Numpad 6       Γöé
  18568. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18569. ΓöéVK_DOWN  *     ΓöéNumpad 2               ΓöéDown and Numpad 2        Γöé
  18570. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18571. ΓöéVK_PRINTSCRN   ΓöéShift + Print Screen   ΓöéPrint Screen             Γöé
  18572. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18573. ΓöéVK_INSERT  *   ΓöéNumpad 0               ΓöéIns and Numpad 0         Γöé
  18574. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18575. ΓöéVK_DELETE  *   ΓöéNumpad                 ΓöéDel and Numpad           Γöé
  18576. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18577. ΓöéVK_SCRLLOCK    ΓöéScroll Lock            ΓöéScroll Lock              Γöé
  18578. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18579. ΓöéVK_NUMLOCK     ΓöéNum Lock               ΓöéNum Lock                 Γöé
  18580. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18581. ΓöéVK_ENTER       ΓöéShift + Enter          ΓöéShift + Enter and Numpad Γöé
  18582. Γöé               Γöé                       ΓöéEnter                    Γöé
  18583. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18584. ΓöéVK_SYSRQ       ΓöéSysRq                  ΓöéAlt + Print Screen       Γöé
  18585. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18586. ΓöéVK_F1  *       ΓöéF1                     ΓöéF1                       Γöé
  18587. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18588. ΓöéVK_F2  *       ΓöéF2                     ΓöéF2                       Γöé
  18589. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18590. ΓöéVK_F3  *       ΓöéF3                     ΓöéF3                       Γöé
  18591. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18592. ΓöéVK_F4  *       ΓöéF4                     ΓöéF4                       Γöé
  18593. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18594. ΓöéVK_F5  *       ΓöéF5                     ΓöéF5                       Γöé
  18595. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18596. ΓöéVK_F6  *       ΓöéF6                     ΓöéF6                       Γöé
  18597. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18598. ΓöéVK_F7  *       ΓöéF7                     ΓöéF7                       Γöé
  18599. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18600. ΓöéVK_F8  *       ΓöéF8                     ΓöéF8                       Γöé
  18601. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18602. ΓöéVK_F9  *       ΓöéF9                     ΓöéF9                       Γöé
  18603. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18604. ΓöéVK_F10  *      ΓöéF10                    ΓöéF10                      Γöé
  18605. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18606. ΓöéVK_F11  *      ΓöéNone                   ΓöéF11                      Γöé
  18607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18608. ΓöéVK_F12  *      ΓöéNone                   ΓöéF12                      Γöé
  18609. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18610. ΓöéVK_F13         ΓöéNone                   ΓöéNone                     Γöé
  18611. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18612. ΓöéVK_F14         ΓöéNone                   ΓöéNone                     Γöé
  18613. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18614. ΓöéVK_F15         ΓöéNone                   ΓöéNone                     Γöé
  18615. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18616. ΓöéVK_F16         ΓöéNone                   ΓöéNone                     Γöé
  18617. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18618. ΓöéVK_F17         ΓöéNone                   ΓöéNone                     Γöé
  18619. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18620. ΓöéVK_F18         ΓöéNone                   ΓöéNone                     Γöé
  18621. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18622. ΓöéVK_F19         ΓöéNone                   ΓöéNone                     Γöé
  18623. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18624. ΓöéVK_F20         ΓöéNone                   ΓöéNone                     Γöé
  18625. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18626. ΓöéVK_F21         ΓöéNone                   ΓöéNone                     Γöé
  18627. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18628. ΓöéVK_F22         ΓöéNone                   ΓöéNone                     Γöé
  18629. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18630. ΓöéVK_F23         ΓöéNone                   ΓöéNone                     Γöé
  18631. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18632. ΓöéVK_F24         ΓöéNone                   ΓöéNone                     Γöé
  18633. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18634. ΓöéVK_MENU  *     ΓöéF10                    ΓöéF10                      Γöé
  18635. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18636.  
  18637. Notes 
  18638.  
  18639.    1. VKEYs marked with an asterisk (*) are generated irrespective of other 
  18640.       shift states (Shift, Ctrl, Alt, and Alt Graf). 
  18641.  
  18642.    2. VK_CAPSLOCK is not generated for any of the Ctrl shift states, for PC-DOS 
  18643.       compatibility. 
  18644.  
  18645.    3. Wherever possible, the VK_ name is derived from the legend on the key top 
  18646.       of the 101-key Enhanced PC keyboard. 
  18647.  
  18648.  
  18649. ΓòÉΓòÉΓòÉ 22. Notices ΓòÉΓòÉΓòÉ
  18650.  
  18651. Second Edition (January 1996) 
  18652.  
  18653. The following paragraph does not apply to the United Kingdom or any country 
  18654. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  18655. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  18656. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  18657. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  18658. do not allow disclaimer of express or implied warranties in certain 
  18659. transactions, therefore, this statement may not apply to you. 
  18660.  
  18661. This publication could include technical inaccuracies or typographical errors. 
  18662. Changes are periodically made to the information herein; these changes will be 
  18663. incorporated in new editions of the publication. IBM may make improvements 
  18664. and/or changes in the product(s) and/or the program(s) described in this 
  18665. publication at any time. 
  18666.  
  18667. It is possible that this publication may contain reference to, or information 
  18668. about, IBM products (machines and programs), programming, or services that are 
  18669. not announced in your country.  Such references or information must not be 
  18670. construed to mean that IBM intends to announce such IBM products, programming, 
  18671. or services in your country. 
  18672.  
  18673. Requests for technical information about IBM products should be made to your 
  18674. IBM reseller or IBM marketing representative. 
  18675.  
  18676.  
  18677. ΓòÉΓòÉΓòÉ 22.1. Copyright Notices ΓòÉΓòÉΓòÉ
  18678.  
  18679. COPYRIGHT LICENSE: This publication contains printed sample application 
  18680. programs in source language, which illustrate OS/2 programming techniques. You 
  18681. may copy, modify, and distribute these sample programs in any form without 
  18682. payment to IBM, for the purposes of developing, using, marketing or 
  18683. distributing application programs conforming to the OS/2 application 
  18684. programming interface. 
  18685.  
  18686. Each copy of any portion of these sample programs or any derivative work, which 
  18687. is distributed to others, must include a copyright notice as follows: "(C) 
  18688. (your company name) (year).  All rights reserved." 
  18689.  
  18690. (C) Copyright International Business Machines Corporation 1994, 1996. All 
  18691. rights reserved. 
  18692. Note to U.S. Government Users - Documentation related to restricted rights - 
  18693. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  18694. Schedule Contract with IBM Corp. 
  18695.  
  18696.  
  18697. ΓòÉΓòÉΓòÉ 22.2. Disclaimers ΓòÉΓòÉΓòÉ
  18698.  
  18699. References in this publication to IBM products, programs, or services do not 
  18700. imply that IBM intends to make these available in all countries in which IBM 
  18701. operates. Any reference to an IBM product, program, or service is not intended 
  18702. to state or imply that only that IBM product, program, or service may be used. 
  18703. Subject to IBM's valid intellectual property or other legally protectable 
  18704. rights, any functionally equivalent product, program, or service may be used 
  18705. instead of the IBM product, program, or service. The evaluation and 
  18706. verification of operation in conjunction with other products, except those 
  18707. expressly designated by IBM, are the responsibility of the user. 
  18708.  
  18709. IBM may have patents or pending patent applications covering subject matter in 
  18710. this document. The furnishing of this document does not give you any license to 
  18711. these patents. You can send license inquiries, in writing, to: 
  18712.  
  18713.       IBM Director of Licensing 
  18714.       IBM Corporation 
  18715.       500 Columbus Avenue 
  18716.       Thornwood, NY  10594 
  18717.       U.S.A. 
  18718.  
  18719.  Licensees of this program who wish to have information about it for the 
  18720.  purpose of enabling:  (i) the exchange of information between independently 
  18721.  created programs and other programs (including this one) and (ii) the mutual 
  18722.  use of the information which has been exchanged, should contact IBM 
  18723.  Corporation, Department RM1A, 1000 N.W. 51st Street, Boca Raton, FL 33431, 
  18724.  U.S.A.  Such information may be available, subject to appropriate terms and 
  18725.  conditions, including in some cases, payment of a fee. 
  18726.  
  18727.  
  18728. ΓòÉΓòÉΓòÉ 22.3. Trademarks ΓòÉΓòÉΓòÉ
  18729.  
  18730. The following terms are trademarks of the IBM Corporation in the United States 
  18731. or other countries or both: 
  18732.  
  18733.  Common User Access                 CUA 
  18734.  IBM                                Information Presentation Facility 
  18735.  IPF                                Operating System/2 
  18736.  OS/2                               PM 
  18737.  Presentation Manager               SAA 
  18738.  System Application Architecture    Workplace Shell 
  18739.  
  18740.  The following terms are trademarks of other companies: 
  18741.  
  18742.  Adobe                              Adobe Systems Incorporated 
  18743.  Helvetica                          Linotype 
  18744.  Intel                              Intel Corporation 
  18745.  PostScript                         Adobe Systems Incorporated 
  18746.  Times New Roman                    Monotype 
  18747.  
  18748.  Other company, product, and service names, which may be denoted by a double 
  18749.  asterisk (**), may be trademarks or service marks of others. 
  18750.  
  18751.  
  18752. ΓòÉΓòÉΓòÉ 23. Glossary ΓòÉΓòÉΓòÉ
  18753.  
  18754. This glossary defines many of the terms used in this book. It includes terms 
  18755. and definitions from the IBM Dictionary of Computing, as well as terms specific 
  18756. to the OS/2 operating system and the Presentation Manager. It is not a complete 
  18757. glossary for the entire OS/2 operating system; nor is it a complete dictionary 
  18758. of computer terms. 
  18759.  
  18760. Other primary sources for these definitions are: 
  18761.  
  18762.      The American National Standard Dictionary for Information Systems, ANSI 
  18763.       X3.172-1990, copyrighted 1990 by the American National Standards 
  18764.       Institute, 11 West 42nd Street, New York, New York 10036. These 
  18765.       definitions are identified by the symbol (A) after the definition. 
  18766.  
  18767.      The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  18768.       Technical Committee 1, of the International Organization for 
  18769.       Standardization and the International Electrotechnical Commission 
  18770.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  18771.       identified by the symbol (I) after the definition; definitions taken from 
  18772.       draft international standards, committee drafts, and working papers being 
  18773.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  18774.       definition, indicating that final agreement has not yet been reached 
  18775.       among the participating National Bodies of SC1. 
  18776.  
  18777.  
  18778. ΓòÉΓòÉΓòÉ 23.1. Glossary Listing ΓòÉΓòÉΓòÉ
  18779.  
  18780. Select a starting letter of glossary terms: 
  18781.  
  18782.  A    N 
  18783.  B    O 
  18784.  C    P 
  18785.  D    Q 
  18786.  E    R 
  18787.  F    S 
  18788.  G    T 
  18789.  H    U 
  18790.  I    V 
  18791.  J    W 
  18792.  K    X 
  18793.  L    Y 
  18794.  M    Z 
  18795.  
  18796.  
  18797. ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
  18798.  
  18799.  accelerator  -In SAA Common User Access architecture, a key or combination of 
  18800.    keys that invokes an application-defined function. 
  18801.  
  18802.  accelerator table  -A table used to define which key strokes are treated as 
  18803.    accelerators and the commands they are translated into. 
  18804.  
  18805.  access mode  -The manner in which an application gains access to a file it has 
  18806.    opened. Examples of access modes are read-only, write-only, and read/write. 
  18807.  
  18808.  access permission  -All access rights that a user has regarding an object. (I)
  18809.  
  18810.  action  -One of a set of defined tasks that a computer performs. Users request 
  18811.    the application to perform an action in several ways, such as typing a 
  18812.    command, pressing a function key, or selecting the action name from an 
  18813.    action bar or menu. 
  18814.  
  18815.  action bar  -In SAA Common User Access architecture, the area at the top of a 
  18816.    window that contains choices that give a user access to actions available in 
  18817.    that window. 
  18818.  
  18819.  action point  -The current position on the screen at which the pointer is 
  18820.    pointing. Contrast with hot spot and input focus. 
  18821.  
  18822.  active program  -A program currently running on the computer.  An active 
  18823.    program can be interactive (running and receiving input from the user) or 
  18824.    noninteractive (running but not receiving input from the user). See also 
  18825.    interactive program and noninteractive program. 
  18826.  
  18827.  active window  -The window with which the user is currently interacting. 
  18828.  
  18829.  address space  -(1) The range of addresses available to a program. (A)  (2) 
  18830.    The area of virtual storage available for a particular job. 
  18831.  
  18832.  alphanumeric video output  -Output to the logical video buffer when the video 
  18833.    adapter is in text mode and the logical video buffer is addressed by an 
  18834.    application as a rectangular array of character cells. 
  18835.  
  18836.  American National Standard Code for Information Interchange  -The standard 
  18837.    code, using a coded character set consisting of 7-bit coded characters (8 
  18838.    bits including parity check), that is used for information interchange among 
  18839.    data processing systems, data communication systems, and associated 
  18840.    equipment. The ASCII set consists of control characters and graphic 
  18841.    characters. (A) 
  18842.  
  18843.    Note:  IBM has defined an extension to ASCII code (characters 128-255). 
  18844.  
  18845.  anchor  -A window procedure that handles Presentation Manager message 
  18846.    conversions between an icon procedure and an application. 
  18847.  
  18848.  anchor block  -An area of Presentation-Manager-internal resources to allocated 
  18849.    process or thread that calls WinInitialize. 
  18850.  
  18851.  anchor point  -A point in a window used by a program designer or by a window 
  18852.    manager to position a subsequently appearing window. 
  18853.  
  18854.  ANSI  -American National Standards Institute. 
  18855.  
  18856.  APA  -All points addressable. 
  18857.  
  18858.  API  -Application programming interface. 
  18859.  
  18860.  application  -A collection of software components used to perform specific 
  18861.    types of work on a computer; for example, a payroll application, an airline 
  18862.    reservation application, a network application. 
  18863.  
  18864.  application object  -In SAA Advanced Common User Access architecture, a form 
  18865.    that an application provides for a user; for example, a spreadsheet form. 
  18866.    Contrast with user object. 
  18867.  
  18868.  application programming interface (API)  -A functional interface supplied by 
  18869.    the operating system or by a separately orderable licensed program that 
  18870.    allows an application program written in a high-level language to use 
  18871.    specific data or functions of the operating system or the licensed program. 
  18872.  
  18873.  application-modal  -Pertaining to a message box or dialog box for which 
  18874.    processing must be completed before further interaction with any other 
  18875.    window owned by the same application may take place. 
  18876.  
  18877.  area  -In computer graphics, a filled shape such as a solid rectangle. 
  18878.  
  18879.  ASCII  -American National Standard Code for Information Interchange. 
  18880.  
  18881.  ASCIIZ  -A string of ASCII characters that is terminated with a byte 
  18882.    containing the value 0. 
  18883.  
  18884.  aspect ratio  -In computer graphics, the width-to-height ratio of an area, 
  18885.    symbol, or shape. 
  18886.  
  18887.  asynchronous (ASYNC)  -(1) Pertaining to two or more processes that do not 
  18888.    depend upon the occurrence of specific events such as common timing 
  18889.    signals. (T)  (2) Without regular time relationship;  unexpected or 
  18890.    unpredictable with respect to the execution of program instructions. See 
  18891.    also synchronous. 
  18892.  
  18893.  atom  -A constant that represents a string. As soon as a string has been 
  18894.    defined as an atom, the atom can be used in place of the string to save 
  18895.    space. Strings are associated with their respective atoms in an atom table. 
  18896.    See also integer atom. 
  18897.  
  18898.  atom table  -A table used to relate atoms with the strings that they 
  18899.    represent. Also in the table is the mechanism by which the presence of a 
  18900.    string can be checked. 
  18901.  
  18902.  atomic operation  -An operation that completes its work on an object before 
  18903.    another operation can be performed on the same object. 
  18904.  
  18905.  attribute  -A characteristic or property that can be controlled, usually to 
  18906.    obtain a required appearance;  for example, the color of a line. See also 
  18907.    graphics attributes and segment attributes. 
  18908.  
  18909.  automatic link  -In Information Presentation Facility (IPF), a link that 
  18910.    begins a chain reaction at the primary window. When the user selects the 
  18911.    primary window, an automatic link is activated to display secondary windows. 
  18912.  
  18913.  AVIO  -Advanced Video Input/Output. 
  18914.  
  18915.  
  18916. ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
  18917.  
  18918.  B╨Æzier curve  -(1) A mathematical technique of specifying smooth continuous 
  18919.    lines and surfaces, which require a starting point and a finishing point 
  18920.    with several intermediate points that influence or control the path of the 
  18921.    linking curve. Named after Dr. P. B╨Æzier. (2) (D of C) In the AIX Graphics 
  18922.    Library, a cubic spline approximation to a set of four control points that 
  18923.    passes through the first and fourth control points and that has a continuous 
  18924.    slope where two spline segments meet. Named after Dr. P. B╨Æzier. 
  18925.  
  18926.  background  -(1) In multiprogramming, the conditions under which low-priority 
  18927.    programs are executed. Contrast with foreground. (2) An active session that 
  18928.    is not currently displayed on the screen. 
  18929.  
  18930.  background color  -The color in which the background of a graphic primitive is 
  18931.    drawn. 
  18932.  
  18933.  background mix  -An attribute that determines how the background of a graphic 
  18934.    primitive is combined with the existing color of the graphics presentation 
  18935.    space. Contrast with mix. 
  18936.  
  18937.  background program  -In multiprogramming, a program that executes with a low 
  18938.    priority. Contrast with foreground program. 
  18939.  
  18940.  bit map  -A representation in memory of the data displayed on an APA device, 
  18941.    usually the screen. 
  18942.  
  18943.  block  -(1) A string of data elements recorded or transmitted as a unit. The 
  18944.    elements may be characters, words, or logical records. (T)  (2) To record 
  18945.    data in a block. (3) A collection of contiguous records recorded as a unit. 
  18946.    Blocks are separated by interblock gaps and each block may contain one or 
  18947.    more records. (A)
  18948.  
  18949.  block device  -A storage device that performs I/O operations on blocks of data 
  18950.    called sectors. Data on block devices can be randomly accessed. Block 
  18951.    devices are designated by a drive letter (for example, C:). 
  18952.  
  18953.  blocking mode  -A condition set by an application that determines when its 
  18954.    threads might block. For example, an application might set the Pipemode 
  18955.    parameter for the DosCreateNPipe function so that its threads perform I/O 
  18956.    operations to the named pipe block when no data is available. 
  18957.  
  18958.  border  -A visual indication (for example, a separator line or a background 
  18959.    color) of the boundaries of a window. 
  18960.  
  18961.  boundary determination  -An operation used to compute the size of the smallest 
  18962.    rectangle that encloses a graphics object on the screen. 
  18963.  
  18964.  breakpoint  -(1) A point in a computer program where execution may be halted. 
  18965.    A breakpoint is usually at the beginning of an instruction where halts, 
  18966.    caused by external intervention, are convenient for resuming 
  18967.    execution. (T)  (2) A place in a program, specified by a command or a 
  18968.    condition, where the system halts execution and gives control to the 
  18969.    workstation user or to a specified program. 
  18970.  
  18971.  broken pipe  -When all of the handles that access one end of a pipe have been 
  18972.    closed. 
  18973.  
  18974.  bucket  -One or more fields in which the result of an operation is kept. 
  18975.  
  18976.  buffer  -(1) A portion of storage used to hold input or output data 
  18977.    temporarily. (2) To allocate and schedule the use of buffers. (A)
  18978.  
  18979.  button  -A mechanism used to request or initiate an action. See also barrel 
  18980.    buttons, bezel buttons, mouse button, push button, and radio button. 
  18981.  
  18982.  byte pipe  -Pipes that handle data as byte streams. All unnamed pipes are byte 
  18983.    pipes. Named pipes can be byte pipes or message pipes. See byte stream. 
  18984.  
  18985.  byte stream  -Data that consists of an unbroken stream of bytes. 
  18986.  
  18987.  
  18988. ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
  18989.  
  18990.  cache  -A high-speed buffer storage that contains frequently accessed 
  18991.    instructions and data; it is used to reduce access time. 
  18992.  
  18993.  cached micro presentation space  -A presentation space from a 
  18994.    Presentation-Manager-owned store of micro presentation spaces. It can be 
  18995.    used for drawing to a window only, and must be returned to the store when 
  18996.    the task is complete. 
  18997.  
  18998.  CAD  -Computer-Aided Design. 
  18999.  
  19000.  call  -(1) The action of bringing a computer program, a routine, or a 
  19001.    subroutine into effect, usually by specifying the entry conditions and 
  19002.    jumping to an entry point. (I)  (A)  (2) To transfer control to a procedure, 
  19003.    program, routine, or subroutine. 
  19004.  
  19005.  calling sequence  -A sequence of instructions together with any associated 
  19006.    data necessary to execute a call. (T)
  19007.  
  19008.  Cancel  -An action that removes the current window or menu without processing 
  19009.    it, and returns the previous window. 
  19010.  
  19011.  cascaded menu  -In the OS/2 operating system, a menu that appears when the 
  19012.    arrow to the right of a cascading choice is selected. It contains a set of 
  19013.    choices that are related to the cascading choice. Cascaded menus are used to 
  19014.    reduce the length of a menu. See also cascading choice. 
  19015.  
  19016.  cascading choice  -In SAA Common User Access architecture, a choice in a menu 
  19017.    that, when selected, produces a cascaded menu containing other choices.  An 
  19018.    arrow () appears to the right of the cascading choice. 
  19019.  
  19020.  CASE statement  -In PM programming, provides the body of a window procedure. 
  19021.    There is usually one CASE statement for each message type supported by an 
  19022.    application. 
  19023.  
  19024.  CGA  -Color graphics adapter. 
  19025.  
  19026.  chained list  -A list in which the data elements may be dispersed but in which 
  19027.    each data element contains information for locating the 
  19028.    next. (T)Synonymous with linked list. 
  19029.  
  19030.  character  -A letter, digit, or other symbol. 
  19031.  
  19032.  character box  -In computer graphics, the boundary that defines, in world 
  19033.    coordinates, the horizontal and vertical space occupied by a single 
  19034.    character from a character set. See also character mode. Contrast with 
  19035.    character cell. 
  19036.  
  19037.  character cell  -The physical, rectangular space in which any single character 
  19038.    is displayed on a screen or printer device. Position is addressed by row and 
  19039.    column coordinates. Contrast with character box. 
  19040.  
  19041.  character code  -The means of addressing a character in a character set, 
  19042.    sometimes called code point. 
  19043.  
  19044.  character device  -A device that performs I/O operations on one character at a 
  19045.    time. Because character devices view data as a stream of bytes, 
  19046.    character-device data cannot be randomly accessed. Character devices include 
  19047.    the keyboard, mouse, and printer, and are referred to by name. 
  19048.  
  19049.  character mode  -A mode that, in conjunction with the font type, determines 
  19050.    the extent to which graphics characters are affected by the character box, 
  19051.    shear, and angle attributes. 
  19052.  
  19053.  character set  -(1) An ordered set of unique representations called 
  19054.    characters; for example, the 26 letters of English alphabet, Boolean 0 and 
  19055.    1, the set of symbols in the Morse code, and the 128 ASCII 
  19056.    characters. (A)  (2) All the valid characters for a programming language or 
  19057.    for a computer system. (3) A group of characters used for a specific reason; 
  19058.    for example, the set of characters a printer can print. 
  19059.  
  19060.  check box  -In SAA Advanced Common User Access architecture, a square box with 
  19061.    associated text that represents a choice. When a user selects a choice, an X 
  19062.    appears in the check box to indicate that the choice is in effect. The user 
  19063.    can clear the check box by selecting the choice again. Contrast with radio 
  19064.    button. 
  19065.  
  19066.  check mark  - (1) (D of C) In SAA Advanced Common User Access architecture, a 
  19067.    symbol that shows that a choice is currently in effect. (2) The symbol that 
  19068.    is used to indicate a selected item on a pull-down menu. 
  19069.  
  19070.  child process  -In the OS/2 operating system, a process started by another 
  19071.    process, which is called the parent process. Contrast with parent process. 
  19072.  
  19073.  child window  -A window that appears within the border of its parent window 
  19074.    (either a primary window or another child window). When the parent window is 
  19075.    resized, moved, or destroyed, the child window also is resized, moved, or 
  19076.    destroyed; however, the child window can be moved or resized independently 
  19077.    from the parent window, within the boundaries of the parent window. Contrast 
  19078.    with parent window. 
  19079.  
  19080.  choice  -(1) An option that can be selected. The choice can be presented as 
  19081.    text, as a symbol (number or letter), or as an icon (a pictorial symbol). 
  19082.    (2) (D of C) In SAA Common User Access architecture, an item that a user can 
  19083.    select. 
  19084.  
  19085.  chord  -(1) To press more than one button on a pointing device while the 
  19086.    pointer is within the limits that the user has specified for the operating 
  19087.    environment. (2) (D of C) In graphics, a short line segment whose end points 
  19088.    lie on a circle. Chords are a means for producing a circular image from 
  19089.    straight lines. The higher the number of chords per circle, the smoother the 
  19090.    circular image. 
  19091.  
  19092.  class  -A way of categorizing objects based on their behavior and shape. A 
  19093.    class is, in effect, a definition of a generic object. In SOM, a class is a 
  19094.    special kind of object that can manufacture other objects that all have a 
  19095.    common shape and exhibit similar behavior (more precisely, all of the 
  19096.    objects manufactured by a class have the same memory layout and share a 
  19097.    common set of methods). New classes can be defined in terms of existing 
  19098.    classes through a technique known as inheritance. 
  19099.  
  19100.  class method  -A class method of class <X> is a method provided by the 
  19101.    metaclass of class <X>. Class methods are executed without requiring any 
  19102.    instances of class <X> to exist, and are frequently used to create 
  19103.    instances. In System Object Model, an action that can be performed on a 
  19104.    class object. 
  19105.  
  19106.  class object  -In System Object Model, the run-time implementation of a class. 
  19107.  
  19108.  class style  -The set of properties that apply to every window in a window 
  19109.    class. 
  19110.  
  19111.  client  -(1) A functional unit that receives shared services from a 
  19112.    server. (T)  (2) A user, as in a client process that uses a named pipe or 
  19113.    queue that is created and owned by a server process. 
  19114.  
  19115.  client area  -The part of the window, inside the border, that is below the 
  19116.    menu bar. It is the user's work space, where a user types information and 
  19117.    selects choices from selection fields.  In primary windows, it is where an 
  19118.    application programmer presents the objects that a user works on. 
  19119.  
  19120.  client program  -An application that creates and manipulates instances of 
  19121.    classes. 
  19122.  
  19123.  client window  -The window in which the application displays output and 
  19124.    receives input. This window is located inside the frame window, under the 
  19125.    window title bar and any menu bar, and within any scroll bars. 
  19126.  
  19127.  clip limits  -The area of the paper that can be reached by a printer or 
  19128.    plotter. 
  19129.  
  19130.  clipboard  -In SAA Common User Access architecture, an area of computer 
  19131.    memory, or storage, that temporarily holds data. Data in the clipboard is 
  19132.    available to other applications. 
  19133.  
  19134.  clipping  -In computer graphics, removing those parts of a display image that 
  19135.    lie outside a given boundary. (I)  (A)
  19136.  
  19137.  clipping area  -The area in which the window can paint. 
  19138.  
  19139.  clipping path  -A clipping boundary in world-coordinate space. 
  19140.  
  19141.  clock tick  -The minimum unit of time that the system tracks. If the system 
  19142.    timer currently counts at a rate of X Hz, the system tracks the time every 
  19143.    1/X of a second. Also known as time tick. 
  19144.  
  19145.  CLOCK$  -Character-device name reserved for the system clock. 
  19146.  
  19147.  code page  -An assignment of graphic characters and control-function meanings 
  19148.    to all code points. 
  19149.  
  19150.  code point  -(1) Synonym for character code. (2) (D of C) A 1-byte code 
  19151.    representing one of 256 potential characters. 
  19152.  
  19153.  code segment  -An executable section of programming code within a load module. 
  19154.  
  19155.  color dithering  -See dithering. 
  19156.  
  19157.  color graphics adapter (CGA)  -An adapter that simultaneously provides four 
  19158.    colors and is supported by all IBM Personal Computer and Personal System/2 
  19159.    models. 
  19160.  
  19161.  command  -The name and parameters associated with an action that a program can 
  19162.    perform. 
  19163.  
  19164.  command area  -An area composed of a command field prompt and a command entry 
  19165.    field. 
  19166.  
  19167.  command entry field  -An entry field in which users type commands. 
  19168.  
  19169.  command line  -On a display screen, a display line, sometimes at the bottom of 
  19170.    the screen, in which only commands can be entered. 
  19171.  
  19172.  command mode  -A state of a system or device in which the user can enter 
  19173.    commands. 
  19174.  
  19175.  command prompt  -A field prompt showing the location of the command entry 
  19176.    field in a panel. 
  19177.  
  19178.  Common Programming Interface (CPI)  -Definitions of those application 
  19179.    development languages and services that have, or are intended to have, 
  19180.    implementations on and a high degree of commonality across the SAA 
  19181.    environments. One of the three SAA architectural areas. See also Common User 
  19182.    Access architecture. 
  19183.  
  19184.  Common User Access (CUA) architecture  - Guidelines for the dialog between a 
  19185.    human and a workstation or terminal. One of the three SAA architectural 
  19186.    areas. See also Common Programming Interface. 
  19187.  
  19188.  compile  -To translate a program written in a higher-level programming 
  19189.    language into a machine language program. 
  19190.  
  19191.  composite window  -A window composed of other windows (such as a frame window, 
  19192.    frame-control windows, and a client window) that are kept together as a unit 
  19193.    and that interact with each other. 
  19194.  
  19195.  computer-aided design (CAD)  -The use of a computer to design or change a 
  19196.    product, tool, or machine, such as using a computer for drafting or 
  19197.    illustrating. 
  19198.  
  19199.  COM1, COM2, COM3  -Character-device names reserved for serial ports 1 through 
  19200.    3. 
  19201.  
  19202.  CON  -Character-device name reserved for the console keyboard and screen. 
  19203.  
  19204.  conditional cascaded menu  -A pull-down menu associated with a menu item that 
  19205.    has a cascade mini-push button beside it in an object's pop-up menu. The 
  19206.    conditional cascaded menu is displayed when the user selects the mini-push 
  19207.    button. 
  19208.  
  19209.  container  -In SAA Common User Access architecture, an object that holds other 
  19210.    objects. A folder is an example of a container object. See also folder and 
  19211.    object. 
  19212.  
  19213.  contextual help  -In SAA Common User Access Architecture, help that gives 
  19214.    specific information about the item the cursor is on. The help is contextual 
  19215.    because it provides information about a specific item as it is currently 
  19216.    being used. Contrast with extended help. 
  19217.  
  19218.  contiguous  -Touching or joining at a common edge or boundary, for example, an 
  19219.    unbroken consecutive series of storage locations. 
  19220.  
  19221.  control  -In SAA Advanced Common User Access architecture, a component of the 
  19222.    user interface that allows a user to select choices or type information; for 
  19223.    example, a check box, an entry field, a radio button. 
  19224.  
  19225.  control area  -A storage area used by a computer program to hold control information. (I)  (A)
  19226.  
  19227.  Control Panel  -In the Presentation Manager, a program used to set up user 
  19228.    preferences that act globally across the system. 
  19229.  
  19230.  Control Program  -(1) The basic functions of the operating system, including 
  19231.    DOS emulation and the support for keyboard, mouse, and video input/output. 
  19232.    (2) A computer program designed to schedule and to supervise the execution 
  19233.    of programs of a computer system. (I)  (A)
  19234.  
  19235.  control window  -A window that is used as part of a composite window to 
  19236.    perform simple input and output tasks. Radio buttons and check boxes are 
  19237.    examples. 
  19238.  
  19239.  control word  -An instruction within a document that identifies its parts or 
  19240.    indicates how to format the document. 
  19241.  
  19242.  coordinate space  -A two-dimensional set of points used to generate output on 
  19243.    a video display of printer. 
  19244.  
  19245.  Copy  -A choice that places onto the clipboard, a copy of what the user has 
  19246.    selected. See also Cut and Paste. 
  19247.  
  19248.  correlation  -The action of determining which element or object within a 
  19249.    picture is at a given position on the display. This follows a pick 
  19250.    operation. 
  19251.  
  19252.  coverpage window  -A window in which the application's help information is 
  19253.    displayed. 
  19254.  
  19255.  CPI  -Common Programming Interface. 
  19256.  
  19257.  critical extended attribute  -An extended attribute that is necessary for the 
  19258.    correct operation of the system or a particular application. 
  19259.  
  19260.  critical section  -(1) In programming languages, a part of an asynchronous 
  19261.    procedure that cannot be executed simultaneously with a certain part of 
  19262.    another asynchronous procedure. (I)
  19263.  
  19264.    Note:  Part of the other asynchronous procedure also is a critical section. 
  19265.    (2) A section of code that is not reentrant; that is, code that can be 
  19266.    executed by only one thread at a time. 
  19267.  
  19268.  CUA architecture  -Common User Access architecture. 
  19269.  
  19270.  current position  -In computer graphics, the position, in user coordinates, 
  19271.    that becomes the starting point for the next graphics routine, if that 
  19272.    routine does not explicitly specify a starting point. 
  19273.  
  19274.  cursor  -A symbol displayed on the screen and associated with an input device. 
  19275.    The cursor indicates where input from the device will be placed. Types of 
  19276.    cursors include text cursors, graphics cursors, and selection cursors. 
  19277.    Contrast with pointer and input focus. 
  19278.  
  19279.  Cut  -In SAA Common User Access architecture, a choice that removes a selected 
  19280.    object, or a part of an object, to the clipboard, usually compressing the 
  19281.    space it occupied in a window. See also Copy and Paste. 
  19282.  
  19283.  
  19284. ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
  19285.  
  19286.  daisy chain  -A method of device interconnection for determining interrupt 
  19287.    priority by connecting the interrupt sources serially. 
  19288.  
  19289.  data segment  -A nonexecutable section of a program module; that is, a section 
  19290.    of a program that contains data definitions. 
  19291.  
  19292.  data structure  -The syntactic structure of symbolic expressions and their 
  19293.    storage-allocation characteristics. (T)
  19294.  
  19295.  data transfer  -The movement of data from one object to another by way of the 
  19296.    clipboard or by direct manipulation. 
  19297.  
  19298.  DBCS  -Double-byte character set. 
  19299.  
  19300.  DDE  -Dynamic data exchange. 
  19301.  
  19302.  deadlock  -(1) Unresolved contention for the use of a resource. (2) An error 
  19303.    condition in which processing cannot continue because each of two elements 
  19304.    of the process is waiting for an action by, or a response from, the other. 
  19305.    (3) An impasse that occurs when multiple processes are waiting for the 
  19306.    availability of a resource that will not become available because it is 
  19307.    being held by another process that is in a similar wait state. 
  19308.  
  19309.  debug  -To detect, diagnose, and eliminate errors in programs. (T)
  19310.  
  19311.  decipoint  -In printing, one tenth of a point.  There are 72 points in an 
  19312.    inch. 
  19313.  
  19314.  default procedure  -A function provided by the Presentation Manager Interface 
  19315.    that may be used to process standard messages from dialogs or windows. 
  19316.  
  19317.  default value  -A value assumed when no value has been specified. Synonymous 
  19318.    with assumed value. For example, in the graphics programming interface, the 
  19319.    default line-type is 'solid'. 
  19320.  
  19321.  definition list  -A type of list that pairs a term and its description. 
  19322.  
  19323.  delta  -An application-defined threshold, or number of container items, from 
  19324.    either end of the list. 
  19325.  
  19326.  descendant  -See child process. 
  19327.  
  19328.  descriptive text  -Text used in addition to a field prompt to give more 
  19329.    information about a field. 
  19330.  
  19331.  Deselect all  -A choice that cancels the selection of all of the objects that 
  19332.    have been selected in that window. 
  19333.  
  19334.  Desktop Manager  -In the Presentation Manager, a window that displays a list 
  19335.    of groups of programs, each of which can be started or stopped. 
  19336.  
  19337.  desktop window  -The window, corresponding to the physical device, against 
  19338.    which all other types of windows are established. 
  19339.  
  19340.  detached process  -A background process that runs independent of the parent 
  19341.    process. 
  19342.  
  19343.  detent  -A point on a slider that represents an exact value to which a user 
  19344.    can move the slider arm. 
  19345.  
  19346.  device context  -A logical description of a data destination such as memory, 
  19347.    metafile, display, printer, or plotter. See also direct device context, 
  19348.    information device context, memory device context, metafile device context, 
  19349.    queued device context, and screen device context. 
  19350.  
  19351.  device driver  -A file that contains the code needed to attach and use a 
  19352.    device such as a display, printer, or plotter. 
  19353.  
  19354.  device space  -(1) Coordinate space in which graphics are assembled after all 
  19355.    GPI transformations have been applied. Device space is defined in 
  19356.    device-specific units. (2) ( D of C) In computer graphics, a space defined 
  19357.    by the complete set of addressable points of a display device. (A)
  19358.  
  19359.  dialog  -The interchange of information between a computer and its user 
  19360.    through a sequence of requests by the user and the presentation of responses 
  19361.    by the computer. 
  19362.  
  19363.  dialog box  -In SAA Advanced Common User Access architecture, a movable 
  19364.    window, fixed in size, containing controls that a user uses to provide 
  19365.    information required by an application so that it can continue to process a 
  19366.    user request. See also message box, primary window, secondary window. Also 
  19367.    known as a pop-up window. 
  19368.  
  19369.  Dialog Box Editor  -A WYSIWYG editor that creates dialog boxes for 
  19370.    communicating with the application user. 
  19371.  
  19372.  dialog item  -A component (for example, a menu or a button) of a dialog box. 
  19373.    Dialog items are also used when creating dialog templates. 
  19374.  
  19375.  dialog procedure  -A dialog window that is controlled by a window procedure. 
  19376.    It is responsible for responding to all messages sent to the dialog window. 
  19377.  
  19378.  dialog tag language  -A markup language used by the DTL compiler to create 
  19379.    dialog objects. 
  19380.  
  19381.  dialog template  -The definition of a dialog box, which contains details of 
  19382.    its position, appearance, and window ID, and the window ID of each of its 
  19383.    child windows. 
  19384.  
  19385.  direct device context  -A logical description of a data destination that is a 
  19386.    device other than the screen (for example, a printer or plotter), and where 
  19387.    the output is not to go through the spooler. Its purpose is to satisfy 
  19388.    queries. See also device context. 
  19389.  
  19390.  direct manipulation  -The user's ability to interact with an object by using 
  19391.    the mouse, typically by dragging an object around on the Desktop and 
  19392.    dropping it on other objects. 
  19393.  
  19394.  direct memory access (DMA)  -A technique for moving data directly between main 
  19395.    storage and peripheral equipment without requiring processing of the data by 
  19396.    the processing unit.(T)
  19397.  
  19398.  directory  -A type of file containing the names and controlling information 
  19399.    for other files or other directories. 
  19400.  
  19401.  display point  -Synonym for pel. 
  19402.  
  19403.  dithering  -(1) The process used in color displays whereby every other pel is 
  19404.    set to one color, and the intermediate pels are set to another. Together 
  19405.    they produce the effect of a third color at normal viewing distances. This 
  19406.    process can only be used on solid areas of color; it does not work, for 
  19407.    example, on narrow lines. (2) (D of C ) In computer graphics, a technique of 
  19408.    interleaving dark and light pixels so that the resulting image looks 
  19409.    smoothly shaded when viewed from a distance. 
  19410.  
  19411.  DMA  -Direct memory access. 
  19412.  
  19413.  DOS Protect Mode Interface (DPMI)  -An interface between protect mode and real 
  19414.    mode programs. 
  19415.  
  19416.  double-byte character set (DBCS)  -A set of characters in which each character 
  19417.    is represented by two bytes.  Languages such as Japanese, Chinese, and 
  19418.    Korean, which contain more characters than can be represented by 256 code 
  19419.    points, require double-byte character sets. Since each character requires 
  19420.    two bytes, the entering, displaying, and printing of DBCS characters 
  19421.    requires hardware and software that can support DBCS. 
  19422.  
  19423.  doubleword  -A contiguous sequence of bits or characters that comprises two 
  19424.    computer words and is capable of being addressed as a unit. (A)
  19425.  
  19426.  DPMI  -DOS Protect Mode Interface. 
  19427.  
  19428.  drag  -In SAA Common User Access, to use a pointing device to move an object; 
  19429.    for example, clicking on a window border, and dragging it to make the window 
  19430.    larger. 
  19431.  
  19432.  dragging  -(1) In computer graphics, moving an object on the display screen as 
  19433.    if it were attached to the pointer. (2) (D of C) In computer graphics, 
  19434.    moving one or more segments on a display surface by translating. (I)  (A)
  19435.  
  19436.  drawing chain  -See segment chain. 
  19437.  
  19438.  drop  -To fix the position of an object that is being dragged, by releasing 
  19439.    the select button of the pointing device. See also drag. 
  19440.  
  19441.  DTL  -Dialog tag language. 
  19442.  
  19443.  dual-boot function  -A feature of the OS/2 operating system that allows the 
  19444.    user to start DOS from within the operating system, or an OS/2 session from 
  19445.    within DOS. 
  19446.  
  19447.  duplex  -Pertaining to communication in which data can be sent and received at 
  19448.    the same time. Synonymous with full duplex. 
  19449.  
  19450.  dynamic data exchange (DDE)  -A message protocol used to communicate between 
  19451.    applications that share data. The protocol uses shared memory as the means 
  19452.    of exchanging data between applications. 
  19453.  
  19454.  dynamic data formatting  -A formatting procedure that enables you to 
  19455.    incorporate text, bit maps or metafiles in an IPF window at execution time. 
  19456.  
  19457.  dynamic link library  -A collection of executable programming code and data 
  19458.    that is bound to an application at load time or run time, rather than during 
  19459.    linking. The programming code and data in a dynamic link library can be 
  19460.    shared by several applications simultaneously. 
  19461.  
  19462.  dynamic linking  -The process of resolving external references in a program 
  19463.    module at load time or run time rather than during linking. 
  19464.  
  19465.  dynamic segments  -Graphics segments drawn in exclusive-OR mix mode so that 
  19466.    they can be moved from one screen position to another without affecting the 
  19467.    rest of the displayed picture. 
  19468.  
  19469.  dynamic storage  -(1) A device that stores data in a manner that permits the 
  19470.    data to move or vary with time such that the specified data is not always 
  19471.    available for recovery. (A)  (2) A storage in which the cells require 
  19472.    repetitive application of control signals in order to retain stored data. 
  19473.    Such repetitive application of the control signals is called a refresh 
  19474.    operation. A dynamic storage may use static addressing or sensing 
  19475.    circuits. (A)  (3) See also static storage. 
  19476.  
  19477.  dynamic time slicing  -Varies the size of the time slice depending on system 
  19478.    load and paging activity. 
  19479.  
  19480.  dynamic-link module  -A module that is linked at load time or run time. 
  19481.  
  19482.  
  19483. ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
  19484.  
  19485.  EBCDIC  -Extended binary-coded decimal interchange code. A coded character set 
  19486.    consisting of 8-bit coded characters (9 bits including parity check), used 
  19487.    for information interchange among data processing systems, data 
  19488.    communications systems, and associated equipment. 
  19489.  
  19490.  edge-triggered  -Pertaining to an event semaphore that is posted then reset 
  19491.    before a waiting thread gets a chance to run. The semaphore is considered to 
  19492.    be posted for the rest of that thread's waiting period; the thread does not 
  19493.    have to wait for the semaphore to be posted again. 
  19494.  
  19495.  EGA  -Extended graphics adapter. 
  19496.  
  19497.  element  -An entry in a graphics segment that comprises one or more graphics 
  19498.    orders and that is addressed by the element pointer. 
  19499.  
  19500.  EMS  -Expanded Memory Specification. 
  19501.  
  19502.  encapsulation  -Hiding an object's implementation, that is, its private, 
  19503.    internal data and methods. Private variables and methods are accessible only 
  19504.    to the object that contains them. 
  19505.  
  19506.  entry field  -In SAA Common User Access architecture, an area where a user 
  19507.    types information. Its boundaries are usually indicated. See also selection 
  19508.    field. 
  19509.  
  19510.  entry panel  -A defined panel type containing one or more entry fields and 
  19511.    protected information such as headings, prompts, and explanatory text. 
  19512.  
  19513.  entry-field control  -The component of a user interface that provides the 
  19514.    means by which the application receives data entered by the user in an entry 
  19515.    field. When it has the input focus, the entry field displays a flashing 
  19516.    pointer at the position where the next typed character will go. 
  19517.  
  19518.  environment segment  -The list of environment variables and their values for a 
  19519.    process. 
  19520.  
  19521.  environment strings  -ASCII text strings that define the value of environment 
  19522.    variables. 
  19523.  
  19524.  environment variables  -Variables that describe the execution environment of a 
  19525.    process. These variables are named by the operating system or by the 
  19526.    application. Environment variables named by the operating system are PATH, 
  19527.    DPATH, INCLUDE, INIT, LIB, PROMPT, and TEMP. The values of environment 
  19528.    variables are defined by the user in the CONFIG.SYS file, or by using the 
  19529.    SET command at the OS/2 command prompt. 
  19530.  
  19531.  error message  -An indication that an error has been detected. (A)
  19532.  
  19533.  event semaphore  -A semaphore that enables a thread to signal a waiting thread 
  19534.    or threads that an event has occurred or that a task has been completed. The 
  19535.    waiting threads can then perform an action that is dependent on the 
  19536.    completion of the signaled event. 
  19537.  
  19538.  exception  -An abnormal condition such as an I/O error encountered in 
  19539.    processing a data set or a file. 
  19540.  
  19541.  exclusive system semaphore  -A system semaphore that can be modified only by 
  19542.    threads within the same process. 
  19543.  
  19544.  executable file  -(1) A file that contains programs or commands that perform 
  19545.    operations or actions to be taken. (2) A collection of related data records 
  19546.    that execute programs. 
  19547.  
  19548.  exit  -To execute an instruction within a portion of a computer program in 
  19549.    order to terminate the execution of that portion. Such portions of computer 
  19550.    programs include loops, subroutines, modules, and so on. (T)  Repeated exit 
  19551.    requests return the user to the point from which all functions provided to 
  19552.    the system are accessible. Contrast with cancel. 
  19553.  
  19554.  expanded memory specification (EMS)  -Enables DOS applications to access 
  19555.    memory above the 1MB real mode addressing limit. 
  19556.  
  19557.  extended attribute  -An additional piece of information about a file object, 
  19558.    such as its data format or category. It consists of a name and a value. A 
  19559.    file object may have more than one extended attribute associated with it. 
  19560.  
  19561.  extended help  -In SAA Common User Access architecture, a help action that 
  19562.    provides information about the contents of the application window from which 
  19563.    a user requested help. Contrast with contextual help. 
  19564.  
  19565.  extended-choice selection  -A mode that allows the user to select more than 
  19566.    one item from a window. Not all windows allow extended choice selection. 
  19567.    Contrast with multiple-choice selection. 
  19568.  
  19569.  extent  -Continuous space on a disk or diskette that is occupied by or 
  19570.    reserved for a particular data set, data space, or file. 
  19571.  
  19572.  external link  -In Information Presentation Facility, a link that connects 
  19573.    external online document files. 
  19574.  
  19575.  
  19576. ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
  19577.  
  19578.  family-mode application  -An application program that can run in the OS/2 
  19579.    environment and in the DOS environment; however, it cannot take advantage of 
  19580.    many of the OS/2-mode facilities, such as multitasking, interprocess 
  19581.    communication, and dynamic linking. 
  19582.  
  19583.  FAT  -File allocation table. 
  19584.  
  19585.  FEA  -Full extended attribute. 
  19586.  
  19587.  field-level help  -Information specific to the field on which the cursor is 
  19588.    positioned. This help function is "contextual" because it provides 
  19589.    information about a specific item as it is currently used; the information 
  19590.    is dependent upon the context within the work session. 
  19591.  
  19592.  FIFO  -First-in-first-out. (A)
  19593.  
  19594.  file  -A named set of records stored or processed as a unit. (T)
  19595.  
  19596.  file allocation table (FAT)  -In IBM personal computers, a table used by the 
  19597.    operating system to allocate space on a disk for a file, and to locate and 
  19598.    chain together parts of the file that may be scattered on different sectors 
  19599.    so that the file can be used in a random or sequential manner. 
  19600.  
  19601.  file attribute  -Any of the attributes that describe the characteristics of a 
  19602.    file. 
  19603.  
  19604.  File Manager  -In the Presentation Manager, a program that displays 
  19605.    directories and files, and allows various actions on them. 
  19606.  
  19607.  file specification  -The full identifier for a file, which includes its drive 
  19608.    designation, path, file name, and extension. 
  19609.  
  19610.  file system  -The combination of software and hardware that supports storing 
  19611.    information on a storage device. 
  19612.  
  19613.  file system driver (FSD)  -A program that manages file I\O and controls the 
  19614.    format of information on the storage media. 
  19615.  
  19616.  fillet  -A curve that is tangential to the end points of two adjoining lines. 
  19617.    See also polyfillet. 
  19618.  
  19619.  filtering  -An application process that changes the order of data in a queue. 
  19620.  
  19621.  first-in-first-out (FIFO)  -A queuing technique in which the next item to be 
  19622.    retrieved is the item that has been in the queue for the longest time. (A)
  19623.  
  19624.  flag  -(1) An indicator or parameter that shows the setting of a switch. (2) A 
  19625.    character that signals the occurrence of some condition, such as the end of 
  19626.    a word. (A)  (3) (D of C) A characteristic of a file or directory that 
  19627.    enables it to be used in certain ways. See also archive flag, hidden flag, 
  19628.    and read-only flag. 
  19629.  
  19630.  focus  -See input focus. 
  19631.  
  19632.  folder  -A container used to organize objects. 
  19633.  
  19634.  font  -A particular size and style of typeface that contains definitions of 
  19635.    character sets, marker sets, and pattern sets. 
  19636.  
  19637.  Font Editor  -A utility program provided with the IBM Developers Toolkit that 
  19638.    enables the design and creation of new fonts. 
  19639.  
  19640.  foreground program  -(1) The program with which the user is currently 
  19641.    interacting. Also known as interactive program. Contrast with background 
  19642.    program. (2) (D of C) In multiprogramming,  a high-priority program. 
  19643.  
  19644.  frame  -The part of a window that can contain several different visual 
  19645.    elements specified by the application, but drawn and controlled by the 
  19646.    Presentation Manager. The frame encloses the client area. 
  19647.  
  19648.  frame styles  -Standard window layouts provided by the Presentation Manager. 
  19649.  
  19650.  FSD  -File system driver. 
  19651.  
  19652.  full-duplex  -Synonym for duplex. 
  19653.  
  19654.  full-screen application  -An application that has complete control of the 
  19655.    screen. 
  19656.  
  19657.  function  -(1) In a programming language, a block, with or without formal 
  19658.    parameters, whose execution is invoked by means of a call. (2) A set of 
  19659.    related control statements that cause one or more programs to be performed. 
  19660.  
  19661.  function key  -A key that causes a specified sequence of operations to be 
  19662.    performed when it is pressed, for example, F1 and Alt-K. 
  19663.  
  19664.  function key area  -The area at the bottom of a window that contains function 
  19665.    key assignments such as F1=Help. 
  19666.  
  19667.  
  19668. ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
  19669.  
  19670.  GDT  -Global Descriptor Table. 
  19671.  
  19672.  general protection fault  -An exception condition that occurs when a process 
  19673.    attempts to use storage or a module that has some level of protection 
  19674.    assigned to it, such as I/O privilege level. See also IOPL code segment. 
  19675.  
  19676.  Global Descriptor Table (GDT)  -A table that defines code and data segments 
  19677.    available to all tasks in an application. 
  19678.  
  19679.  global dynamic-link module  -A dynamic-link module that can be shared by all 
  19680.    processes in the system that refer to the module name. 
  19681.  
  19682.  global file-name character  -Either a question mark (?) or an asterisk (*) 
  19683.    used as a variable in a file name or file name extension when referring to a 
  19684.    particular file or group of files. 
  19685.  
  19686.  glyph  -A graphic symbol whose appearance conveys information. 
  19687.  
  19688.  GPI  -Graphics programming interface. 
  19689.  
  19690.  graphic primitive  -In computer graphics, a basic element, such as an arc or a 
  19691.    line, that is not made up of smaller parts and that is used to create 
  19692.    diagrams and pictures. See also graphics segment. 
  19693.  
  19694.  graphics  -(1) A picture defined in terms of graphic primitives and graphics 
  19695.    attributes. (2) (D of C) The making of charts and pictures. (3) Pertaining 
  19696.    to charts, tables, and their creation. (4) See computer graphics, coordinate 
  19697.    graphics, fixed-image graphics, interactive graphics, passive graphics, 
  19698.    raster graphics. 
  19699.  
  19700.  graphics attributes  -Attributes that apply to graphic primitives. Examples 
  19701.    are color, line type, and shading-pattern definition. See also segment 
  19702.    attributes. 
  19703.  
  19704.  graphics field  -The clipping boundary that defines the visible part of the 
  19705.    presentation-page contents. 
  19706.  
  19707.  graphics mode  -One of several states of a display. The mode determines the 
  19708.    resolution and color content of the screen. 
  19709.  
  19710.  graphics model space  -The conceptual coordinate space in which a picture is 
  19711.    constructed after any model transforms have been applied. Also known as 
  19712.    model space. 
  19713.  
  19714.  Graphics programming interface  -The formally defined programming language 
  19715.    that is between an IBM graphics program and the user of the program. 
  19716.  
  19717.  graphics segment  -A sequence of related graphic primitives and graphics 
  19718.    attributes. See also graphic primitive. 
  19719.  
  19720.  graying  -The indication that a choice on a pull-down is unavailable. 
  19721.  
  19722.  group  -A collection of logically connected controls. For example, the buttons 
  19723.    controlling paper size for a printer could be called a group. See also 
  19724.    program group. 
  19725.  
  19726.  
  19727. ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
  19728.  
  19729.  handle  -(1) An identifier that represents an object, such as a device or 
  19730.    window, to the Presentation Interface. (2) (D of C) In the Advanced DOS and 
  19731.    OS/2 operating systems, a binary value created by the system that identifies 
  19732.    a drive, directory, and file so that the file can be found and opened. 
  19733.  
  19734.  hard error  -An error condition on a network that requires either that the 
  19735.    system be reconfigured or that the source of the error be removed before the 
  19736.    system can resume reliable operation. 
  19737.  
  19738.  header  -(1) System-defined control information that precedes user data. (2) 
  19739.    The portion of a message that contains control information for the message, 
  19740.    such as one or more destination fields, name of the originating station, 
  19741.    input sequence number, character string indicating the type of message, and 
  19742.    priority level for the message. 
  19743.  
  19744.  heading tags  -A document element that enables information to be displayed in 
  19745.    windows, and that controls entries in the contents window controls placement 
  19746.    of push buttons in a window, and defines the shape and size of windows. 
  19747.  
  19748.  heap  -An area of free storage available for dynamic allocation by an 
  19749.    application. Its size varies according to the storage requirements of the 
  19750.    application. 
  19751.  
  19752.  help function  -(1) A function that provides information about a specific 
  19753.    field, an application panel, or information about the help facility. (2) (D 
  19754.    of C) One or more display images that describe how to use application 
  19755.    software or how to do a system operation. 
  19756.  
  19757.  Help index  -In SAA Common User Access architecture, a help action that 
  19758.    provides an index of the help information available for an application. 
  19759.  
  19760.  help panel  -A panel with information to assist users that is displayed in 
  19761.    response to a help request from the user. 
  19762.  
  19763.  help window  -A Common-User-Access-defined secondary window that displays 
  19764.    information when the user requests help. 
  19765.  
  19766.  hidden file  -An operating system file that is not displayed by a directory 
  19767.    listing. 
  19768.  
  19769.  hide button  -In the OS/2 operating system, a small, square button located in 
  19770.    the right-hand corner of the title bar of a window that, when selected, 
  19771.    removes from the screen all the windows associated with that window. 
  19772.    Contrast with maximize button. See also restore button. 
  19773.  
  19774.  hierarchical inheritance  -The relationship between parent and child classes. 
  19775.    An object that is lower in the inheritance hierarchy than another object, 
  19776.    inherits all the characteristics and behaviors of the objects above it in 
  19777.    the hierarchy. 
  19778.  
  19779.  hierarchy  -A tree of segments beginning with the root segment and proceeding 
  19780.    downward to dependent segment types. 
  19781.  
  19782.  high-performance file system (HPFS)  -In the OS/2 operating system, an 
  19783.    installable file system that uses high-speed buffer storage, known as a 
  19784.    cache, to provide fast access to large disk volumes. The file system also 
  19785.    supports the coexistence of multiple, active file systems on a single 
  19786.    personal computer, with the capability of multiple and different storage 
  19787.    devices. File names used with the HPFS can have as many as 254 characters. 
  19788.  
  19789.  hit testing  -The means of identifying which window is associated with which 
  19790.    input device event. 
  19791.  
  19792.  hook  -A point in a system-defined function where an application can supply 
  19793.    additional code that the system processes as though it were part of the 
  19794.    function. 
  19795.  
  19796.  hook chain  -A sequence of hook procedures that are "chained" together so that 
  19797.    each event is passed, in turn, to each procedure in the chain. 
  19798.  
  19799.  hot spot  -The part of the pointer that must touch an object before it can be 
  19800.    selected. This is usually the tip of the pointer. Contrast with action 
  19801.    point. 
  19802.  
  19803.  HPFS  -high-performance file system. 
  19804.  
  19805.  hypergraphic link  -A connection between one piece of information and another 
  19806.    through the use of graphics. 
  19807.  
  19808.  hypertext  -A way of presenting information online with connections between 
  19809.    one piece of information and another, called hypertext links. See also 
  19810.    hypertext link. 
  19811.  
  19812.  hypertext link  -A connection between one piece of information and another. 
  19813.  
  19814.  
  19815. ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
  19816.  
  19817.  I/O operation  -An input operation to, or output operation from a device 
  19818.    attached to a computer. 
  19819.  
  19820.  I-beam pointer  -A pointer that indicates an area, such as an entry field in 
  19821.    which text can be edited. 
  19822.  
  19823.  icon  -In SAA Advanced Common User Access architecture, a graphical 
  19824.    representation of an object, consisting of an image, image background, and a 
  19825.    label. Icons can represent items (such as a document file) that the user 
  19826.    wants to work on, and actions that the user wants to perform. In the 
  19827.    Presentation Manager, icons are used for data objects, system actions, and 
  19828.    minimized programs. 
  19829.  
  19830.  icon area  -In the Presentation Manager, the area at the bottom of the screen 
  19831.    that is normally used to display the icons for minimized programs. 
  19832.  
  19833.  Icon Editor  -The Presentation Manager-provided tool for creating icons. 
  19834.  
  19835.  IDL  -Interface Definition Language. 
  19836.  
  19837.  image font  -A set of symbols, each of which is described in a rectangular 
  19838.    array of pels. Some of the pels in the array are set to produce the image of 
  19839.    one of the symbols. Contrast with outline font. 
  19840.  
  19841.  implied metaclass  -Subclassing the metaclass of a parent class without a 
  19842.    separate CSC for the resultant metaclass. 
  19843.  
  19844.  indirect manipulation  -Interaction with an object through choices and 
  19845.    controls. 
  19846.  
  19847.  information device context  -A logical description of a data destination other 
  19848.    than the screen (for example, a printer or plotter), but where no output 
  19849.    will occur. Its purpose is to satisfy queries. See also device context. 
  19850.  
  19851.  information panel  -A defined panel type characterized by a body containing 
  19852.    only protected information. 
  19853.  
  19854.  Information Presentation Facility (IPF)  -A facility provided by the OS/2 
  19855.    operating system, by which application developers can produce online 
  19856.    documentation and context-sensitive online help panels for their 
  19857.    applications. 
  19858.  
  19859.  inheritance  -The technique of specifying the shape and behavior of one class 
  19860.    (called a subclass) as incremental differences from another class (called 
  19861.    the parent class or superclass). The subclass inherits the superclass' state 
  19862.    representation and methods, and can provide additional data elements and 
  19863.    methods. The subclass also can provide new functions with the same method 
  19864.    names used by the superclass. Such a subclass method is said to override the 
  19865.    superclass method, and will be selected automatically by method resolution 
  19866.    on subclass instances. An overriding method can elect to call upon the 
  19867.    superclass' method as part of its own implementation. 
  19868.  
  19869.  input focus  -(1) The area of a window where user interaction is possible 
  19870.    using an input device, such as a mouse or the keyboard. (2) The position in 
  19871.    the active window where a user's normal interaction with the keyboard will 
  19872.    appear. 
  19873.  
  19874.  input router  -An internal OS/2 process that removes messages from the system 
  19875.    queue. 
  19876.  
  19877.  input/output control  -A device-specific command that requests a function of a 
  19878.    device driver. 
  19879.  
  19880.  installable file system (IFS)  -A file system in which software is installed 
  19881.    when the operating system is started. 
  19882.  
  19883.  instance  -(Or object instance). A specific object, as distinguished from the 
  19884.    abstract definition of an object referred to as its class. 
  19885.  
  19886.  instance method  -A method valid for a particular object. 
  19887.  
  19888.  instruction pointer  -In System/38, a pointer that provides addressability for 
  19889.    a machine interface instruction in a program. 
  19890.  
  19891.  integer atom  -An atom that represents a predefined system constant and 
  19892.    carries no storage overhead. For example, names of window classes provided 
  19893.    by Presentation Manager are expressed as integer atoms. 
  19894.  
  19895.  interactive graphics  -Graphics that can be moved or manipulated by a user at 
  19896.    a terminal. 
  19897.  
  19898.  interactive program  -(1) A program that is running (active) and is ready to 
  19899.    receive (or is receiving) input from a user. (2) A running program that can 
  19900.    receive input from the keyboard or another input device. Compare with active 
  19901.    program and contrast with noninteractive program. 
  19902.  
  19903.    Also known as a foreground program. 
  19904.  
  19905.  interchange file  -A file containing data that can be sent from one 
  19906.    Presentation Manager interface application to another. 
  19907.  
  19908.  Interface Definition Language (IDL)  -Language-neutral interface specification 
  19909.    for a SOM class. 
  19910.  
  19911.  interpreter  -A program that translates and executes each instruction of a 
  19912.    high-level programming language before it translates and executes. 
  19913.  
  19914.  interprocess communication (IPC)  -In the OS/2 operating system, the exchange 
  19915.    of information between processes or threads through semaphores, pipes, 
  19916.    queues, and shared memory. 
  19917.  
  19918.  interval timer  -(1) A timer that provides program interruptions on a 
  19919.    program-controlled basis. (2) An electronic counter that counts intervals of 
  19920.    time under program control. 
  19921.  
  19922.  IOCtl  -Input/output control. 
  19923.  
  19924.  IOPL  -Input/output privilege level. 
  19925.  
  19926.  IOPL code segment  -An IOPL executable section of programming code that 
  19927.    enables an application to directly manipulate hardware interrupts and ports 
  19928.    without replacing the device driver. See also privilege level. 
  19929.  
  19930.  IPC  -Interprocess communication. 
  19931.  
  19932.  IPF  -Information Presentation Facility. 
  19933.  
  19934.  IPF compiler  -A text compiler that interpret tags in a source file and 
  19935.    converts the information into the specified format. 
  19936.  
  19937.  IPF tag language  -A markup language that provides the instructions for 
  19938.    displaying online information. 
  19939.  
  19940.  item  -A data object that can be passed in a DDE transaction. 
  19941.  
  19942.  
  19943. ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
  19944.  
  19945.  journal  -A special-purpose file that is used to record changes made in the 
  19946.    system. 
  19947.  
  19948.  
  19949. ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
  19950.  
  19951.  Kanji  -A graphic character set used in Japanese ideographic alphabets. 
  19952.  
  19953.  KBD$  -Character-device name reserved for the keyboard. 
  19954.  
  19955.  kernel  -The part of an operating system that performs basic functions, such 
  19956.    as allocating hardware resources. 
  19957.  
  19958.  kerning  -The design of graphics characters so that their character boxes 
  19959.    overlap. Used to space text proportionally. 
  19960.  
  19961.  keyboard accelerator  -A keystroke that generates a command message for an 
  19962.    application. 
  19963.  
  19964.  keyboard augmentation  -A function that enables a user to press a keyboard key 
  19965.    while pressing a mouse button. 
  19966.  
  19967.  keyboard focus  -A temporary attribute of a window. The window that has a 
  19968.    keyboard focus receives all keyboard input until the focus changes to a 
  19969.    different window. 
  19970.  
  19971.  Keys help  -In SAA Common User Access architecture, a help action that 
  19972.    provides a listing of the application keys and their assigned functions. 
  19973.  
  19974.  
  19975. ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
  19976.  
  19977.  label  -In a graphics segment, an identifier of one or more elements that is 
  19978.    used when editing the segment. 
  19979.  
  19980.  LAN  -Local area network. 
  19981.  
  19982.  language support procedure  -A function provided by the Presentation Manager 
  19983.    Interface for applications that do not, or cannot (as in the case of COBOL 
  19984.    and FORTRAN programs), provide their own dialog or window procedures. 
  19985.  
  19986.  lazy drag  -See pickup and drop. 
  19987.  
  19988.  lazy drag set  -See pickup set. 
  19989.  
  19990.  LDT  -In the OS/2 operating system, Local Descriptor Table. 
  19991.  
  19992.  LIFO stack  -A stack from which data is retrieved in last-in, first-out order. 
  19993.  
  19994.  linear address  -A unique value that identifies the memory object. 
  19995.  
  19996.  linked list  -Synonym for chained list. 
  19997.  
  19998.  list box  -In SAA Advanced Common User Access architecture, a control that 
  19999.    contains scrollable choices from which a user can select one choice. 
  20000.  
  20001.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20002.    selection list. 
  20003.  
  20004.  list button  -A button labeled with an underlined down-arrow that presents a 
  20005.    list of valid objects or choices that can be selected for that field. 
  20006.  
  20007.  list panel  -A defined panel type that displays a list of items from which 
  20008.    users can select one or more choices and then specify one or more actions to 
  20009.    work on those choices. 
  20010.  
  20011.  load time  -The point in time at which a program module is loaded into main 
  20012.    storage for execution. 
  20013.  
  20014.  load-on-call  -A function of a linkage editor that allows selected segments of 
  20015.    the module to be disk resident while other segments are executing. Disk 
  20016.    resident segments are loaded for execution and given control when any entry 
  20017.    point that they contain is called. 
  20018.  
  20019.  local area network (LAN)  -(1) A computer network located on a user's premises 
  20020.    within a limited geographical area. Communication within a local area 
  20021.    network is not subject to external regulations;  however, communication 
  20022.    across the LAN boundary may be subject to some form of regulation. (T)
  20023.  
  20024.    Note:  A LAN does not use store and forward techniques. (2) A network in 
  20025.    which a set of devices are connected to one another for communication and 
  20026.    that can be connected to a larger network. 
  20027.  
  20028.  Local Descriptor Table (LDT)  -Defines code and data segments specific to a 
  20029.    single task. 
  20030.  
  20031.  lock  -A serialization mechanism by means of which a resource is restricted 
  20032.    for use by the holder of the lock. 
  20033.  
  20034.  logical storage device  -A device that the user can map to a physical (actual) 
  20035.    device. 
  20036.  
  20037.  LPT1, LPT2, LPT3  -Character-device names reserved for parallel printers 1 
  20038.    through 3. 
  20039.  
  20040.  
  20041. ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
  20042.  
  20043.  main window  -The window that is positioned relative to the desktop window. 
  20044.  
  20045.  manipulation button  -The button on a pointing device a user presses to 
  20046.    directly manipulate an object. 
  20047.  
  20048.  map  -(1) A set of values having a defined correspondence with the quantities 
  20049.    or values of another set. (I)  (A)  (2) To establish a set of values having 
  20050.    a defined correspondence with the quantities or values of another set. (I)
  20051.  
  20052.  marker box  -In computer graphics, the boundary that defines, in world 
  20053.    coordinates, the horizontal and vertical space occupied by a single marker 
  20054.    from a marker set. 
  20055.  
  20056.  marker symbol  -A symbol centered on a point. Graphs and charts can use marker 
  20057.    symbols to indicate the plotted points. 
  20058.  
  20059.  marquee box  -The rectangle that appears during a selection technique in which 
  20060.    a user selects objects by drawing a box around them with a pointing device. 
  20061.  
  20062.  Master Help Index  -In the OS/2 operating system, an alphabetic list of help 
  20063.    topics related to using the operating system. 
  20064.  
  20065.  maximize  -To enlarge a window to its largest possible size. 
  20066.  
  20067.  media window  -The part of the physical device (display, printer, or plotter) 
  20068.    on which a picture is presented. 
  20069.  
  20070.  memory block  -Part memory within a heap. 
  20071.  
  20072.  memory device context  -A logical description of a data destination that is a 
  20073.    memory bit map. See also device context. 
  20074.  
  20075.  memory management  -A feature of the operating system for allocating, sharing, 
  20076.    and freeing main storage. 
  20077.  
  20078.  memory object  -Logical unit of memory requested by an application, which 
  20079.    forms the granular unit of memory manipulation from the application 
  20080.    viewpoint. 
  20081.  
  20082.  menu  -In SAA Advanced Common User Access architecture, an extension of the 
  20083.    menu bar that displays a list of choices available for a selected choice in 
  20084.    the menu bar. After a user selects a choice in menu bar, the corresponding 
  20085.    menu appears. Additional pop-up windows can appear from menu choices. 
  20086.  
  20087.  menu bar  -In SAA Advanced Common User Access architecture, the area near the 
  20088.    top of a window, below the title bar and above the rest of the window, that 
  20089.    contains choices that provide access to other menus. 
  20090.  
  20091.  menu button  -The button on a pointing device that a user presses to view a 
  20092.    pop-up menu associated with an object. 
  20093.  
  20094.  message  -(1) In the Presentation Manager, a packet of data used for 
  20095.    communication between the Presentation Manager interface and Presentation 
  20096.    Manager applications (2) In a user interface, information not requested by 
  20097.    users but presented to users by the computer in response to a user action or 
  20098.    internal process. 
  20099.  
  20100.  message box  -(1) A dialog window predefined by the system and used as a 
  20101.    simple interface for applications, without the necessity of creating 
  20102.    dialog-template resources or dialog procedures. (2) (D of C) In SAA Advanced 
  20103.    Common User Access architecture, a type of window that shows messages to 
  20104.    users. See also dialog box, primary window, secondary window. 
  20105.  
  20106.  message filter  -The means of selecting which messages from a specific window 
  20107.    will be handled by the application. 
  20108.  
  20109.  message queue  -A sequenced collection of messages to be read by the 
  20110.    application. 
  20111.  
  20112.  message stream mode  -A method of operation in which data is treated as a 
  20113.    stream of messages.  Contrast with  byte stream. 
  20114.  
  20115.  metacharacter  -See global file-name character. 
  20116.  
  20117.  metaclass  -A class whose instances are all classes. In SOM, any class 
  20118.    descended from SOMClass is a metaclass. The methods of a metaclass are 
  20119.    sometimes called "class" methods. 
  20120.  
  20121.  metafile  -A file containing a series of attributes that set color, shape and 
  20122.    size, usually of a picture or a drawing. Using a program that can interpret 
  20123.    these attributes, a user can view the assembled image. 
  20124.  
  20125.  metafile device context  -A logical description of a data destination that is 
  20126.    a metafile, which is used for graphics interchange. See also device context. 
  20127.  
  20128.  metalanguage  -A language used to specify another language. For example, data 
  20129.    types can be described using a metalanguage so as to make the descriptions 
  20130.    independent of any one computer language. 
  20131.  
  20132.  method  -One of the units that makes up the behavior of an object. A method is 
  20133.    a combination of a function and a name, such that many different functions 
  20134.    can have the same name. Which function the name refers to at any point in 
  20135.    time depends on the object that is to execute the method and is the subject 
  20136.    of method resolution. 
  20137.  
  20138.  method override  -The replacement, by a child class, of the implementation of 
  20139.    a method inherited from a parent and an ancestor class. 
  20140.  
  20141.  mickey  -A unit of measurement for physical mouse motion whose value depends 
  20142.    on the mouse device driver currently loaded. 
  20143.  
  20144.  micro presentation space  -A graphics presentation space in which a restricted 
  20145.    set of the GPI function calls is available. 
  20146.  
  20147.  minimize  -To remove from the screen all windows associated with an 
  20148.    application and replace them with an icon that represents the application. 
  20149.  
  20150.  mix  -An attribute that determines how the foreground of a graphic primitive 
  20151.    is combined with the existing color of graphics output. Also known as 
  20152.    foreground mix. Contrast with background mix. 
  20153.  
  20154.  mixed character string  -A string containing a mixture of one-byte and Kanji 
  20155.    or Hangeul (two-byte) characters. 
  20156.  
  20157.  mnemonic  -(1) A method of selecting an item on a pull-down by means of typing 
  20158.    the highlighted letter in the menu item. (2) (D of C) In SAA Advanced Common 
  20159.    User Access architecture, usually a single character, within the text of a 
  20160.    choice, identified by an underscore beneath the character. If all characters 
  20161.    in a choice already serve as mnemonics for other choices, another character, 
  20162.    placed in parentheses immediately following the choice, can be used. When a 
  20163.    user types the mnemonic for a choice, the choice is either selected or the 
  20164.    cursor is moved to that choice. 
  20165.  
  20166.  modal dialog box  -In SAA Advanced Common User Access architecture, a type of 
  20167.    movable window, fixed in size, that requires a user to enter information 
  20168.    before continuing to work in the application window from which it was 
  20169.    displayed. Contrast with modeless dialog box. Also known as a serial dialog 
  20170.    box. Contrast with parallel dialog box. 
  20171.  
  20172.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20173.    pop-up window. 
  20174.  
  20175.  model space  -See graphics model space. 
  20176.  
  20177.  modeless dialog box  -In SAA Advanced Common User Access architecture, a type 
  20178.    of movable window, fixed in size, that allows users to continue their dialog 
  20179.    with the application without entering information in the dialog box. Also 
  20180.    known as a parallel dialog box. Contrast with modal dialog box. 
  20181.  
  20182.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  20183.    pop-up window. 
  20184.  
  20185.  module definition file  -A file that describes the code segments within a load 
  20186.    module. For example, it indicates whether a code segment is loadable before 
  20187.    module execution begins (preload), or loadable only when referred to at run 
  20188.    time (load-on-call). 
  20189.  
  20190.  mouse  -In SAA usage, a device that a user moves on a flat surface to position 
  20191.    a pointer on the screen. It allows a user to select a choice o function to 
  20192.    be performed or to perform operations on the screen, such as dragging or 
  20193.    drawing lines from one position to another. 
  20194.  
  20195.  MOUSE$  -Character-device name reserved for a mouse. 
  20196.  
  20197.  multiple-choice selection  -In SAA Basic Common User Access architecture, a 
  20198.    type of field from which a user can select one or more choices or select 
  20199.    none. See also check box. Contrast with extended-choice selection. 
  20200.  
  20201.  multiple-line entry field  -In SAA Advanced Common User Access architecture, a 
  20202.    control into which a user types more than one line of information. See also 
  20203.    single-line entry field. 
  20204.  
  20205.  multitasking  -The concurrent processing of applications or parts of 
  20206.    applications. A running application and its data are protected from other 
  20207.    concurrently running applications. 
  20208.  
  20209.  mutex semaphore  -(Mutual exclusion semaphore). A semaphore that enables 
  20210.    threads to serialize their access to resources. Only the thread that 
  20211.    currently owns the mutex semaphore can gain access to the resource, thus 
  20212.    preventing one thread from interrupting operations being performed by 
  20213.    another. 
  20214.  
  20215.  muxwait semaphore  -(Multiple wait semaphore). A semaphore that enables a 
  20216.    thread to wait either for multiple event semaphores to be posted or for 
  20217.    multiple mutex semaphores to be released. Alternatively, a muxwait semaphore 
  20218.    can be set to enable a thread to wait for any ONE of the event or mutex 
  20219.    semaphores in the muxwait semaphore's list to be posted or released. 
  20220.  
  20221.  
  20222. ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
  20223.  
  20224.  named pipe  -A named buffer that provides client-to-server, server-to-client, 
  20225.    or full duplex communication between unrelated processes. Contrast with 
  20226.    unnamed pipe. 
  20227.  
  20228.  national language support (NLS)  -The modification or conversion of a United 
  20229.    States English product to conform to the requirements of another language or 
  20230.    country. This can include the enabling or retrofitting of a product and the 
  20231.    translation of nomenclature, MRI, or documentation of a product. 
  20232.  
  20233.  nested list  -A list that is contained within another list. 
  20234.  
  20235.  NLS  -national language support. 
  20236.  
  20237.  non-8.3 file-name format  -A file-naming convention in which file names can 
  20238.    consist of up to 255 characters. See also 8.3 file-name format. 
  20239.  
  20240.  noncritical extended attribute  -An extended attribute that is not necessary 
  20241.    for the function of an application. 
  20242.  
  20243.  nondestructive read  -Reading that does not erase the data in the source 
  20244.    location. (T)
  20245.  
  20246.  noninteractive program  -A running program that cannot receive input from the 
  20247.    keyboard or other input device. Compare with active program, and contrast 
  20248.    with interactive program. 
  20249.  
  20250.  nonretained graphics  -Graphic primitives that are not remembered by the 
  20251.    Presentation Manager interface when they have been drawn. Contrast with 
  20252.    retained graphics. 
  20253.  
  20254.  null character (NUL)  -(1) Character-device name reserved for a nonexistent 
  20255.    (dummy) device. (2) (D of C) A control character that is used to accomplish 
  20256.    media-fill or time-fill and that may be inserted into or removed from a 
  20257.    sequence of characters without affecting the meaning of the sequence; 
  20258.    however, the control of equipment or the format may be affected by this 
  20259.    character. (I)  (A)
  20260.  
  20261.  null-terminated string  -A string of (n+1) characters where the (n+1)th 
  20262.    character is the 'null' character ($00) Also known as 'zero-terminated' 
  20263.    string and 'ASCIIZ' string. 
  20264.  
  20265.  
  20266. ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
  20267.  
  20268.  object  -The elements of data and function that programs create, manipulate, 
  20269.    pass as arguments, and so forth. An object is a way of associating specific 
  20270.    data values with a specific set of named functions (called methods) for a 
  20271.    period of time (referred to as the lifetime of the object). The data values 
  20272.    of an object are referred to as its state. In SOM, objects are created by 
  20273.    other objects called classes. The specification of what comprises the set of 
  20274.    functions and data elements that make up an object is referred to as the 
  20275.    definition of a class. 
  20276.  
  20277.    SOM objects offer a high degree of encapsulation. This property permits many 
  20278.    aspects of the implementation of an object to change without affecting 
  20279.    client programs that depend on the object's behavior. 
  20280.  
  20281.  object definition  -See class. 
  20282.  
  20283.  object instance  -See instance. 
  20284.  
  20285.  Object Interface Definition Language (OIDL)  -Specification language used in 
  20286.    SOM Version 1 for defining classes. Replaced by Interface Definition 
  20287.    Language (IDL). 
  20288.  
  20289.  object window  -A window that does not have a parent but which might have 
  20290.    child windows. An object window cannot be presented on a device. 
  20291.  
  20292.  OIDL  -Object Interface Definition Language. 
  20293.  
  20294.  open  -To start working with a file, directory, or other object. 
  20295.  
  20296.  ordered list  -Vertical arrangements of items, with each item in the list 
  20297.    preceded by a number or letter. 
  20298.  
  20299.  outline font  -A set of symbols, each of which is created as a series of lines 
  20300.    and curves.  Synonymous with vector font. Contrast with image font. 
  20301.  
  20302.  output area  -An area of storage reserved for output. (A)
  20303.  
  20304.  owner window  -A window into which specific events that occur in another 
  20305.    (owned) window are reported. 
  20306.  
  20307.  ownership  -The determination of how windows communicate using messages. 
  20308.  
  20309.  owning process  -The process that owns the resources that might be shared with 
  20310.    other processes. 
  20311.  
  20312.  
  20313. ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
  20314.  
  20315.  page  -(1) A 4KB segment of contiguous physical memory. (2) (D of C) A defined 
  20316.    unit of space on a storage medium. 
  20317.  
  20318.  page viewport  -A boundary in device coordinates that defines the area of the 
  20319.    output device in which graphics are to be displayed. The presentation-page 
  20320.    contents are transformed automatically to the page viewport in device space. 
  20321.  
  20322.  paint  -(1) The action of drawing or redrawing the contents of a window. (2) 
  20323.    In computer graphics, to shade an area of a display image;  for example, 
  20324.    with crosshatching or color. 
  20325.  
  20326.  panel  -In SAA Basic Common User Access architecture, a particular arrangement 
  20327.    of information that is presented in a window or pop-up. If some of the 
  20328.    information is not visible, a user can scroll through the information. 
  20329.  
  20330.  panel area  -An area within a panel that contains related information. The 
  20331.    three major Common User Access-defined panel areas are the action bar, the 
  20332.    function key area, and the panel body. 
  20333.  
  20334.  panel area separator  -In SAA Basic Common User Access architecture, a solid, 
  20335.    dashed, or blank line that provides a visual distinction between two 
  20336.    adjacent areas of a panel. 
  20337.  
  20338.  panel body  -The portion of a panel not occupied by the action bar, function 
  20339.    key area, title or scroll bars. The panel body can contain protected 
  20340.    information, selection fields, and entry fields. The layout and content of 
  20341.    the panel body determine the panel type. 
  20342.  
  20343.  panel body area  -See client area. 
  20344.  
  20345.  panel definition  -A description of the contents and characteristics of a 
  20346.    panel. A panel definition is the application developer's mechanism for 
  20347.    predefining the format to be presented to users in a window. 
  20348.  
  20349.  panel ID  -In SAA Basic Common User Access architecture, a panel identifier, 
  20350.    located in the upper-left corner of a panel.  A user can choose whether to 
  20351.    display the panel ID. 
  20352.  
  20353.  panel title  -In SAA Basic Common User Access architecture, a particular 
  20354.    arrangement of information that is presented in a window or pop-up. If some 
  20355.    of the information is not visible, a user can scroll through the 
  20356.    information. 
  20357.  
  20358.  paper size  -The size of paper, defined in either standard U.S. or European 
  20359.    names (for example, A, B, A4), and measured in inches or millimeters 
  20360.    respectively. 
  20361.  
  20362.  parallel dialog box  -See modeless dialog box. 
  20363.  
  20364.  parameter list  -A list of values that provides a means of associating 
  20365.    addressability of data defined in a called program with data in the calling 
  20366.    program. It contains parameter names and the order in which they are to be 
  20367.    associated in the calling and called program. 
  20368.  
  20369.  parent class  -See inheritance. 
  20370.  
  20371.  parent process  -In the OS/2 operating system, a process that creates other 
  20372.    processes. Contrast with child process. 
  20373.  
  20374.  parent window  -In the OS/2 operating system, a window that creates a child 
  20375.    window. The child window is drawn within the parent window. If the parent 
  20376.    window is moved, resized, or destroyed, the child window also will be moved, 
  20377.    resized, or destroyed. However, the child window can be moved and resized 
  20378.    independently from the parent window, within the boundaries of the parent 
  20379.    window. Contrast with child window. 
  20380.  
  20381.  partition  -(1) A fixed-size division of storage. (2) On an IBM personal 
  20382.    computer fixed disk, one of four possible storage areas of variable size; 
  20383.    one may be accessed by DOS, and each of the others may be assigned to 
  20384.    another operating system. 
  20385.  
  20386.  Paste  -A choice in the Edit pull-down that a user selects to move the 
  20387.    contents of the clipboard into a preselected location. See also Copy and 
  20388.    Cut. 
  20389.  
  20390.  path  -The route used to locate files; the storage location of a file. A fully 
  20391.    qualified path lists the drive identifier, directory name, subdirectory name 
  20392.    (if any), and file name with the associated extension. 
  20393.  
  20394.  PDD  -Physical device driver. 
  20395.  
  20396.  peeking  -An action taken by any thread in the process that owns the queue to 
  20397.    examine queue elements without removing them. 
  20398.  
  20399.  pel  -(1) The smallest area of a display screen capable of being addressed and 
  20400.    switched between visible and invisible states. Synonym for display point, 
  20401.    pixel, and picture element. (2) (D of C) Picture element. 
  20402.  
  20403.  persistent object  -An object whose instance data and state are preserved 
  20404.    between system shutdown and system startup. 
  20405.  
  20406.  physical device driver (PDD)  -A system interface that handles hardware 
  20407.    interrupts and supports a set of input and output functions. 
  20408.  
  20409.  pick  -To select part of a displayed object using the pointer. 
  20410.  
  20411.  pickup  -To add an object or set of objects to the pickup set. 
  20412.  
  20413.  pickup and drop  -A drag operation that does not require the direct 
  20414.    manipulation button to be pressed for the duration of the drag. 
  20415.  
  20416.  pickup set  -The set of objects that have been picked up as part of a pickup 
  20417.    and drop operation. 
  20418.  
  20419.  picture chain  -See segment chain. 
  20420.  
  20421.  picture element  -(1) Synonym for pel. (2) (D of C) In computer graphics, the 
  20422.    smallest element of a display surface that can be independently assigned 
  20423.    color and intensity. (T)  . (3) The area of the finest detail that can be 
  20424.    reproduced effectively on the recording medium. 
  20425.  
  20426.  PID  -Process identification. 
  20427.  
  20428.  pipe  -(1) A named or unnamed buffer used to pass data between processes. A 
  20429.    process reads from or writes to a pipe as if the pipe were a standard-input 
  20430.    or standard-output file. See also named pipe and unnamed pipe. (2) (D of C) 
  20431.    To direct data so that the output from one process becomes the input to 
  20432.    another process. The standard output of one command can be connected to the 
  20433.    standard input of another with the pipe operator (Or). 
  20434.  
  20435.  pixel  -(1) Synonym for pel. (2) (D of C) Picture element. 
  20436.  
  20437.  plotter  -An output unit that directly produces a hardcopy record of data on a 
  20438.    removable medium, in the form of a two-dimensional graphic representation. (T)
  20439.  
  20440.  PM  -Presentation Manager. 
  20441.  
  20442.  pointer  -(1) The symbol displayed on the screen that is moved by a pointing 
  20443.    device, such as a mouse. The pointer is used to point at items that users 
  20444.    can select. Contrast with cursor. (2) A data element that indicates the 
  20445.    location of another data element. (T)
  20446.  
  20447.  POINTER$  -Character-device name reserved for a pointer device (mouse screen 
  20448.    support). 
  20449.  
  20450.  pointing device  -In SAA Advanced Common User Access architecture, an 
  20451.    instrument, such as a mouse, trackball, or joystick, used to move a pointer 
  20452.    on the screen. 
  20453.  
  20454.  pointings  -Pairs of x-y coordinates produced by an operator defining 
  20455.    positions on a screen with a pointing device, such as a mouse. 
  20456.  
  20457.  polyfillet  -A curve based on a sequence of lines. The curve is tangential to 
  20458.    the end points of the first and last lines, and tangential also to the 
  20459.    midpoints of all other lines. See also fillet. 
  20460.  
  20461.  polygon  -One or more closed figures that can be drawn filled, outlined, or 
  20462.    filled and outlined. 
  20463.  
  20464.  polyline  -A sequence of adjoining lines. 
  20465.  
  20466.  polymorphism  -The ability to have different implementations of the same 
  20467.    method for two or more classes of objects. 
  20468.  
  20469.  pop  -To retrieve an item from a last-in-first-out stack of items. Contrast 
  20470.    with push. 
  20471.  
  20472.  pop-up menu  -A menu that lists the actions that a user can perform on an 
  20473.    object. The contents of the pop-up menu can vary depending on the context, 
  20474.    or state, of the object. 
  20475.  
  20476.  pop-up window  -(1) A window that appears on top of another window in a 
  20477.    dialog. Each pop-up window must be completed before returning to the 
  20478.    underlying window. (2) (D of C) In SAA Advanced Common User Access 
  20479.    architecture, a movable window, fixed in size, in which a user provides 
  20480.    information required by an application so that it can continue to process a 
  20481.    user request. 
  20482.  
  20483.  presentation drivers  -Special purpose I/O routines that handle field 
  20484.    device-independent I/O requests from the PM and its applications. 
  20485.  
  20486.  Presentation Manager (PM)  -The interface of the OS/2 operating system that 
  20487.    presents, in windows a graphics-based interface to applications and files 
  20488.    installed and running under the OS/2 operating system. 
  20489.  
  20490.  presentation page  -The coordinate space in which a picture is assembled for 
  20491.    display. 
  20492.  
  20493.  presentation space (PS)  -(1) Contains the device-independent definition of a 
  20494.    picture. (2) (D of C) The display space on a display device. 
  20495.  
  20496.  primary window  -In SAA Common User Access architecture, the window in which 
  20497.    the main interaction between the user and the application takes place. In a 
  20498.    multiprogramming environment, each application starts in its own primary 
  20499.    window. The primary window remains for the duration of the application, 
  20500.    although the panel displayed will change as the user's dialog moves forward. 
  20501.    See also secondary window. 
  20502.  
  20503.  primitive  -In computer graphics, one of several simple functions for drawing 
  20504.    on the screen, including, for example, the rectangle, line, ellipse, 
  20505.    polygon, and so on. 
  20506.  
  20507.  primitive attribute  -A specifiable characteristic of a graphic primitive. See 
  20508.    graphics attributes. 
  20509.  
  20510.  print job  -The result of sending a document or picture to be printed. 
  20511.  
  20512.  Print Manager  -In the Presentation Manager, the part of the spooler that 
  20513.    manages the spooling process. It also allows users to view print queues and 
  20514.    to manipulate print jobs. 
  20515.  
  20516.  privilege level  -A protection level imposed by the hardware architecture of 
  20517.    the IBM personal computer.  There are four privilege levels (number 0 
  20518.    through 3).  Only certain types of programs are allowed to execute at each 
  20519.    privilege level.  See also IOPL code segment. 
  20520.  
  20521.  procedure call  -In programming languages, a language construct for invoking 
  20522.    execution of a procedure. 
  20523.  
  20524.  process  -An instance of an executing application and the resources it is 
  20525.    using. 
  20526.  
  20527.  program  -A sequence of instructions that a computer can interpret and 
  20528.    execute. 
  20529.  
  20530.  program details  -Information about a program that is specified in the Program 
  20531.    Manager window and is used when the program is started. 
  20532.  
  20533.  program group  -In the Presentation Manager, several programs that can be 
  20534.    acted upon as a single entity. 
  20535.  
  20536.  program name  -The full file specification of a program. Contrast with program 
  20537.    title. 
  20538.  
  20539.  program title  -The name of a program as it is listed in the Program Manager 
  20540.    window. Contrast with program name. 
  20541.  
  20542.  prompt  -A displayed symbol or message that requests input from the user or 
  20543.    gives operational information; for example, on the display screen of an IBM 
  20544.    personal computer, the DOS A> prompt. The user must respond to the prompt in 
  20545.    order to proceed. 
  20546.  
  20547.  protect mode  -A method of program operation that limits or prevents access to 
  20548.    certain instructions or areas of storage. Contrast with real mode. 
  20549.  
  20550.  protocol  -A set of semantic and syntactic rules that determines the behavior 
  20551.    of functional units in achieving communication. (I)
  20552.  
  20553.  pseudocode  -An artificial language used to describe computer program 
  20554.    algorithms without using the syntax of any particular programming language. (A)
  20555.  
  20556.  pull-down  -(1) An action bar extension that displays a list of choices 
  20557.    available for a selected action bar choice. After users select an action bar 
  20558.    choice, the pull-down appears with the list of choices. Additional pop-up 
  20559.    windows may appear from pull-down choices to further extend the actions 
  20560.    available to users. (2) (D of C) In SAA Common User Access architecture, 
  20561.    pertaining to a choice in an action bar pull-down. 
  20562.  
  20563.  push  -To add an item to a last-in-first-out stack of items. Contrast with 
  20564.    pop. 
  20565.  
  20566.  push button  -In SAA Advanced Common User Access architecture, a rectangle 
  20567.    with text inside. Push buttons are used in windows for actions that occur 
  20568.    immediately when the push button is selected. 
  20569.  
  20570.  putback  -To remove an object or set of objects from the lazy drag set. This 
  20571.    has the effect of undoing the pickup operation for those objects 
  20572.  
  20573.  putdown  -To drop the objects in the lazy drag set on the target object. 
  20574.  
  20575.  
  20576. ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
  20577.  
  20578.  queue  -(1) A linked list of elements waiting to be processed in FIFO order. 
  20579.    For example, a queue may be a list of print jobs waiting to be printed. (2) 
  20580.    (D of C) A line or list of items waiting to be processed; for example, work 
  20581.    to be performed or messages to be displayed. 
  20582.  
  20583.  queued device context  -A logical description of a data destination (for 
  20584.    example, a printer or plotter) where the output is to go through the 
  20585.    spooler. See also device context. 
  20586.  
  20587.  
  20588. ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
  20589.  
  20590.  radio button  -(1) A control window, shaped like a round button on the screen, 
  20591.    that can be in a checked or unchecked state. It is used to select a single 
  20592.    item from a list. Contrast with check box. (2) In SAA Advanced Common User 
  20593.    Access architecture, a circle with text beside it. Radio buttons are 
  20594.    combined to show a user a fixed set of choices from which only one can be 
  20595.    selected. The circle is partially filled when a choice is selected. 
  20596.  
  20597.  RAS  -Reliability, availability, and serviceability. 
  20598.  
  20599.  raster  -(1) In computer graphics, a predetermined pattern of lines that 
  20600.    provides uniform coverage of a display space. (T)  (2) The coordinate grid 
  20601.    that divides the display area of a display device.  (A)
  20602.  
  20603.  read-only file  -A file that can be read from but not written to. 
  20604.  
  20605.  real mode  -A method of program operation that does not limit or prevent 
  20606.    access to any instructions or areas of storage.  The operating system loads 
  20607.    the entire program into storage and gives the program access to all system 
  20608.    resources. Contrast with protect mode. 
  20609.  
  20610.  realize  -To cause the system to ensure, wherever possible, that the physical 
  20611.    color table of a device is set to the closest possible match in the logical 
  20612.    color table. 
  20613.  
  20614.  recursive routine  -A routine that can call itself, or be called by another 
  20615.    routine that was called by the recursive routine. 
  20616.  
  20617.  reentrant  -The attribute of a program or routine that allows the same copy of 
  20618.    the program or routine to be used concurrently by two or more tasks. 
  20619.  
  20620.  reference phrase  -(1) A word or phrase that is emphasized in a 
  20621.    device-dependent manner to inform the user that additional information for 
  20622.    the word or phrase is available. (2) (D of C) In hypertext, text that is 
  20623.    highlighted and preceded by a single-character input field used to signify 
  20624.    the existence of a hypertext link. 
  20625.  
  20626.  reference phrase help  -In SAA Common User Access architecture, highlighted 
  20627.    words or phrases within help information that a user selects to get 
  20628.    additional information. 
  20629.  
  20630.  refresh  -To update a window, with changed information, to its current status. 
  20631.  
  20632.  region  -A clipping boundary in device space. 
  20633.  
  20634.  register  -A part of internal storage having a specified storage capacity and 
  20635.    usually intended for a specific purpose. (T)
  20636.  
  20637.  remote file system  -A file-system driver that gains access to a remote system 
  20638.    without a block device driver. 
  20639.  
  20640.  resource  -The means of providing extra information used in the definition of 
  20641.    a window. A resource can contain definitions of fonts, templates, 
  20642.    accelerators, and mnemonics; the definitions are held in a resource file. 
  20643.  
  20644.  resource file  -A file containing information used in the definition of a 
  20645.    window. Definitions can be of fonts, templates, accelerators, and mnemonics. 
  20646.  
  20647.  restore  -To return a window to its original size or position following a 
  20648.    sizing or moving action. 
  20649.  
  20650.  retained graphics  -Graphic primitives that are remembered by the Presentation 
  20651.    Manager interface after they have been drawn. Contrast with nonretained 
  20652.    graphics. 
  20653.  
  20654.  return code  -(1) A value returned to a program to indicate the results of an 
  20655.    operation requested by that program. (2) A code used to influence the 
  20656.    execution of succeeding instructions.(A) 
  20657.  
  20658.  reverse video  -(1) A form of highlighting a character, field, or cursor by 
  20659.    reversing the color of the character, field, or cursor with its background; 
  20660.    for example, changing a red character on a black background to a black 
  20661.    character on a red background. (2) In SAA Basic Common User Access 
  20662.    architecture, a screen emphasis feature that interchanges the foreground and 
  20663.    background colors of an item. 
  20664.  
  20665.  REXX Language  -Restructured Extended Executor. A procedural language that 
  20666.    provides batch language functions along with structured programming 
  20667.    constructs such as loops; conditional testing and subroutines. 
  20668.  
  20669.  RGB  -(1) Color coding in which the brightness of the additive primary colors 
  20670.    of light, red, green, and blue, are specified as three distinct values of 
  20671.    white light. (2) Pertaining to a color display that accepts signals 
  20672.    representing red, green, and blue. 
  20673.  
  20674.  roman  -Relating to a type style with upright characters. 
  20675.  
  20676.  root segment  -In a hierarchical database, the highest segment in the tree 
  20677.    structure. 
  20678.  
  20679.  round-robin scheduling  -A process that allows each thread to run for a 
  20680.    specified amount of time. 
  20681.  
  20682.  run time  -(1) Any instant at which the execution of a particular computer 
  20683.    program takes place. (T)  (2) The amount of time needed for the execution of 
  20684.    a particular computer program. (T)  (3) The time during which an instruction 
  20685.    in an instruction register is decoded and performed. Synonym for execution 
  20686.    time. 
  20687.  
  20688.  
  20689. ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
  20690.  
  20691.  SAA  -Systems Application Architecture. 
  20692.  
  20693.  SBCS  -Single-byte character set. 
  20694.  
  20695.  scheduler  -A computer program designed to perform functions such as 
  20696.    scheduling, initiation, and termination of jobs. 
  20697.  
  20698.  screen  -In SAA Basic Common User Access architecture, the physical surface of 
  20699.    a display device upon which information is shown to a user. 
  20700.  
  20701.  screen device context  -A logical description of a data destination that is a 
  20702.    particular window on the screen. See also device context. 
  20703.  
  20704.  SCREEN$  -Character-device name reserved for the display screen. 
  20705.  
  20706.  scroll bar  -In SAA Advanced Common User Access architecture, a part of a 
  20707.    window, associated with a scrollable area, that a user interacts with to see 
  20708.    information that is not currently allows visible. 
  20709.  
  20710.  scrollable entry field  -An entry field larger than the visible field. 
  20711.  
  20712.  scrollable selection field  -A selection field that contains more choices than 
  20713.    are visible. 
  20714.  
  20715.  scrolling  -Moving a display image vertically or horizontally in a manner such 
  20716.    that new data appears at one edge, as existing data disappears at the 
  20717.    opposite edge. 
  20718.  
  20719.  secondary window  -A window that contains information that is dependent on 
  20720.    information in a primary window and is used to supplement the interaction in 
  20721.    the primary window. 
  20722.  
  20723.  sector  -On disk or diskette storage, an addressable subdivision of a track 
  20724.    used to record one block of a program or data. 
  20725.  
  20726.  segment  -See graphics segment. 
  20727.  
  20728.  segment attributes  -Attributes that apply to the segment as an entity, as 
  20729.    opposed to the individual primitives within the segment. For example, the 
  20730.    visibility or detectability of a segment. 
  20731.  
  20732.  segment chain  -All segments in a graphics presentation space that are defined 
  20733.    with the 'chained' attribute. Synonym for picture chain. 
  20734.  
  20735.  segment priority  -The order in which segments are drawn. 
  20736.  
  20737.  segment store  -An area in a normal graphics presentation space where retained 
  20738.    graphics segments are stored. 
  20739.  
  20740.  select  -To mark or choose an item. Note that select means to mark or type in 
  20741.    a choice on the screen; enter means to send all selected choices to the 
  20742.    computer for processing. 
  20743.  
  20744.  select button  -The button on a pointing device, such as a mouse, that is 
  20745.    pressed to select a menu choice.  Also known as button 1. 
  20746.  
  20747.  selection cursor  -In SAA Advanced Common User Access architecture, a visual 
  20748.    indication that a user has selected a choice. It is represented by outlining 
  20749.    the choice with a dotted box. See also text cursor. 
  20750.  
  20751.  selection field  -(1) In SAA Advanced Common User Access architecture, a set 
  20752.    of related choices. See also entry field. (2) In SAA Basic Common User 
  20753.    Access architecture, an area of a panel that cannot be scrolled and contains 
  20754.    a fixed number of choices. 
  20755.  
  20756.  semantics  -The relationships between symbols and their meanings. 
  20757.  
  20758.  semaphore  -An object used by applications for signalling purposes and for 
  20759.    controlling access to serially reusable resources. 
  20760.  
  20761.  separator  -In SAA Advanced Common User Access architecture, a line or color 
  20762.    boundary that provides a visual distinction between two adjacent areas. 
  20763.  
  20764.  serial dialog box  -See modal dialog box. 
  20765.  
  20766.  serialization  -The consecutive ordering of items. 
  20767.  
  20768.  serialize  -To ensure that one or more events occur in a specified sequence. 
  20769.  
  20770.  serially reusable resource (SRR)  -A logical resource or object that can be 
  20771.    accessed by only one task at a time. 
  20772.  
  20773.  session  -(1) A routing mechanism for user interaction via the console; a 
  20774.    complete environment that determines how an application runs and how users 
  20775.    interact with the application. OS/2 can manage more than one session at a 
  20776.    time, and more than one process can run in a session. Each session has its 
  20777.    own set of environment variables that determine where OS/2 looks for 
  20778.    dynamic-link libraries and other important files. (2) (D of C) In the OS/2 
  20779.    operating system, one instance of a started program or command prompt. Each 
  20780.    session is separate from all other sessions that might be running on the 
  20781.    computer. The operating system is responsible for coordinating the resources 
  20782.    that each session uses, such as computer memory, allocation of processor 
  20783.    time, and windows on the screen. 
  20784.  
  20785.  Settings Notebook  -A control window that is used to display the settings for 
  20786.    an object and to enable the user to change them. 
  20787.  
  20788.  shadow  -An object that refers to another object. A shadow is not a copy of 
  20789.    another object, but is another representation of the object. 
  20790.  
  20791.  shadow box  -The area on the screen that follows mouse movements and shows 
  20792.    what shape the window will take if the mouse button is released. 
  20793.  
  20794.  shared data  -Data that is used by two or more programs. 
  20795.  
  20796.  shared memory  -In the OS/2 operating system, a segment that can be used by 
  20797.    more than one program. 
  20798.  
  20799.  shear  -In computer graphics, the forward or backward slant of a graphics 
  20800.    symbol or string of such symbols relative to a line perpendicular to the 
  20801.    baseline of the symbol. 
  20802.  
  20803.  shell  -(1) A software interface between a user and the operating system of a 
  20804.    computer. Shell programs interpret commands and user interactions on devices 
  20805.    such as keyboards, pointing devices, and touch-sensitive screens, and 
  20806.    communicate them to the operating system. (2) Software that allows a kernel 
  20807.    program to run under different operating-system environments. 
  20808.  
  20809.  shutdown  -The process of ending operation of a system or a subsystem, 
  20810.    following a defined procedure. 
  20811.  
  20812.  sibling processes  -Child processes that have the same parent process. 
  20813.  
  20814.  sibling windows  -Child windows that have the same parent window. 
  20815.  
  20816.  simple list  -A list of like values; for example, a list of user names. 
  20817.    Contrast with mixed list. 
  20818.  
  20819.  single-byte character set (SBCS)  -A character set in which each character is 
  20820.    represented by a one-byte code.  Contrast with double-byte character set. 
  20821.  
  20822.  slider box  -In SAA Advanced Common User Access architecture: a part of the 
  20823.    scroll bar that shows the position and size of the visible information in a 
  20824.    window relative to the total amount of information available. Also known as 
  20825.    thumb mark. 
  20826.  
  20827.  SOM  -System Object Model. 
  20828.  
  20829.  source file  -A file that contains source statements for items such as 
  20830.    high-level language programs and data description specifications. 
  20831.  
  20832.  source statement  -A statement written in a programming language. 
  20833.  
  20834.  specific dynamic-link module  -A dynamic-link module created for the exclusive 
  20835.    use of an application. 
  20836.  
  20837.  spin button  -In SAA Advanced Common User Access architecture, a type of entry 
  20838.    field that shows a scrollable ring of choices from which a user can select a 
  20839.    choice. After the last choice is displayed, the first choice is displayed 
  20840.    again.  A user can also type a choice from the scrollable ring into the 
  20841.    entry field without interacting with the spin button. 
  20842.  
  20843.  spline  -A sequence of one or more B╨Æzier curves. 
  20844.  
  20845.  spooler  -A program that intercepts the data going to printer devices and 
  20846.    writes it to disk. The data is printed or plotted when it is complete and 
  20847.    the required device is available.  The spooler prevents output from 
  20848.    different sources from being intermixed. 
  20849.  
  20850.  stack  -A list constructed and maintained so that the next data element to be 
  20851.    retrieved is the most recently stored. This method is characterized as 
  20852.    last-in-first-out (LIFO). 
  20853.  
  20854.  standard window  -A collection of window elements that form a panel. The 
  20855.    standard window can include one or more of the following window elements: 
  20856.    sizing borders, system menu icon, title bar, maximize/minimize/restore 
  20857.    icons, action bar and pull-downs, scroll bars, and client area. 
  20858.  
  20859.  static control  -The means by which the application presents descriptive 
  20860.    information (for example, headings and descriptors) to the user. The user 
  20861.    cannot change this information. 
  20862.  
  20863.  static storage  -(1) A read/write storage unit in which data is retained in 
  20864.    the absence of control signals. (A)  Static storage may use dynamic 
  20865.    addressing or sensing circuits. (2) Storage other than dynamic storage. (A)
  20866.  
  20867.  style  -See window style. 
  20868.  
  20869.  subclass  -A class that inherits from another class. See also Inheritance. 
  20870.  
  20871.  subdirectory  -In an IBM personal computer, a file referred to in a root 
  20872.    directory that contains the names of other files stored on the diskette or 
  20873.    fixed disk. 
  20874.  
  20875.  superclass  -A class from which another class inherits. See also inheritance. 
  20876.  
  20877.  swapping  -(1) A process that interchanges the contents of an area of real 
  20878.    storage with the contents of an area in auxiliary storage. (I)  (A)  (2) In 
  20879.    a system with virtual storage, a paging technique that writes the active 
  20880.    pages of a job to auxiliary storage and reads pages of another job from 
  20881.    auxiliary storage into real storage. (3) The process of temporarily removing 
  20882.    an active job from main storage, saving it on disk, and processing another 
  20883.    job in the area of main storage formerly occupied by the first job. 
  20884.  
  20885.  switch  -(1) In SAA usage, to move the cursor from one point of interest to 
  20886.    another;  for example, to move from one screen or window to another or from 
  20887.    a place within a displayed image to another place on the same displayed 
  20888.    image. (2) In a computer program, a conditional instruction and an indicator 
  20889.    to be interrogated by that instruction. (3) A device or programming 
  20890.    technique for making a selection, for example, a toggle, a conditional jump. 
  20891.  
  20892.  switch list  -See Task List. 
  20893.  
  20894.  symbolic identifier  -A text string that equates to an integer value in an 
  20895.    include file, which is used to identify a programming object. 
  20896.  
  20897.  symbols  -In Information Presentation Facility, a document element used to 
  20898.    produce characters that cannot be entered from the keyboard. 
  20899.  
  20900.  synchronous  -Pertaining to two or more processes that depend upon the 
  20901.    occurrence of specific events such as common timing signals. (T)  See also 
  20902.    asynchronous. 
  20903.  
  20904.  System Menu  -In the Presentation Manager, the pull-down in the top left 
  20905.    corner of a window that allows it to be moved and sized with the keyboard. 
  20906.  
  20907.  System Object Model (SOM)  -A mechanism for language-neutral, object-oriented 
  20908.    programming in the OS/2 environment. 
  20909.  
  20910.  system queue  -The master queue for all pointer device or keyboard events. 
  20911.  
  20912.  system-defined messages  -Messages that control the operations of applications 
  20913.    and provides input an other information for applications to process. 
  20914.  
  20915.  Systems Application Architecture (SAA)  -A set of IBM software interfaces, 
  20916.    conventions, and protocols that provide a framework for designing and 
  20917.    developing applications that are consistent across systems. 
  20918.  
  20919.  
  20920. ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
  20921.  
  20922.  table tags  -In Information Presentation Facility, a document element that 
  20923.    formats text in an arrangement of rows and columns. 
  20924.  
  20925.  tag  -(1) One or more characters attached to a set of data that contain 
  20926.    information about the set, including its identification. (I)  (A)  (2) In 
  20927.    Generalized Markup Language markup, a name for a type of document or 
  20928.    document element that is entered in the source document to identify it. 
  20929.  
  20930.  target object  -An object to which the user is transferring information. 
  20931.  
  20932.  Task List  -In the Presentation Manager, the list of programs that are active. 
  20933.    The list can be used to switch to a program and to stop programs. 
  20934.  
  20935.  terminate-and-stay-resident (TSR)  -Pertaining to an application that modifies 
  20936.    an operating system interrupt vector to point to its own location (known as 
  20937.    hooking an interrupt). 
  20938.  
  20939.  text  -Characters or symbols. 
  20940.  
  20941.  text cursor  -A symbol displayed in an entry field that indicates where typed 
  20942.    input will appear. 
  20943.  
  20944.  text window  -Also known as the VIO window. 
  20945.  
  20946.  text-windowed application  -The environment in which the operating system 
  20947.    performs advanced-video input and output operations. 
  20948.  
  20949.  thread  -A unit of execution within a process. It uses the resources of the 
  20950.    process. 
  20951.  
  20952.  thumb mark  -The portion of the scroll bar that describes the range and 
  20953.    properties of the data that is currently visible in a window. Also known as 
  20954.    a slider box. 
  20955.  
  20956.  thunk  -Term used to describe the process of address conversion, stack and 
  20957.    structure realignment, etc., necessary when passing control between 16-bit 
  20958.    and 32-bit modules. 
  20959.  
  20960.  tilde  -A mark used to denote the character that is to be used as a mnemonic 
  20961.    when selecting text items within a menu. 
  20962.  
  20963.  time slice  -(1) An interval of time on the processing unit allocated for use 
  20964.    in performing a task. After the interval has expired, processing-unit time 
  20965.    is allocated to another task, so a task cannot monopolize processing-unit 
  20966.    time beyond a fixed limit. (2) In systems with time sharing, a segment of 
  20967.    time allocated to a terminal job. 
  20968.  
  20969.  time-critical process  -A process that must be performed within a specified 
  20970.    time after an event has occurred. 
  20971.  
  20972.  timer  -A facility provided under the Presentation Manager, whereby 
  20973.    Presentation Manager will dispatch a message of class WM_TIMER to a 
  20974.    particular window at specified intervals. This capability may be used by an 
  20975.    application to perform a specific processing task at predetermined 
  20976.    intervals, without the necessity for the application to explicitly keep 
  20977.    track of the passage of time. 
  20978.  
  20979.  timer tick  -See clock tick. 
  20980.  
  20981.  title bar  -In SAA Advanced Common User Access architecture, the area at the 
  20982.    top of each window that contains the window title and system menu icon. When 
  20983.    appropriate, it also contains the minimize, maximize, and restore icons. 
  20984.    Contrast with panel title. 
  20985.  
  20986.  TLB  -Translation lookaside buffer. 
  20987.  
  20988.  transaction  -An exchange between a workstation and another device that 
  20989.    accomplishes a particular action or result. 
  20990.  
  20991.  transform  -(1) The action of modifying a picture by scaling, shearing, 
  20992.    reflecting, rotating, or translating. (2) The object that performs or 
  20993.    defines such a modification; also referred to as a transformation. 
  20994.  
  20995.  Translation lookaside buffer (TLB)  -A hardware-based address caching 
  20996.    mechanism for paging information. 
  20997.  
  20998.  Tree  -In the Presentation Manager, the window in the File Manager that shows 
  20999.    the organization of drives and directories. 
  21000.  
  21001.  truncate  -(1) To terminate a computational process in accordance with some 
  21002.    rule (A)  (2) To remove the beginning or ending elements of a string. (3) To 
  21003.    drop data that cannot be printed or displayed in the line width specified or 
  21004.    available. (4) To shorten a field or statement to a specified length. 
  21005.  
  21006.  TSR  -Terminate-and-stay-resident. 
  21007.  
  21008.  
  21009. ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
  21010.  
  21011.  unnamed pipe  -A circular buffer, created in memory, used by related processes 
  21012.    to communicate with one another. Contrast with named pipe. 
  21013.  
  21014.  unordered list  -In Information Presentation Facility, a vertical arrangement 
  21015.    of items in a list, with each item in the list preceded by a special 
  21016.    character or bullet. 
  21017.  
  21018.  update region  -A system-provided area of dynamic storage containing one or 
  21019.    more (not necessarily contiguous) rectangular areas of a window that are 
  21020.    visually invalid or incorrect, and therefore are in need of repainting. 
  21021.  
  21022.  user interface  -Hardware, software, or both that allows a user to interact 
  21023.    with and perform operations on a system, program, or device. 
  21024.  
  21025.  User Shell  -A component of OS/2 that uses a graphics-based, windowed 
  21026.    interface to allow the user to manage applications and files installed and 
  21027.    running under OS/2. 
  21028.  
  21029.  utility program  -(1) A computer program in general support of computer 
  21030.    processes; for example, a diagnostic program, a trace program, a sort 
  21031.    program. (T)  (2) A program designed to perform an everyday task such as 
  21032.    copying data from one storage device to another. (A)
  21033.  
  21034.  
  21035. ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
  21036.  
  21037.  value set control  -A visual component that enables a user to select one 
  21038.    choice from a group of mutually exclusive choices. 
  21039.  
  21040.  vector font  -A set of symbols, each of which is created as a series of lines 
  21041.    and curves. Synonymous with outline font. Contrast with image font. 
  21042.  
  21043.  VGA  -Video graphics array. 
  21044.  
  21045.  view  -A way of looking at an object's information. 
  21046.  
  21047.  viewing pipeline  -The series of transformations applied to a graphic object 
  21048.    to map the object to the device on which it is to be presented. 
  21049.  
  21050.  viewing window  -A clipping boundary that defines the visible part of model 
  21051.    space. 
  21052.  
  21053.  VIO  -Video Input/Output. 
  21054.  
  21055.  virtual memory (VM)  -Synonymous with virtual storage. 
  21056.  
  21057.  virtual storage  -(1) The storage space that may be regarded as addressable 
  21058.    main storage by the user of a computer system in which virtual addresses are 
  21059.    mapped into real addresses. The size of virtual storage is limited by the 
  21060.    addressing scheme of the computer system and by the amount of auxiliary 
  21061.    storage available, not by the actual number of main storage 
  21062.    locations. (I)  (A)  (2) Addressable space that is apparent to the user as 
  21063.    the processor storage space, from which the instructions and the data are 
  21064.    mapped into the processor storage locations. (3) Synonymous with virtual 
  21065.    memory. 
  21066.  
  21067.  visible region  -A window's presentation space, clipped to the boundary of the 
  21068.    window and the boundaries of any overlying window. 
  21069.  
  21070.  volume  -(1) A file-system driver that uses a block device driver for input 
  21071.    and output operations to a local or remote device. (I)  (2) A portion of 
  21072.    data, together with its data carrier, that can be handled conveniently as a 
  21073.    unit. 
  21074.  
  21075.  
  21076. ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
  21077.  
  21078.  wildcard character  -Synonymous with global file-name character. 
  21079.  
  21080.  window  -(1) A portion of a display surface in which display images pertaining 
  21081.    to a particular application can be presented. Different applications can be 
  21082.    displayed simultaneously in different windows. (A)  (2) An area of the 
  21083.    screen with visible boundaries within which information is displayed. A 
  21084.    window can be smaller than or the same size as the screen. Windows can 
  21085.    appear to overlap on the screen. 
  21086.  
  21087.  window class  -The grouping of windows whose processing needs conform to the 
  21088.    services provided by one window procedure. 
  21089.  
  21090.  window coordinates  -A set of coordinates by which a window position or size 
  21091.    is defined; measured in device units, or pels. 
  21092.  
  21093.  window handle  -Unique identifier of a window, generated by Presentation 
  21094.    Manager when the window is created, and used by applications to direct 
  21095.    messages to the window. 
  21096.  
  21097.  window procedure  -Code that is activated in response to a message. The 
  21098.    procedure controls the appearance and behavior of its associated windows. 
  21099.  
  21100.  window rectangle  -The means by which the size and position of a window is 
  21101.    described in relation to the desktop window. 
  21102.  
  21103.  window resource  -A read-only data segment stored in the .EXE file of an 
  21104.    application o the .DLL file of a dynamic link library. 
  21105.  
  21106.  window style  -The set of properties that influence how events related to a 
  21107.    particular window will be processed. 
  21108.  
  21109.  window title  -In SAA Advanced Common User Access architecture, the area in 
  21110.    the title bar that contains the name of the application and the OS/2 
  21111.    operating system file name, if applicable. 
  21112.  
  21113.  Workplace Shell  -The OS/2 object-oriented, graphical user interface. 
  21114.  
  21115.  workstation  -(1) A display screen together with attachments such as a 
  21116.    keyboard, a local copy device, or a tablet. (2) (D of C) One or more 
  21117.    programmable or nonprogrammable devices that allow a user to do work. 
  21118.  
  21119.  world coordinates  -A device-independent Cartesian coordinate system used by 
  21120.    the application program for specifying graphical input and output. (I)  (A)
  21121.  
  21122.  world-coordinate space  -Coordinate space in which graphics are defined before 
  21123.    transformations are applied. 
  21124.  
  21125.  WYSIWYG  -What-You-See-Is-What-You-Get. A capability of a text editor to 
  21126.    continually display pages exactly as they will be printed. 
  21127.  
  21128.  
  21129. ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
  21130.  
  21131. There are no glossary terms for this starting letter. 
  21132.  
  21133.  
  21134. ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
  21135.  
  21136. There are no glossary terms for this starting letter. 
  21137.  
  21138.  
  21139. ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
  21140.  
  21141.  z-order  -The order in which sibling windows are presented. The topmost 
  21142.    sibling window obscures any portion of the siblings that it overlaps; the 
  21143.    same effect occurs down through the order of lower sibling windows. 
  21144.  
  21145.  zooming  -The progressive scaling of an entire display image in order to give 
  21146.    the visual impression of movement of all or part of a display group toward 
  21147.    or away from an observer. (I)  (A)
  21148.  
  21149.  8.3 file-name format  -A file-naming convention in which file names are 
  21150.    limited to eight characters before and three characters after a single dot. 
  21151.    Usually pronounced "eight-dot-three." See also non-8.3 file-name format. 
  21152.