home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warptlk3.zip / TOOLKIT / BOOK / PM5.INF (.txt) < prev    next >
OS/2 Help File  |  1995-10-23  |  551KB  |  20,223 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 | 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.     HWND  hwndFrame,hwndClient;
  182.     CHAR  szClassName[]="MyClass";
  183.     CHAR  szTitle[]="MyWindow";
  184.  
  185.     ULONG flControlStyle=
  186.             FCF_MINMAX        |      /* Min and max buttons      */
  187.             FCF_SHELLPOSITION |      /* System size and position */
  188.             FCF_SIZEBORDER    |      /* Size border              */
  189.             FCF_TITLEBAR      |      /* Title bar                */
  190.             FCF_TASKLIST      |      /* Task list                */
  191.             FCF_ACCELTABLE    |      /* Accelerator table        */
  192.             FCF_SYSMENU       |      /* System menu              */
  193.             FCF_MENU;                /* Menu                     */
  194.  
  195.     hwndFrame=WinCreateStdWindow(HWND_DESKTOP,
  196.       WS_VISIBLE,
  197.       &flControlStyle,
  198.       szClassName,
  199.       szTitle,
  200.       0,
  201.       (HMODULE)NULL,
  202.       ID_MENU_RESOURCE,
  203.       &hwndClient);
  204.  
  205. Notice that if you set the flControlStyle parameter to the FCF_STANDARD flag, 
  206. you must define an accelerator-table resource, because FCF_STANDARD includes 
  207. the FCF_ACCELTABLE flag. 
  208.  
  209. If the window being created also has a menu, the menu resource and accelerator 
  210. resource must have the same resource identifier; this is because the 
  211. WinCreateStdWindow function has only one input parameter to specify the 
  212. resource identifiers for menus, accelerator tables, and icons.  If an 
  213. application creates an accelerator table resource-definition file; then, opens 
  214. a standard frame window (as shown in the preceding example), the accelerator 
  215. table is installed automatically in the window's message queue, and keyboard 
  216. events are translated during the normal processing of events.  The application 
  217. simply responds to WM_COMMAND, WM_SYSCOMMAND, and WM_HELP messages; it does not 
  218. matter whether these messages come from a menu or an accelerator. 
  219.  
  220. An application also can add an accelerator table to a window by calling the 
  221. WinSetAccelTable function with an accelerator-table handle and a frame-window 
  222. handle.  The application can call either the WinLoadAccelTable function to 
  223. retrieve an accelerator table from a resource file or the WinCreateAccelTable 
  224. function to create an accelerator table from an accelerator-table data 
  225. structure in memory. 
  226.  
  227.  
  228. ΓòÉΓòÉΓòÉ 1.2.3. Modifying an Accelerator Table ΓòÉΓòÉΓòÉ
  229.  
  230. You can modify an accelerator table, for either your application windows or the 
  231. system, by doing the following: 
  232.  
  233.    1. Retrieve the handle of the accelerator table. 
  234.  
  235.    2. Use that handle to copy the accelerator-table data to an 
  236.       application-supplied buffer. 
  237.  
  238.    3. Change the data in the buffer. 
  239.  
  240.    4. Use the changed data to create a new accelerator table. 
  241.  
  242.  Then you can use the new accelerator-table handle to set the accelerator 
  243.  table, as outlined in the following list: 
  244.  
  245.    1. Call WinQueryAccelTable to retrieve an accelerator-table handle. 
  246.  
  247.    2. Call WinCopyAccelTable with a NULL buffer handle to determine how many 
  248.       bytes are in the table. 
  249.  
  250.    3. Allocate sufficient memory for the accelerator-table data. 
  251.  
  252.    4. Call WinCopyAccelTable, with a pointer to the allocated memory. 
  253.  
  254.    5. Modify the data in the buffer (assuming it has the form of an ACCELTABLE 
  255.       structure). 
  256.  
  257.    6. Call WinCreateAccelTable, passing a pointer to the buffer with the 
  258.       modified accelerator-table data. 
  259.  
  260.    7. Call WinSetAccelTable with the handle returned by WinCreateAccelTable. 
  261.  
  262.  
  263. ΓòÉΓòÉΓòÉ 2. List-Box Controls ΓòÉΓòÉΓòÉ
  264.  
  265. A list box is a control window that displays several text items at a time, one 
  266. or more of which can be selected by the user.  This chapter explains how to 
  267. create and use list-box controls in PM applications. 
  268.  
  269.  
  270. ΓòÉΓòÉΓòÉ 2.1. About List Boxes ΓòÉΓòÉΓòÉ
  271.  
  272. An application uses a list box when it requires a list of selectable fields 
  273. that is too large for the display area or a list of choices that can change 
  274. dynamically.  Each list item contains a text string and a handle.  Usually, the 
  275. text string is displayed in the list-box window; but the handle is available to 
  276. the application to reference other data associated with each of the items in 
  277. the list. 
  278.  
  279. A list box always is owned by another window that receives messages from the 
  280. list box when events occur, such as when a user selects an item from the list 
  281. box.  Typically, the owner is a dialog window (as shown in the following 
  282. figure,) or the client window of an application frame window.  The client- or 
  283. dialog-window procedure defined by the application responds to messages sent 
  284. from the list box. 
  285.  
  286. A list box always contains a scroll bar for use when the list box contains more 
  287. items than can be displayed in the list-box window. The list box responds to 
  288. mouse clicks in the scroll bar by scrolling the list; otherwise, the scroll bar 
  289. is disabled. 
  290.  
  291. The maximum number of items permitted in a list box is 32767. 
  292.  
  293.  
  294. ΓòÉΓòÉΓòÉ 2.2. Using List Boxes ΓòÉΓòÉΓòÉ
  295.  
  296. An application uses a list-box control to display a list in a window.  List 
  297. boxes can be displayed in standard application windows, although they are more 
  298. commonly used in dialog windows.  In either case, notification messages are 
  299. sent from the list box to its owner window, enabling the application to respond 
  300. to user actions in the list. 
  301.  
  302. Once a list box is created, the application controls the insertion and deletion 
  303. of list items.  Items can be inserted at the end of the list, automatically 
  304. sorted into the list, or inserted at a specified index position.  Applications 
  305. can turn list drawing on and off to speed up the process of inserting numerous 
  306. items into a list. 
  307.  
  308. The owner-window procedure of the list box receives messages when a user 
  309. manipulates the list-box data.  Most default list actions (for example, 
  310. highlighting selections and scrolling) are handled automatically by the list 
  311. box itself.  The application controls the responses when the user chooses an 
  312. item in the list, either by double-clicking the item or by pressing Enter after 
  313. an item is highlighted.  The list box also notifies the application when the 
  314. user changes the selection or scrolls the list. 
  315.  
  316. Normally, list items are text strings drawn by a list box. An application also 
  317. can draw and highlight the items in a list.  This enables the application to 
  318. create customized lists that contain graphics.  When an application creates a 
  319. list box with the LS_OWNERDRAW style, the owner of the list box receives a 
  320. WM_DRAWITEM message for each item that should be drawn or highlighted.  This is 
  321. similar to the owner-drawn style for menus, except that the owner-drawn style 
  322. applies to the entire list rather than to individual items. 
  323.  
  324.  
  325. ΓòÉΓòÉΓòÉ 2.2.1. Creating a List-Box Window ΓòÉΓòÉΓòÉ
  326.  
  327. List boxes are WC_LISTBOX class windows and are predefined by the system. 
  328. Applications can create list boxes by calling WinCreateWindow, using WC_LISTBOX 
  329. as the window-class parameter. 
  330.  
  331. A list box passes notification messages to its owner window, so an application 
  332. uses its client window, rather than the frame window, as the owner of the list. 
  333. The client-window procedure receives the messages sent from the list box. For 
  334. example, to create a list box that completely fills the client area of a frame 
  335. window, an application would make the client window the owner and parent of the 
  336. list-box window, and make the list-box window the same size as the client 
  337. window.  This is shown in the following code fragment. 
  338.  
  339.     #define ID_LISTWINDOW   250
  340.  
  341.     HWND hwndClient,hwndList;
  342.     RECTL rcl;
  343.  
  344.                                               /* How big is the
  345.                                                client window? */
  346.     WinQueryWindowRect(hwndClient, &rcl);
  347.  
  348.                                               /* Make a list-box
  349.                                                 window.       */
  350.     hwndList = WinCreateWindow(hwndClient,    /* Parent       */
  351.         WC_LISTBOX,                           /* Class        */
  352.         "",                                   /* Name         */
  353.         WS_VISIBLE | LS_NOADJUSTPOS,          /* Style        */
  354.         0, 0,                                 /* x, y         */
  355.         rcl.xRight, rcl.yTop,                 /* cx, cy       */
  356.         hwndClient,                           /* Owner        */
  357.         HWND_TOP,                             /* Behind       */
  358.         ID_LISTWINDOW,                        /* ID           */
  359.         NULL,                                 /* Control data */
  360.         NULL);                                /* parameters   */
  361.  
  362. Because the list box draws its own border, and a frame-window border already 
  363. surrounds the client area of a frame window due to the adjacent frame controls, 
  364. the effect is a double-thick border around the list box.  You can change this 
  365. effect by calling WinInflateRect to overlap the list-box border with the 
  366. surrounding frame-window border, resulting in only one list-box border. 
  367.  
  368. Notice that the code specifies the list-box window style LS_NOADJUSTPOS.  This 
  369. ensures that the list box is created exactly the specified size.  If the 
  370. LS_NOADJUSTPOS style is not specified, the list-box height is rounded down, if 
  371. necessary, to make it a multiple of the item height.  Enabling a list box to 
  372. adjust its height automatically is useful for preventing partial items being 
  373. displayed at the bottom of a list box. 
  374.  
  375.  
  376. ΓòÉΓòÉΓòÉ 2.2.2. Using a List Box in a Dialog Window ΓòÉΓòÉΓòÉ
  377.  
  378. List boxes most commonly are used in dialog windows.  A list box in a dialog 
  379. box is a control window, like a push button or an entry field.  Typically, the 
  380. application defines a list box as one item in a dialog template in the 
  381. resource-definition file, as shown in the following resource compiler 
  382. source-code fragment. 
  383.  
  384.  
  385.     DLGTEMPLATE IDD_OPEN
  386.     BEGIN
  387.        DIALOG "Open...", IDD_OPEN, 35, 35, 150, 135,
  388.                 FS_DLGBORDER, FCF_TITLEBAR
  389.           BEGIN
  390.               LISTBOX        IDD_FILELIST, 15, 15, 90, 90
  391.               PUSHBUTTON     "Drive", IDD_DRIVEBUTTON, 115, 70, 30, 14
  392.               DEFPUSHBUTTON  "Open", IDD_OPENBUTTON, 115, 40, 30, 14
  393.               PUSHBUTTON     "Cancel", IDD_CANCELBUTTON, 115, 15, 30, 14
  394.           END
  395.     END
  396.  
  397. Once the dialog resource is defined, the application loads and displays the 
  398. dialog box as it would normally.  The application inserts items into the list 
  399. when processing the WM_INITDLG message. 
  400.  
  401. A dialog window with a list box usually has an OK button.  The user can select 
  402. items in the list, and then indicate a final selection by double-clicking, 
  403. pressing Enter, or clicking the OK button.  When the dialog-window procedure 
  404. receives a message indicating that the user has clicked the OK button, it 
  405. queries the list box to determine the current selection (or selections, if the 
  406. list allows multiple selections), and then responds as though it had received a 
  407. WM_CONTROL message with the LN_ENTER notification code. 
  408.  
  409.  
  410. ΓòÉΓòÉΓòÉ 2.2.3. Adding or Deleting an Item in a List Box ΓòÉΓòÉΓòÉ
  411.  
  412. Applications can add items to a list box by sending an LM_INSERTITEM or 
  413. LM_INSERTMULTITEMS message to the list-box window; items are deleted using the 
  414. LM_DELETEITEM message. Items in a list are specified with a 0-based index 
  415. (beginning at the top of the list).  A new list is created empty; the 
  416. application initializes the list by inserting items.  LM_INSERTMULTITEMS allows 
  417. up to 32767 items to be inserted as a group, while LM_INSERTITEM adds items 
  418. one-by-one to a list. 
  419.  
  420. The application specifies the text and position for each new item.  It can 
  421. specify an absolute-position index or one of the following predefined index 
  422. values: 
  423.  
  424. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  425. ΓöéValue               ΓöéMeaning                                 Γöé
  426. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  427. ΓöéLIT_END             ΓöéInsert item at end of list.             Γöé
  428. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  429. ΓöéLIT_SORTASCENDING   ΓöéInsert item alphabetically ascending    Γöé
  430. Γöé                    Γöéinto list.                              Γöé
  431. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  432. ΓöéLIT_SORTDESCENDING  ΓöéInsert item alphabetically descending   Γöé
  433. Γöé                    Γöéinto list.                              Γöé
  434. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  435.  
  436. If a large number of items are to be inserted into a list box at one time, use 
  437. of LM_INSERTMULTITEMS is more efficient than use of LM_INSERTITEM.  The same 
  438. positioning flags are used. When LIT_SORTASCENDING or LIT_SORTDESCENDING is 
  439. specified with LM_INSERTMULTITEMS, new items are inserted before the updated 
  440. list is sorted.  If items are being added using several LM_INSERTMULTITEMS 
  441. messages, LIT_END should be specified for all messages except the last; this 
  442. will avoid unnecessary multiple sorts of the list. 
  443.  
  444. If no text array is specified, empty items are inserted into the list.  This is 
  445. very useful for list boxes created with LS_OWNERDRAW style, which do not use 
  446. text strings. 
  447.  
  448. The application must send an LM_DELETEITEM message and supply the 
  449. absolute-position index of the item when deleting items from a list.  The 
  450. LM_DELETEALL message deletes all items in a list. 
  451.  
  452. One way an application can speed up the insertion of list items is to suspend 
  453. drawing until it has finished inserting items.  This is a particularly valuable 
  454. approach when using a sorted insertion process (when inserting one item can 
  455. cause rearrangement of the entire list).  You can turn off list drawing by 
  456. calling WinEnableWindowUpdate, specifying FALSE for the enable parameter, and 
  457. then calling WinShowWindow.  This forces a total update when insertion is 
  458. complete.  The following code fragment illustrates this concept: 
  459.  
  460.     HWND hwndFileList;
  461.  
  462.     /* Disable updates while filling the list. */
  463.     WinEnableWindowUpdate(hwndFileList, FALSE);
  464.         .
  465.         . /* Send LM_INSERTITEM messages to insert all new items. */
  466.         .
  467.  
  468.     /* Now cause the window to update and show the new information.  */
  469.     WinShowWindow(hwndFileList, TRUE);
  470.  
  471. Notice that this optimization is unnecessary if an application is adding list 
  472. items while processing a WM_INITDLG message, because the list box is not 
  473. visible, and the list-box routines are internally optimized. 
  474.  
  475.  
  476. ΓòÉΓòÉΓòÉ 2.2.4. Responding to a User Selection in a List Box ΓòÉΓòÉΓòÉ
  477.  
  478. When a user chooses an item in a list, the primary notification an application 
  479. receives is a WM_CONTROL message, with the LN_ENTER control code sent to the 
  480. owner window of the list.  Within the window procedure for the owner window, 
  481. the application responds to the LN_ENTER control code by querying the list box 
  482. for the current selection (or selections, in the case of an LS_MULTIPLESEL or 
  483. LS_EXTENDEDSEL list box). 
  484.  
  485. The LN_ENTER control code notifies the application that the user has selected a 
  486. list item.  A WM_CONTROL message with an LN_SELECT control code is sent to the 
  487. list-box owner whenever a selection in a list changes, such as when a user 
  488. moves the mouse pointer up and down a list while pressing the mouse button.  In 
  489. this case, items are selected but not yet chosen.  An application can ignore 
  490. LN_SELECT control codes when the selection changes, responding only when the 
  491. item is actually chosen.  Or an application can use LN_SELECT to display 
  492. context-dependent information that changes rapidly with each selection made by 
  493. the user. 
  494.  
  495.  
  496. ΓòÉΓòÉΓòÉ 2.2.5. Handling Multiple Selections ΓòÉΓòÉΓòÉ
  497.  
  498. When a list box has the style LS_MULTIPLESEL or LS_EXTENDEDSEL, the user can 
  499. select more than one item at a time.  An application must use different 
  500. strategies when working with these types of lists.  For example, when 
  501. responding to an LN_ENTER control code, it is not sufficient to send a single 
  502. LM_QUERYSELECTION message, because that message will find only the first 
  503. selection.  To find all current selections, an application must continue 
  504. sending LM_QUERYSELECTION messages, using the return index of the previous 
  505. message as the starting index of the next message, until no items are returned. 
  506.  
  507.  
  508. ΓòÉΓòÉΓòÉ 2.2.6. Creating an Owner-Drawn List Item ΓòÉΓòÉΓòÉ
  509.  
  510. To draw its own list items, an application must create a list that has the 
  511. style LS_OWNERDRAW:  the owner window of the list box must respond to the 
  512. WM_MEASUREITEM and WM_DRAWITEM messages. 
  513.  
  514. When the owner window receives a WM_MEASUREITEM message, it must return the 
  515. height of the list item.  All items in a list must have the same height 
  516. (greater than or equal to 1).  The WM_MEASUREITEM message is sent when the list 
  517. box is created, and every time an item is added.  You can change the item 
  518. height by sending an LM_SETITEMHEIGHT message to the list-box window. The 
  519. maximum width of a list box created with the LM_HORZSCROLL style can be set 
  520. using an LM_SETITEMWIDTH message. 
  521.  
  522. The owner window receives a WM_DRAWITEM message whenever an item in an 
  523. owner-drawn list should be drawn or highlighted.  Although it is quite common 
  524. for an owner-drawn list to draw items, it is less common to override the 
  525. system-default method of highlighting.  (This method inverts the rectangle that 
  526. contains the item.)  Do not create your own highlighting unless, for some 
  527. reason, the system-default method is unacceptable to you. 
  528.  
  529. The WM_DRAWITEM message contains a pointer to an OWNERITEM data structure.  The 
  530. OWNERITEM structure contains the window identifier for the list box, a 
  531. presentation-space handle, a bounding rectangle for the item, the position 
  532. index for the item, and the application-defined item handle.  This structure 
  533. also contains two fields that determine whether a message draws, highlights, or 
  534. removes the highlighting from an item.  The OWNERITEM structure has the 
  535. following form: 
  536.  
  537.     typedef struct _OWNERITEM { /* oi */
  538.         HWND    hwnd;
  539.         HPS     hps;
  540.         ULONG   fsState;
  541.         ULONG   fsAttribute;
  542.         ULONG   fsStateOld;
  543.         ULONG   fsAttributeOld;
  544.         RECTL   rclItem;
  545.         LONG    idItem;
  546.         ULONG   hItem;
  547.     } OWNERITEM;
  548.  
  549. When the item must be drawn, the owner window receives a WM_DRAWITEM message 
  550. with the fsState field set differently from the fsStateOld field.  If the owner 
  551. window draws the item in response to this message, it returns TRUE, telling the 
  552. system not to draw the item.  If the owner window returns FALSE, the system 
  553. draws the item, using the default list-item drawing method. 
  554.  
  555. You can get the text of a list item by sending an LM_QUERYITEMTEXT message to 
  556. the list-box window.  You should draw the item using the hps and rclItem 
  557. arguments provided in the OWNERITEM structure. 
  558.  
  559. If the item being drawn is currently selected, the fsState and fsStateOld 
  560. fields are both TRUE; they both will be FALSE if the item is not currently 
  561. selected.  The window receiving a WM_DRAWITEM message can use this information 
  562. to highlight the selected item at the same time it draws the item.  If the 
  563. owner window highlights the item, it must leave the fsState and fsStateOld 
  564. fields equal to each other.  If the system provides default highlighting for 
  565. the item (by inverting the item rectangle), the owner window must set the 
  566. fsState field to 1 and the fsStateOld field to 0 before returning from the 
  567. WM_DRAWITEM message. 
  568.  
  569. The owner window also receives a WM_DRAWITEM message when the highlight state 
  570. of a list item changes.  For example, when a user clicks an item, the 
  571. highlighting must be removed from the currently selected item, and the new 
  572. selection must be highlighted.  If these items are owner-drawn, the owner 
  573. window receives one WM_DRAWITEM message for each unhighlighted item and one 
  574. message for the newly highlighted item.  To highlight an item, the fsState 
  575. field must equal TRUE, and the fsStateOld field must equal FALSE.  In this 
  576. case, the application should highlight the item and return the fsState and 
  577. fsStateOld fields equal to FALSE, which tells the system not to highlight the 
  578. item.  The application also can return the fsState and fsStateOld fields with 
  579. two different (unequal) values and the list box will highlight the item (the 
  580. default action). 
  581.  
  582. To remove highlighting from an item, the fsState field must equal FALSE and the 
  583. fsStateOld field must equal TRUE.  In this case, the application removes the 
  584. highlighting and returns both the fsState and the fsStateOld fields equal to 
  585. FALSE.  This tells the system not to attempt to remove the highlighting.  The 
  586. application also can return the fsState and fsStateOld fields with two 
  587. different (unequal) values, and the list box will remove the highlighting (the 
  588. default response). The following code fragment shows these selection processes: 
  589.  
  590.     OWNERITEM *poi;
  591.  
  592.     case WM_DRAWITEM:
  593.  
  594.         /* Convert mp2 into an OWNERITEM structure pointer.                */
  595.         poi = (POWNERITEM) PVOIDFROMMP(mp2);
  596.  
  597.         /* Test to see if this is drawing or highlighting/unhighlighting.  */
  598.         if (poi->fsState != poi->fsStateOld) {
  599.  
  600.             /* This is either highlighting or unhighlighting.              */
  601.             if (poi->fsState) {
  602.                 .
  603.                 . /* Highlight the item.                                   */
  604.                 .
  605.             }
  606.             else {
  607.                 .
  608.                 . /* Remove the highlighting.                              */
  609.                 .
  610.             }
  611.  
  612.             /* Set fsState = fsStateOld to tell system you did it.         */
  613.             poi->fsState = poi->fsStateOld = 0;
  614.  
  615.             return TRUE;  /* Tells list box you did the highlighting.      */
  616.  
  617.         }
  618.         else {
  619.             .
  620.             . /* Draw the item.                                            */
  621.             .
  622.             if (poi->fsState) {   /* Checks to see if item is selected     */
  623.                 .
  624.                 . /* Highlight the item.                                   */
  625.                 .
  626.                 /* Set fsState = fsStateOld to tell system you did it.     */
  627.            }
  628.            return TRUE;  /* Tells list box you did the drawing.            */
  629.         }
  630.  
  631.  
  632. ΓòÉΓòÉΓòÉ 2.2.7. Default List-Box Behavior ΓòÉΓòÉΓòÉ
  633.  
  634. The following table lists all the messages handled by the predefined list-box 
  635. window-class procedure. 
  636.  
  637. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  638. ΓöéMessage                  ΓöéDescription                        Γöé
  639. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  640. ΓöéLM_DELETEALL             ΓöéDeletes all items in the list.     Γöé
  641. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  642. ΓöéLM_DELETEITEM            ΓöéRemoves the specified item from theΓöé
  643. Γöé                         Γöélist, redrawing the list as        Γöé
  644. Γöé                         Γöénecessary. Returns the number of   Γöé
  645. Γöé                         Γöéitems remaining in the list.       Γöé
  646. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  647. ΓöéLM_INSERTITEM            ΓöéInserts a new item into the list   Γöé
  648. Γöé                         Γöéaccording to the position          Γöé
  649. Γöé                         Γöéinformation passed with the        Γöé
  650. Γöé                         Γöémessage.                           Γöé
  651. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  652. ΓöéLM_INSERTMULTITEMS       ΓöéInserts one or more items into a   Γöé
  653. Γöé                         Γöélist box at one time.              Γöé
  654. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  655. ΓöéLM_QUERYITEMCOUNT        ΓöéReturns the number of items in the Γöé
  656. Γöé                         Γöélist.                              Γöé
  657. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  658. ΓöéLM_QUERYITEMHANDLE       ΓöéReturns the specified item handle. Γöé
  659. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  660. ΓöéLM_QUERYITEMTEXT         ΓöéCopies the text of the specified   Γöé
  661. Γöé                         Γöéitem to a buffer supplied by the   Γöé
  662. Γöé                         Γöémessage sender.                    Γöé
  663. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  664. ΓöéLM_QUERYITEMTEXTLENGTH   ΓöéReturns the text length of the     Γöé
  665. Γöé                         Γöéspecified item.                    Γöé
  666. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  667. ΓöéLM_QUERYSELECTION        ΓöéFor a single-selection list box,   Γöé
  668. Γöé                         Γöéreturns the zero-based index of theΓöé
  669. Γöé                         Γöécurrently selected item. For a     Γöé
  670. Γöé                         Γöémultiple-selection list box,       Γöé
  671. Γöé                         Γöéreturns the next selected item or  Γöé
  672. Γöé                         ΓöéLIT_NONE if no more items are      Γöé
  673. Γöé                         Γöéselected.                          Γöé
  674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  675. ΓöéLM_QUERYTOPINDEX         ΓöéReturns the zero-based index to theΓöé
  676. Γöé                         Γöéitem currently visible at the top  Γöé
  677. Γöé                         Γöéof the list.                       Γöé
  678. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  679. ΓöéLM_SEARCHSTRING          ΓöéSearches the list for a match to   Γöé
  680. Γöé                         Γöéthe specified string.              Γöé
  681. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  682. ΓöéLM_SELECTITEM            ΓöéSelects the specified item.  If theΓöé
  683. Γöé                         Γöélist is a single-selection list,   Γöé
  684. Γöé                         Γöédeselects the previous selection.  Γöé
  685. Γöé                         ΓöéSends a WM_CONTROL message (with   Γöé
  686. Γöé                         Γöéthe LN_SELECT code) to the owner   Γöé
  687. Γöé                         Γöéwindow.                            Γöé
  688. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  689. ΓöéLM_SETITEMHANDLE         ΓöéSets the specified item handle.    Γöé
  690. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  691. ΓöéLM_SETITEMHEIGHT         ΓöéSets the item height for the list. Γöé
  692. Γöé                         ΓöéAll items in the list have the sameΓöé
  693. Γöé                         Γöéheight.                            Γöé
  694. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  695. ΓöéLM_SETITEMTEXT           ΓöéSets the text for the specified    Γöé
  696. Γöé                         Γöéitem.                              Γöé
  697. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  698. ΓöéLM_SETITEMWIDTH          ΓöéSets the maximum width of a list   Γöé
  699. Γöé                         Γöébox created with the LS_HORZSCROLL Γöé
  700. Γöé                         Γöéstyle.                             Γöé
  701. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  702. ΓöéLM_SETTOPINDEX           ΓöéShows the specified item as the topΓöé
  703. Γöé                         Γöéitem in the list window, scrolling Γöé
  704. Γöé                         Γöéthe list as necessary.             Γöé
  705. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  706. ΓöéWM_ADJUSTWINDOWPOS       ΓöéIf the list box has the style      Γöé
  707. Γöé                         ΓöéLS_NOADJUSTPOS, makes no changes toΓöé
  708. Γöé                         Γöéthe SWP structure and returns      Γöé
  709. Γöé                         ΓöéFALSE. Otherwise, adjusts the      Γöé
  710. Γöé                         Γöéheight of the list box so that a   Γöé
  711. Γöé                         Γöépartial item is not shown at the   Γöé
  712. Γöé                         Γöébottom of the list.  Returns TRUE  Γöé
  713. Γöé                         Γöéif the SWP structure is changed.   Γöé
  714. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  715. ΓöéWM_BUTTON2DOWN           ΓöéReturns TRUE; the message is       Γöé
  716. Γöé                         Γöéignored.                           Γöé
  717. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  718. ΓöéWM_BUTTON3DOWN           ΓöéReturns TRUE; the message is       Γöé
  719. Γöé                         Γöéignored.                           Γöé
  720. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  721. ΓöéWM_CHAR                  ΓöéProcesses virtual keys for line andΓöé
  722. Γöé                         Γöépage scrolling.  Sends an LN_ENTER Γöé
  723. Γöé                         Γöénotification code for the Enter    Γöé
  724. Γöé                         Γöékey.  Returns TRUE if the key is   Γöé
  725. Γöé                         Γöéprocessed; otherwise, passes the   Γöé
  726. Γöé                         Γöémessage to the WinDefWindowProc    Γöé
  727. Γöé                         Γöéfunction.                          Γöé
  728. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  729. ΓöéWM_CREATE                ΓöéCreates an empty list box with a   Γöé
  730. Γöé                         Γöéscroll bar.                        Γöé
  731. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  732. ΓöéWM_DESTROY               ΓöéDestroys the list and deallocates  Γöé
  733. Γöé                         Γöéany memory allocated during its    Γöé
  734. Γöé                         Γöéexistence.                         Γöé
  735. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  736. ΓöéWM_ENABLE                ΓöéEnables the scroll bar if there areΓöé
  737. Γöé                         Γöémore items than can be displayed inΓöé
  738. Γöé                         Γöéa list-box window.                 Γöé
  739. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  740. ΓöéWM_MOUSEMOVE             ΓöéSets the mouse pointer to the arrowΓöé
  741. Γöé                         Γöéshape and returns TRUE to show thatΓöé
  742. Γöé                         Γöéthe message was processed.         Γöé
  743. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  744. ΓöéWM_PAINT                 ΓöéDraws the list box and its items.  Γöé
  745. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  746. ΓöéWM_HSCROLL               ΓöéHandles scrolling indicated by the Γöé
  747. Γöé                         Γöélist-box horizontal scroll bar.    Γöé
  748. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  749. ΓöéWM_VSCROLL               ΓöéHandles scrolling indicated by the Γöé
  750. Γöé                         Γöélist-box vertical scroll bar.      Γöé
  751. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  752. ΓöéWM_SETFOCUS              ΓöéIf the list box is gaining the     Γöé
  753. Γöé                         Γöéfocus, creates a cursor and sends  Γöé
  754. Γöé                         Γöéan LN_SETFOCUS notification code toΓöé
  755. Γöé                         Γöéthe owner window.  If the list box Γöé
  756. Γöé                         Γöéis losing the focus, this message  Γöé
  757. Γöé                         Γöédestroys the cursor and sends an   Γöé
  758. Γöé                         ΓöéLN_KILLFOCUS notification code to  Γöé
  759. Γöé                         Γöéthe owner window.                  Γöé
  760. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  761. ΓöéWM_TIMER                 ΓöéUses timers to control automatic   Γöé
  762. Γöé                         Γöéscrolling that occurs when a user  Γöé
  763. Γöé                         Γöédrags the mouse pointer outside theΓöé
  764. Γöé                         Γöéwindow.                            Γöé
  765. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  766.  
  767.  
  768. ΓòÉΓòÉΓòÉ 3. Menus ΓòÉΓòÉΓòÉ
  769.  
  770. A menu is a window that contains a list of items-text strings, bit maps, or 
  771. images drawn by the application-that enables the user, by mouse or keyboard, to 
  772. choose from these predetermined choices.  This chapter describes how to use 
  773. menus in your PM applications. 
  774.  
  775.  
  776. ΓòÉΓòÉΓòÉ 3.1. About Menus ΓòÉΓòÉΓòÉ
  777.  
  778. A menu always is owned by another window, usually a frame window.  When a user 
  779. makes a choice from a menu, the menu posts a message containing the unique 
  780. identifier for the menu item to its owner by way of the owner window's window 
  781. procedure. 
  782.  
  783. An application typically defines its menus using Resource Compiler, and then 
  784. associates the menus with a frame window when the frame window is created. 
  785. Applications also can create menus by filling in menu-template data structures 
  786. and creating windows with the WC_MENU class.  Either way, applications can add, 
  787. delete, or change menu items dynamically by issuing messages to menu windows. 
  788.  
  789.  
  790. ΓòÉΓòÉΓòÉ 3.1.1. Menu Bar and Pull-Down Menus ΓòÉΓòÉΓòÉ
  791.  
  792. A typical application uses a menu bar and several pull-down submenus.  The 
  793. pull-down submenus ordinarily are hidden, but become visible when the user 
  794. makes selections in the menu bar.  Pull-down submenus always are attached to 
  795. the menu bar. 
  796.  
  797. The menu bar is a child of the frame window; the menu bar window handle is the 
  798. key to communicating with the menu bar and its submenus.  You can retrieve this 
  799. handle by calling WinWindowFromID, with the handle of the parent window and the 
  800. FID_MENU frame-control identifier.  Most messages for the menu bar and its 
  801. submenus can be issued to the menu-bar window.  Flags in the messages tell the 
  802. window whether to search submenus for requested menu items. 
  803.  
  804.  
  805. ΓòÉΓòÉΓòÉ 3.1.2. Pop-Up Menus ΓòÉΓòÉΓòÉ
  806.  
  807. A pop-up menu is like a pull-down submenu, except that it is not attached to 
  808. the menu bar; it can appear anywhere in its parent window.  A pop-up menu 
  809. usually is associated with a portion of a window, such as the client window, or 
  810. it is associated with a specific object, such as an icon. 
  811.  
  812. A pop-up menu remains hidden until the user selects it (either by moving the 
  813. cursor to the appropriate location and pressing Enter or clicking on the 
  814. location with the mouse).  Typically, pop-up menus are displayed at the 
  815. position of the cursor or mouse pointer; they provide a quick mechanism for 
  816. selecting often-used menu items. 
  817.  
  818. To include a pop-up menu in an application, you first must define a menu 
  819. resource in a resource-definition file, then load the resource using the 
  820. WinLoadMenu or WinCreateMenu functions.  You must call WinPopupMenu to create 
  821. the pop-up menu and display it in the parent window.  Applications typically 
  822. call WinPopupMenu in a window procedure in response to a user-generated 
  823. message, such as WM_BUTTON2DBLCLK or WM_CHAR. 
  824.  
  825. WinPopupMenu requires that you specify the pop-up menu's handle and also the 
  826. handles of the parent and owner windows of the pop-up menu.  WinLoadMenu and 
  827. WinCreateMenu return the handle of the pop-up menu window, but you must obtain 
  828. the handles of the parent and owner by using WinQueryWindow. 
  829.  
  830. You determine the position of the pop-up menu in relation to its parent by 
  831. specifying coordinates and style flags in WinPopupMenu.  The x and y 
  832. coordinates determine the position of the lower-left corner of the menu 
  833. relative to the lower-left corner of the parent.  The system may adjust this 
  834. position, however, if you include the PU_HCONSTRAIN or PU_VCONSTRAIN style 
  835. flags in the call to WinPopupMenu.  If necessary, PU_HCONSTRAIN adjusts the 
  836. horizontal position of the menu so that its left and right edges are within the 
  837. borders of the desktop window.  PU_VCONSTRAIN makes the same adjustments 
  838. vertically.  Without these flags, a desktop-level pop-up menu can lie partially 
  839. off the screen, with some items not visible nor selectable. 
  840.  
  841. The PU_POSITIONONITEM flag also can affect the position of the pop-up menu. 
  842. This flag positions the pop-up menu so that, when the pop-up menu appears, the 
  843. specified item lies directly under the mouse pointer.  Also, PU_POSITIONONITEM 
  844. automatically selects the item.  PU_POSITIONONITEM is useful for placing the 
  845. current menu selection under the pointer so that, if the user releases the 
  846. mouse button without selecting a new item, the current selection remains 
  847. unchanged. 
  848.  
  849. The PU_SELECTITEM flag is similar to PU_POSITIONONITEM except that it just 
  850. selects the specified item; it does not affect the position of the menu. 
  851.  
  852. You can enable the user to choose an item from a pop-up menu by using the same 
  853. mouse button that was used to display the menu.  To do this, specify the 
  854. PU_MOUSEBUTTONn flag, where n corresponds to the mouse button used to display 
  855. the menu.  This flag specifies the mouse buttons for the user to interact with 
  856. a pop-up menu once it is displayed. 
  857.  
  858. By using the PU_MOUSEBUTTONn flag, you can enable the user to display the 
  859. pop-up menu, select an item, and dismiss the menu, all in one operation.  For 
  860. example, if your window procedure displays the pop-up window when the user 
  861. double-clicks mouse button 2, specify the PU_MOUSEBUTTON2DOWN flag in the 
  862. WinPopupMenu function.  Then, the user can display the menu with mouse button 
  863. 2; and, while holding the button down, select an item.  When the user releases 
  864. the button, the item is chosen and the menu dismissed. 
  865.  
  866.  
  867. ΓòÉΓòÉΓòÉ 3.1.3. System Menu ΓòÉΓòÉΓòÉ
  868.  
  869. The system menu in the upper-left corner of a standard frame window is 
  870. different from the menus defined by the application.  The system menu is 
  871. controlled and defined almost exclusively by the system; your only decision 
  872. about it is whether to include it when creating a frame window.  (It is unusual 
  873. for a frame window not to include a system menu.)  The system menu generates 
  874. WM_SYSCOMMAND messages instead of WM_COMMAND messages.  Most applications 
  875. simply use the default behavior for WM_SYSCOMMAND messages, although 
  876. applications can add, delete, and change system-menu entries. 
  877.  
  878.  
  879. ΓòÉΓòÉΓòÉ 3.1.4. Menu Items ΓòÉΓòÉΓòÉ
  880.  
  881. All menus can contain two main types of menu items: command items and submenu 
  882. items.  When the user chooses a command item, the menu immediately posts a 
  883. message to the parent window.  When the user selects a submenu item, the menu 
  884. displays a submenu from which the user may choose another item.  Since a 
  885. submenu window also can contain a submenu item, submenus can originate from 
  886. other submenus. 
  887.  
  888. When the user chooses a command item from a menu, the menu system posts a 
  889. WM_COMMAND, WM_SYSCOMMAND, or WM_HELP message to the owner window, depending on 
  890. the style bits of the menu item. 
  891.  
  892. Applications can change the attributes, style, and contents of menu items, and 
  893. insert and delete items at run time, to reflect changes in the command 
  894. environment.  An application also can add items to or delete items from the 
  895. menu bar, a pop-up menu, or a submenu.  For example, an application might 
  896. maintain a menu of the fonts currently available in the system.  This 
  897. application would use graphics programming interface (GPI) calls to determine 
  898. which fonts were available and, then, insert a menu item for each font into a 
  899. submenu.  Furthermore, the application might set the check-mark attribute of 
  900. the menu item for the currently chosen font.  When the user chose a new font, 
  901. the application would remove the check-mark attribute from the previous choice 
  902. and add it to the new choice. 
  903.  
  904.  
  905. ΓòÉΓòÉΓòÉ 3.1.4.1. The Help Item ΓòÉΓòÉΓòÉ
  906.  
  907. To present a standard interface to the novice user, all applications must have 
  908. a Help item in their menu bars.  The Help item is defined with a particular 
  909. style, attributes, and position in the menu.  When the user chooses the Help 
  910. item, the menu posts a WM_HELP message to the owner window, enabling the 
  911. application to respond appropriately. 
  912.  
  913. The item should read Help, have an identifier of 0, and have the 
  914. MIS_BUTTONSEPARATOR or MIS_HELP item styles.  The Help menu item should be the 
  915. last item in the menu template, so that it is displayed as the rightmost item 
  916. in the menu bar. 
  917.  
  918. If an application uses the system default accelerator table, the user can 
  919. select the Help item using either a mouse or the F1 key. 
  920.  
  921.  
  922. ΓòÉΓòÉΓòÉ 3.1.4.2. Menu-Item Styles ΓòÉΓòÉΓòÉ
  923.  
  924. All menu items have a combination of style bits that determine what kind of 
  925. data the item contains and what kind of message it generates when the user 
  926. selects it.  For example, a menu item can have the MIS_TEXT, MIS_BITMAP, or 
  927. other styles that specify the visual representation of the menu item on the 
  928. screen.  Other styles determine what kinds of messages the item sends to its 
  929. owner and whether the owner draws the item.  Menu-item styles typically do not 
  930. change during program execution, but you can query and set them dynamically by 
  931. sending MM_QUERYITEM and MM_SETITEM messages with the menu-item identifier to 
  932. the menu-bar window.  For text menu items (MIS_TEXT), an MM_SETITEMTEXT message 
  933. sets the text.  The MM_QUERYITEMTEXT message queries the text of the item.  For 
  934. non-text menu items, the hItem field of the MENUITEM structure typically 
  935. contains the handle of a display object, such as a bit-map handle for 
  936. MIS_BITMAP menu items. 
  937.  
  938. An application can draw a menu item by setting the style MIS_OWNERDRAW for the 
  939. menu item.  This usually is done by specifying the MIS_OWNERDRAW style for the 
  940. menu item in the resource-definition file; but it also can be done at run time. 
  941. When the application draws a menu item, it must respond to messages from the 
  942. menu each time the item must be drawn. 
  943.  
  944.  
  945. ΓòÉΓòÉΓòÉ 3.1.4.3. Menu-Item Attributes ΓòÉΓòÉΓòÉ
  946.  
  947. Menu items have attributes that determine how the items are displayed and 
  948. whether or not the user can choose them.  An application can set and query 
  949. menu-item attributes by sending MM_SETITEMATTR and MM_QUERYITEMATTR messages, 
  950. with the menu-item identifier, to the menu-bar window.  If the specified item 
  951. is in a submenu, there are two methods of determining its attributes.  The 
  952. first is to send MM_SETITEMATTR and MM_QUERYITEMATTR messages to the top-level 
  953. menu, specifying the identifier of the item and setting a flag so that the 
  954. message searches all submenus for the item.  Then, you can retrieve the handle 
  955. of the menu-bar by calling WinWindowFromID, with the handle of the frame window 
  956. and the FID_MENU frame-control identifier. 
  957.  
  958. The second method, which is more efficient if you want to either work with more 
  959. than one submenu item or set the same item several times, involves two steps: 
  960.  
  961.    1. Send an MM_QUERYITEM message to the menu, with the identifier of the 
  962.       submenu.  The updated MENUITEM structure contains the window handle of 
  963.       the submenu. 
  964.  
  965.    2. Send an MM_QUERYITEMATTR (or MM_SETITEMATTR) message to the submenu 
  966.       window, specifying the identifier of the item in the submenu. 
  967.  
  968.  
  969. ΓòÉΓòÉΓòÉ 3.1.4.4. Menu-Item Structure ΓòÉΓòÉΓòÉ
  970.  
  971. A single menu item is defined by the MENUITEM data structure.  This structure 
  972. is used with the MM_INSERTITEM message to insert items in a menu or to query 
  973. and set item characteristics with the MM_QUERYITEM and MM_SETITEM messages. 
  974. The MENUITEM structure has the following form: 
  975.  
  976.     typedef struct _MENUITEM { /* mi */
  977.         SHORT  iPosition;
  978.         USHORT afStyle;
  979.         USHORT afAttribute;
  980.         USHORT id;
  981.         HWND   hwndSubMenu;
  982.         ULONG  hItem;
  983.     } MENUITEM;
  984.  
  985. You can derive the values of most of the fields in this structure directly from 
  986. the resource-definition file.  However, the last field in the structure, hItem, 
  987. depends on the style of the menu item. 
  988.  
  989. The iPosition field specifies the ordinal position of the item within its menu 
  990. window.  If the item is part of the menu bar, iPosition specifies its relative 
  991. left-to-right position, with 0 being the leftmost item.  If the item is part of 
  992. a submenu, iPosition specifies its relative top-to-bottom and left-to-right 
  993. positions, with 0 being the upper-left item.  An item with the 
  994. MIS_BREAKSEPARATOR style in a pull-down menu causes a new column to begin. 
  995.  
  996. The afStyle field contains the style bits of the item.  The afAttribute field 
  997. contains the attribute bits. 
  998.  
  999. The id field contains the menu-item identifier.  The identifier should be 
  1000. unique but does not have to be.  Just remember that, when multiple items have 
  1001. the same identifier, they post the same command number in the WM_COMMAND, 
  1002. WM_SYSCOMMAND, and WM_HELP messages.  Also, any message that specifies a menu 
  1003. item with a non-unique identifier will find the first item that has that 
  1004. identifier. 
  1005.  
  1006. The hwndSubMenu field contains the window handle of a submenu window (if the 
  1007. item is a submenu item).  The hwndSubMenu field is NULL for command items. 
  1008.  
  1009. The hItem field contains a handle to the display object for the item, unless 
  1010. the item has the MIS_TEXT style, in which case, hItem is 0.  For example, a 
  1011. menu item with the MIS_BITMAP style has an hItem field that is equal to its 
  1012. bit-map handle. 
  1013.  
  1014.  
  1015. ΓòÉΓòÉΓòÉ 3.1.5. Menu Access ΓòÉΓòÉΓòÉ
  1016.  
  1017. The OS/2 operating system is designed to work with or without a mouse or other 
  1018. pointing device.  The system provides default behavior that enables a user to 
  1019. interact with menus without a mouse.  Following are the keystrokes that produce 
  1020. this default behavior: 
  1021.  
  1022. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1023. ΓöéKeystroke           ΓöéAction                                  Γöé
  1024. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1025. ΓöéAlt                 ΓöéToggles in and out of menu-bar mode.    Γöé
  1026. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1027. ΓöéAlt+Spacebar        ΓöéShows the system menu.                  Γöé
  1028. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1029. ΓöéF10                 ΓöéBacks up one level. If a submenu is     Γöé
  1030. Γöé                    Γöédisplayed, it is canceled. If no submenuΓöé
  1031. Γöé                    Γöéis displayed, this keystroke exits the  Γöé
  1032. Γöé                    Γöémenu.                                   Γöé
  1033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1034. ΓöéShift+Esc           ΓöéShows the system menu.                  Γöé
  1035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1036. ΓöéRight Arrow         ΓöéCycles to the next top-level menu item. Γöé
  1037. Γöé                    ΓöéIf the selected item is at the far-left Γöé
  1038. Γöé                    Γöéside of the menu, the menu code sends a Γöé
  1039. Γöé                    ΓöéWM_NEXTMENU message to the frame window.Γöé
  1040. Γöé                    ΓöéThe default processing by the frame     Γöé
  1041. Γöé                    Γöéwindow is to cycle between the          Γöé
  1042. Γöé                    Γöéapplication and system menus. (An       Γöé
  1043. Γöé                    Γöéapplication can modify this behavior by Γöé
  1044. Γöé                    Γöésubclassing the frame window.) If the   Γöé
  1045. Γöé                    Γöéselected item is in a submenu, the next Γöé
  1046. Γöé                    Γöécolumn in the submenu is selected, or   Γöé
  1047. Γöé                    Γöéthe next top-level menu item is         Γöé
  1048. Γöé                    Γöéselected; this keystroke also can send  Γöé
  1049. Γöé                    Γöéor process a WM_NEXTMENU message.       Γöé
  1050. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1051. ΓöéLeft Arrow          ΓöéWorks like the Right Arrow key, except  Γöé
  1052. Γöé                    Γöéin the opposite direction. In submenus, Γöé
  1053. Γöé                    Γöéthis keystroke backs up one column,     Γöé
  1054. Γöé                    Γöéexcept when the currently selected item Γöé
  1055. Γöé                    Γöéis in the far-left column, in which caseΓöé
  1056. Γöé                    Γöéthe previous submenu is selected.       Γöé
  1057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1058. ΓöéUp Arrow or Down    ΓöéWhen pressed in a top-level menu,       Γöé
  1059. ΓöéArrow               Γöéactivates a submenu. When pressed in a  Γöé
  1060. Γöé                    Γöésubmenu, this keystroke selects the     Γöé
  1061. Γöé                    Γöéprevious or next or item, respectively. Γöé
  1062. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1063. ΓöéEnter               ΓöéActivates a submenu, and highlights the Γöé
  1064. Γöé                    Γöéfirst item if an item has a submenu     Γöé
  1065. Γöé                    Γöéassociated with it; otherwise, this     Γöé
  1066. Γöé                    Γöékeystroke chooses the item as though theΓöé
  1067. Γöé                    Γöéuser released the mouse button while theΓöé
  1068. Γöé                    Γöéitem was selected.                      Γöé
  1069. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1070. ΓöéAlphabetic characterΓöéSelects the first menu item with the    Γöé
  1071. Γöé                    Γöéspecified character as its mnemonic key.Γöé
  1072. Γöé                    ΓöéA mnemonic is defined for a menu item byΓöé
  1073. Γöé                    Γöéplacing a tilde (~) before the characterΓöé
  1074. Γöé                    Γöéin the menu text.  If the selected item Γöé
  1075. Γöé                    Γöéhas a submenu associated with it, the   Γöé
  1076. Γöé                    Γöémenu is displayed, and the first item isΓöé
  1077. Γöé                    Γöéhighlighted; otherwise, the item is     Γöé
  1078. Γöé                    Γöéchosen.                                 Γöé
  1079. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1080.  
  1081. An application does not support the default keyboard behavior with any unusual 
  1082. code; instead, the application receives a message when a menu item is chosen by 
  1083. the keyboard just as though it had been chosen by a mouse. 
  1084.  
  1085.  
  1086. ΓòÉΓòÉΓòÉ 3.1.5.1. Mnemonics ΓòÉΓòÉΓòÉ
  1087.  
  1088. Adding mnemonics to menu items is one way of providing the user with keyboard 
  1089. access to menus.  You can indicate a mnemonic keystroke for a menu item by 
  1090. preceding a character in the item text with a tilde, as in ~nFile. Then, the 
  1091. user can choose that item by pressing the mnemonic key when the menu is active. 
  1092.  
  1093. The menu bar is active when the user presses and releases the Alt key, and the 
  1094. first item in the menu bar is highlighted. A pop-up or pull-down menu is active 
  1095. when it is open. 
  1096.  
  1097.  
  1098. ΓòÉΓòÉΓòÉ 3.1.5.2. Accelerators ΓòÉΓòÉΓòÉ
  1099.  
  1100. In addition to mnemonics, a menu item can have an associated keyboard 
  1101. accelerator.  Accelerators are different from mnemonics in that the menu need 
  1102. not be active for the accelerator key to work.  If you have associated a menu 
  1103. item with a keyboard accelerator, display the accelerator to the right of the 
  1104. menu item.  Do this in the resource-definition file by placing a tab character 
  1105. (\t) in the menu text before the characters that will be displayed on the 
  1106. right.  For example, if the Close item had the F3 function key as its keyboard 
  1107. accelerator, the text for the item would be Close\tF3. 
  1108.  
  1109.  
  1110. ΓòÉΓòÉΓòÉ 3.2. Using Menus ΓòÉΓòÉΓòÉ
  1111.  
  1112. This section explains how to perform the following tasks: 
  1113.  
  1114.      Define menu items in a resource file 
  1115.      Include a menu bar in a standard window 
  1116.      Create a pop-up menu 
  1117.      Add a menu to a dialog window 
  1118.      Access the system menu 
  1119.      Respond to a the menu choice of a user 
  1120.      Set and query menu-item attributes 
  1121.      Add and delete menu items 
  1122.      Create a custom menu item 
  1123.  
  1124.  
  1125. ΓòÉΓòÉΓòÉ 3.2.1. Defining Menu Items in a Resource File ΓòÉΓòÉΓòÉ
  1126.  
  1127. Typically, a menu resource represents the menu bar or pop-up menu and all the 
  1128. related submenus.  A menu-item definition is organized as shown in the 
  1129. following code: 
  1130.  
  1131.  
  1132.     MENUITEM item text, item identifier, item style, item attributes
  1133.  
  1134. The menu resource-definition file specifies the text of each item in the menu, 
  1135. its unique identifier, its style and attributes, and whether it is a command 
  1136. item or a submenu item.  A menu item that has no specification for style or 
  1137. attributes has the default style of MIS_TEXT and all attribute bits off, 
  1138. indicating that the item is enabled.  The MIS_SEPARATOR style identifies 
  1139. nonselectable lines between menu items. The following figure is sample Resource 
  1140. Compiler source code that defines a menu resource. The code defines a menu with 
  1141. three submenu items in the menu bar (File, Edit, and Font) and a command item 
  1142. (Help).  Each submenu has several command items, and the Font submenu has two 
  1143. other submenus within it. 
  1144.  
  1145.  
  1146.     MENU ID_MENU_RESOURCE
  1147.     BEGIN
  1148.         SUBMENU "~File", IDM_FILE
  1149.             BEGIN
  1150.                 MENUITEM "~Open...",       IDM_FI_OPEN
  1151.                 MENUITEM "~Close\tF3",     IDM_FI_CLOSE, 0, MIA_DISABLED
  1152.                 MENUITEM "~Quit",          IDM_FI_QUIT
  1153.                 MENUITEM "",               IDM_FI_SEP1, MIS_SEPARATOR
  1154.                 MENUITEM "~About Sample",  IDM_FI_ABOUT
  1155.             END
  1156.         SUBMENU "~Edit", IDM_EDIT
  1157.             BEGIN
  1158.                 MENUITEM "~Undo",          IDM_ED_UNDO, 0, MIA_DISABLED
  1159.                 MENUITEM "",               IDM_ED_SEP1, MIS_SEPARATOR
  1160.                 MENUITEM "~Cut",           IDM_ED_CUT
  1161.                 MENUITEM "C~opy",          IDM_ED_COPY
  1162.                 MENUITEM "~Paste",         IDM_ED_PASTE
  1163.                 MENUITEM "C~lear",         IDM_ED_CLEAR
  1164.             END
  1165.         SUBMENU "Font", IDM_FONT
  1166.             BEGIN
  1167.                 SUBMENU "Style",           IDM_FONT_STYLE
  1168.                     BEGIN
  1169.                         MENUITEM "Plain",  IDM_FONT_STYLE_PLAIN
  1170.                         MENUITEM "Bold",   IDM_FONT_STYLE_BOLD
  1171.                         MENUITEM "Italic", IDM_FONT_STYLE_ITALIC
  1172.                     END
  1173.                 SUBMENU "Size",            IDM_FONT_SIZE
  1174.                     BEGIN
  1175.                         MENUITEM "10",     IDM_FONT_SIZE_10
  1176.                         MENUITEM "12",     IDM_FONT_SIZE_12
  1177.                         MENUITEM "14",     IDM_FONT_SIZE_14
  1178.                     END
  1179.             END
  1180.         MENUITEM "F1=Help", 0x00, MIS_TEXT | MIS_BUTTONSEPARATOR | MIS_HELP
  1181.     END
  1182.  
  1183. To define a menu item with the MIS_BITMAP style, an application must use a tool 
  1184. such as Icon Editor to create a bit map, include the bit map in its 
  1185. resource-definition file, and define a menu in the file (as shown in the 
  1186. following figure). The text for the bit map menu items is an ASCII 
  1187. representation of the resource identifier of the bit map resource to be 
  1188. displayed for that item. 
  1189.  
  1190.  
  1191.     /* Bring externally created bit maps into the resource file. */
  1192.     BITMAP 101 button.bmp
  1193.     BITMAP 102 hirest.bmp
  1194.     BITMAP 103 hizoom.bmp
  1195.     BITMAP 104 hired.bmp
  1196.  
  1197.     /* Connect a menu item with a bit map.                       */
  1198.     SUBMENU "~Bitmaps", IDM_BITMAP
  1199.         BEGIN
  1200.             MENUITEM "#101", IDM_BM_01, MIS_BITMAP
  1201.             MENUITEM "#102", IDM_BM_02, MIS_BITMAP
  1202.             MENUITEM "#103", IDM_BM_03, MIS_BITMAP
  1203.             MENUITEM "#104", IDM_BM_04, MIS_BITMAP
  1204.         END
  1205.  
  1206.  
  1207. ΓòÉΓòÉΓòÉ 3.2.2. Including a Menu Bar in a Standard Window ΓòÉΓòÉΓòÉ
  1208.  
  1209. If you have defined a menu resource in a resource-definition file, you can use 
  1210. the menu resource to create a menu bar in a standard window.  You include the 
  1211. menu bar by using the FCF_MENU attribute flag and specifying the menu-resource 
  1212. identifier in a call to WinCreateStdWindow, as shown in the following code 
  1213. fragment: 
  1214.  
  1215.     #define ID_MENU_RESOURCE 100
  1216.  
  1217.     HWND hwndFrame;
  1218.     CHAR szClassName[]="MyClass";
  1219.     CHAR szTitle[]="My Title";
  1220.  
  1221.     ULONG flControlStyle = FCF_MENU     | FCF_SIZEBORDER |
  1222.                            FCF_TITLEBAR | FCF_ACCELTABLE;
  1223.  
  1224.     hwndFrame = WinCreateStdWindow(HWND_DESKTOP,
  1225.         WS_VISIBLE,
  1226.         &flControlStyle,
  1227.         szClassName,
  1228.         szTitle,
  1229.         0, (HMODULE) NULL,
  1230.         ID_MENU_RESOURCE,
  1231.         NULL);
  1232.  
  1233. After you make this call, the operating system automatically includes the menu 
  1234. in the window, drawing the menu bar across the top of the window.  When the 
  1235. user chooses an item from the menu, the menu posts the message to the frame 
  1236. window.  The frame window passes any WM_COMMAND messages to the client window. 
  1237. (The frame window does not pass WM_SYSCOMMAND messages to the client window.) 
  1238. WM_HELP messages are posted to the focus window.  The WinDefWindowProc function 
  1239. passes WM_HELP messages to the parent window.  If a WM_HELP message is passed 
  1240. to a frame window, the frame window calls the HK_HELP hook.  Your client window 
  1241. procedure must process these messages to respond to the user's actions. 
  1242.  
  1243.  
  1244. ΓòÉΓòÉΓòÉ 3.2.3. Creating a Pop-up Menu ΓòÉΓòÉΓòÉ
  1245.  
  1246. The following code fragment shows how to make a pop-up menu appear when the 
  1247. user double-clicks mouse button 2 anywhere in the parent window.  The menu is 
  1248. positioned with the mouse pointer located on the item having the IDM_OPEN 
  1249. identifier and is constrained horizontally and vertically.  Then, the user can 
  1250. select an item from the pop-up menu using mouse button 2. 
  1251.  
  1252.     #define ID_MENU_RESOURCE  110
  1253.     #define IDM_OPEN          120
  1254.  
  1255.     HWND hwndFrame;
  1256.  
  1257.     MRESULT ClientWndProc(
  1258.     HWND hwnd,
  1259.     ULONG msg,
  1260.     MPARAM mp1,
  1261.     MPARAM mp2)
  1262.     {
  1263.         HWND hwndMenu;
  1264.         BOOL fSuccess;
  1265.  
  1266.         switch (msg) {
  1267.             .
  1268.             .   /* Process other messages. */
  1269.             .
  1270.             case WM_BUTTON2DBLCLK:
  1271.                 hwndMenu = WinLoadMenu(hwnd, (HMODULE) NULL, ID_MENU_RESOURCE);
  1272.                 fSuccess = WinPopupMenu(hwnd,
  1273.                                         hwndFrame,
  1274.                                         hwndMenu,
  1275.                                         20,
  1276.                                         50,
  1277.                                         IDM_OPEN,
  1278.                                         PU_POSITIONONITEM   |
  1279.                                         PU_HCONSTRAIN       |
  1280.                                         PU_VCONSTRAIN       |
  1281.                                         PU_MOUSEBUTTON2DOWN |
  1282.                                         PU_MOUSEBUTTON2);
  1283.  
  1284.                        .
  1285.                        .
  1286.                        .
  1287.  
  1288.  
  1289. ΓòÉΓòÉΓòÉ 3.2.4. Adding a Menu to a Dialog Window ΓòÉΓòÉΓòÉ
  1290.  
  1291. You might want to use menus in windows that were not created using the 
  1292. WinCreateStdWindow function.  For these windows, you can load a menu resource 
  1293. by using the WinLoadMenu function and specifying the parent window for the 
  1294. menu.  WinLoadMenu assigns the specified menu resource to the parent.  To see 
  1295. the menu in the window, you must send a WM_UPDATEFRAME message to the parent 
  1296. after loading the menu resource.  This strategy is especially useful for adding 
  1297. menus to a window created as a dialog window, but it can be used no matter what 
  1298. type of window is specified as the parent. 
  1299.  
  1300.  
  1301. ΓòÉΓòÉΓòÉ 3.2.5. Accessing the System Menu ΓòÉΓòÉΓòÉ
  1302.  
  1303. Although most applications do not alter the system menu, you can obtain the 
  1304. handle of the system menu by calling WinWindowFromID with a frame-window handle 
  1305. (or dialog-window handle) and the identifier FID_SYSMENU.  Once you have the 
  1306. handle of the system menu, you can access the individual menu items by using 
  1307. predefined constants.  For example, the following code fragment shows how to 
  1308. disable the Close menu item in the system menu of a window: 
  1309.  
  1310.     HWND hwndSysMenu;
  1311.     HWND hwndFrame;
  1312.  
  1313.     hwndSysMenu = WinWindowFromID(hwndFrame, FID_SYSMENU);
  1314.  
  1315.     WinSendMsg(hwndSysMenu, MM_SETITEMATTR,
  1316.         MPFROM2SHORT(SC_CLOSE, TRUE),
  1317.         MPFROM2SHORT(MIA_DISABLED, MIA_DISABLED));
  1318.  
  1319.  
  1320. ΓòÉΓòÉΓòÉ 3.2.6. Responding to a User's Menu Choice ΓòÉΓòÉΓòÉ
  1321.  
  1322. When a user chooses a menu item, the client window procedure receives a 
  1323. WM_COMMAND message with SHORT1FROMMP(mp1) equal to the menu identifier of the 
  1324. chosen item.  Your application must use the menu identifier to guide its 
  1325. response to the choice.  Typically, the code in the client window procedure 
  1326. resembles the following code fragment: 
  1327.  
  1328.        case WM_COMMAND:
  1329.            DoMenuCommand(hwnd, SHORT1FROMMP(mp1));
  1330.            return 0;
  1331.  
  1332. The function that translates the menu identifier into an action typically 
  1333. resembles the following code fragment: 
  1334.  
  1335.  
  1336.     VOID DoMenuCommand(
  1337.     HWND hwnd,
  1338.     USHORT usItemID)
  1339.     {
  1340.  
  1341.         /* Test the menu item. */
  1342.         switch (usItemID) {
  1343.             case IDM_FI_NEW:
  1344.                 DoNew(hwnd);
  1345.                 break;
  1346.  
  1347.           .
  1348.           . /* etc. */
  1349.           .
  1350.  
  1351.         }
  1352.     }
  1353.  
  1354. The menu window sends a WM_MENUSELECT message every time the menu selection 
  1355. changes.  SHORT1FROMMP(mp1) contains the identifier of the item that is 
  1356. changing state, and SHORT2FROMMP(mp2) is a 16-bit Boolean value that describes 
  1357. whether or not the item is chosen; the mp2 parameter contains the handle of the 
  1358. menu. 
  1359.  
  1360. If the Boolean value is FALSE, the item is selected but not chosen; for 
  1361. example, the user may have moved the cursor or mouse pointer over the item 
  1362. while the button was down.  An application can use this message to display Help 
  1363. information at the bottom of the application window.  The return value is 
  1364. ignored. 
  1365.  
  1366. If the Boolean value is TRUE, the item is chosen-that is, the user pressed 
  1367. Enter or released the mouse button while an item was selected.  If the 
  1368. application returns FALSE, the menu does not generate a WM_COMMAND, 
  1369. WM_SYSCOMMAND, or WM_HELP message, and the menu is not dismissed. 
  1370.  
  1371.  
  1372. ΓòÉΓòÉΓòÉ 3.2.7. Setting and Querying Menu-Item Attributes ΓòÉΓòÉΓòÉ
  1373.  
  1374. Menu-item attributes are represented in the fAttribute field of the MENUITEM 
  1375. data structure.  Typically, attributes are set in the resource-definition file 
  1376. of the menu and are changed at run time as required.  Applications can use the 
  1377. MM_SETITEMATTR and MM_QUERYITEMATTR messages to set and query attributes for a 
  1378. particular menu item.  One of the most common uses of these messages is to 
  1379. check and uncheck menu items to let the user know what option is selected 
  1380. currently.  For example, if you have a menu item that should toggle between 
  1381. checked and unchecked each time the user selects it, you can use the following 
  1382. figure to change the checked attribute. In this example, you send an 
  1383. MM_QUERYITEMATTR message to the menu item to obtain its current checked 
  1384. attribute; then, you use the exclusive OR operator to toggle the state; and 
  1385. finally, you send the new attribute state back to the item using an 
  1386. MM_SETITEMATTR message. 
  1387.  
  1388.  
  1389.  
  1390.     usAttrib = SHORT1FROMMR(
  1391.         WinSendMsg(hwndMenu,           /* Submenu window        */
  1392.         MM_QUERYITEMATTR,              /* Message               */
  1393.         (MPARAM)itemID,                /* Item identifier       */
  1394.         (MPARAM)MIA_CHECKED            /* Attribute mask        */
  1395.         ));
  1396.  
  1397.     usAttrib = MIA_CHECKED;        /* XOR to toggle checked attribute */
  1398.  
  1399.     WinSendMsg(hwndMenu,                      /* Submenu window        */
  1400.         MM_SETITEMATTR,                       /* Message               */
  1401.         (MPARAM)itemID,                       /* Item identifier       */
  1402.         MPFROM2SHORT(MIA_CHECKED, usAttrib)); /* Attribute mask, value */
  1403.  
  1404.  
  1405. ΓòÉΓòÉΓòÉ 3.2.8. Adding and Deleting Menu Items ΓòÉΓòÉΓòÉ
  1406.  
  1407. An application can add and delete items from its menus dynamically by sending 
  1408. MM_INSERTITEM and MM_DELETEITEM messages to the menu window.  Any item, 
  1409. including those in submenus, can be deleted by sending a message to the menu 
  1410. window.  Messages to insert items in submenus must be sent to the submenu's 
  1411. window (rather than to the window of the top-level menu).  You can retrieve the 
  1412. handle of a submenu of the menu bar by sending an MM_QUERYITEM message to the 
  1413. menu-bar and specifying the identifier of the submenu item for the submenu, as 
  1414. shown in the following code fragment: 
  1415.  
  1416.     /* IDM_MYMENUID is the identifier of the submenu containing the item. */
  1417.  
  1418.     MENUITEM mi;
  1419.     HWND hwndMenu, hwndSubMenu, hwndPullDown,hwndFrame;
  1420.  
  1421.     hwndMenu = WinWindowFromID(hwndFrame, FID_MENU);
  1422.     WinSendMsg(hwndMenu,                           /* Handle of menu bar  */
  1423.         MM_QUERYITEM,                              /* Message             */
  1424.         MPFROM2SHORT(IDM_MYMENUID, TRUE),          /* Submenu identifier  */
  1425.         (MPARAM) &mi);                             /* Pointer to MENUITEM */
  1426.  
  1427.     hwndPullDown = mi.hwndSubMenu;                 /* Handle to submenu   */
  1428.  
  1429. Once the application has the handle of the submenu, it can insert an item by 
  1430. filling in a MENUITEM structure and sending an MM_INSERTITEM message to the 
  1431. submenu.  For text-menu items, the application must send a pointer to the text 
  1432. string as well as to the MENUITEM structure, as shown in the following figure. 
  1433.  
  1434.  
  1435.     PSZ  pszNewItemString;
  1436.  
  1437.     mi.iPosition = MIT_END;
  1438.     mi.afStyle = MIS_TEXT;
  1439.     mi.afAttribute = 0;
  1440.     mi.id = IDM_MYMENU_FIRST;
  1441.     mi.hwndSubMenu = NULL;
  1442.     mi.hItem = 0;
  1443.  
  1444.     WinSendMsg(hwndPullDown, MM_INSERTITEM, (MPARAM) &mi,
  1445.         (MPARAM) pszNewItemString);
  1446.  
  1447. To delete an item, the application sends an MM_DELETEITEM message to the menu 
  1448. bar, specifying the identifier of the item to delete.  For example, to clear 
  1449. all the items following IDM_MYMENU_FIRST in a submenu in which the items are 
  1450. numbered sequentially, use the following code: 
  1451.  
  1452.  
  1453.     USHORT usItemNum;
  1454.  
  1455.     /* Clear all the items in MYMENU.                 */
  1456.     hwndMenu = WinWindowFromID(hwndFrame, FID_MENU);
  1457.     usItemNum = IDM_MYMENU_FIRST;
  1458.     while (WinSendMsg(hwndMenu, MM_DELETEITEM,
  1459.         MPFROM2SHORT(usItemNum++, TRUE), NULL) != 0);
  1460.  
  1461. Adding a complete submenu to the menu bar is a more complicated procedure than 
  1462. that shown in the previous examples.  There are two strategies.  The 
  1463. recommended technique is to define all possible submenus in your 
  1464. resource-definition file; and then, as your application runs, selectively 
  1465. remove and insert the submenus as needed. 
  1466.  
  1467. For example, assume that your application has a submenu that you want to be 
  1468. displayed only when a particular application tool is in use.  You must first 
  1469. define the submenu as part of the main menu resource in your 
  1470. resource-definition file, so that the system reads in the resource menu 
  1471. template and creates the submenu window along with the rest of the menu.  You 
  1472. then can remove the submenu from the menu bar, saving the title of the submenu 
  1473. and the MENUITEM structure that defines the submenu, as shown in the following 
  1474. figure: 
  1475.  
  1476.  
  1477.     HWND hwndMenu, hwndClient;
  1478.     MENUITEM mi;
  1479.     CHAR szMenuTitle[MAX_STRINGSIZE];
  1480.  
  1481.     /* Remove a submenu so that you can replace it later.           */
  1482.  
  1483.     /* Obtain the handle of a menu.                                 */
  1484.     hwndMenu = WinWindowFromID(WinQueryWindow(hwndClient, QW_PARENT),
  1485.                                FID_MENU);
  1486.  
  1487.     /* Obtain information on the item to remove.                    */
  1488.     WinSendMsg(hwndMenu, MM_QUERYITEM,
  1489.         MPFROM2SHORT(IDM_MENUID, TRUE),  /* TRUE to search submenus */
  1490.         (MPARAM)&mi);
  1491.  
  1492.     /* Save the text for the submenu item.                          */
  1493.     WinSendMsg(hwndMenu, MM_QUERYITEMTEXT,
  1494.         MPFROM2SHORT(IDM_FONT, MAX_STRINGSIZE),
  1495.         (MPARAM)szMenuTitle);
  1496.  
  1497.     /* Remove the item, but retain mi and szMenuTitle.              */
  1498.     WinSendMsg(hwndMenu, MM_REMOVEITEM,
  1499.         MPFROM2SHORT(IDM_FONT, TRUE), NULL);
  1500.  
  1501. It is important to use the MM_REMOVEITEM message, rather than MM_DELETEITEM, to 
  1502. remove the item; deleting the item destroys the submenu window-removing it does 
  1503. not.  The submenu should remain intact so that you can insert it later. 
  1504.  
  1505. To reinsert the submenu, send an MM_INSERTITEM message to the menu bar, passing 
  1506. the MENUITEM structure and menu title that you saved when you removed the item. 
  1507. The following code fragment shows how to insert a submenu that was removed by 
  1508. using the previous code example. 
  1509.  
  1510.  
  1511.     /* Put the submenu back in and obtain the handle of the menu bar. */
  1512.     hwndMenu = WinWindowFromID(
  1513.                     WinQueryWindow(hwndClient, QW_PARENT), FID_MENU);
  1514.  
  1515.     /* Use the information that you saved when you removed the menu.  */
  1516.     WinSendMsg(hwndMenu, MM_INSERTITEM, (MPARAM)&mi,
  1517.                (MPARAM)szMenuTitle);
  1518.  
  1519. The other technique that you can use to insert a submenu in the menu bar is to 
  1520. build up, in memory, a data structure as a menu template and use that template 
  1521. and WinCreateWindow to create a submenu.  The resultant submenu window handle 
  1522. then is placed in the hwndSubMenu field of a MENUITEM structure, and the menu 
  1523. item is sent to the menu bar with an MM_INSERTITEM message. 
  1524.  
  1525. You also can create an empty submenu window by using WinCreateWindow.  Pass 
  1526. NULL for the pCtlData and pPresParams parameters, instead of building the menu 
  1527. template in memory.  Then insert a new menu item in the menu bar by using the 
  1528. MM_INSERTITEM message, setting the MIS_SUBMENU style, and putting the window 
  1529. handle of the created menu into the hwndSubMenu field.  Then use the 
  1530. MM_INSERTITEM message to insert the items in the new pull-down menu. 
  1531.  
  1532.  
  1533. ΓòÉΓòÉΓòÉ 3.2.9. Creating a Custom Menu Item ΓòÉΓòÉΓòÉ
  1534.  
  1535. Applications can customize the appearance of an individual menu item by setting 
  1536. the MIS_OWNERDRAW style bit for the item.  The operating system sends two 
  1537. different messages to an application that include owner-drawn menu items: 
  1538. WM_MEASUREITEM and WM_DRAWITEM.  Both messages include a pointer to an 
  1539. OWNERITEM data structure. 
  1540.  
  1541. WM_MEASUREITEM is sent only once for each owner-drawn item when the menu is 
  1542. initialized.  The message is sent to the owner of the menu (typically, a frame 
  1543. window), which forwards the message to its client window.  Typically, the 
  1544. client window procedure processes WM_MEASUREITEM by filling in the yTop and 
  1545. Right fields of the RECTL structure, specified by the rclItem field of this 
  1546. OWNERITEM structure; this specifies the size of the rectangle needed to enclose 
  1547. the item when it is drawn. The following code fragment responds to a 
  1548. WM_MEASUREITEM message. 
  1549.  
  1550.     case WM_MEASUREITEM:
  1551.         ((POWNERITEM) mp2)->rclItem.xRight = 26;
  1552.         ((POWNERITEM) mp2)->rclItem.yTop = 10;
  1553.         return 0;
  1554.  
  1555. If a menu item has the MIS_OWNERDRAW style, the owner window receives a 
  1556. WM_DRAWITEM message every time the menu item needs to be drawn.  You process 
  1557. this message by using the hps and rclItem fields of the OWNERITEM structure to 
  1558. draw the item.  There are two situations in which the owner window receives a 
  1559. WM_DRAWITEM message: 
  1560.  
  1561.      When the item must be redrawn completely 
  1562.      When the item must be highlighted or have its highlight removed 
  1563.  
  1564.  You can choose to handle one or both of these situations.  Typically, you 
  1565.  handle the drawing of the item.  You may not want to handle the second 
  1566.  situation, however, since the system-default behavior (inverting the bits in 
  1567.  the item rectangle) often is acceptable. The two situations in which a 
  1568.  WM_DRAWITEM message is received are detected by comparing the values of the 
  1569.  fsState and fsStateOld fields of the OWNERITEM structure that is sent as part 
  1570.  of the message.  If the two fields are the same, draw the item.  Before 
  1571.  drawing the item, however, check its attributes to see whether it has the 
  1572.  attributes MIA_CHECKED, MIA_FRAMED, or MIA_DISABLED.  Then draw the item 
  1573.  according to the attributes. 
  1574.  
  1575.  For example, when the checked attribute of an owner-drawn menu item changes, 
  1576.  the system sends a WM_DRAWITEM message to the item so that it can redraw 
  1577.  itself and either draw or remove the check mark.  If you want the 
  1578.  system-default check mark, simply draw the item and leave the fsAttribute and 
  1579.  fsAttributeOld fields unchanged; the system draws the check mark if necessary. 
  1580.  If you draw the check mark yourself, clear the MIA_CHECKED bit in both 
  1581.  fsAttribute and fsAttributeOld so that the system does not attempt to draw a 
  1582.  check mark. 
  1583.  
  1584.  In the same example, if fsAttribute and fsAttributeOld are not equal, the 
  1585.  highlight showing that an item is selected needs to change.  The MIA_HILITED 
  1586.  bit of the fsAttribute field is set if the item needs to be highlighted and is 
  1587.  not set if the highlight needs to be removed.  If you do not want to provide 
  1588.  your own highlighting, you should ignore any WM_DRAWITEM message in which 
  1589.  fsAttribute and fsAttributeOld are not equal.  If you do not alter these two 
  1590.  fields, the system performs its default highlighting operation.  If you want 
  1591.  to provide your own visual cue that an item is selected, respond to a 
  1592.  WM_DRAWITEM message in which the fsAttribute and fsAttributeOld fields are not 
  1593.  equal by providing the cue and clearing the MIA_HILITED bit of both fields 
  1594.  before returning from the message. 
  1595.  
  1596.  Likewise, the MIA_CHECKED and MIA_FRAMED bits of fsAttribute and 
  1597.  fsAttributeOld either can be used to perform the corresponding action or 
  1598.  passed on, unchanged, so that the system performs the action. The following 
  1599.  code fragment shows how to respond to a WM_DRAWITEM message when you want to 
  1600.  draw the item and also be responsible for its highlighted state. 
  1601.  
  1602.  
  1603.       case WM_DRAWITEM:
  1604.           {
  1605.           POWNERITEM poi;
  1606.           RECTL      rcl;
  1607.           MPARAM     mp2;
  1608.  
  1609.           poi = (POWNERITEM) mp2;
  1610.  
  1611.           /*
  1612.            * If the new attribute equals the old attribute,
  1613.            * redraw the entire item.
  1614.            */
  1615.  
  1616.           if (poi->fsAttribute == poi->fsAttributeOld) {
  1617.  
  1618.               /*
  1619.                * Draw the item in poi->hps and poi->rclItem, and check the
  1620.                * attributes for check marks. If you produce your own check marks,
  1621.                * use this line of code:
  1622.                *
  1623.                *     poi->fsAttributeOld = (poi->fsAttribute &= ~MIA_CHECKED;
  1624.                */
  1625.  
  1626.           }
  1627.  
  1628.           /* Else highlight the item or remove its highlight. */
  1629.  
  1630.           else if ((poi->fsAttribute & MIA_HILITED) !=
  1631.                   (poi->fsAttributeOld & MIA_HILITED)) {
  1632.  
  1633.               /*
  1634.                * Set bits the same so that the menu window does not highlight
  1635.                * the item or remove its highlight.
  1636.                */
  1637.  
  1638.               poi->fsAttributeOld = (poi->fsAttribute &= ~MIA_HILITED);
  1639.           }
  1640.           return TRUE; /* TRUE means the item is drawn. */
  1641.           } /* endcase */
  1642.  
  1643.  Responding to WM_DRAWITEM Message 
  1644.  
  1645.  
  1646. ΓòÉΓòÉΓòÉ 4. Messages and Message Queues ΓòÉΓòÉΓòÉ
  1647.  
  1648. The OS/2 operating system uses messages and message queues to communicate with 
  1649. applications and the windows belonging to those applications.  This chapter 
  1650. explains how to create and use messages and message queues in PM applications. 
  1651.  
  1652.  
  1653. ΓòÉΓòÉΓòÉ 4.1. About Messages and Message Queues ΓòÉΓòÉΓòÉ
  1654.  
  1655. Unlike traditional applications that take complete control of the computer's 
  1656. keyboard, mouse, and screen, PM applications must share these resources with 
  1657. other applications that are running at the same time.  All applications run 
  1658. independently and rely on the operating system to help them manage shared 
  1659. resources.  The operating system does this by controlling the operation of each 
  1660. application, communicating with each application when there is keyboard or 
  1661. mouse input or when an application must move and size its windows. 
  1662.  
  1663.  
  1664. ΓòÉΓòÉΓòÉ 4.1.1. Messages ΓòÉΓòÉΓòÉ
  1665.  
  1666. A message is information, a request for information, or a request for an action 
  1667. to be carried out by a window in an application. 
  1668.  
  1669. The operating system, or an application, sends or posts a message to a window 
  1670. so that the window can use the information or respond to the request. 
  1671.  
  1672. There are three types of messages: 
  1673.  
  1674.      User-initiated 
  1675.      Application-initiated 
  1676.      System-initiated 
  1677.  
  1678.  A user-initiated message is the direct result of a user action, such as 
  1679.  selecting a menu item or pressing a key.  An application-initiated message is 
  1680.  generated by one window in the application to communicate with another window. 
  1681.  System-initiated messages are generated by the interface as the indirect 
  1682.  result of a user action (for example, resizing a window) or as the direct 
  1683.  result of a system event (such as creating a window). 
  1684.  
  1685.  A message that requires an immediate response from a window is sent directly 
  1686.  to the window by passing the message data as arguments to the window 
  1687.  procedure.  The window procedure carries out the request or lets the operating 
  1688.  system carry out default processing for the message. 
  1689.  
  1690.  A message that does not require an immediate response from a window is posted 
  1691.  (the message data is copied) to the application's message queue.  The message 
  1692.  queue is a storage area that the application creates to receive and hold its 
  1693.  posted messages.  Then, the application can retrieve a message at the 
  1694.  appropriate time, sending it to the addressed window for processing. 
  1695.  
  1696.  Every message contains a message identifier, which is a 16-bit integer that 
  1697.  indicates the purpose of the message.  When a window processes a message, it 
  1698.  uses the message identifier to determine what to do. 
  1699.  
  1700.  Every message contains a window handle, which identifies the window the 
  1701.  message is for.  The window handle is important because most message queues 
  1702.  and window procedures serve more than one window.  The window handle ensures 
  1703.  that the application forwards the message to the proper window. 
  1704.  
  1705.  A message contains two message parameters-32-bit values that specify data or 
  1706.  the location of data that a window uses when processing the message.  The 
  1707.  meaning and value of a message parameter depend on the message.  A message 
  1708.  parameter can contain an integer, packed bit flags, a pointer to a structure 
  1709.  that contains additional data, and so forth.  Some messages do not use message 
  1710.  parameters and, typically, set the parameters to NULL.  An application always 
  1711.  checks the message identifier to determine how to interpret the message 
  1712.  parameters. 
  1713.  
  1714.  A queue message is a QMSG data structure that contains six data items, 
  1715.  representing the window handle, message identifier, two message parameters, 
  1716.  message time, and mouse-pointer position.  The time and position are included 
  1717.  because most queue messages are input messages, representing keyboard or mouse 
  1718.  input from the user.  The time and position also help the application identify 
  1719.  the context of the message.  The operating system posts a queue message by 
  1720.  filling the QMSG structure and copying it to a message queue. 
  1721.  
  1722.  A window message consists of the window handle, the message identifier, and 
  1723.  two message parameters.  A window message does not include the message time 
  1724.  and mouse-pointer position, because most window messages are requests to 
  1725.  perform a task that is not related to the current time or mouse-pointer 
  1726.  position.  The operating system sends a window message by passing these 
  1727.  values, as individual arguments, to a window procedure. 
  1728.  
  1729.  
  1730. ΓòÉΓòÉΓòÉ 4.1.2. Message Queues ΓòÉΓòÉΓòÉ
  1731.  
  1732. Every PM application must have a message queue. A message queue is the only 
  1733. means an application has to receive input from the keyboard or mouse.  Only 
  1734. applications that create message queues can create windows. 
  1735.  
  1736. An application creates a message queue by using the WinCreateMsgQueue function. 
  1737. This function returns a handle that the application can use to access the 
  1738. message queue.  After an application creates a message queue, the system posts 
  1739. messages intended for windows in the application to that queue.  The 
  1740. application can retrieve queue messages by specifying the message-queue handle 
  1741. in the WinGetMsg function. It also can examine messages, without retrieving 
  1742. them, by using the WinPeekMsg function. When an application no longer needs the 
  1743. message queue, it can destroy the queue by using the WinDestroyMsgQueue 
  1744. function. 
  1745.  
  1746. One message queue serves all the windows in a thread. This means a queue can 
  1747. hold messages for several windows. A message specifies the handle of the window 
  1748. to which it belongs so the application can forward a message easily to the 
  1749. appropriate window. The message loop recognizes a NULL window handle and the 
  1750. message is processed within the message loop rather than passed to 
  1751. WinDispatchMessage. See the following figure for an example of an input-message 
  1752. processing loop. 
  1753.  
  1754. An application that has more than one thread can create more than one message 
  1755. queue.  The system allows one message queue for each thread.  A message queue 
  1756. created by a thread belongs to that thread and has no connection to other 
  1757. queues in the application.  When an application creates a window in a given 
  1758. thread, the system associates the window with the message queue in that thread. 
  1759. The system then posts all subsequent messages intended for that window to that 
  1760. queue. 
  1761.  
  1762. Note:  The recommended way to structure PM applications is to have at least two 
  1763.        threads and two message queues.  The first thread and message queue 
  1764.        control all the user-interface windows, and the second thread and 
  1765.        message queue control all the object windows. 
  1766.  
  1767.  Several windows can use one message queue; it is important that the message 
  1768.  queue be large enough to hold all messages that possibly can be posted to it. 
  1769.  An application can set the size of the message queue when it creates the queue 
  1770.  by specifying the maximum number of messages the queue can hold.  The default 
  1771.  maximum number of messages is 10. 
  1772.  
  1773.  To minimize queue size, several types of posted messages are not actually 
  1774.  stored in a message queue.  Instead, the operating system keeps a record in 
  1775.  the queue of the message being posted and combines any information contained 
  1776.  in the message with information from previous messages.  Timer, semaphore, and 
  1777.  paint messages are handled this way.  For example, if more than one WM_PAINT 
  1778.  message is posted, the operating system combines the update regions for each 
  1779.  into a single update region.  Although there is no actual WM_PAINT message in 
  1780.  the queue, the operating system constructs one WM_PAINT message with the 
  1781.  single update region when an application uses the WinGetMsg function. 
  1782.  
  1783.  The operating system handles mouse and keyboard input messages differently 
  1784.  from the way it handles other types of messages.  The operating system 
  1785.  receives all keyboard and mouse events, such as keystrokes and mouse 
  1786.  movements, into the system message queue.  The operating system converts these 
  1787.  events into messages and posts them, one at a time, to the appropriate 
  1788.  application message queue.  The application retrieves the messages from its 
  1789.  queue and dispatches them to the appropriate window, which processes the 
  1790.  messages. 
  1791.  
  1792.  The operating system message queue usually is large enough to hold all input 
  1793.  messages, even if the user types or moves the mouse very quickly.  If the 
  1794.  operating system message queue does run out of space, the system ignores the 
  1795.  most recent keyboard input (usually by beeping to indicate the input is 
  1796.  ignored) and collects mouse motions into a WM_MOUSEMOVE message. 
  1797.  
  1798.  Every message queue has a corresponding MQINFO data structure that specifies 
  1799.  the identifiers of the process and thread that own the message queue and gives 
  1800.  a count of the maximum number of messages the queue can receive.  An 
  1801.  application can retrieve the structure by using the WinQueryQueueInfo 
  1802.  function. 
  1803.  
  1804.  A message queue also has a current status that indicates the types of messages 
  1805.  currently in the queue.  An application can retrieve the queue status by using 
  1806.  the WinQueryQueueStatus function.  An application also can use the WinPeekMsg 
  1807.  function to examine the contents of a message queue.  WinPeekMsg checks for a 
  1808.  specific message or range of messages in the queue and gives the application 
  1809.  the option of removing messages from the queue.  An application can call the 
  1810.  WinQueryQueueStatus function to determine the contents of the queue before 
  1811.  calling the WinPeekMsg or WinGetMsg function to remove a message from the 
  1812.  queue. 
  1813.  
  1814.  
  1815. ΓòÉΓòÉΓòÉ 4.1.3. Message Handling ΓòÉΓòÉΓòÉ
  1816.  
  1817. To handle and process messages, an application can use a message loop and the 
  1818. window procedure. These terms are explained in the following two sections. 
  1819.  
  1820.  
  1821. ΓòÉΓòÉΓòÉ 4.1.3.1. Message Loops ΓòÉΓòÉΓòÉ
  1822.  
  1823. Every application with a message queue is responsible for retrieving the 
  1824. messages from that queue.  An application can do this by using a message loop, 
  1825. usually in the application's main function, that retrieves messages from the 
  1826. message queue and dispatches them to the appropriate windows.  The message loop 
  1827. consists of two calls: one to the WinGetMsg function; the other to the 
  1828. WinDispatchMsg function.  The message loop has the following form: 
  1829.  
  1830.     HAB hab;
  1831.     QMSG qmsg;
  1832.  
  1833.     while (WinGetMsg(hab, &qmsg, NULL, 0, 0))
  1834.         WinDispatchMsg(hab, &qmsg);
  1835.  
  1836. An application starts the message loop after creating the message queue and at 
  1837. least one application window.  Once started, the message loop continues to 
  1838. retrieve messages from the message queue and to dispatch (send) them to the 
  1839. appropriate windows.  WinDispatchMsg sends each message to the window specified 
  1840. by the window handle in the message. 
  1841.  
  1842. The following figure illustrates the typical routing of an input message 
  1843. through the operating system's and application's message loops. 
  1844.  
  1845.             Mouse ΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇ Keystrokes
  1846.                         
  1847.                    ΓöîΓöÇΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÉ
  1848.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ System
  1849.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Event (time ordered)
  1850.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Queue
  1851.                    ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ
  1852.                        Γöé
  1853.                        
  1854.                   ΓöîΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÉ
  1855.                   Γöé Input  Γöé Scancode
  1856.            ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Router Γöé Translation
  1857.            Γöé      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1858.            
  1859.    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1860.    Γöé Message      Γöé Accelerator
  1861.    Γöé Preprocessor Γöé Key Translation
  1862.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1863.  ΓöîΓöÇ  ΓöÇΓöÇ  ΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÉ
  1864.        ΓöîΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÉ
  1865.  Γöé     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Appl    Priority         Γöé
  1866.        Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ MssgQ   Ordered
  1867.  Γöé     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ                          Γöé
  1868.        ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ
  1869.  Γöé         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                     Γöé
  1870.                     
  1871.  Γöé          ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇWinGetMsgQ          Γöé
  1872.                         WinDispatchMsg
  1873.  Γöé          Γöé               Γöé             Γöé
  1874.     App's   Γöé               
  1875.  Γöé  Message Γöé         Window Procedure    Γöé
  1876.     Loop    Γöé               Γöé
  1877.  Γöé          Γöé                            Γöé
  1878.             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇreturn;
  1879.  ΓööΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÿ
  1880.  
  1881. Input Message Processing Loop Only one message loop is needed for a message 
  1882. queue, even if the queue contains messages for more than one window. Each queue 
  1883. message is a QMSG structure that contains the handle of the window to which the 
  1884. message belongs.  WinDispatchMsg always dispatches the message to the proper 
  1885. window.  WinGetMsg retrieves messages from the queue in first-in, first-out 
  1886. (FIFO) order, so the messages are dispatched to windows in the same order they 
  1887. are received. 
  1888.  
  1889. If there are no messages in the queue, the operating system temporarily stops 
  1890. processing the WinGetMsg function until a message arrives.  This means that 
  1891. processor time that, otherwise, would be spent waiting for a message can be 
  1892. given to the applications (or threads) that do have messages in their queues. 
  1893.  
  1894. The message loop continues to retrieve and dispatch messages until WinGetMsg 
  1895. retrieves a WM_QUIT message.  This message causes the function to return FALSE, 
  1896. terminating the loop.  In most cases, terminating the message loop is the first 
  1897. step in terminating the application.  An application can terminate its own loop 
  1898. by posting the WM_QUIT message in its own queue. 
  1899.  
  1900. An application can modify its message loop in a variety of ways.  For example, 
  1901. it can retrieve messages from the queue without dispatching them to a window. 
  1902. This is useful for applications that post messages without specifying a window. 
  1903. (These messages apply to the application rather than a specific window; they 
  1904. have NULL window handles.)  Also, an application can direct the WinGetMsg 
  1905. function to search for specific messages, leaving other messages in the queue. 
  1906. This is useful for applications that temporarily need to bypass the usual FIFO 
  1907. order of the message queue. 
  1908.  
  1909.  
  1910. ΓòÉΓòÉΓòÉ 4.1.3.2. Window Procedures ΓòÉΓòÉΓòÉ
  1911.  
  1912. A window procedure is a function that receives and processes all input and 
  1913. requests for action sent to the windows.  Every window class has a window 
  1914. procedure; every window created using that class uses that window procedure to 
  1915. respond to messages. 
  1916.  
  1917. The system sends a message to the window procedure by passing the message data 
  1918. as arguments.  The window procedure takes the appropriate action for the given 
  1919. message.  Most window procedures check the message identifier, then use the 
  1920. information specified by the message parameters to carry out the request.  When 
  1921. it has completed processing the message, the window procedure returns a message 
  1922. result.  Each message has a particular set of possible return values.  The 
  1923. window procedure must return the appropriate value for the processing it 
  1924. performed. 
  1925.  
  1926. A window procedure cannot ignore a message.  If it does not process a message, 
  1927. it must pass the message back to the operating system for default processing. 
  1928. The window procedure does this by calling the WinDefWindowProc function to 
  1929. carry out a default action and return the message result.  Then, the window 
  1930. procedure must return this value as its own message result. 
  1931.  
  1932. A window procedure commonly processes messages for several windows.  It uses 
  1933. the window handle specified in the message to identify the appropriate window. 
  1934. Most window procedures process just a few types of messages and pass the others 
  1935. on to the operating system by calling WinDefWindowProc. 
  1936.  
  1937.  
  1938. ΓòÉΓòÉΓòÉ 4.1.4. Posting and Sending Messages ΓòÉΓòÉΓòÉ
  1939.  
  1940. Any application can post and send messages.  Like the operating system, an 
  1941. application posts a message by copying it to a message queue.  It sends a 
  1942. message by passing the message data as arguments to a window procedure.  To 
  1943. post and send messages, an application uses the WinPostMsg and WinSendMsg 
  1944. functions. 
  1945.  
  1946. An application posts a message to notify a specific window to perform a task. 
  1947. The WinPostMsg function creates a QMSG structure for the message and copies the 
  1948. message to the message queue corresponding to the given window.  The 
  1949. application's message loop eventually retrieves the message and dispatches it 
  1950. to the appropriate window procedure.  For example, one message commonly posted 
  1951. is WM_QUIT.  This message terminates the application by terminating the message 
  1952. loop. 
  1953.  
  1954. An application sends a message to cause a specific window procedure to carry 
  1955. out a task immediately.  The WinSendMsg function passes the message to the 
  1956. window procedure corresponding to the given window.  The function waits until 
  1957. the window procedure completes processing and then returns the message result. 
  1958. Parent and child windows often communicate by sending messages to each other. 
  1959. For example, a parent window that has an entry-field control as its child 
  1960. window can set the text of the control by sending a message to the child 
  1961. window.  The control can notify the parent window of changes to the text 
  1962. (carried out by the user) by sending messages back to the parent window. 
  1963.  
  1964. Occasionally, an application might need to send or post a message to all 
  1965. windows in the system.  For example, if the application changes a system value, 
  1966. it must notify all windows about the change by sending a WM_SYSVALUECHANGED 
  1967. message.  An application can send or post messages to any number of windows by 
  1968. using the WinBroadcastMsg function.  The options in WinBroadcastMsg determine 
  1969. whether the message is sent or posted and specify the windows that will receive 
  1970. the message. 
  1971.  
  1972. Any thread in the application can post a message to a message queue, even if 
  1973. the thread has no message queue of its own.  However, only a thread that has a 
  1974. message queue can send a message.  Sending a message between threads is 
  1975. relatively uncommon.  For one reason, sending a message is costly in terms of 
  1976. system performance.  If an application posts a message between threads, it is 
  1977. likely to be a semaphore message, which permits window procedures to manage a 
  1978. shared resource jointly. 
  1979.  
  1980. An application can post a message without specifying a window.  If the 
  1981. application supplies a NULL window handle when it calls the WinPostMsg 
  1982. function, the function posts the message to the queue associated with the 
  1983. current thread.  The application must process the message in the message loop. 
  1984. This is one way to create a message that applies to the entire application 
  1985. instead of to a specific window. 
  1986.  
  1987. A window procedure can determine whether it is processing a message sent by 
  1988. another thread by using the WinInSendMsg function.  This is useful when message 
  1989. processing depends on the origin of the message. 
  1990.  
  1991. A common programming error is to assume that the WinPostMsg function always 
  1992. succeeds.  It fails when the message queue is full.  An application should 
  1993. check the return value of the WinPostMsg function to see whether the message 
  1994. was posted.  In general, if an application intends to post many messages to the 
  1995. queue, it should set the message queue to an appropriate size when it creates 
  1996. the queue.  The default message-queue size is 10 messages. 
  1997.  
  1998.  
  1999. ΓòÉΓòÉΓòÉ 4.1.5. Message Types ΓòÉΓòÉΓòÉ
  2000.  
  2001. This section describes the three types of OS/2 messages: 
  2002.  
  2003.      System-defined 
  2004.      Application-defined 
  2005.      Semaphore 
  2006.  
  2007.  
  2008. ΓòÉΓòÉΓòÉ 4.1.5.1. System-Defined Messages ΓòÉΓòÉΓòÉ
  2009.  
  2010. There are many system-defined messages that are used to control the operations 
  2011. of applications and to provide input and other information for applications to 
  2012. process.  The system sends or posts a system-defined message when it 
  2013. communicates with an application.  An application also can send or post 
  2014. system-defined messages.  Usually, applications use these messages to control 
  2015. the operation of control windows created by using preregistered window classes. 
  2016.  
  2017. Each system message has a unique message identifier and a corresponding 
  2018. symbolic constant.  The symbolic constant, defined in the system header files, 
  2019. states the purpose of the message.  For example, the WM_PAINT constant 
  2020. represents the paint message, which requests that a window paint its contents. 
  2021.  
  2022. The symbolic constants also specify the message category.  System-defined 
  2023. messages can belong to several categories; the prefix identifies the type of 
  2024. window that can interpret and process the messages.  The following table lists 
  2025. the prefixes and their related message categories: 
  2026.  
  2027. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2028. ΓöéPrefix         ΓöéMessage category                             Γöé
  2029. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2030. ΓöéBKM_           ΓöéNotebook control                             Γöé
  2031. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2032. ΓöéBM_            ΓöéButton control                               Γöé
  2033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2034. ΓöéCBM_           ΓöéCombination-box control                      Γöé
  2035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2036. ΓöéCM_            ΓöéContainer control                            Γöé
  2037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2038. ΓöéEM_            ΓöéEntry-field control                          Γöé
  2039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2040. ΓöéLM_            ΓöéList-box control                             Γöé
  2041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2042. ΓöéMLM_           ΓöéMultiple-line entry field control            Γöé
  2043. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2044. ΓöéMM_            ΓöéMenu control                                 Γöé
  2045. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2046. ΓöéSBM_           ΓöéScroll-bar control                           Γöé
  2047. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2048. ΓöéSLM_           ΓöéSlider control                               Γöé
  2049. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2050. ΓöéSM_            ΓöéStatic control                               Γöé
  2051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2052. ΓöéTBM_           ΓöéTitle-bar control                            Γöé
  2053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2054. ΓöéVM_            ΓöéValue set control                            Γöé
  2055. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2056. ΓöéWM_            ΓöéGeneral window                               Γöé
  2057. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2058.  
  2059. General window messages cover a wide range of information and requests, 
  2060. including: 
  2061.  
  2062.      Mouse and keyboard-input 
  2063.      Menu- and dialog-input 
  2064.      Window creation and management 
  2065.      Dynamic data exchange (DDE) 
  2066.  
  2067.  
  2068. ΓòÉΓòÉΓòÉ 4.1.5.2. Application-Defined Messages ΓòÉΓòÉΓòÉ
  2069.  
  2070. An application can create messages to use in its own windows.  If an 
  2071. application does create messages, the window procedure that receives the 
  2072. messages must interpret them and provide the appropriate processing. 
  2073.  
  2074. The operating system reserves the message-identifier values in the range 0x0000 
  2075. through 0x0FFF (the value of WM_USER - 1) for system-defined messages. 
  2076. Applications cannot use these values for their private messages. 
  2077.  
  2078. In addition, the operating system uses certain message values higher than 
  2079. WM_USER. Applications should not use these message values. A partial listing of 
  2080. these messages is in the following figure: 
  2081.  
  2082. From PMSTDDLG.H:
  2083.  
  2084. #define FDM_FILTER       WM_USER+40
  2085. #define FDM_VALIDATE     WM_USER+41
  2086. #define FDM_ERROR        WM_USER+42
  2087.  
  2088. #define FNTM_FACENAMECHANGED   WM_USER+50
  2089. #define FNTM_POINTSIZECHANGED  WM_USER+51
  2090. #define FNTM_STYLECHANGED      WM_USER+52
  2091. #define FNTM_COLORCHANGED      WM_USER+53
  2092. #define FNTM_UPDATEPREVIEW     WM_USER+54
  2093. #define FNTM_FILTERLIST        WM_USER+55
  2094.  
  2095. You should scan your header files to see if other messages have been defined 
  2096. with values higher than WM_USER. 
  2097.  
  2098. Aside from the message values used by the operating system, values in the range 
  2099. 0x1000 (the value of WM_USER) through 0xBFFF are available for message 
  2100. identifiers, defined by an application, for use in that application. 
  2101.  
  2102. Warning: It is very important that applications do not broadcast messages in 
  2103. the 0x1000 through 0xBFFF range due to the risk of misinterpretation by other 
  2104. applications. 
  2105.  
  2106. Values in the range 0xC000 through 0xFFFF are reserved for message identifiers 
  2107. that an application defines and registers with the system atom table; these can 
  2108. be used in any application. Values above 0xFFFF (0x00010000 through 0xFFFFFFFF) 
  2109. are reserved for future use; applications must not use messages in this range. 
  2110.  
  2111.  
  2112. ΓòÉΓòÉΓòÉ 4.1.5.3. Semaphore Messages ΓòÉΓòÉΓòÉ
  2113.  
  2114. A semaphore message provides a way of signaling, through the message queue, the 
  2115. end of an event.  An application uses a semaphore message the same way it uses 
  2116. system semaphore functions-to coordinate events by passing signals.  A 
  2117. semaphore message often is used in conjunction with system semaphores. 
  2118.  
  2119. There are four semaphore messages: 
  2120.  
  2121.       WM_SEM1 
  2122.       WM_SEM2 
  2123.       WM_SEM3 
  2124.       WM_SEM4. 
  2125.  
  2126.  An application posts one of these messages to signal the end of a given event. 
  2127.  The window that is waiting for the given event receives the semaphore message 
  2128.  when the message loop retrieves and dispatches the message. 
  2129.  
  2130.  Each semaphore message includes a bit flag that an application can use to 
  2131.  uniquely identify the 32 possible semaphores for each semaphore message.  The 
  2132.  application passes the bit flag (with the appropriate bit set) as a message 
  2133.  parameter with the message.  The window procedure that receives the message 
  2134.  then uses the bit flag to identify the semaphore. 
  2135.  
  2136.  To save space, the system does not store semaphore messages in the message 
  2137.  queue.  Instead, it sets a record in the queue, indicating that the semaphore 
  2138.  message has been received, and then combines the bit flag for the message with 
  2139.  the bit flags from previous messages.  When the window procedure eventually 
  2140.  receives the message, the bit flag specifies each semaphore message posted 
  2141.  since the last message was retrieved. 
  2142.  
  2143.  
  2144. ΓòÉΓòÉΓòÉ 4.1.6. Message Priorities ΓòÉΓòÉΓòÉ
  2145.  
  2146. The WinGetMsg function retrieves messages from the message queue based on 
  2147. message priority.  WinGetMsg retrieves messages with higher priority first.  If 
  2148. it finds more than one message at a particular priority level, it retrieves the 
  2149. oldest message first.  Messages have the following priorities: 
  2150.  
  2151. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2152. ΓöéPriority       ΓöéMessage                                      Γöé
  2153. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2154. Γöé1              ΓöéWM_SEM1                                      Γöé
  2155. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2156. Γöé2              ΓöéMessages posted using WinPostMsg             Γöé
  2157. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2158. Γöé3              ΓöéInput messages from the keyboard or mouse    Γöé
  2159. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2160. Γöé4              ΓöéWM_SEM2                                      Γöé
  2161. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2162. Γöé5              ΓöéWM_PAINT                                     Γöé
  2163. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2164. Γöé6              ΓöéWM_SEM3                                      Γöé
  2165. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2166. Γöé7              ΓöéWM_TIMER                                     Γöé
  2167. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2168. Γöé8              ΓöéWM_SEM4                                      Γöé
  2169. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2170.  
  2171.  
  2172. ΓòÉΓòÉΓòÉ 4.1.7. Message Filtering ΓòÉΓòÉΓòÉ
  2173.  
  2174. An application can choose specific messages to retrieve from the message queue 
  2175. (and ignore other messages) by specifying a message filter with the WinGetMsg 
  2176. or WinPeekMsg functions.  The message filter is a range of message identifiers 
  2177. (specified by a first and last identifier), a window handle, or both.  The 
  2178. WinGetMsg and WinPeekMsg functions use the message filter to select the 
  2179. messages to retrieve from the queue.  Message filtering is useful if an 
  2180. application needs to search ahead in the message queue for messages that have a 
  2181. lower priority or that arrived in the queue later than other less important 
  2182. messages. 
  2183.  
  2184. Any application that filters messages must ensure that a message satisfying the 
  2185. message filter can be posted.  For example, filtering for a WM_CHAR message in 
  2186. a window that does not receive keyboard input prevents the WinGetMsg function 
  2187. from returning.  Some messages, such as WM_COMMAND, are generated from other 
  2188. messages; filtering for them also can prevent WinGetMsg from returning. 
  2189.  
  2190. To filter for mouse, button, and DDE messages, an application can use the 
  2191. following constants: 
  2192.  
  2193.       WM_MOUSEFIRST and WM_MOUSELAST 
  2194.       WM_BUTTONCLICKFIRST and WM_BUTTONCLICKLAST 
  2195.       WM_DDE_FIRST and WM_DDE_LAST. 
  2196.  
  2197.  
  2198. ΓòÉΓòÉΓòÉ 4.2. Using Messages ΓòÉΓòÉΓòÉ
  2199.  
  2200. This section explains how to perform the following tasks: 
  2201.  
  2202.      Create a message queue and message loop 
  2203.      Examine the message queue 
  2204.      Post and send messages between windows 
  2205.      Broadcast a message to multiple windows 
  2206.      Use message macros 
  2207.  
  2208.  
  2209. ΓòÉΓòÉΓòÉ 4.2.1. Creating a Message Queue and Message Loop ΓòÉΓòÉΓòÉ
  2210.  
  2211. An application needs a message queue and message loop to process messages for 
  2212. its windows.  An application creates a message queue by using the 
  2213. WinCreateMsgQueue function.  An application creates a message loop by using the 
  2214. WinGetMsg and WinDispatchMsg functions.  The application must create and show 
  2215. at least one window after creating the queue but before starting the message 
  2216. loop. The following code fragment shows how to create a message queue and 
  2217. message loop: 
  2218.  
  2219.     MRESULT EXPENTRY ClientWndProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2);
  2220.  
  2221.     HAB hab;
  2222.  
  2223.     int main(VOID)
  2224.     {
  2225.         HMQ hmq;
  2226.         QMSG qmsg;
  2227.         HWND hwndFrame, hwndClient;
  2228.         ULONG flFrameFlags = FCF_TITLEBAR      | FCF_SYSMENU |
  2229.                              FCF_SIZEBORDER    | FCF_MINMAX  |
  2230.                              FCF_SHELLPOSITION | FCF_TASKLIST;
  2231.  
  2232.                                                /* Initialize the application for
  2233.                                          Presentation Manager interface.      */
  2234.  
  2235.         hab = WinInitialize(0);
  2236.  
  2237.                                                /* Create the application
  2238.                                                message queue.                 */
  2239.         hmq = WinCreateMsgQueue(hab, 0);
  2240.  
  2241.                                                /* Register the window class for your
  2242.                                                client window.                 */
  2243.         WinRegisterClass(hab,                  /* Anchor block handle         */
  2244.                          "MyClientClass",      /* Class name                  */
  2245.                          (PFNWP) ClientWndProc,/* Window procedure            */
  2246.                          CS_SIZEREDRAW,        /* Class style                 */
  2247.                          0);                   /* Extra bytes to reserve      */
  2248.  
  2249.                                                /* Create a main window.       */
  2250.         hwndFrame = WinCreateStdWindow(
  2251.                         HWND_DESKTOP,          /* Parent window handle        */
  2252.                         WS_VISIBLE,            /* Style of frame window       */
  2253.                         &flFrameFlags,         /* Frame controls              */
  2254.                         "MyClientClass",       /* Window class for client     */
  2255.                         (PSZ) NULL,            /* No title-bar text           */
  2256.                         WS_VISIBLE,            /* Style of client window      */
  2257.                         (HMODULE) NULL,        /* Module handle for resources */
  2258.                         0,                     /* No resource identifier      */
  2259.                         &hwndClient);          /* Pointer to client handle    */
  2260.  
  2261.                                                /* Start the message loop.     */
  2262.         while (WinGetMsg(hab, &qmsg, (HWND) NULL, 0, 0))
  2263.             WinDispatchMsg(hab, &qmsg);
  2264.  
  2265.                                                /*. Destroy the main window.   */
  2266.         WinDestroyWindow(hwndFrame);
  2267.  
  2268.                                                /* Destroy the message queue.  */
  2269.         WinDestroyMsgQueue(hmq);
  2270.  
  2271.                                                /* Terminate the application.  */
  2272.         WinTerminate(hab);
  2273.     }
  2274.  
  2275. Both the WinGetMsg and WinDispatchMsg functions take a pointer to a QMSG 
  2276. structure as a parameter.  If a message is available, WinGetMsg copies it to 
  2277. the QMSG structure; WinDispatchMsg then uses the data in the structure as 
  2278. arguments for the window procedure. 
  2279.  
  2280. Occasionally, an application might need to process a message before dispatching 
  2281. it.  For example, if a message is posted but the destination window is not 
  2282. specified (that is, the message contains a NULL window handle), the application 
  2283. must process the message to determine which window should receive the message. 
  2284. Then the WinDispatchMsg function can forward the message to the proper window. 
  2285. The following code fragment shows how the message loop can process messages 
  2286. that have NULL window handles: 
  2287.  
  2288.  
  2289.     HAB hab;
  2290.     QMSG qmsg;
  2291.  
  2292.     while (WinGetMsg (hab, &qmsg, (HWND) NULL, 0, 0)) {
  2293.         if (qmsg.hwnd == NULL) {
  2294.             .
  2295.             . /* Process the message. */
  2296.             .
  2297.         }
  2298.         else
  2299.             WinDispatchMsg (hab, &qmsg);
  2300.         }
  2301.  
  2302.  
  2303. ΓòÉΓòÉΓòÉ 4.2.2. Examining the Message Queue ΓòÉΓòÉΓòÉ
  2304.  
  2305. An application can examine the contents of the message queue by using the 
  2306. WinPeekMsg or WinQueryQueueStatus function.  It is useful to examine the queue 
  2307. if the application starts a lengthy operation that additional user input might 
  2308. affect, or if the application needs to look ahead in the queue to anticipate a 
  2309. response to user input. 
  2310.  
  2311. An application can use WinPeekMsg to check for specific messages in the message 
  2312. queue.  This function is useful for extracting messages for a specific window 
  2313. from the queue.  It returns immediately if there is no message in the queue. 
  2314. An application can use WinPeekMsg in a loop without requiring the loop to wait 
  2315. for a message to arrive.  The following code fragment checks the queue for 
  2316. WM_CHAR messages: 
  2317.  
  2318.     HAB hab;
  2319.     QMSG qmsg;
  2320.  
  2321.     if (WinPeekMsg(hab, &qmsg, (HWND) NULL, WM_CHAR, WM_CHAR, PM_NOREMOVE)){
  2322.               .
  2323.               . /* Process the message. */
  2324.               .
  2325.     }
  2326.  
  2327. An application also can use the WinQueryQueueStatus function to check for 
  2328. messages in the queue.  This function is very fast and returns information 
  2329. about the kinds of messages available in the queue and which messages have been 
  2330. posted recently.  Most applications use this function in message loops that 
  2331. need to be as fast as possible. 
  2332.  
  2333.  
  2334. ΓòÉΓòÉΓòÉ 4.2.3. Posting a Message to a Window ΓòÉΓòÉΓòÉ
  2335.  
  2336. An application can use the WinPostMsg function to post a message to a window. 
  2337. The message goes to the window's message queue.  The following code fragment 
  2338. posts the WM_QUIT message. 
  2339.  
  2340.     HWND hwnd;
  2341.  
  2342.     if (!WinPostMsg(hwnd, WM_QUIT, NULL, NULL)){
  2343.  
  2344.         /* Message was not posted. */
  2345.     }
  2346.  
  2347. The WinPostMsg function returns FALSE if the queue is full, and the message 
  2348. cannot be posted. 
  2349.  
  2350.  
  2351. ΓòÉΓòÉΓòÉ 4.2.4. Sending a Message to a Window ΓòÉΓòÉΓòÉ
  2352.  
  2353. An application can use the WinSendMsg function to send a message directly to a 
  2354. window.  An application uses this function to send messages to child windows. 
  2355. For example, the following code fragment sends an LM_INSERTITEM message to 
  2356. direct a list-box control to add an item to the end of its list: 
  2357.  
  2358.     HWND hwndListBox;
  2359.     static CHAR szWeekday[] = "Tuesday";
  2360.  
  2361.     WinSendMsg(hwndListBox,
  2362.                LM_INSERTITEM,
  2363.                (MPARAM)LIT_END,
  2364.                MPFROMP(szWeekday));
  2365.  
  2366. WinSendMsg calls the window's window procedure and waits for it to handle the 
  2367. message and return a result.  An application can send a message to any window 
  2368. in the system, as long as the application has the handle of the target window. 
  2369. The message queue does not store the message; however, the thread making the 
  2370. call must have a message queue. 
  2371.  
  2372.  
  2373. ΓòÉΓòÉΓòÉ 4.2.5. Broadcasting a Message ΓòÉΓòÉΓòÉ
  2374.  
  2375. An application can send a message to multiple windows by using the 
  2376. WinBroadcastMsg function.  Often this function is used to broadcast the 
  2377. WM_SYSVALUECHANGED message after an application changes a system value.  The 
  2378. following code fragment shows how to broadcast this message to all frame 
  2379. windows in all applications: 
  2380.  
  2381.     HWND hwnd;
  2382.  
  2383.     WinBroadcastMsg(
  2384.         hwnd,                                /* Window handle         */
  2385.         WM_SYSVALUECHANGED,                  /* Message identifier    */
  2386.         NULL,                                /* No message parameters */
  2387.         NULL,
  2388.         BMSG_FRAMEONLY | BMSG_POSTQUEUE);    /* All frame windows     */
  2389.  
  2390. An application can broadcast messages to all windows, just frame windows, or 
  2391. just the windows in the application. 
  2392.  
  2393.  
  2394. ΓòÉΓòÉΓòÉ 4.2.6. Using Message Macros ΓòÉΓòÉΓòÉ
  2395.  
  2396. The system header files define several macros that help create and interpret 
  2397. message parameters. 
  2398.  
  2399. One set of macros helps you construct message parameters.  These macros are 
  2400. useful for sending and posting messages.  For example, the following code 
  2401. fragment uses the MPFROMSHORT macro to convert a 16-bit integer into the 32-bit 
  2402. message parameter: 
  2403.  
  2404.  
  2405.     HWND hwndButton;
  2406.  
  2407.     WinSendMsg(hwndButton, BM_SETCHECK, MPFROMSHORT(1), NULL);
  2408.  
  2409. A second set of macros helps you extract values from a message parameter. 
  2410. These macros are useful for handling messages in a window procedure.  The 
  2411. following code fragment determines whether the window receiving the 
  2412. WM_FOCUSCHANGE message is gaining or losing the keyboard focus.  The fragment 
  2413. uses the SHORT1FROMMP macro to extract the focus-change flag, the SHORT2FROMMP 
  2414. macro to extract the focus flag, and the HWNDFROMMP macro to extract the window 
  2415. handle. 
  2416.  
  2417.     USHORT fsFocusChange;
  2418.     MPARAM mp1, mp2;
  2419.     HWND hwndGainFocus;
  2420.  
  2421.  
  2422.     case WM_FOCUSCHANGE:
  2423.         fsFocusChange = SHORT2FROMMP(mp2);    /* Gets focus-change flags  */
  2424.         if (SHORT1FROMMP(mp2))                /* Gaining or losing focus? */
  2425.             hwndGainFocus = HWNDFROMMP(mp1);
  2426.  
  2427. A third set of macros helps you construct a message result.  These macros are 
  2428. useful for returning message results in a window procedure, as the following 
  2429. code fragment illustrates: 
  2430.  
  2431.     return (MRFROM2SHORT(1, 2));
  2432.  
  2433.  
  2434. ΓòÉΓòÉΓòÉ 5. Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
  2435.  
  2436. A multiple-line entry (MLE) field is a sophisticated control window that 
  2437. enables a user to view and edit multiple lines of text. This chapter describes 
  2438. how to create and use multiple-line entry field controls in PM applications. 
  2439.  
  2440.  
  2441. ΓòÉΓòÉΓòÉ 5.1. About Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
  2442.  
  2443. An MLE field control gives an application the text-editing capabilities of a 
  2444. simple text editor. The application can create a multiple-line entry field by 
  2445. using WinCreateWindow or by specifying the MLE statement in a dialog-window 
  2446. template in a resource-definition file. 
  2447.  
  2448.  
  2449. ΓòÉΓòÉΓòÉ 5.1.1. MLE Styles ΓòÉΓòÉΓòÉ
  2450.  
  2451. The style of an MLE field control determines how the MLE field appears and 
  2452. behaves. An application can specify a combination of the following styles for 
  2453. an MLE field: 
  2454.  
  2455. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2456. ΓöéStyle Name          ΓöéDescription                             Γöé
  2457. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2458. ΓöéMLS_BORDER          ΓöéDraws a border around the MLE field.    Γöé
  2459. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2460. ΓöéMLS_DISABLEUNDO     ΓöéDirects the MLE control not to allow    Γöé
  2461. Γöé                    Γöéundo actions.                           Γöé
  2462. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2463. ΓöéMLS_HSCROLL         ΓöéAdds a horizontal scroll bar to the MLE Γöé
  2464. Γöé                    Γöéfield. The MLE control enables this     Γöé
  2465. Γöé                    Γöéscroll bar whenever any line exceeds theΓöé
  2466. Γöé                    Γöéwidth of the MLE field.                 Γöé
  2467. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2468. ΓöéMLS_IGNORETAB       ΓöéDirects the MLE control to ignore the   Γöé
  2469. Γöé                    ΓöéTab key.                                Γöé
  2470. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2471. ΓöéMLS_READONLY        ΓöéPrevents the MLE field from accepting   Γöé
  2472. Γöé                    Γöétext from the user. This style is usefulΓöé
  2473. Γöé                    Γöéfor displaying lengthy static text in a Γöé
  2474. Γöé                    Γöéclient or dialog window.                Γöé
  2475. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2476. ΓöéMLS_VSCROLL         ΓöéAdds a vertical scroll bar to the MLE   Γöé
  2477. Γöé                    Γöéfield. The MLE control enables this     Γöé
  2478. Γöé                    Γöéscroll bar whenever the number of lines Γöé
  2479. Γöé                    Γöéexceeds the height of the MLE field.    Γöé
  2480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2481. ΓöéMLS_WORDWRAP        ΓöéAutomatically breaks lines that are     Γöé
  2482. Γöé                    Γöélonger than the width of the MLE field. Γöé
  2483. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2484.  
  2485.  
  2486. ΓòÉΓòÉΓòÉ 5.1.2. MLE Notification Codes ΓòÉΓòÉΓòÉ
  2487.  
  2488. An MLE field control sends WM_CONTROL messages containing notification codes to 
  2489. its owner whenever certain events occur, for example, when the user or 
  2490. application tries to insert too much text, or when the user uses the scroll 
  2491. bars. The owner window uses the notification codes either to carry out custom 
  2492. operations for the MLE field or to respond to errors. 
  2493.  
  2494. The MLE field control sends the MLN_HSCROLL or MLN_VSCROLL notification codes 
  2495. when the user enables the scroll bars so that the application can monitor the 
  2496. visible contents of the MLE field. The application also can monitor the 
  2497. contents of an MLE field by using the MLM_QUERYFIRSTCHAR message, which 
  2498. specifies the offset of the character in the upper-left corner of the MLE 
  2499. field. This represents the first MLE character that is visible to the user. To 
  2500. provide an alternative way of scrolling the contents of an MLE field, an 
  2501. application can move the character at the specified offset to the upper-left 
  2502. corner of an MLE field using the MLM_SETFIRSTCHAR message. 
  2503.  
  2504. The MLE field control sends an MLN_CHANGE notification code when the user 
  2505. changes the text in some way. This notification code is especially useful when 
  2506. the MLE field is in a dialog window, because the dialog procedure can use this 
  2507. code to determine whether it should process the contents of the MLE field. If 
  2508. an application does not process MLN_CHANGE notification codes, it can use the 
  2509. MLM_QUERYCHANGED message to determine whether the user has made changes to the 
  2510. MLE text. The MLM_SETCHANGED message makes the MLE field control send an 
  2511. MLN_CHANGE notification code with every event that occurs in the MLE field, 
  2512. regardless of whether the user has changed anything. This code also can be used 
  2513. to hide a change made by a user. 
  2514.  
  2515.  
  2516. ΓòÉΓòÉΓòÉ 5.1.3. MLE Text Editing ΓòÉΓòÉΓòÉ
  2517.  
  2518. An MLE field contains one or more lines of text. Each line consists of one or 
  2519. more characters and ends with one or more characters that represent the end of 
  2520. the line. The end-of-line characters are determined by the format of the text. 
  2521.  
  2522. The user can type text in an MLE field when the MLE field has the focus. The 
  2523. application can insert text at any time by using the MLM_INSERT message and 
  2524. specifying the text as a null-terminated string. The MLE field control inserts 
  2525. the text at the cursor position or replaces the selected text. 
  2526.  
  2527. The MLE field control entry mode, insert or overstrike, determines what happens 
  2528. when the user inserts text. The user sets the entry mode by pressing the Insert 
  2529. key. The entry mode alternates each time the user presses Insert. When 
  2530. overstrike mode is enabled, at least one character is selected. This means that 
  2531. the MLM_INSERT message always replaces at least one character. If insert mode 
  2532. is enabled, the MLM_INSERT message replaces only those characters the user or 
  2533. application has selected. Otherwise, the MLE field makes room for the inserted 
  2534. characters by moving existing characters to the right, starting at the cursor 
  2535. position. 
  2536.  
  2537. The cursor position, identified by a blinking bar, is specified as a character 
  2538. offset relative to the beginning of the text. The user can set the cursor 
  2539. position by using the mouse or Arrow keys to move the blinking bar. An 
  2540. application can set the cursor position by using the MLM_SETSEL message, which 
  2541. directs the MLE field control to move the blinking bar to a given character 
  2542. position. The MLM_SETSEL message also can set the selection. 
  2543.  
  2544. The selection is one or more characters of text on which the MLE field control 
  2545. carries out an operation, such as deleting or copying. The user selects text by 
  2546. pressing the Shift key while moving the cursor or by pressing mouse button 1 
  2547. while moving the mouse. The user also can select a word in a block of text by 
  2548. double-clicking on the word. An application selects text by using the 
  2549. MLM_SETSEL message to specify the cursor position and the anchor point. The 
  2550. selection is all the text between the cursor position and the anchor point. If 
  2551. the cursor position and anchor point are equal, there is no selection. An 
  2552. application can retrieve the cursor position, anchor point, or both, by using 
  2553. the MLM_QUERYSEL message. 
  2554.  
  2555. The user can delete characters, one at a time, by pressing the Delete key or 
  2556. the Backspace key. Pressing the Delete key deletes the character to the right 
  2557. of the cursor; pressing the Backspace key deletes the character to the left of 
  2558. the cursor and changes the cursor position. An application can delete one or 
  2559. more characters by using the MLM_DELETE message, which directs the MLE field 
  2560. control to delete a specified number of characters, starting at the given 
  2561. position. This message does not change the cursor position. An application can 
  2562. delete selected text by using the MLM_CLEAR message. 
  2563.  
  2564. An application can reverse the previous operation by using the MLM_UNDO 
  2565. message, which restores the MLE field to its previous state. This is a quick 
  2566. way to fix editing mistakes. However, not all operations can be undone. 
  2567.  
  2568. The application determines whether the previous operation can be undone by 
  2569. using the MLM_QUERYUNDO message, which returns TRUE and indicates the type of 
  2570. operation that can be undone. Using the MLM_RESETUNDO message, an application 
  2571. can prevent a subsequent MLM_UNDO message from changing the state of an MLE 
  2572. field. 
  2573.  
  2574.  
  2575. ΓòÉΓòÉΓòÉ 5.1.4. MLE Text Formatting ΓòÉΓòÉΓòÉ
  2576.  
  2577. An application can retrieve the number of lines of text in an MLE field by 
  2578. using the MLM_QUERYLINECOUNT message and can retrieve the number of characters 
  2579. in the MLE field by using the MLM_QUERYTEXTLENGTH message. The amount of text 
  2580. and, subsequently, the number of lines to be entered in an MLE field depend on 
  2581. the text limit. An application sets the text limit by using the 
  2582. MLM_SETTEXTLIMIT message and determines the current limit by using the 
  2583. MLM_QUERYTEXTLIMIT message. The user cannot set the text limit.  If the user 
  2584. types to the text limit, the MLE field control beeps and ignores any subsequent 
  2585. keystrokes. If the application attempts to add text beyond the limit, the MLE 
  2586. field control truncates the text. 
  2587.  
  2588. An application can control the length of each line in an MLE field by enabling 
  2589. word wrapping. When word wrapping is enabled, the MLE field control 
  2590. automatically breaks any line that is longer than the width of the MLE field. 
  2591. An application can set word wrapping by using the MLM_SETWRAP message, and it 
  2592. can determine whether the MLE field control is wrapping text by using the 
  2593. MLM_QUERYWRAP message. Word wrapping is disabled by default unless the 
  2594. application specifies the MLS_WORDWRAP style when creating the MLE field 
  2595. control. 
  2596.  
  2597. An application can set tab stops for an MLE control by using the MLM_SETTABSTOP 
  2598. message. Tab stops specify the maximum width of a tab character. When the user 
  2599. or an application inserts a tab character, the MLE field control expands the 
  2600. character so that it fills the space between the cursor position and the next 
  2601. tab stop. The MLM_SETTABSTOP message sets the distance (in pels) between tab 
  2602. stops, and the MLE field control provides as many tab stops as necessary, no 
  2603. matter how long the line gets. An application can retrieve the distance between 
  2604. tab stops using the MLM_QUERYTABSTOP message. 
  2605.  
  2606. An application can use the MLM_SETFORMATRECT message to set the format 
  2607. rectangle (MLE field). The format rectangle is used to set the horizontal and 
  2608. vertical limits for text. The MLE control sends a notification message to the 
  2609. parent window of the MLE field if text exceeds either of those limits. An 
  2610. application typically uses the format rectangle to provide its own word 
  2611. wrapping or other special text processing. An application can retrieve the 
  2612. current format rectangle by using the MLM_QUERYFORMATRECT message. 
  2613.  
  2614. An application can prevent the user's editing of the MLE field by setting the 
  2615. MLS_READONLY style in WinCreateWindow or in the MLE statement in the 
  2616. resource-definition file. The application also can set and query the read-only 
  2617. state by using the MLM_SETREADONLY and MLM_QUERYREADONLY messages, 
  2618. respectively. 
  2619.  
  2620. An application can set the colors and font for an MLE field by using the 
  2621. MLM_SETTEXTCOLOR, MLM_SETBACKCOLOR, and MLM_SETFONT messages. These messages 
  2622. affect all text in the MLE field. An MLE field cannot contain a mixture of 
  2623. fonts and colors. An application can retrieve the current values for the colors 
  2624. and font by using the MLM_QUERYTEXTCOLOR, MLM_QUERYBACKCOLOR, and MLM_QUERYFONT 
  2625. messages. 
  2626.  
  2627. To prevent scrolling within the MLE when the MLS_READONLY style bit is set, use 
  2628. the MLM_DISABLEREFRESH message. The keyboard and mouse input can be enabled 
  2629. using the MLM_ENABLEREFRESH message. 
  2630.  
  2631.  
  2632. ΓòÉΓòÉΓòÉ 5.1.5. MLE Text Import and Export Operations ΓòÉΓòÉΓòÉ
  2633.  
  2634. An application can copy text to and from an MLE field by importing and 
  2635. exporting. To import text to an MLE field, an application can use the 
  2636. MLM_IMPORT message, which copies text from a buffer to the MLE field. To export 
  2637. text from an MLE field, the application can use the MLM_EXPORT message, which 
  2638. copies text from the MLE field to a buffer. The application uses the 
  2639. MLM_SETIMPORTEXPORT message to set the import and export buffers. 
  2640.  
  2641. An application can import and export text in a variety of formats. A text 
  2642. format, set with the MLM_FORMAT message, identifies which characters are used 
  2643. for the end-of-line characters. An MLE field can have the following text 
  2644. formats: 
  2645.  
  2646. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2647. ΓöéFormat Name         ΓöéDescription                             Γöé
  2648. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2649. ΓöéMLFIE_CFTEXT        ΓöéExported lines end with a carriage      Γöé
  2650. Γöé                    Γöéreturn/newline character pair (0x0D,    Γöé
  2651. Γöé                    Γöé0x0A). Imported lines must end with a   Γöé
  2652. Γöé                    Γöénewline character, carriage             Γöé
  2653. Γöé                    Γöéreturn/newline character pair, or       Γöé
  2654. Γöé                    Γöénewline/carriage return character pair. Γöé
  2655. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2656. ΓöéMLFIE_NOTRANS       ΓöéImported and exported lines end with a  Γöé
  2657. Γöé                    Γöénewline character (0x0A).               Γöé
  2658. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2659. ΓöéMLFIE_WINFMT        ΓöéFor exported lines, the carriage        Γöé
  2660. Γöé                    Γöéreturn/newline character pair marks a   Γöé
  2661. Γöé                    Γöéhard linebreak (a break entered by the  Γöé
  2662. Γöé                    Γöéuser). Two carriage-return characters   Γöé
  2663. Γöé                    Γöéand a newline character (0x0D, 0x0D,    Γöé
  2664. Γöé                    Γöé0x0A) mark a soft linebreak (a break    Γöé
  2665. Γöé                    Γöéinserted during word wrapping and not   Γöé
  2666. Γöé                    Γöéentered by the user). For imported      Γöé
  2667. Γöé                    Γöélines, the extra carriage-return in softΓöé
  2668. Γöé                    Γöélinebreak characters is ignored.        Γöé
  2669. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2670.  
  2671. The text format can affect the number of characters in a selection. To ensure 
  2672. that the export buffer is large enough to hold exported text, an application 
  2673. can send the MLM_QUERYFORMATLINELENGTH message. The application can send the 
  2674. MLM_QUERYFORMATTEXTLENGTH message to determine the number of bytes in the text 
  2675. to be exported. 
  2676.  
  2677. Each time an application inserts text in an MLE field, the MLE field control 
  2678. automatically refreshes (repaints) the display by drawing the new text. When an 
  2679. application copies large amounts of text to an MLE field, refreshing can be 
  2680. quite time-consuming, so the application should disable the refresh state. The 
  2681. application disables the refresh state by sending the MLM_DISABLEREFRESH 
  2682. message. After copying all the text, the application can restore the refresh 
  2683. state by sending the MLM_ENABLEREFRESH message. 
  2684.  
  2685.  
  2686. ΓòÉΓòÉΓòÉ 5.1.6. MLE Cut, Copy, and Paste Operations ΓòÉΓòÉΓòÉ
  2687.  
  2688. The user can cut, copy, and paste text in an MLE field by using the 
  2689. Shift+Delete, Ctrl+Insert, and Shift+Insert key combinations, respectively. An 
  2690. application-either by itself or in response to the user-can cut, copy, and 
  2691. paste text by using the MLM_CUT, MLM_COPY, and MLM_PASTE messages. The MLM_CUT 
  2692. and MLM_COPY messages copy the selected text to the clipboard. The MLM_CUT 
  2693. message also deletes the text from the MLE field; MLM_COPY does not. The 
  2694. MLM_PASTE message copies the text from the clipboard to the current position in 
  2695. the MLE field, replacing any existing text with the copied text. An application 
  2696. can delete the selected text without copying it to the clipboard by using the 
  2697. MLM_CLEAR message. 
  2698.  
  2699. An application also can copy the selected text from an MLE field to a buffer by 
  2700. using the MLM_QUERYSELTEXT message. This message does not affect the contents 
  2701. of the clipboard. 
  2702.  
  2703.  
  2704. ΓòÉΓòÉΓòÉ 5.1.7. MLE Search and Replace Operations ΓòÉΓòÉΓòÉ
  2705.  
  2706. An application can search for a specified string within MLE field text by using 
  2707. the MLM_SEARCH message, which searches for the string. The MLE field control 
  2708. returns TRUE if the string is found. The cursor does not move to the string 
  2709. unless the message specifies the MLFSEARCH_SELECTMATCH option. 
  2710.  
  2711. An application also can use the MLM_SEARCH message to replace one string with 
  2712. another. If the message specifies the MLFSEARCH_CHANGEALL option, the MLE field 
  2713. control replaces all occurrences of the search string with the replacement 
  2714. string. Both the search string and the replacement string must be specified in 
  2715. an MLE_SEARCHDATA data structure passed with the message. 
  2716.  
  2717.  
  2718. ΓòÉΓòÉΓòÉ 5.1.8. MLE Colors ΓòÉΓòÉΓòÉ
  2719.  
  2720. MLE supports indexed colors (solid) only; it does not support dithered (RGB) 
  2721. colors. If an RGB color is specified for the MLE, it is changed to the closest 
  2722. solid color representation. 
  2723.  
  2724.  
  2725. ΓòÉΓòÉΓòÉ 5.2. Using Multiple-Line Entry Field Controls ΓòÉΓòÉΓòÉ
  2726.  
  2727. This section explains how to create an MLE field control by using 
  2728. WinCreateWindow and by specifying the MLE statement in a dialog template in a 
  2729. resource-definition file. 
  2730.  
  2731.  
  2732. ΓòÉΓòÉΓòÉ 5.2.1. Creating an MLE ΓòÉΓòÉΓòÉ
  2733.  
  2734. The following sample code fragment shows how to create an MLE by using 
  2735. WinCreateWindow: 
  2736.  
  2737. #define MLE_WINDOW_ID 2
  2738.  
  2739. HWND hwndParent;
  2740. HWND hwndMLE;
  2741.  
  2742. hwndMLE = WinCreateWindow(
  2743.             hwndParent,    /* Parent window     */
  2744.             WC_MLE,        /* Window class      */
  2745.             "Test",        /* Initial text      */
  2746.  
  2747.             WS_VISIBLE |   /* Window style      */
  2748.             MLS_BORDER,    /* Window style      */
  2749.             100, 100,      /* x and y positions */
  2750.             100, 100,      /* Width and height  */
  2751.             hwndParent,    /* Owner window      */
  2752.             HWND_TOP,      /* Top of z-order    */
  2753.             MLE_WINDOW_ID, /* Identifier        */
  2754.             NULL,          /* Control data      */
  2755.             NULL);         /* Presparam         */
  2756.  
  2757. It also is common to create an MLE field control by using an MLE statement in a 
  2758. dialog-window template in a resource file, as shown in the following code 
  2759. fragment: 
  2760.  
  2761. MLE  "",
  2762.      IDD_MLETEXT,
  2763.      110, 10, 50, 100,
  2764.      WS_VISIBLE |
  2765.      MLS_BORDER |
  2766.      MLS_WORDWRAP
  2767.  
  2768. The predefined class for an MLE control is WC_MLE. If you do not specify a 
  2769. style for the MLE control, the default styles used are MLS_BORDER, WS_GROUP, 
  2770. and WS_TABSTOP. 
  2771.  
  2772.  
  2773. ΓòÉΓòÉΓòÉ 5.2.2. Importing and Exporting MLE Text ΓòÉΓòÉΓòÉ
  2774.  
  2775. Importing and exporting MLE text takes place through a buffer. An import 
  2776. operation copies text from the buffer to the MLE field; an export operation 
  2777. copies text from the MLE to the buffer. Before an application can import or 
  2778. export MLE text, it must send an MLM_SETIMPORTEXPORT message to the MLE field 
  2779. control, specifying the address and size of the buffer. 
  2780.  
  2781. The maximum size of import/export buffer is 64K. Once the data is into the 
  2782. buffer, the data is manipulated (verified for carriage returns, line feeds and 
  2783. so forth), and is finally placed in the MLE's memory. 
  2784.  
  2785.  
  2786. ΓòÉΓòÉΓòÉ 5.2.2.1. Importing MLE Text ΓòÉΓòÉΓòÉ
  2787.  
  2788. To import text, an application sends the MLM_IMPORT message to the MLE field 
  2789. control. This message requires two parameters: plOffset and cbCopy. The 
  2790. plOffset parameter is a pointer to a variable that specifies the position in 
  2791. the MLE field where the text from the buffer is to be placed. The position is 
  2792. an offset from the beginning of the MLE text, that is, the number of characters 
  2793. from the beginning of the MLE text. If plOffset points to a variable that 
  2794. equals -1, the MLE field control places the text starting at the current cursor 
  2795. position. On return, this variable contains the offset to the first character 
  2796. beyond the imported text. The cbCopy parameter of the MLM_IMPORT message points 
  2797. to a variable that specifies the number of bytes to import. 
  2798.  
  2799. The following criterias apply when importing MLE text: 
  2800.  
  2801.      If the text ends by a line feed (LF), the import logic generates a blank 
  2802.       line. 
  2803.  
  2804.      If the text ends by a carriage return (CR), MLE prevents a line break 
  2805.       (LB) but flags the condition. 
  2806.  
  2807.      If the plOffset field points to the current cursor position (-1) and the 
  2808.       import text contains a LF: 
  2809.  
  2810.         -  If the MLE text is imported before the text being edited, then the 
  2811.            cursor does not move and the text being edited is shifted down to 
  2812.            make room for the text being imported. 
  2813.  
  2814.         -  If the MLE text is imported after the text being edited, then the 
  2815.            cursor does not move and the text being imported is inserted 
  2816.            starting at the current cursor position. 
  2817.  
  2818.      If the plOffset field points to the current cursor position (-1) and the 
  2819.       import text does not contain a LF: 
  2820.  
  2821.         -  If the MLE text is imported before the text being edited, then the 
  2822.            cursor does not move and the text being edited is shifted to the 
  2823.            right to make room for the text being imported. 
  2824.  
  2825.         -  If the MLE text is imported after the text being edited, then the 
  2826.            cursor does not move and the text being imported is inserted 
  2827.            starting at the current cursor position. 
  2828.  
  2829.  
  2830. ΓòÉΓòÉΓòÉ 5.2.2.2. Exporting MLE Text ΓòÉΓòÉΓòÉ
  2831.  
  2832. Before using the MLM_EXPORT message the number of characters to export needs to 
  2833. be determined. The MLM_QUERYFORMATTEXTLENGTH message is used to determine the 
  2834. number of characters to be copied from the MLE to the buffer (including LF and 
  2835. CR) and to allocate the room in the buffer. MLM_EXPORT is then used to export 
  2836. the MLE text into the buffer. 
  2837.  
  2838. Note:  The MLM_QUERYTEXTLENGTH message does not consider the CR and LF 
  2839.        characters as the MLM_QUERYFORMATTEXTLENGTH message does. 
  2840.  
  2841.  The following code fragment reads text from a file to a buffer, then imports 
  2842.  the text to an MLE field: 
  2843.  
  2844.   HWND  hwndMle;
  2845.   CHAR  szMleBuf[512];
  2846.   IPT   lOffset = 0;
  2847.   PSZ   pszTextFile;
  2848.   HFILE hf;
  2849.   ULONG cbCopied;
  2850.   ULONG ulAction;
  2851.   ULONG cbBytesRead;
  2852.  
  2853.   /* Obtain a file name from the user */
  2854.  
  2855.   /* Open the file */
  2856.   DosOpen(pszTextFile,
  2857.           &hf,
  2858.           &ulAction,
  2859.           0,
  2860.           FILE_NORMAL,
  2861.           FILE_OPEN |
  2862.           FILE_CREATE,
  2863.           OPEN_ACCESS_READONLY |
  2864.           OPEN_SHARE_DENYNONE,
  2865.           NULL);
  2866.  
  2867.   /* Zero-fill the buffer using memset, a C run-time function */
  2868.   memset(szMleBuf, 0, sizeof(szMleBuf));
  2869.  
  2870.   /* Set the MLE import-export buffer */
  2871.   WinSendMsg(hwndMle,
  2872.              MLM_SETIMPORTEXPORT,
  2873.              MPFROMP(szMleBuf),
  2874.              MPFROMSHORT((USHORT) sizeof(szMleBuf)));
  2875.  
  2876.   /**********************************************************************/
  2877.   /*  Read the text from the file to the buffer,                        */
  2878.   /*  then import it to the MLE.                                        */
  2879.   /**********************************************************************/
  2880.  
  2881.   do {
  2882.        DosRead(hf,
  2883.                szMleBuf,
  2884.                sizeof(szMleBuf),
  2885.                &cbBytesRead);
  2886.  
  2887.        cbCopied = (ULONG) WinSendMsg(hwndMle,
  2888.                           MLM_IMPORT,
  2889.                           MPFROMP( &lOffset),
  2890.                           MPFROMP(&cbBytesRead));
  2891.      } while (cbCopied);
  2892.  
  2893.   /* Close the file */
  2894.   DosClose(hf);
  2895.  
  2896.  To export MLE text, an application sends the MLM_EXPORT message to the MLE 
  2897.  control. Like MLM_IMPORT, the MLM_EXPORT message takes the plOffset and cbCopy 
  2898.  parameters. The plOffset parameter is a pointer to a variable that specifies 
  2899.  the offset to the first character to export. A value of -1 specifies the 
  2900.  current cursor position. On return, the variable contains the offset to the 
  2901.  first character in the MLE field not copied to the buffer. The cbCopy 
  2902.  parameter is a pointer to a variable that specifies the number of bytes to 
  2903.  export. On return, this variable equals 0 if the number of characters actually 
  2904.  copied does not exceed the number specified to be copied. The following code 
  2905.  fragment shows how to export text from an MLE field, then store the text in a 
  2906.  file: 
  2907.  
  2908.   HWND  hwndMle;
  2909.   CHAR  szMleBuf[512];
  2910.   IPT   lOffset = 0;
  2911.   PSZ   pszTextFile;
  2912.   HFILE hf;
  2913.  
  2914.   ULONG cbCopied;
  2915.   ULONG ulAction;
  2916.   ULONG cbBytesWritten;
  2917.   ULONG cbCopy;
  2918.  
  2919.   /* Zero-fill the buffer using memset, a C run-time function */
  2920.   memset(szMleBuf, 0, sizeof(szMleBuf));
  2921.  
  2922.   /* Set the MLE import-export buffer */
  2923.   WinSendMsg(hwndMle,
  2924.              MLM_SETIMPORTEXPORT,
  2925.              MPFROMP(szMleBuf),
  2926.              MPFROMSHORT ((USHORT) sizeof(szMleBuf)));
  2927.  
  2928.      .
  2929.      .
  2930.      .
  2931.  
  2932.   /* Obtain a filename from the user */
  2933.      .
  2934.      .
  2935.      .
  2936.  
  2937.   /* Open the file */
  2938.   DosOpen(pszTextFile,
  2939.           &hf,
  2940.           &ulAction,
  2941.           0,
  2942.           FILE_NORMAL,
  2943.           FILE_OPEN |
  2944.           FILE_CREATE,
  2945.           OPEN_ACCESS_WRITEONLY |
  2946.           OPEN_SHARE_DENYNONE,
  2947.           NULL);
  2948.  
  2949.   /* Find out how much text is in the MLE */
  2950.   cbCopy = (ULONG) WinSendMsg(hwndMle,
  2951.                               MLM_QUERYFORMATTEXTLENGTH,
  2952.                               MPFROMLONG(lOffset),
  2953.                               MPFROMLONG((-1)));
  2954.  
  2955.   /* Copy the MLE text to the buffer */
  2956.   cbCopied = (ULONG) WinSendMsg(hwndMle,
  2957.                                 MLM_EXPORT,
  2958.                                 MPFROMP(&lOffset),
  2959.                                 MPFROMP(&cbCopy));
  2960.  
  2961.   /* Write the contents of the buffer to the file */
  2962.   DosWrite(hf,
  2963.            szMleBuf,
  2964.            sizeof(szMleBuf),
  2965.            &cbBytesWritten);
  2966.  
  2967.   /* Close the file */
  2968.   DosClose(hf);
  2969.  
  2970.  
  2971. ΓòÉΓòÉΓòÉ 5.2.3. Searching MLE Text ΓòÉΓòÉΓòÉ
  2972.  
  2973. An application uses the MLM_SEARCH message and the MLE_SEARCHDATA data 
  2974. structure to search for strings in MLE text. The first parameter of the 
  2975. MLM_SEARCH message is an array of flags that specify the style of the search. 
  2976. The application can set the MLFSEARCH_CASESENSITIVE flag if a case-sensitive 
  2977. search is required. If the application sets the MLFSEARCH_SELECTMATCH flag, the 
  2978. MLE field control highlights a matching string and, if necessary, scrolls the 
  2979. string into view. An application can use the MLFSEARCH_CHANGEALL flag to 
  2980. replace every occurrence of the string with the string specified in the 
  2981. pchReplace member of the MLE_SEARCHDATA data structure. 
  2982.  
  2983. The second parameter of the MLM_SEARCH message is a pointer to an 
  2984. MLE_SEARCHDATA data structure that contains information required to perform the 
  2985. search operation. This data structure includes a pointer to the string and, if 
  2986. the MLFSEARCH_CHANGEALL flag is set in the MLM_SEARCH message, a pointer to the 
  2987. replacement string. The iptStart and iptStop members specify the starting and 
  2988. ending positions of the search. These positions are specified as offsets from 
  2989. the beginning of the MLE field. A value of -1 in the iptStart member causes the 
  2990. search to start at the current cursor position. A negative value in the iptStop 
  2991. member causes the search to end at the end of the MLE field. If a matching 
  2992. string is found, the MLE field control returns the length of the string in the 
  2993. cchFound member. 
  2994.  
  2995. The following code fragment uses an entry field to obtain a search string from 
  2996. the user, then searches an MLE field for an occurrence of the string. The 
  2997. search begins at the current cursor position and ends at the end of the MLE 
  2998. text. When the MLFSEARCH_SELECTMATCH flag is specified, the MLE field control 
  2999. highlights a matching string and scrolls it into view. 
  3000.  
  3001. The following code fragment shows how to search MLE text: 
  3002.  
  3003. #define IDD_SEARCHFIELD  101
  3004.  
  3005. HWND hwnd;
  3006. HWND hwndEntryFld;
  3007. HWND hwndMle;
  3008. MLE_SEARCHDATA mlesrch;
  3009. CHAR szSearchString[64];
  3010.  
  3011. /* Obtain the handle of the entry field containing the search string */
  3012. hwndEntryFld = WinWindowFromID(hwnd, IDD_SEARCHFIELD);
  3013.  
  3014. /* Obtain the search string from the entry field */
  3015. WinQueryWindowText(hwndEntryFld,
  3016.                    sizeof(szSearchString),
  3017.                    szSearchString);
  3018.  
  3019. /* Fill the MLE_SEARCHDATA data structure                          */
  3020. mlesrch.cb         = sizeof(mlesrch);  /* Structure size           */
  3021. mlesrch.pchFind    = szSearchString;   /* Search string            */
  3022. mlesrch.pchReplace = NULL;             /* No replacement string    */
  3023. mlesrch.cchFind    = 0;                /* Not used                 */
  3024. mlesrch.cchReplace = 0;                /* Not used                 */
  3025. mlesrch.iptStart   = -1;               /* Start at cursor position */
  3026. mlesrch.iptStop    = -1;               /* Stop at end of file      */
  3027.  
  3028. /* Start the search operation */
  3029. WinSendMsg(hwndMle,
  3030.            MLM_SEARCH,
  3031.            MPFROMLONG(MLFSEARCH_SELECTMATCH),
  3032.            MPFROMP(&mlesrch));
  3033.  
  3034.  
  3035. ΓòÉΓòÉΓòÉ 6. Mouse and Keyboard Input ΓòÉΓòÉΓòÉ
  3036.  
  3037. An OS/2 Presentation Manager application can accept input from both a mouse (or 
  3038. other pointing device) and the keyboard.  This chapter explains how these input 
  3039. events should be received and processed. 
  3040.  
  3041.  
  3042. ΓòÉΓòÉΓòÉ 6.1. About Mouse and Keyboard Input ΓòÉΓòÉΓòÉ
  3043.  
  3044. Only one window at a time can receive keyboard input, and only one window at a 
  3045. time can receive mouse input; but they do not have to be the same window.  All 
  3046. keyboard input goes to the window with the input focus, and, normally, all 
  3047. mouse input goes to the window under the mouse pointer. 
  3048.  
  3049.  
  3050. ΓòÉΓòÉΓòÉ 6.1.1. System Message Queue ΓòÉΓòÉΓòÉ
  3051.  
  3052. The operating system routes all keystrokes and mouse input to the system 
  3053. message queue, converting these input events into messages, and posts them, one 
  3054. at a time, to the proper application-defined message queues.  An application 
  3055. retrieves messages from its queue and dispatches them to the appropriate window 
  3056. procedures, which process the messages. 
  3057.  
  3058. Mouse and keyboard input events in the system message queue are strictly 
  3059. ordered so that a new event cannot be processed until all previous events are 
  3060. fully processed: the system cannot determine the destination window of an input 
  3061. event until then.  For example, if a user types a command in one window, clicks 
  3062. the mouse to activate another window, then types a command in the second 
  3063. window, the destination of the second command depends on how the application 
  3064. handles the mouse click.  The second command would go to the second window only 
  3065. if that window became active as a result of the mouse click. 
  3066.  
  3067. It is important for an application to process all messages quickly to avoid 
  3068. slowing user interaction with the system.  A message must be responded to 
  3069. immediately in the current thread, but the processing it initiates should be 
  3070. done asynchronously in another thread that has no windows in the desktop tree. 
  3071.  
  3072. The OS/2 operating system can display multiple windows belonging to several 
  3073. applications at the same time.  To manage input among these windows, the system 
  3074. uses the concepts of window activation and keyboard focus. 
  3075.  
  3076.  
  3077. ΓòÉΓòÉΓòÉ 6.1.2. Window Activation ΓòÉΓòÉΓòÉ
  3078.  
  3079. Although the operating system can display windows from many different 
  3080. applications simultaneously during a PM session, the user can interact with 
  3081. only one application at a time-the active application.  The other applications 
  3082. continue to run, but they cannot receive user input until they become active. 
  3083.  
  3084. To enable the user to easily identify the active application, the system 
  3085. activates all frames in the tree between HWND_DESKTOP and the window with input 
  3086. focus.  That is, the system positions the active frame window above all other 
  3087. top-level windows on the screen.  If the active window is a standard frame 
  3088. window, the window's title bar and sizing border are highlighted. 
  3089.  
  3090. The user can control which application is active by clicking on a window or by 
  3091. pressing the Alt+Tab or Alt+Esc key combinations.  An application can set the 
  3092. active frame window by calling WinSetActiveWindow; it also can obtain the 
  3093. handle of the active frame window by using WinQueryActiveWindow. 
  3094.  
  3095. When one window is deactivated and another activated, the system sends a 
  3096. WM_ACTIVATE message, first to the window being deactivated, then to the window 
  3097. being activated.  The fActive parameter of the WM_ACTIVATE message is set to 
  3098. FALSE for the window being deactivated and set to TRUE for the window being 
  3099. activated.  An application can use this message to track the activation state 
  3100. of a client window. 
  3101.  
  3102.  
  3103. ΓòÉΓòÉΓòÉ 6.1.3. Keyboard Focus ΓòÉΓòÉΓòÉ
  3104.  
  3105. The keyboard focus is a temporary attribute of a window; the window that has 
  3106. the keyboard focus receives all keyboard input until the focus changes to a 
  3107. different window.  The system converts keyboard input events into WM_CHAR 
  3108. messages and posts them to the message queue of the window that has the 
  3109. keyboard focus. 
  3110.  
  3111. An application can set the keyboard focus to a particular window by calling 
  3112. WinSetFocus.  If the application does not use WinSetFocus to explicitly set the 
  3113. keyboard-focus window, the system sets the focus to the active frame window. 
  3114.  
  3115. The following events occur when an application uses WinSetFocus to shift the 
  3116. keyboard focus from one window (the original window) to another (the new 
  3117. window): 
  3118.  
  3119.    1. The system sends the original window a WM_SETFOCUS message (with the 
  3120.       fFocus parameter set to FALSE), indicating that that window has lost the 
  3121.       keyboard focus. 
  3122.  
  3123.    2. The system then sends the original window a WM_SETSELECTION message, 
  3124.       indicating that the window should remove the highlight from the current 
  3125.       selection. 
  3126.  
  3127.    3. If the original (frame) window is being deactivated, the system sends it 
  3128.       a WM_ACTIVATE message (with the fActive parameter set to FALSE), 
  3129.       indicating that the window is no longer active. 
  3130.  
  3131.    4. The system then sends the new application a WM_ACTIVATE message (with 
  3132.       fActive set to TRUE), indicating that the new application is now active. 
  3133.  
  3134.    5. If the new (main) window is being activated, the system sends it a 
  3135.       WM_ACTIVATE message (with fActive set to TRUE), indicating that the main 
  3136.       window is now active. 
  3137.  
  3138.    6. The system sends the new window a WM_SETSELECTION message, indicating 
  3139.       that the window should highlight the current selection. 
  3140.  
  3141.    7. Finally, the system sends the new window a WM_SETFOCUS message (with 
  3142.       fFocus set to TRUE), indicating that the new window has the keyboard 
  3143.       focus. 
  3144.  
  3145.  If, while processing a WM_SETFOCUS message, an application calls 
  3146.  WinQueryActiveWindow, that function returns the handle of the 
  3147.  previously-active window until the application establishes a new active 
  3148.  window.  Similarly, if the application, while processing WM_SETFOCUS, calls 
  3149.  WinQueryFocus, that function returns the handle of the previous keyboard-focus 
  3150.  window until the application establishes a new keyboard-focus window.  In 
  3151.  other words, even though the system has sent WM_ACTIVATE and WM_SETFOCUS 
  3152.  messages (with the fActive and fFocus parameters set to FALSE) to the previous 
  3153.  windows, those windows are considered the active and focus windows until the 
  3154.  system establishes new active and focus windows. 
  3155.  
  3156.  If the application calls WinSetFocus while processing a WM_ACTIVATE message, 
  3157.  the system does not send a WM_SETFOCUS message (with fFocus set to FALSE), 
  3158.  because no window has the focus. 
  3159.  
  3160.  A client window receives a WM_ACTIVATE message when its parent frame window is 
  3161.  being activated or deactivated.  The activation or deactivation message 
  3162.  usually is followed by a WM_SETFOCUS message that specifies whether the client 
  3163.  window is gaining or losing the keyboard focus.  Therefore, if the client 
  3164.  window needs to change the keyboard focus, it should do so during the 
  3165.  WM_SETFOCUS message, not during the WM_ACTIVATE message. 
  3166.  
  3167.  
  3168. ΓòÉΓòÉΓòÉ 6.1.4. Keyboard Messages ΓòÉΓòÉΓòÉ
  3169.  
  3170. The system sends keyboard input events as WM_CHAR messages to the message queue 
  3171. of the keyboard-focus window.  If no window has the keyboard focus, the system 
  3172. posts WM_CHAR messages to the message queue of the active frame window. 
  3173. Following are two typical situations in which an application receives WM_CHAR 
  3174. messages: 
  3175.  
  3176.       An application has a client window or custom control window, either of 
  3177.       which can have the keyboard focus.  If the window procedure for the 
  3178.       client or control window does not process WM_CHAR messages, it should 
  3179.       pass them to WinDefWindowProc, which will pass them to the owner.  Dialog 
  3180.       control windows, in particular, should pass unprocessed WM_CHAR messages 
  3181.       to the WinDefDlgProc function, because this is how the user interface 
  3182.       implements control processing for the Tab and Arrow keys. 
  3183.  
  3184.       An application window owns a control window whose window procedure can 
  3185.       handle some, but not all, WM_CHAR messages.  This is common in dialog 
  3186.       windows.  If the window procedure of a control in a dialog window cannot 
  3187.       process a WM_CHAR message, the procedure can pass the message to the 
  3188.       WinDefDlgProc function.  This function sends the message to the control 
  3189.       window's owner, which usually is a dialog frame window.  The 
  3190.       application's dialog procedure then receives the WM_CHAR message.  This 
  3191.       also is the case when an application client window owns a control window. 
  3192.  
  3193.  A WM_CHAR message can represent a key-down or key-up transition.  It might 
  3194.  contain a character code, virtual-key code, or scan code.  This message also 
  3195.  contains information about the state of the Shift, Ctrl, and Alt keys. 
  3196.  
  3197.  Each time a user presses a key, at least two WM_CHAR messages are generated: 
  3198.  one when the key is pressed, and one when the key is released.  If the user 
  3199.  holds down the key long enough to trigger the keyboard repeat, multiple 
  3200.  WM_CHAR key-down messages are generated.  If the keyboard repeats faster than 
  3201.  the application can retrieve the input events from its message queue, the 
  3202.  system combines repeating character events into one WM_CHAR message and 
  3203.  increments a count byte that indicates the number of keystrokes represented by 
  3204.  the message.  Generally, this byte is set to 1, but an application should 
  3205.  check each WM_CHAR message to avoid missing any keystrokes. 
  3206.  
  3207.  An application can ignore the repeat count.  For example, an application might 
  3208.  ignore the repeat count on Arrow keys to prevent the cursor from skipping 
  3209.  characters when the system is slow. 
  3210.  
  3211.  
  3212. ΓòÉΓòÉΓòÉ 6.1.4.1. Message Flags ΓòÉΓòÉΓòÉ
  3213.  
  3214. Applications decode WM_CHAR messages by examining individual bits in the flag 
  3215. word contained in the first message parameter (mp1) that the system passes with 
  3216. every WM_CHAR message.  The type of flag word indicates the nature of the 
  3217. message.  The system can set the bits in the flag word in various combinations. 
  3218. For example, a WM_CHAR message can have the KC_CHAR, KC_SCANCODE, and KC_SHIFT 
  3219. attribute bits all set at the same time.  An application can use the following 
  3220. list of flag values to test the flag word and determine the nature of a WM_CHAR 
  3221. message: 
  3222.  
  3223. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3224. ΓöéFlag Name      ΓöéDescription                                  Γöé
  3225. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3226. ΓöéKC_ALT         ΓöéIndicates that the Alt key was down when the Γöé
  3227. Γöé               Γöémessage was generated.                       Γöé
  3228. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3229. ΓöéKC_CHAR        ΓöéIndicates that the message contains a valid  Γöé
  3230. Γöé               Γöécharacter code for a key, typically an ASCII Γöé
  3231. Γöé               Γöécharacter code.                              Γöé
  3232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3233. ΓöéKC_COMPOSITE   ΓöéIn combination with the KC_CHAR flag, this   Γöé
  3234. Γöé               Γöéflag indicates that the character code is a  Γöé
  3235. Γöé               Γöécombination of the key that was pressed and  Γöé
  3236. Γöé               Γöéthe previous dead key.  This flag is used to Γöé
  3237. Γöé               Γöécreate characters with diacritical marks.    Γöé
  3238. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3239. ΓöéKC_CTRL        ΓöéIndicates that the Ctrl key was down when theΓöé
  3240. Γöé               Γöémessage was generated.                       Γöé
  3241. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3242. ΓöéKC_DEADKEY     ΓöéIn combination with the KC_CHAR flag, this   Γöé
  3243. Γöé               Γöéflag indicates that the character code       Γöé
  3244. Γöé               Γöérepresents a dead-key glyph (such as an      Γöé
  3245. Γöé               Γöéaccent).  An application displays the        Γöé
  3246. Γöé               Γöédead-key glyph and does not advance the      Γöé
  3247. Γöé               Γöécursor.  Typically, the next WM_CHAR message Γöé
  3248. Γöé               Γöéis a KC_COMPOSITE message, containing the    Γöé
  3249. Γöé               Γöéglyph associated with the dead key.          Γöé
  3250. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3251. ΓöéKC_INVALIDCHAR ΓöéIndicates that the character is not valid forΓöé
  3252. Γöé               Γöéthe current translation tables.              Γöé
  3253. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3254. ΓöéKC_INVALIDCOMP ΓöéIndicates that the character code is not     Γöé
  3255. Γöé               Γöévalid in combination with the previous dead  Γöé
  3256. Γöé               Γöékey.                                         Γöé
  3257. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3258. ΓöéKC_KEYUP       ΓöéIndicates that the message was generated whenΓöé
  3259. Γöé               Γöéthe user released the key. If this flag is   Γöé
  3260. Γöé               Γöéclear, the message was generated when the    Γöé
  3261. Γöé               Γöéuser pressed the key.  An application can useΓöé
  3262. Γöé               Γöéthis flag to determine key-down and key-up   Γöé
  3263. Γöé               Γöéevents.                                      Γöé
  3264. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3265. ΓöéKC_LONEKEY     ΓöéIn combination with the KC_KEYUP flag, this  Γöé
  3266. Γöé               Γöéflag indicates that the user pressed no otherΓöé
  3267. Γöé               Γöékey while this key was down.                 Γöé
  3268. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3269. ΓöéKC_PREVDOWN    ΓöéIn combination with the KC_VIRTUALKEY flag,  Γöé
  3270. Γöé               Γöéthis flag indicates that the virtual key was Γöé
  3271. Γöé               Γöépressed previously. If this flag is clear,   Γöé
  3272. Γöé               Γöéthe virtual key was not previously pressed.  Γöé
  3273. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3274. ΓöéKC_SCANCODE    ΓöéIndicates that the message contains a valid  Γöé
  3275. Γöé               Γöéscan code generated by the keyboard when the Γöé
  3276. Γöé               Γöéuser pressed the key. The system uses the    Γöé
  3277. Γöé               Γöéscan code to identify the character code in  Γöé
  3278. Γöé               Γöéthe current code page; therefore, most       Γöé
  3279. Γöé               Γöéapplications do not need the scan code unlessΓöé
  3280. Γöé               Γöéthey cannot identify the key that the user   Γöé
  3281. Γöé               Γöépressed. WM_CHAR messages generated by user  Γöé
  3282. Γöé               Γöékeyboard input generally have a valid scan   Γöé
  3283. Γöé               Γöécode, but WM_CHAR messages posted to the     Γöé
  3284. Γöé               Γöéqueue by other applications might not containΓöé
  3285. Γöé               Γöéa scan code.                                 Γöé
  3286. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3287. ΓöéKC_SHIFT       ΓöéIndicates that the Shift key was down when   Γöé
  3288. Γöé               Γöéthe message was generated.                   Γöé
  3289. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3290. ΓöéKC_TOGGLE      ΓöéToggles on and off every time the user       Γöé
  3291. Γöé               Γöépresses a specified key. This is important   Γöé
  3292. Γöé               Γöéfor keys like NumLock, which have an on or   Γöé
  3293. Γöé               Γöéoff state.                                   Γöé
  3294. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3295. ΓöéKC_VIRTUALKEY  ΓöéIndicates that the message contains a valid  Γöé
  3296. Γöé               Γöévirtual-key code for a key. Virtual keys     Γöé
  3297. Γöé               Γöétypically correspond to function keys.       Γöé
  3298. Γöé               ΓöéFor those using hooks, when this bit is set, Γöé
  3299. Γöé               ΓöéKC_SCANCODE should usually be set as well.   Γöé
  3300. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3301.  
  3302. The mp1 and mp2 parameters of the WM_CHAR message contain information 
  3303. describing the nature of a keyboard input event, as follows: 
  3304.  
  3305.      SHORT1FROMMP (mp1) contains the flag word. 
  3306.      CHAR3FROMMP (mp1) contains the key-repeat count. 
  3307.      CHAR4FROMMP (mp1) contains the scan code. 
  3308.      SHORT1FROMMP (mp2) contains the character code. 
  3309.      SHORT2FROMMP (mp2) contains the virtual key code. 
  3310.  
  3311.  An application window procedure should return TRUE if it processes a 
  3312.  particular WM_CHAR message or FALSE if it does not. Typically, applications 
  3313.  respond to key-down events and ignore key-up events. 
  3314.  
  3315.  The following sections describe the different types of WM_CHAR messages. 
  3316.  Generally, an application decodes these messages by creating layers of 
  3317.  conditional statements that discriminate among the different combinations of 
  3318.  flag and code attributes that can occur in a keyboard message. 
  3319.  
  3320.  
  3321. ΓòÉΓòÉΓòÉ 6.1.4.2. Key-Down or Key-Up Events ΓòÉΓòÉΓòÉ
  3322.  
  3323. Typically, the first attribute that an application checks in a WM_CHAR message 
  3324. is the key-down or key-up event.  If the KC_KEYUP bit of the flags word is set, 
  3325. the message is from a key-up event. If the flag is clear, the message is from a 
  3326. key-down event. 
  3327.  
  3328.  
  3329. ΓòÉΓòÉΓòÉ 6.1.4.3. Repeat-Count Events ΓòÉΓòÉΓòÉ
  3330.  
  3331. An application can check the key-repeat count of a WM_CHAR message to determine 
  3332. whether the message represents more than 1 keystroke.  The count is greater 
  3333. than 1 if the keyboard is sending characters to the system queue faster than 
  3334. the application can retrieve them.  If the system queue fills up, the system 
  3335. combines consecutive keyboard input events for each key into a single WM_CHAR 
  3336. message, with the key-repeat count set to the number of combined events. 
  3337.  
  3338.  
  3339. ΓòÉΓòÉΓòÉ 6.1.4.4. Character Codes ΓòÉΓòÉΓòÉ
  3340.  
  3341. The most typical use of WM_CHAR messages is to extract a character code from 
  3342. the message and display the character on the screen.  When the KC_CHAR flag is 
  3343. set in the WM_CHAR message, the low word of mp2 contains a character code based 
  3344. on the current code page.  Generally, this value is a character code 
  3345. (typically, an ASCII code) for the key that was pressed. 
  3346.  
  3347.  
  3348. ΓòÉΓòÉΓòÉ 6.1.4.5. Virtual-Key Codes ΓòÉΓòÉΓòÉ
  3349.  
  3350. WM_CHAR messages often contain virtual-key codes that correspond to various 
  3351. function keys and direction keys on a typical keyboard.  These keys do not 
  3352. correspond to any particular glyph code but are used to initiate operations. 
  3353. When the KC_VIRTUALKEY flag is set in the flag word of a WM_CHAR message, the 
  3354. high word of mp2 contains a virtual-key code for the key. 
  3355.  
  3356. Note:  Some keys, such as the Enter key, have both a valid character code and a 
  3357.        virtual-key code.  WM_CHAR messages for these keys will contain 
  3358.        character codes for both newline characters (ASCII 11) and virtual-key 
  3359.        codes (VK_ENTER). 
  3360.  
  3361.  
  3362. ΓòÉΓòÉΓòÉ 6.1.4.6. Scan Codes ΓòÉΓòÉΓòÉ
  3363.  
  3364. A third possible value in a WM_CHAR message is the scan code of the key that 
  3365. was pressed.  The scan code represents the value that the keyboard hardware 
  3366. generates when the user presses a key.  An application can use the scan code to 
  3367. identify the physical key pressed, as opposed to the character code represented 
  3368. by the same key. 
  3369.  
  3370.  
  3371. ΓòÉΓòÉΓòÉ 6.1.4.7. Accelerator-Table Entries ΓòÉΓòÉΓòÉ
  3372.  
  3373. The system checks all incoming keyboard messages to see whether they match any 
  3374. existing accelerator-table entries (in either the system message queue or the 
  3375. application message queue).  The system first checks the accelerator table 
  3376. associated with the active frame window; if it does not find a match, the 
  3377. system uses the accelerator table associated with the message queues.  If the 
  3378. keyboard input event corresponds to an accelerator-table entry, the system 
  3379. changes the WM_CHAR message to a WM_COMMAND, WM_SYSCOMMAND, or WM_HELP message, 
  3380. depending on the attributes of the accelerator table.  If the keyboard input 
  3381. event does not correspond to an accelerator-table entry, the system passes the 
  3382. WM_CHAR message to the keyboard-focus window. 
  3383.  
  3384. Applications should use accelerator tables to implement keyboard shortcuts 
  3385. rather than translate command keystrokes.  For example, if an application uses 
  3386. the F2 key to save a document, the application should create a keyboard 
  3387. accelerator entry for the F2 virtual key so that, when pressed, the F2 key 
  3388. generates a WM_COMMAND message rather than a WM_CHAR message. 
  3389.  
  3390.  
  3391. ΓòÉΓòÉΓòÉ 6.1.5. Mouse Messages ΓòÉΓòÉΓòÉ
  3392.  
  3393. Mouse messages occur when a user presses or releases one of the mouse buttons 
  3394. (a click) and when the mouse moves.  All mouse messages contain the x and y 
  3395. coordinates of the mouse-pointer hot spot (relative to the coordinates of the 
  3396. window receiving the message) at the time the event occurs.  The mouse-pointer 
  3397. hot spot is the location in the mouse-pointer bit map that the system tracks 
  3398. and recognizes as the position of the mouse pointer. 
  3399.  
  3400. If a window has the CS_HITTEST style, the system sends the window a WM_HITTEST 
  3401. message when the window is about to receive a mouse message.  Most applications 
  3402. pass WM_HITTEST messages on to WinDefWindowProc by default, so disabled windows 
  3403. do not receive mouse messages.  Windows that specifically respond to WM_HITTEST 
  3404. messages can change this default behavior.  If the window is enabled and should 
  3405. receive the mouse message, the WinDefWindowProc function (using the default 
  3406. processing for WM_HITTEST) returns the value HT_NORMAL.  If the window is 
  3407. disabled, WinDefWindowProc returns HT_ERROR, in which case the window does not 
  3408. receive the mouse message. 
  3409.  
  3410. The default window procedure processes the WM_HITTEST message and the usHit 
  3411. parameter in the WM_MOUSEMOVE message.  Therefore, unless an application needs 
  3412. to return special values for the WM_HITTEST message or the usHit parameter, it 
  3413. can ignore them.  One possible reason for processing the WM_HITTEST message is 
  3414. for the application to react differently to a mouse click in a disabled window. 
  3415.  
  3416. The contents of the mouse-message parameters (mp1 and mp2) are as follows: 
  3417.  
  3418.      SHORT1FROMMP (mp1) contains the x position. 
  3419.      SHORT2FROMMP (mp1) contains the y position. 
  3420.      SHORT1FROMMP (mp2) contains the hit-test parameter. 
  3421.  
  3422.  
  3423. ΓòÉΓòÉΓòÉ 6.1.6. Capturing Mouse Input ΓòÉΓòÉΓòÉ
  3424.  
  3425. The operating system generally posts mouse messages to the window that is under 
  3426. the mouse pointer at the time the system reads the mouse input events from the 
  3427. system message queue.  An application can change this by using the 
  3428. WinSetCapture function to route all mouse messages to a specific window or to 
  3429. the message queue associated with the current thread.  If mouse messages are 
  3430. routed to a specific window, that window receives all mouse input until either 
  3431. the window releases the mouse or the application specifies another capture 
  3432. window.  If mouse messages are routed to the current message queue, the system 
  3433. posts each mouse message to the queue with the hwnd member of the QMSG 
  3434. structure for each message set to NULL.  Because no window handle is specified, 
  3435. the WinDispatchMsg function in the application's main message loop cannot pass 
  3436. these messages to a window procedure for processing.  Therefore, the 
  3437. application must process these messages in the main loop. 
  3438.  
  3439. Capturing mouse input is useful if a window needs to receive all mouse input, 
  3440. even when the pointer moves outside the window.  For example, applications 
  3441. commonly track the mouse-pointer position after a mouse "button down" event, 
  3442. following the pointer until a "button up" event is received from the system. 
  3443. If an application does not call WinSetCapture for a window and the user 
  3444. releases the mouse button, the application does not receive the button-up 
  3445. message.  If the application sets a window to capture the mouse and tracks the 
  3446. mouse pointer, the application receives the button-up message even if the user 
  3447. moves the mouse pointer outside the window. 
  3448.  
  3449. Some applications are designed to require a button-up message to match a 
  3450. button-down message.  When processing a button-down message, these applications 
  3451. call WinSetCapture to set the capture to their own window; then, when 
  3452. processing a matching button-up message, they call WinSetCapture, with a NULL 
  3453. window handle, to release the mouse. 
  3454.  
  3455.  
  3456. ΓòÉΓòÉΓòÉ 6.1.6.1. Button Clicks ΓòÉΓòÉΓòÉ
  3457.  
  3458. An application window's response to a mouse click depends on whether the window 
  3459. is active.  The first click in an inactive window should activate the window. 
  3460. Subsequent clicks in the active window produce an application-specific action. 
  3461.  
  3462. A common problem for an application that processes WM_BUTTON1DOWN or similar 
  3463. messages is failing to activate the window or set the keyboard focus.  If the 
  3464. window processes WM_CHAR messages, the window procedure should call WinSetFocus 
  3465. to make sure the window receives the keyboard focus and is activated.  If the 
  3466. window does not process WM_CHAR messages, the application should call 
  3467. WinSetActiveWindow to activate the window. 
  3468.  
  3469.  
  3470. ΓòÉΓòÉΓòÉ 6.1.6.2. Mouse Movement ΓòÉΓòÉΓòÉ
  3471.  
  3472. The system sends WM_MOUSEMOVE messages to the window that is under the mouse 
  3473. pointer, or to the window that currently has captured the mouse, whenever the 
  3474. mouse pointer moves.  This is useful for tracking the mouse pointer and 
  3475. changing its shape, based on its location in a window.  For example, the mouse 
  3476. pointer changes shape when it passes over the size border of a standard frame 
  3477. window. 
  3478.  
  3479. All standard control windows use WM_MOUSEMOVE messages to set the mouse-pointer 
  3480. shape.  If an application handles WM_MOUSEMOVE messages in some situations but 
  3481. not others, unused messages should be passed to the WinDefWindowProc function 
  3482. to change the mouse-pointer shape. 
  3483.  
  3484.  
  3485. ΓòÉΓòÉΓòÉ 6.2. Using the Mouse and Keyboard ΓòÉΓòÉΓòÉ
  3486.  
  3487. This section explains how to perform the following tasks: 
  3488.  
  3489.      Determine the active status of a frame window 
  3490.      Check for a key-up or key-down event 
  3491.      Respond to a character message 
  3492.      Handle virtual-key codes 
  3493.      Handle a scan code 
  3494.  
  3495.  
  3496. ΓòÉΓòÉΓòÉ 6.2.1. Determining the Active Status of a Frame Window ΓòÉΓòÉΓòÉ
  3497.  
  3498. The activated state of a window is a frame-window characteristic.  The system 
  3499. does not provide an easy way to determine whether a client window is part of 
  3500. the active frame window.  That is, the window handle returned by the 
  3501. WinQueryActiveWindow function identifies the active frame window rather than 
  3502. the client window owned by the frame window. 
  3503.  
  3504. Following are two methods for determining the activated state of a frame window 
  3505. that owns a particular client window: 
  3506.  
  3507.      Call WinQueryActiveWindow and compare the window handle it returns with 
  3508.       the handle of the frame window that contains the client window, as shown 
  3509.       in the following code fragment: 
  3510.  
  3511.                 HWND hwndClient;
  3512.                 BOOL fActivated;
  3513.  
  3514.                 fActivated = (WinQueryWindow(hwndClient, QW_PARENT) ==
  3515.                               WinQueryActiveWindow(HWND_DESKTOP));
  3516.  
  3517.      Each time the frame window is activated, the client window receives a 
  3518.       WM_ACTIVATE message with the low word of the mp2 equal to TRUE.  When the 
  3519.       frame window is deactivated, the client window receives a WM_ACTIVATE 
  3520.       message with a FALSE activation indicator. 
  3521.  
  3522.  
  3523. ΓòÉΓòÉΓòÉ 6.2.2. Checking for a Key-Up or Key-Down Event ΓòÉΓòÉΓòÉ
  3524.  
  3525. The following code fragment shows how to decode a WM_CHAR message to determine 
  3526. whether it indicates a key-up event or a key-down event: 
  3527.  
  3528.     USHORT fsKeyFlags;
  3529.  
  3530.     case WM_CHAR:  {
  3531.     USHORT fsKeyFlags = SHORT1FROMMP(mp1);
  3532.  
  3533.     if (fsKeyFlags & KC_KEYUP) {
  3534.          .
  3535.          . /* Perform key-up processing.   */
  3536.          .
  3537.  
  3538.     } else {
  3539.          .
  3540.          . /* Perform key-down processing. */
  3541.          .
  3542.     }
  3543.  
  3544.     return;
  3545.  
  3546.     }
  3547.  
  3548.  
  3549. ΓòÉΓòÉΓòÉ 6.2.3. Responding to a Character Message ΓòÉΓòÉΓòÉ
  3550.  
  3551. The following code fragment shows how to respond to a character message: 
  3552.  
  3553.     USHORT fsKeyFlags;
  3554.     UCHAR  uchChr1;
  3555.  
  3556.     case WM_CHAR:
  3557.     fsKeyFlags = (USHORT) SHORT1FROMMP(mp1);
  3558.  
  3559.     if (fsKeyFlags & KC_CHAR) {
  3560.  
  3561.         /* Get the character code from mp2. */
  3562.         uchChr1 = (UCHAR) CHAR1FROMMP(mp2);
  3563.         .
  3564.         . /* Process the character.         */
  3565.         .
  3566.  
  3567.         return TRUE;
  3568.     }
  3569.  
  3570. If the KC_CHAR flag is not set, the mp2 parameter from CHAR1FROMMP still might 
  3571. contain useful information.  If either the Alt key or the Ctrl key, or both, 
  3572. are down, the KC_CHAR bit is not set when the user presses another key.  For 
  3573. example, if the user presses the a key when the Alt key is down, the low word 
  3574. of mp2 contains the ASCII value for "a" (0x0061), the KC_ALT flag is set, and 
  3575. the KC_CHAR flag is clear.  If the translation does not generate any valid 
  3576. characters, the char field is set to 0. 
  3577.  
  3578.  
  3579. ΓòÉΓòÉΓòÉ 6.2.4. Handling Virtual-Key Codes ΓòÉΓòÉΓòÉ
  3580.  
  3581. The following code fragment shows how to decode a WM_CHAR message containing a 
  3582. valid virtual-key code: 
  3583.  
  3584.     USHORT fsKeyFlags;
  3585.  
  3586.     case WM_CHAR:
  3587.     fsKeyFlags = (USHORT) SHORT1FROMMP(mp1);
  3588.  
  3589.     if (fsKeyFlags & KC_VIRTUALKEY) {
  3590.  
  3591.         /* Get the virtual key from mp2.       */
  3592.         switch (SHORT2FROMMP(mp2)) {
  3593.          case VK_TAB:
  3594.              .
  3595.              . /* Process the TAB key.         */
  3596.              .
  3597.              return TRUE;
  3598.          case VK_LEFT:
  3599.              .
  3600.              . /* Process the LEFT key.        */
  3601.              .
  3602.              return TRUE;
  3603.          case VK_UP:
  3604.              .
  3605.              . /* Process the UP key.          */
  3606.              .
  3607.              return TRUE;
  3608.          case VK_RIGHT:
  3609.              .
  3610.              . /* Process the RIGHT key.       */
  3611.              .
  3612.              return TRUE;
  3613.          case VK_DOWN:
  3614.              .
  3615.              . /* Process the DOWN key.        */
  3616.              .
  3617.              return TRUE;
  3618.            .
  3619.            . /* Etc...                         */
  3620.            .
  3621.            default:
  3622.                return FALSE;
  3623.            }
  3624.        }
  3625.  
  3626.  
  3627. ΓòÉΓòÉΓòÉ 6.2.5. Handling a Scan Code ΓòÉΓòÉΓòÉ
  3628.  
  3629. All WM_CHAR messages generated by keyboard input events have valid scan codes. 
  3630. WM_CHAR messages posted by other applications might or might not have valid 
  3631. scan codes.  The following code fragment shows how to extract a scan code from 
  3632. a WM_CHAR message: 
  3633.  
  3634.     USHORT fsKeyFlags;
  3635.     UCHAR  uchScanCode;
  3636.  
  3637.     case WM_CHAR:
  3638.     fsKeyFlags = (USHORT) SHORT1FROMMP(mp1);
  3639.  
  3640.     if (fsKeyFlags & KC_SCANCODE) {
  3641.  
  3642.         /* Get the scan code from mp1.   */
  3643.         uchScanCode = CHAR4FROMMP(mp1);
  3644.         .
  3645.         . /* Process the scan code.      */
  3646.         .
  3647.  
  3648.         return (MRESULT) TRUE;
  3649.        }
  3650.  
  3651.  
  3652. ΓòÉΓòÉΓòÉ 7. Mouse Pointers and Icons ΓòÉΓòÉΓòÉ
  3653.  
  3654. A mouse pointer is a special bit map the operating system uses to show a user 
  3655. the current location of the mouse on the screen.  When the user moves the 
  3656. mouse, the mouse pointer moves on the screen. This chapter describes how to 
  3657. create and use mouse pointers and icons in PM applications. 
  3658.  
  3659.  
  3660. ΓòÉΓòÉΓòÉ 7.1. About Mouse Pointers and Icons ΓòÉΓòÉΓòÉ
  3661.  
  3662. Mouse pointers and icons are made up of bit maps that the operating system uses 
  3663. to paint images of the pointers or icons on the screen.  A monochrome bit map 
  3664. is a series of bytes.  Each bit corresponds to a single pel in the image.  (The 
  3665. bit map representing the display typically has four bits for each pel.) 
  3666.  
  3667. A mouse pointer or icon bit map always is twice as tall as it is wide.  The top 
  3668. half of the bit map is an AND mask, in which the bits are combined, using the 
  3669. AND operator, with the screen bits where the pointer is being drawn.  The lower 
  3670. half of the bit map is an XOR mask, in which the bits are combined, using the 
  3671. XOR operator, with the destination screen bits. 
  3672.  
  3673. The combination of the AND and XOR masks results in four possible colors in the 
  3674. bit map.  The pels of an icon or pointer can be black, white, transparent (the 
  3675. screen color beneath the pel), or inverted (inverting the screen color beneath 
  3676. the pel). The following figure shows the relationship of the bit values in the 
  3677. AND and XOR masks: 
  3678.  
  3679.     AND mask        0           0           1           1
  3680.     XOR mask        0           1           0           1
  3681.  
  3682.     Result        Black       White     Transparent   Inverted
  3683.  
  3684.  
  3685. ΓòÉΓòÉΓòÉ 7.1.1. Mouse-Pointer Hot Spot ΓòÉΓòÉΓòÉ
  3686.  
  3687. Each mouse pointer has its own hot spot, which is the point that represents the 
  3688. exact location of the mouse pointer. This location is defined as an x and y 
  3689. offset from the lower-left corner of the mouse-pointer bit map. For the 
  3690. arrow-shaped pointer, the hot spot is at the tip of the arrow. For the I-beam 
  3691. pointer, the hot spot is at the middle of the vertical line. 
  3692.  
  3693.  
  3694. ΓòÉΓòÉΓòÉ 7.1.2. Predefined Mouse Pointers ΓòÉΓòÉΓòÉ
  3695.  
  3696. Before an application can use a mouse pointer, it first must receive a handle 
  3697. to the pointer.  Most applications load mouse pointers from the system or from 
  3698. their own resource file.  The operating system maintains many predefined mouse 
  3699. pointers that an application can use by calling WinQuerySysPointer. System 
  3700. mouse pointers include all the standard mouse-pointer shapes and message-box 
  3701. icons.  The following predefined mouse pointers are available: 
  3702.  
  3703. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3704. ΓöéMouse Pointer       ΓöéDescription                             Γöé
  3705. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3706. ΓöéSPTR_APPICON        ΓöéSquare icon; used to represent a        Γöé
  3707. Γöé                    Γöéminimized application window.           Γöé
  3708. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3709. ΓöéSPTR_ARROW          ΓöéArrow that points to the upper-left     Γöé
  3710. Γöé                    Γöécorner of the screen.                   Γöé
  3711. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3712. ΓöéSPTR_ICONERROR      ΓöéIcon containing an exclamation point;   Γöé
  3713. Γöé                    Γöéused in a warning message box.          Γöé
  3714. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3715. ΓöéSPTR_ICONINFORMATIONΓöéOctagon-shaped icon containing the imageΓöé
  3716. Γöé                    Γöéof a human hand; used in a warning      Γöé
  3717. Γöé                    Γöémessage box.                            Γöé
  3718. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3719. ΓöéSPTR_ICONQUESTION   ΓöéIcon containing a question mark; used inΓöé
  3720. Γöé                    Γöéa query message box.                    Γöé
  3721. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3722. ΓöéSPTR_ICONWARNING    ΓöéIcon containing an asterisk; used in a  Γöé
  3723. Γöé                    Γöéwarning message box.                    Γöé
  3724. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3725. ΓöéSPTR_MOVE           ΓöéFour-headed arrow; used when dragging anΓöé
  3726. Γöé                    Γöéobject or window around the screen.     Γöé
  3727. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3728. ΓöéSPTR_SIZE           ΓöéSmall box within a box; used when       Γöé
  3729. Γöé                    Γöéresizing a window by dragging.          Γöé
  3730. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3731. ΓöéSPTR_SIZENS         ΓöéTwo-headed arrow that points up and downΓöé
  3732. Γöé                    Γöé(north and south); used when sizing a   Γöé
  3733. Γöé                    Γöéwindow.                                 Γöé
  3734. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3735. ΓöéSPTR_SIZENESW       ΓöéTwo-headed diagonal arrow that points toΓöé
  3736. Γöé                    Γöéthe upper-right (northeast) and         Γöé
  3737. Γöé                    Γöélower-left (southwest) window borders;  Γöé
  3738. Γöé                    Γöéused when sizing a window.              Γöé
  3739. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3740. ΓöéSPTR_SIZENWSE       ΓöéTwo-headed diagonal arrow that points toΓöé
  3741. Γöé                    Γöéthe upper-left (northwest) and          Γöé
  3742. Γöé                    Γöélower-right (southeast) window borders; Γöé
  3743. Γöé                    Γöéused when sizing a window.              Γöé
  3744. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3745. ΓöéSPTR_SIZEWE         ΓöéTwo-headed arrow that points left and   Γöé
  3746. Γöé                    Γöéright (west to east); used when sizing aΓöé
  3747. Γöé                    Γöéwindow.                                 Γöé
  3748. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3749. ΓöéSPTR_TEXT           ΓöéText-insertion and selection pointer,   Γöé
  3750. Γöé                    Γöéoften called the I-beam pointer.        Γöé
  3751. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3752. ΓöéSPTR_WAIT           ΓöéHourglass; used to indicate that a      Γöé
  3753. Γöé                    Γöétime-consuming operation is in progress.Γöé
  3754. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3755.  
  3756. The operating system contains a second set of predefined mouse pointers that 
  3757. are used as icons in PM applications.  An application can use one of these 
  3758. icons by supplying one of the following constants in WinQuerySysPointer. If a 
  3759. copy of the system pointer is made using WinQuerySysPointer, the pointer copy 
  3760. must be destroyed using WinDestroyPointer before termination of the 
  3761. application. 
  3762.  
  3763. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3764. ΓöéIcon           ΓöéDescription                                  Γöé
  3765. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3766. ΓöéSPTR_FILE      ΓöéRepresents a file (in the shape of a single  Γöé
  3767. Γöé               Γöésheet of paper).                             Γöé
  3768. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3769. ΓöéSPTR_FOLDER    ΓöéRepresents a file folder.                    Γöé
  3770. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3771. ΓöéSPTR_ILLEGAL   ΓöéCircular icon containing a slash; represents Γöé
  3772. Γöé               Γöéan illegal operation.                        Γöé
  3773. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3774. ΓöéSPTR_MULTFILE  ΓöéRepresents multiple files.                   Γöé
  3775. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3776. ΓöéSPTR_PROGRAM   ΓöéRepresents an executable file.               Γöé
  3777. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3778.  
  3779. Applications can use mouse-pointer resources to draw icons. WinDrawPointer 
  3780. draws a specified mouse pointer in a specified presentation space.  Many of the 
  3781. predefined system mouse pointers are standard icons displayed in message boxes. 
  3782.  
  3783. In addition to using the predefined pointer shapes, an application also can use 
  3784. pointers that have been defined in a resource file.  Once the pointer or icon 
  3785. has been created (by Icon Editor or a similar application), the application 
  3786. includes it in the resource file, using the POINTER statement, a resource 
  3787. identifier, and a file name for the Icon Editor data.  After including the 
  3788. mouse-pointer resource, the application can use the pointer or icon by calling 
  3789. WinLoadPointer, specifying the resource identifier and module handle. 
  3790. Typically, the resource is in the executable file of the application, so the 
  3791. application simply can specify NULL for the module handle to indicate the 
  3792. current application resource file. 
  3793.  
  3794. An application can create mouse pointers at run time by constructing a bit map 
  3795. for the pointer and calling WinCreatePointer.  This function, if successful, 
  3796. returns the new pointer handle, which the application then can use to set or 
  3797. draw the pointer.  The bit map must be twice as tall as it is wide, with the 
  3798. first half defining the AND mask and the second half defining the XOR mask. 
  3799. The application also must specify the hot spot when creating the mouse pointer. 
  3800.  
  3801.  
  3802. ΓòÉΓòÉΓòÉ 7.1.3. System Bit Maps ΓòÉΓòÉΓòÉ
  3803.  
  3804. In addition to using the mouse pointers and icons defined by the system, 
  3805. applications can use standard system bit maps by calling WinGetSysBitmap.  This 
  3806. function returns a bit map handle that is passed to WinDrawBitmap or to one of 
  3807. the GPI bit-map functions.  The system uses standard bit maps to draw portions 
  3808. of control windows, such as the system menu, minimize/maximize box, and 
  3809. scroll-bar arrows.  The following standard system bit maps are available: 
  3810.  
  3811. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3812. ΓöéBit Map                  ΓöéDescription                        Γöé
  3813. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3814. ΓöéSBMP_BTNCORNERS          ΓöéSpecifies the bit map for push     Γöé
  3815. Γöé                         Γöébutton corners.                    Γöé
  3816. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3817. ΓöéSBMP_CHECKBOXES          ΓöéSpecifies the bit map for the      Γöé
  3818. Γöé                         Γöécheck-box or radio-button check    Γöé
  3819. Γöé                         Γöémark.                              Γöé
  3820. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3821. ΓöéSBMP_CHILDSYSMENU        ΓöéSpecifies the bit map for the      Γöé
  3822. Γöé                         Γöésmaller version of the system-menu Γöé
  3823. Γöé                         Γöébit map; used in child windows.    Γöé
  3824. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3825. ΓöéSBMP_CHILDSYSMENUDEP     ΓöéSame as SBMP_CHILDSYSMENU but      Γöé
  3826. Γöé                         Γöéindicates that the system menu is  Γöé
  3827. Γöé                         Γöéselected.                          Γöé
  3828. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3829. ΓöéSBMP_COMBODOWN           ΓöéSpecifies the bit map for the      Γöé
  3830. Γöé                         Γöédownward pointing arrow in a       Γöé
  3831. Γöé                         Γöédrop-down combination box.         Γöé
  3832. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3833. ΓöéSBMP_MAXBUTTON           ΓöéSpecifies the bit map for the      Γöé
  3834. Γöé                         Γöémaximize button.                   Γöé
  3835. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3836. ΓöéSBMP_MENUATTACHED        ΓöéSpecifies the bit map for the      Γöé
  3837. Γöé                         Γöésymbol used to indicate that a menuΓöé
  3838. Γöé                         Γöéitem has an attached, hierarchical Γöé
  3839. Γöé                         Γöémenu.                              Γöé
  3840. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3841. ΓöéSBMP_MENUCHECK           ΓöéSpecifies the bit map for the menu Γöé
  3842. Γöé                         Γöécheck mark.                        Γöé
  3843. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3844. ΓöéSBMP_MINBUTTON           ΓöéSpecifies the bit map for the      Γöé
  3845. Γöé                         Γöéminimize button.                   Γöé
  3846. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3847. ΓöéSBMP_OLD_CHILDSYSMENU    ΓöéSame as SBM_CHILDSYSMENU.  (For    Γöé
  3848. Γöé                         Γöécompatibility with previous        Γöé
  3849. Γöé                         Γöéversions of the OS/2 operating     Γöé
  3850. Γöé                         Γöésystem.)                           Γöé
  3851. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3852. ΓöéSBMP_OLD_MAXBUTTON       ΓöéSame as SBM_MAXBUTTON.  (For       Γöé
  3853. Γöé                         Γöécompatibility with previous        Γöé
  3854. Γöé                         Γöéversions of the OS/2 operating     Γöé
  3855. Γöé                         Γöésystem.)                           Γöé
  3856. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3857. ΓöéSBMP_OLD_MINBUTTON       ΓöéSame as SBM_MINBUTTON.  (For       Γöé
  3858. Γöé                         Γöécompatibility with previous        Γöé
  3859. Γöé                         Γöéversions of the OS/2 operating     Γöé
  3860. Γöé                         Γöésystem.)                           Γöé
  3861. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3862. ΓöéSBMP_OLD_RESTOREBUTTON   ΓöéSame as SBM_RESTOREBUTTON.  (For   Γöé
  3863. Γöé                         Γöécompatibility with previous        Γöé
  3864. Γöé                         Γöéversions of the OS/2 operating     Γöé
  3865. Γöé                         Γöésystem.)                           Γöé
  3866. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3867. ΓöéSBMP_OLD_SBDNARROW       ΓöéSame as SBM_SBDNARROW.  (For       Γöé
  3868. Γöé                         Γöécompatibility with previous        Γöé
  3869. Γöé                         Γöéversions of the OS/2 operating     Γöé
  3870. Γöé                         Γöésystem.)                           Γöé
  3871. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3872. ΓöéSBMP_OLD_SBLFARROW       ΓöéSame as SBM_SBLFARROW.  (For       Γöé
  3873. Γöé                         Γöécompatibility with previous        Γöé
  3874. Γöé                         Γöéversions of the OS/2 operating     Γöé
  3875. Γöé                         Γöésystem.)                           Γöé
  3876. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3877. ΓöéSBMP_OLD_SBRGARROW       ΓöéSame as SBM_SBRGARROW.  (For       Γöé
  3878. Γöé                         Γöécompatibility with previous        Γöé
  3879. Γöé                         Γöéversions of the OS/2 operating     Γöé
  3880. Γöé                         Γöésystem.)                           Γöé
  3881. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3882. ΓöéSBMP_OLD_SBUPARROW       ΓöéSame as SBM_SBUPARROW.  (For       Γöé
  3883. Γöé                         Γöécompatibility with previous        Γöé
  3884. Γöé                         Γöéversions of the OS/2 operating     Γöé
  3885. Γöé                         Γöésystem.)                           Γöé
  3886. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3887. ΓöéSBMP_PROGRAM             ΓöéSpecifies the bit map for the      Γöé
  3888. Γöé                         Γöésymbol that File Manager uses to   Γöé
  3889. Γöé                         Γöéindicate that a file is an         Γöé
  3890. Γöé                         Γöéexecutable program.                Γöé
  3891. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3892. ΓöéSBMP_RESTOREBUTTON       ΓöéSpecifies the bit map for the      Γöé
  3893. Γöé                         Γöérestore button.                    Γöé
  3894. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3895. ΓöéSBMP_RESTOREBUTTONDEP    ΓöéSame as SBMP_RESTOREBUTTON but     Γöé
  3896. Γöé                         Γöéindicates that the restore button  Γöé
  3897. Γöé                         Γöéis pressed.                        Γöé
  3898. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3899. ΓöéSBMP_SBDNARROW           ΓöéSpecifies the bit map for the      Γöé
  3900. Γöé                         Γöéscroll-bar down arrow.             Γöé
  3901. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3902. ΓöéSBMP_SBDNARROWDEP        ΓöéSame as SBMP_SBDNARROW but         Γöé
  3903. Γöé                         Γöéindicates that the scroll-bar down Γöé
  3904. Γöé                         Γöéarrow is pressed.                  Γöé
  3905. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3906. ΓöéSBMP_SBDNARROWDIS        ΓöéSame as SBMP_SBDNARROW but         Γöé
  3907. Γöé                         Γöéindicates that the scroll-bar down Γöé
  3908. Γöé                         Γöéarrow is disabled.                 Γöé
  3909. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3910. ΓöéSBMP_SBLFARROW           ΓöéSpecifies the bit map for the      Γöé
  3911. Γöé                         Γöéscroll-bar left arrow.             Γöé
  3912. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3913. ΓöéSBMP_SBLFARROWDEP        ΓöéSame as SBMP_SBLFARROW but         Γöé
  3914. Γöé                         Γöéindicates that the scroll-bar left Γöé
  3915. Γöé                         Γöéarrow is pressed.                  Γöé
  3916. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3917. ΓöéSBMP_SBMFARROWDIS        ΓöéSame as SBMP_SBLFARROW but         Γöé
  3918. Γöé                         Γöéindicates that the scroll-bar left Γöé
  3919. Γöé                         Γöéarrow is disabled.                 Γöé
  3920. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3921. ΓöéSBMP_SBRGARROW           ΓöéSpecifies the bit map for the      Γöé
  3922. Γöé                         Γöéscroll-bar right arrow.            Γöé
  3923. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3924. ΓöéSBMP_SBRGARROWDEP        ΓöéSame as SBMP_SBRGARROW but         Γöé
  3925. Γöé                         Γöéindicates that the scroll-bar rightΓöé
  3926. Γöé                         Γöéarrow is pressed.                  Γöé
  3927. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3928. ΓöéSBMP_SBRGARROWDIS        ΓöéSame as SBMP_SBRGARROW but         Γöé
  3929. Γöé                         Γöéindicates that the scroll-bar rightΓöé
  3930. Γöé                         Γöéarrow is disabled.                 Γöé
  3931. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3932. ΓöéSBMP_SBUPARROW           ΓöéSpecifies the bit map for the      Γöé
  3933. Γöé                         Γöéscroll-bar up arrow.               Γöé
  3934. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3935. ΓöéSBMP_SBUPARROWDEP        ΓöéSame as SBMP_SBUPARROW but         Γöé
  3936. Γöé                         Γöéindicates that the scroll-bar up   Γöé
  3937. Γöé                         Γöéarrow is pressed.                  Γöé
  3938. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3939. ΓöéSBMP_SBUPARROWDIS        ΓöéSame as SBMP_SBUPARROW but         Γöé
  3940. Γöé                         Γöéindicates that the scroll-bar up   Γöé
  3941. Γöé                         Γöéarrow is disabled.                 Γöé
  3942. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3943. ΓöéSBMP_SIZEBOX             ΓöéSpecifies the bit map for the      Γöé
  3944. Γöé                         Γöésymbol that indicates an area of a Γöé
  3945. Γöé                         Γöéwindow in which the user can click Γöé
  3946. Γöé                         Γöéto resize the window.              Γöé
  3947. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3948. ΓöéSBMP_SYSMENU             ΓöéSpecifies the bit map for the      Γöé
  3949. Γöé                         Γöésystem menu.                       Γöé
  3950. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3951. ΓöéSBMP_TREEMINUS           ΓöéSpecifies the bit map for the      Γöé
  3952. Γöé                         Γöésymbol that File Manager uses to   Γöé
  3953. Γöé                         Γöéindicate an empty entry in the     Γöé
  3954. Γöé                         Γöédirectory tree.                    Γöé
  3955. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3956. ΓöéSBMP_TREEPLUS            ΓöéSpecifies the bit map for the      Γöé
  3957. Γöé                         Γöésymbol that File Manager uses to   Γöé
  3958. Γöé                         Γöéindicate that an entry in the      Γöé
  3959. Γöé                         Γöédirectory tree contains more files.Γöé
  3960. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3961.  
  3962.  
  3963. ΓòÉΓòÉΓòÉ 7.2. Using Mouse Pointers and Icons ΓòÉΓòÉΓòÉ
  3964.  
  3965. This section explains how to perform the following tasks: 
  3966.  
  3967.      Save the current mouse pointer 
  3968.      Change the mouse pointer 
  3969.      Restore the original mouse pointer 
  3970.  
  3971.  
  3972. ΓòÉΓòÉΓòÉ 7.2.1. Changing the Mouse Pointer ΓòÉΓòÉΓòÉ
  3973.  
  3974. Once you create or load a mouse pointer, you can change its shape by calling 
  3975. WinSetPointer.  Following are three typical situations in which an application 
  3976. changes the shape of the mouse pointer: 
  3977.  
  3978.      When an application receives a WM_MOUSEMOVE message, there is an 
  3979.       opportunity to change the mouse pointer based on its location in the 
  3980.       window.  If you want the standard arrow pointer, pass this message on to 
  3981.       WinDefWindowProc. If you want to change the mouse pointer on a standard 
  3982.       dialog window, you need to capture the WM_CONTROLPOINTER message and 
  3983.       return a pointing-device pointer handle. 
  3984.  
  3985.      When an application is about to start a time-consuming process during 
  3986.       which it will not accept user input, the application displays the 
  3987.       system-wait mouse pointer (SPTR_WAIT).  Upon finishing the process, the 
  3988.       application resets the mouse pointer to its former shape. 
  3989.  
  3990.       The following code fragment shows how to save the current mouse pointer, 
  3991.       set the hourglass pointer, and restore the original mouse pointer. 
  3992.       Notice that the hourglass pointer also is saved in a global variable so 
  3993.       that the application can return it when responding to a WM_MOUSEMOVE 
  3994.       message during a time-consuming process. 
  3995.  
  3996.                     HPOINTER hptrOld, hptrWait, hptrCurrent;
  3997.  
  3998.                     /* Get the current pointer.                   */
  3999.                     hptrOld = WinQueryPointer(HWND_DESKTOP);
  4000.  
  4001.                     /* Get the wait mouse pointer.                */
  4002.                     hptrWait = WinQuerySysPointer(HWND_DESKTOP,
  4003.                         SPTR_WAIT, FALSE);
  4004.  
  4005.                     /* Save the wait pointer to use in WM_MOUSEMOVE processing.*/
  4006.                     hptrCurrent = hptrWait;
  4007.  
  4008.                     /* Set the mouse pointer to the wait pointer. */
  4009.                     WinSetPointer(HWND_DESKTOP, hptrWait);
  4010.  
  4011.                     /*
  4012.                      * Do a time-consuming operation, then restore the
  4013.                      * original mouse pointer.
  4014.                      */
  4015.                     WinSetPointer(HWND_DESKTOP, hptrOld);
  4016.  
  4017.      When an application needs to indicate its current operational mode, it 
  4018.       changes the pointer shape.  For example, a paint program with a palette 
  4019.       of drawing tools should change the pointer shape to indicate which 
  4020.       drawing tool is in use currently. 
  4021.  
  4022.  
  4023. ΓòÉΓòÉΓòÉ 8. Notebook Controls ΓòÉΓòÉΓòÉ
  4024.  
  4025. A notebook control (WC_NOTEBOOK window class) is a visual component that 
  4026. organizes information on individual pages so that a user can find and display 
  4027. that information quickly and easily. This chapter explains how to use notebook 
  4028. controls in PM applications. 
  4029.  
  4030.  
  4031. ΓòÉΓòÉΓòÉ 8.1. About Notebook Controls ΓòÉΓòÉΓòÉ
  4032.  
  4033. This notebook control component simulates a real notebook but improves on it by 
  4034. overcoming a notebook's natural limitations. A user can select and display 
  4035. pages by using a pointing device or the keyboard. The notebook can be 
  4036. customized to meet varying application requirements, while providing a user 
  4037. interface component that can be used easily to develop products that conform to 
  4038. the Common User Access (CUA) user interface guidelines. The application can 
  4039. specify different colors, sizes, and orientations for its notebooks, but the 
  4040. underlying function of the control remains the same. For a complete description 
  4041. of CUA notebooks, refer to the SAA CUA Guide to User Interface Design and the 
  4042. SAA CUA Advanced Interface Design Reference. 
  4043.  
  4044.  
  4045. ΓòÉΓòÉΓòÉ 8.1.1. Notebook Styles ΓòÉΓòÉΓòÉ
  4046.  
  4047. This section describes the different notebook style components: 
  4048.  
  4049. o Page buttons
  4050. o Status line
  4051. o Binding
  4052. o Intersection of back pages
  4053. o Major and minor tabs
  4054. o Tab shapes.
  4055.  
  4056.  
  4057. ΓòÉΓòÉΓòÉ 8.1.1.1. Page Buttons ΓòÉΓòÉΓòÉ
  4058.  
  4059. In the bottom-right corner of the notebook are the page buttons. These buttons 
  4060. let you bring one page of the notebook into view at a time. They are a standard 
  4061. component that is automatically provided with every notebook. However, the 
  4062. application can change the default width and height of the page buttons by 
  4063. using the BKM_SETDIMENSIONS message. The page buttons always are located in the 
  4064. corner where the recessed edges of the notebook intersect. 
  4065.  
  4066. Selecting the forward page button (the arrow pointing to the right) causes the 
  4067. next page to be displayed and selecting the backward page button (the arrow 
  4068. pointing to the left) causes the previous page to be displayed. Prior to 
  4069. inserting pages in the notebook, the page buttons are displayed with 
  4070. unavailable-state emphasis;  therefore, selecting either page button would not 
  4071. bring a page into view. 
  4072.  
  4073.  
  4074. ΓòÉΓòÉΓòÉ 8.1.1.2. Status Line ΓòÉΓòÉΓòÉ
  4075.  
  4076. To the left of the page buttons in the default notebook style setting is the 
  4077. status line, which enables the application to provide information to the user 
  4078. about the page currently displayed. The notebook does not supply any default 
  4079. text for the status line. The application is responsible for associating a text 
  4080. string with the status line of each page on which a text string is to be 
  4081. displayed. 
  4082.  
  4083. The status text is drawn left-justified by default, but it can be drawn 
  4084. centered or right-justified. The same status text justification applies to all 
  4085. pages in the notebook. This setting is specified by the BKS_STATUSTEXTLEFT 
  4086. style bit. The location of the back pages intersection and the major tabs has 
  4087. no effect on the specification of the status line position. This style bit can 
  4088. be set for the entire notebook. 
  4089.  
  4090.  
  4091. ΓòÉΓòÉΓòÉ 8.1.1.3. Binding ΓòÉΓòÉΓòÉ
  4092.  
  4093. The notebook control resembles a real notebook in its general appearance. The 
  4094. default binding is solid and is placed on the left side. This binding is used 
  4095. if the BKS_SOLIDBIND style bit is specified or if no style bit is specified. 
  4096.  
  4097. Two styles are provided for the notebook binding: solid and spiral. The 
  4098. notebook is displayed with a solid binding by default, but the application can 
  4099. specify BKS_SPIRALBIND to display a spiral binding. 
  4100.  
  4101. The placement of the binding depends entirely on the placement of the back 
  4102. pages and major tabs, respectively. The binding always is located on the 
  4103. opposite side of the notebook from the major tabs. 
  4104.  
  4105.  
  4106. ΓòÉΓòÉΓòÉ 8.1.1.4. Intersection of Back Pages ΓòÉΓòÉΓòÉ
  4107.  
  4108. The recessed edges that intersect near the page buttons are called the back 
  4109. pages. The default notebook's back pages intersect in the bottom-right corner, 
  4110. which means the recessed pages are on the bottom and right edges. This setting 
  4111. is specified by the BKS_BACKPAGESBR style bit. The back pages are important 
  4112. because their intersection determines where the major tabs can be placed, which 
  4113. in turn determines the placement of the binding and the minor tabs. 
  4114.  
  4115.  
  4116. ΓòÉΓòÉΓòÉ 8.1.1.5. Major Tabs ΓòÉΓòÉΓòÉ
  4117.  
  4118. Major and minor tabs are used to organize related pages into sections. Minor 
  4119. tabs define subsections within major tab sections. The content of each section 
  4120. has a common theme, which is represented to the user by a tabbed divider that 
  4121. is similar to a tabbed page in a notebook. 
  4122.  
  4123. The BKS_MAJORTABRIGHT style bit specifies that major tabs, if used, are to be 
  4124. placed on the right side of the notebook. This is the default major tab 
  4125. placement when the back pages intersect at the bottom-right corner of the 
  4126. notebook. The binding is located on the left, because it is always located on 
  4127. the opposite side of the notebook from the major tabs. 
  4128.  
  4129. The placement of the major tabs is limited to one of the two edges on which 
  4130. there are recessed pages. For example, if the application specifies the back 
  4131. pages intersection at the bottom-right corner (BKS_BACKPAGESBR, the default), 
  4132. the major tabs can be placed on either the bottom edge (BKS_MAJORTABBOTTOM) or 
  4133. the right edge (BKS_MAJORTABRIGHT) of the notebook. In this situation, if the 
  4134. application specifies that major tabs are to be placed on the left or top edges 
  4135. of the notebook, the notebook control places them on the right edge anyway-the 
  4136. default placement for back pages intersecting at the bottom-right corner. 
  4137.  
  4138. When major tabs are defined at the creation of the notebook they are not 
  4139. displayed on screen. Major tab attributes only show at the time a page is 
  4140. inserted into the notebook. This is done by specifying the BKA_MAJOR attribute 
  4141. in the BKM_INSERTPAGE message. 
  4142.  
  4143.  
  4144. ΓòÉΓòÉΓòÉ 8.1.1.6. Minor Tabs ΓòÉΓòÉΓòÉ
  4145.  
  4146. Minor tabs are specified using the BKA_MINOR attribute. Minor tabs always are 
  4147. placed perpendicular to the major tabs, based on the intersection of the back 
  4148. pages and the major tab placement. Only one major or minor tab attribute can be 
  4149. specified for each notebook page. Minor tabs are displayed only if the 
  4150. associated major tab page is selected or if the notebook has no major tab 
  4151. pages. 
  4152.  
  4153. The placement of the minor tabs depends entirely on the placement of the back 
  4154. pages and major tabs, respectively. The minor tabs always are located on the 
  4155. recessed page side that has no major tabs. 
  4156.  
  4157. The following table describes the available notebook control styles: 
  4158.  
  4159. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4160. ΓöéBack Pages            ΓöéMajor Tabs       ΓöéMinor Tabs   ΓöéBinding Γöé
  4161. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4162. ΓöéBottom-right (default)ΓöéBottom           ΓöéRight        ΓöéTop     Γöé
  4163. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4164. ΓöéBottom-right (default)ΓöéRight (default)  ΓöéBottom       ΓöéLeft    Γöé
  4165. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4166. ΓöéBottom-left           ΓöéBottom (default) ΓöéLeft         ΓöéTop     Γöé
  4167. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4168. ΓöéBottom-left           ΓöéLeft             ΓöéBottom       ΓöéRight   Γöé
  4169. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4170. ΓöéTop-right             ΓöéTop (default)    ΓöéRight        ΓöéBottom  Γöé
  4171. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4172. ΓöéTop-right             ΓöéRight            ΓöéTop          ΓöéLeft    Γöé
  4173. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4174. ΓöéTop-left              ΓöéTop              ΓöéLeft         ΓöéBottom  Γöé
  4175. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4176. ΓöéTop-left              ΓöéLeft (default)   ΓöéTop          ΓöéRight   Γöé
  4177. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4178.  
  4179.  
  4180. ΓòÉΓòÉΓòÉ 8.1.1.7. Tab Shapes and Contents ΓòÉΓòÉΓòÉ
  4181.  
  4182. The default shape of the tabs used on notebook divider pages is square. This 
  4183. setting is specified by the BKS_SQUARETABS style bit. The shape of the tabs can 
  4184. be square, rounded, or polygonal. The tab text can be drawn left-justified, 
  4185. right-justified, or centered. Once set, these styles apply to the major and 
  4186. minor tabs for all pages in the notebook. The location of the back pages 
  4187. intersection and the major tabs has no effect on the specification of the 
  4188. tab-shape position. As with the page buttons, the application can change the 
  4189. default width and height of the major and minor tabs by using the 
  4190. BKM_SETDIMENSIONS message. 
  4191.  
  4192. A notebook tab can contain either text or a bit map. Text is associated with a 
  4193. tab page by using the BKM_SETTABTEXT message. Notebook tab text is centered by 
  4194. default or by specifying the BKS_TABTEXTCENTER style when creating the notebook 
  4195. window. A bit map is placed on a tab by using the BKM_SETTABBITMAP message. A 
  4196. bit map cannot be positioned on a tab because the bit map stretches to fill the 
  4197. rectangular area of the tab; therefore, no style bit is used. 
  4198.  
  4199.  
  4200. ΓòÉΓòÉΓòÉ 8.1.1.8. Summary of Notebook Styles ΓòÉΓòÉΓòÉ
  4201.  
  4202. The notebook control provides style bits so that your application can specify 
  4203. or change the default style settings. One style bit from each of the following 
  4204. groups can be specified. If you specify more than one style bit, you must use 
  4205. an OR operator (|) to combine them. 
  4206.  
  4207.      Type of binding 
  4208.  
  4209.       BKS_SOLIDBIND                      Solid (default) 
  4210.       BKS_SPIRALBIND                     Spiral 
  4211.  
  4212.      Intersection of back pages 
  4213.  
  4214.       BKS_BACKPAGESBR                    Bottom-right corner (default) 
  4215.       BKS_BACKPAGESBL                    Bottom-left corner 
  4216.       BKS_BACKPAGESTR                    Top-right corner 
  4217.       BKS_BACKPAGESTL                    Top-left corner 
  4218.  
  4219.      Location of major tabs 
  4220.  
  4221.       BKS_MAJORTABRIGHT                  Right edge (default) 
  4222.       BKS_MAJORTABLEFT                   Left edge 
  4223.       BKS_MAJORTABTOP                    Top edge 
  4224.       BKS_MAJORTABBOTTOM                 Bottom edge 
  4225.  
  4226.      Shape of tabs 
  4227.  
  4228.       BKS_SQUARETABS                     Square (default) 
  4229.       BKS_ROUNDEDTABS                    Rounded 
  4230.       BKS_POLYGONTABS                    Polygonal 
  4231.  
  4232.      Alignment of text associated with tabs 
  4233.  
  4234.       BKS_TABTEXTCENTER                  Centered (default) 
  4235.       BKS_TABTEXTLEFT                    Left-justified 
  4236.       BKS_TABTEXTRIGHT                   Right-justified 
  4237.  
  4238.      Alignment of status-line text 
  4239.  
  4240.       BKS_STATUSTEXTLEFT                 Left-justified (default) 
  4241.       BKS_STATUSTEXTRIGHT                Right-justified 
  4242.       BKS_STATUSTEXTCENTER               Centered 
  4243.  
  4244.  
  4245. ΓòÉΓòÉΓòÉ 8.2. Using Notebook Controls ΓòÉΓòÉΓòÉ
  4246.  
  4247. The following sections describe how to create pages, insert pages into, create 
  4248. and associate windows for, and delete pages from a notebook. 
  4249.  
  4250.  
  4251. ΓòÉΓòÉΓòÉ 8.2.1. Notebook Creation ΓòÉΓòÉΓòÉ
  4252.  
  4253. You create a notebook by using the WC_NOTEBOOK window class name in the 
  4254. ClassName parameter of WinCreateWindow. The following sample code shows the 
  4255. creation of the notebook. The style set in the ulNotebookStyles variable (the 
  4256. BKS_* values) specifies that the notebook is to be created with a solid binding 
  4257. and the back pages intersecting at the bottom-right corner, major tabs placed 
  4258. on the right edge, shape tab square, tab text centered, and status-line text 
  4259. left-justified These are the default settings and are given here only to show 
  4260. how notebook styles are set. 
  4261.  
  4262. HWND    hwndNotebook;            /* Notebook window handle            */
  4263. ULONG   ulNotebookStyles;        /* Notebook window styles            */
  4264. ULONG   x, y, cx, cy;            /* Coordinates                       */
  4265.  
  4266. /**********************************************************************/
  4267. /* Set the BKS_style flags to customize the notebook.                 */
  4268. /**********************************************************************/
  4269. ulNotebookStyles =
  4270.   BKS_SOLIDBIND     |          /* Use solid binding                   */
  4271.   BKS_BACKPAGESBR   |          /* Set back pages to intersect at the  */
  4272.                                /* bottom-right corner                 */
  4273.   BKS_MAJORTABRIGHT |          /* Position major tabs on right side   */
  4274.   BKS_SQUARETABS    |          /* Make tabs square                    */
  4275.   BKS_TABTEXTCENTER |          /* Center tab text                     */
  4276.   BKS_STATUSTEXTLEFT;          /* Left-justified status-line text     */
  4277.  
  4278. /**********************************************************************/
  4279. /* Create the notebook control window.                                */
  4280. /**********************************************************************/
  4281. hwndNotebook =
  4282.   WinCreateWindow(
  4283.     hwndParent,                /* Parent window handle                */
  4284.     WC_NOTEBOOK,               /* Notebook window class               */
  4285.     NULL,                      /* No window text                      */
  4286.     ulNotebookStyles,          /* Notebook window styles              */
  4287.     x, y, cx, cy,              /* Origin and size                     */
  4288.     hwndOwner,                 /* Owner window handle                 */
  4289.     HWND_TOP,                  /* Sibling window handle               */
  4290.     ID_BOOK,                   /* Notebook window ID                  */
  4291.     NULL,                      /* No control data                     */
  4292.     NULL);                     /* No presentation parameters          */
  4293.  
  4294. /**********************************************************************/
  4295. /* Make the notebook control visible.                                 */
  4296. /**********************************************************************/
  4297. WinShowWindow(
  4298.   hwndNotebook,                /* Notebook window handle              */
  4299.   TRUE);                       /* Make the window visible             */
  4300.  
  4301.  
  4302. ΓòÉΓòÉΓòÉ 8.2.2. Changing Notebook Styles ΓòÉΓòÉΓòÉ
  4303.  
  4304. The following figure shows some sample code fragments for setting the notebook 
  4305. style to spiral binding, back pages intersecting at the bottom-left corner, 
  4306. major tabs placed on the bottom edge, tab shape rounded, tab text 
  4307. left-justified, and status-line text centered. 
  4308.  
  4309. /**********************************************************************/
  4310. /* Query for the existing notebook window style settings.             */
  4311. /**********************************************************************/
  4312. ulNotebookStyles =
  4313.   WinQueryWindowULong(hwndNotebook,    /* Notebook window handle      */
  4314.                       QWL_STYLE);      /* Set notebook style          */
  4315.  
  4316. /**********************************************************************/
  4317. /* Reset notebook window style flags, leaving window flags unchanged. */
  4318. /**********************************************************************/
  4319. ulNotebookStyles &= 0xFFFF0000;
  4320.  
  4321. /**********************************************************************/
  4322. /* Setup the new notebook window style flags.                         */
  4323. /**********************************************************************/
  4324. ulNotebookStyles |=
  4325.   BKS_SPIRALBIND     |         /* Use spiral binding                  */
  4326.   BKS_BACKPAGESBL    |         /* Set back pages to intersect at the  */
  4327.                                /* bottom-left corner                  */
  4328.   BKS_MAJORTABBOTTOM |         /* Position major tabs on bottom edge  */
  4329.   BKS_ROUNDEDTABS    |         /* Make tabs rounded                   */
  4330.   BKS_TABTEXTLEFT    |         /* Left-justified tab text             */
  4331.   BKS_STATUSTEXTCENTER;        /* Center status-line text             */
  4332.  
  4333. /**********************************************************************/
  4334. /* Set the new notebook style.                                        */
  4335. /**********************************************************************/
  4336. WinSetWindowULong(
  4337.   hwndNotebook,                /* Notebook window handle              */
  4338.   QWL_STYLE,                   /* Window style                        */
  4339.   ulNotebookStyles);           /* Set notebook style                  */
  4340.  
  4341. /**********************************************************************/
  4342. /* Invalidate to force a repaint.                                     */
  4343. /**********************************************************************/
  4344. WinInvalidateRect(
  4345.   hwndNotebook,                /* Notebook window handle              */
  4346.   NULL,                        /* Invalidate entire window,           */
  4347.   TRUE);                       /* including children                  */
  4348.  
  4349.  
  4350. ΓòÉΓòÉΓòÉ 8.2.3. Inserting Notebook Pages ΓòÉΓòÉΓòÉ
  4351.  
  4352. After a notebook is created, pages can be inserted into the notebook by using 
  4353. the BKM_INSERTPAGE message. BKM_INSERTPAGE provides several attributes that can 
  4354. affect the inserted pages. When inserting pages into either a new notebook or 
  4355. an existing one, consider carefully how the user expects those pages to be 
  4356. organized. 
  4357.  
  4358.  
  4359. ΓòÉΓòÉΓòÉ 8.2.3.1. Major and Minor Tabs ΓòÉΓòÉΓòÉ
  4360.  
  4361. The two attributes that have the most impact on how notebook pages are 
  4362. organized are BKA_MAJOR and BKA_MINOR, which specify major and minor tabs, 
  4363. respectively. Major tab pages define the beginning of major sections in the 
  4364. notebook, while minor tab pages define the beginning of subsections within a 
  4365. major section. Major sections should begin with a page that has a BKA_MAJOR 
  4366. attribute. Within major sections, information can be organized into minor 
  4367. sections, each of which should begin with a page that has a BKA_MINOR 
  4368. attribute. 
  4369.  
  4370. For an existing notebook, the underlying hierarchy, if one exists, must be 
  4371. observed when inserting new pages, to provide efficient organization and 
  4372. navigation of the information in the notebook. For example, if the notebook has 
  4373. minor sections but no major sections, you could confuse the user if you 
  4374. inserted a page with a major tab attribute between related minor sections or at 
  4375. the end of the notebook. 
  4376.  
  4377. If you insert pages without specifying tab attributes, those pages become part 
  4378. of the section in which they are inserted. For example, if page 7 of your 
  4379. notebook has a minor tab and you insert a new page 8 without specifying a tab 
  4380. attribute, page 8 becomes part of the section that begins with the minor tab on 
  4381. page 7. 
  4382.  
  4383. Because tab pages are not mandatory, the application can create a notebook that 
  4384. contains no major or minor tab pages. That style would be similar to that of a 
  4385. composition notebook. 
  4386.  
  4387. Another group of attributes that can affect the organization of pages being 
  4388. inserted into a notebook consists of BKA_FIRST, BKA_LAST, BKA_NEXT, and 
  4389. BKA_PREV. These attributes cause pages to be inserted at the end, at the 
  4390. beginning, after a specified page, and before a specified page of a notebook, 
  4391. respectively. 
  4392.  
  4393.  
  4394. ΓòÉΓòÉΓòÉ 8.2.3.2. Status Line ΓòÉΓòÉΓòÉ
  4395.  
  4396. Each page has an optional status line that can be used to display information 
  4397. for the user. To include this status line, the application must specify the 
  4398. BKA_STATUSTEXTON attribute when inserting the page. If the application inserts 
  4399. the page without specifying this attribute, the status line is not available 
  4400. for that page. 
  4401.  
  4402. To display text on the status line of the specified page, the application must 
  4403. use the BKM_SETSTATUSLINETEXT message to associate a text string with the page. 
  4404. A separate message must be sent for each page that is to display status-line 
  4405. text. If the application does not send a BKM_SETSTATUSLINETEXT message for a 
  4406. page, no text is displayed in the status line of that page. The application can 
  4407. send this message to the notebook at any time to change the status-line text. 
  4408. The status line can be cleared by setting the text to NULL. 
  4409.  
  4410. The following sample code shows how to insert a page into a notebook, where the 
  4411. inserted page has a major tab attribute, the status line is available, and the 
  4412. page is inserted after the last page in the notebook. This sample code also 
  4413. shows how to associate a text string with the status line of the inserted page. 
  4414.  
  4415. HWND  hwndNotebook;            /* Notebook window handle               */
  4416. ULONG ulPageId;                /* Page identifier                      */
  4417.  
  4418. /***********************************************************************/
  4419. /* Insert a new page into a notebook.                                  */
  4420. /***********************************************************************/
  4421. ulPageId = (ULONG) WinSendMsg(
  4422.   hwndNotebook,                /* Notebook window handle               */
  4423.   BKM_INSERTPAGE,              /* Message for inserting a page         */
  4424.   (MPARAM)NULL,                /* NULL for page ID                     */
  4425.  
  4426.   MPFROM2SHORT(
  4427.     BKA_MAJOR |                /* Insert page with a major tab         */
  4428.                                /* attribute                            */
  4429.     BKA_STATUSTEXTON),         /* Make status-line text visible        */
  4430.     BKA_LAST));                /* Insert this page at end of notebook  */
  4431.  
  4432. /***********************************************************************/
  4433. /* Set the status-line text.                                           */
  4434. /***********************************************************************/
  4435. WinSendMsg(
  4436.   hwndNotebook,                /* Notebook window handle               */
  4437.   BKM_SETSTATUSLINETEXT,       /* Message for setting status-line      */
  4438.                                /* text                                 */
  4439.   (MPARAM)ulPageId,            /* ID of page to receive status-line    */
  4440.                                /* text                                 */
  4441.   MPFROMP("Page 1 of 2"));     /* Text string to put on status line    */
  4442.  
  4443.  
  4444. ΓòÉΓòÉΓòÉ 8.2.4. Setting and Querying Page Information ΓòÉΓòÉΓòÉ
  4445.  
  4446. The information for a page in the notebook can be set and queried with 
  4447. BKM_SETPAGEINFO and BKM_QUERYPAGEINFO respectively. By using these messages, 
  4448. all the information associated with a page can be accessed at once. In 
  4449. addition, BKM_SETPAGEINFO can be used to delay the loading of a page until it 
  4450. is turned to, by setting the bLoadDlg field to FALSE. By doing this for all 
  4451. pages in a notebook, the notebook is created much more quickly. 
  4452.  
  4453.  
  4454. ΓòÉΓòÉΓòÉ 8.2.5. Associating Application Page Windows with Notebook Pages ΓòÉΓòÉΓòÉ
  4455.  
  4456. After a page is inserted into a notebook, you must facilitate the display of 
  4457. information for this page when it is brought to the top of the book. The 
  4458. notebook provides a top page area in which the application can display windows 
  4459. or dialogs for the topmost page. For each inserted page, the application must 
  4460. associate the handle of a window or dialog that is to be invalidated when the 
  4461. page is brought to the top of the book. The application can associate the same 
  4462. handle with different pages, if desired. 
  4463.  
  4464. The application must send a BKM_SETPAGEWINDOWHWND message to the notebook in 
  4465. order to associate the application page window or dialog handle with the 
  4466. notebook page being inserted.  Once done, the notebook invalidates this window 
  4467. or dialog whenever the notebook page is brought to the top of the book. If no 
  4468. application page window handle is specified for an inserted page, no 
  4469. invalidation can be done by the notebook for that page. However, the 
  4470. application receives a BKN_PAGESELECTED notification code when a new page is 
  4471. brought to the top of the notebook, at which time the application can 
  4472. invalidate the page. 
  4473.  
  4474. The notebook also sends a BKN_PAGESELECTEDPENDING notification code to the 
  4475. application before the new page is selected. The application can use this 
  4476. message to prevent the page from being turned to. This is useful when the 
  4477. application wants to validate a page's contents. 
  4478.  
  4479. The following sections describe how to associate either a window handle or a 
  4480. dialog handle with an inserted page. 
  4481.  
  4482.  
  4483. ΓòÉΓòÉΓòÉ 8.2.5.1. Associating a Window with a Notebook Page ΓòÉΓòÉΓòÉ
  4484.  
  4485.  
  4486. A calendar example is used to show how a page can be implemented as a window. A 
  4487. calendar is divided into four years (major tabs). Within each year are months 
  4488. (minor tabs) grouped into quarters. The top page has a window associated with 
  4489. it. The window paint processing displays the days for the currently selected 
  4490. month and year. 
  4491.  
  4492. The sample code in the following figure shows how the window procedure for the 
  4493. calendar is registered with the application. Also, it shows how the window is 
  4494. created and associated with the notebook page. The example ends by showing the 
  4495. window procedure for the associated window. 
  4496.  
  4497. /*********************************************************************/
  4498. /* Registration of window procedure for calendar.                    */
  4499. /*********************************************************************/
  4500. WinRegisterClass(hab,               /* Register a page window class  */
  4501.                  "Calendar Page",   /* Class name                    */
  4502.                  PageWndProc,       /* Window procedure              */
  4503.                  CS_SIZEREDRAW,     /* Class style                   */
  4504.                  0);                /* No extra bytes reserved       */
  4505.  
  4506. /*********************************************************************/
  4507. /* Create the window.                                                */
  4508. /*********************************************************************/
  4509. hwndPage = WinCreateWindow(hwndNotebook,       /* Parent             */
  4510.                            "Calendar Page",    /* Class              */
  4511.                            NULL,               /* Title text         */
  4512.                            0L,                 /* Style              */
  4513.                            0, 0, 0, 0,         /* Origin and size    */
  4514.                            hwndNotebook,       /* Owner              */
  4515.                            HWND_TOP,           /* Z-order            */
  4516.                            ID_WIN_CALENDAR_PAGE,   /* ID             */
  4517.                            NULL,               /* Control data       */
  4518.                            NULL);              /* Presparams         */
  4519.  
  4520. /*********************************************************************/
  4521. /* Associate window with the inserted notebook page.                 */
  4522. /*********************************************************************/
  4523. WinSendMsg(hwndBook,
  4524.            BKM_SETPAGEWINDOWHWND,
  4525.            MPFROMLONG(ulPageId),
  4526.            MPFROMHWND(hwndPage));
  4527.  
  4528. /*********************************************************************/
  4529. /* Window procedure.                                                 */
  4530. /*********************************************************************/
  4531. MRESULT EXPENTRY PageWndProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
  4532. {
  4533. HPS hps;
  4534.  
  4535. switch (msg)
  4536. {
  4537.  
  4538.   /*******************************************************************/
  4539.   /* WM_CREATE is sent when the window is created.                   */
  4540.   /*******************************************************************/
  4541.   case  WM_CREATE:
  4542.  
  4543.     /*****************************************************************/
  4544.     /* Place window initialization code here.                        */
  4545.     /*****************************************************************/
  4546.     break;
  4547.  
  4548.   case  WM_PAINT:
  4549.     hps = WinBeginPaint(hwnd, NULL, NULL);
  4550.     /*****************************************************************/
  4551.     /* Draw the calendar for the selected year and month.            */
  4552.     /*****************************************************************/
  4553.     .
  4554.     .
  4555.     .
  4556.     WinEndPaint(hps);
  4557.     break;
  4558.  
  4559.   default:
  4560.     return (WinDefWindowProc(hwnd, msg, mp1, mp2));
  4561.     break;
  4562. }
  4563.  
  4564. return (FALSE);
  4565. }
  4566.  
  4567.  
  4568. ΓòÉΓòÉΓòÉ 8.2.5.2. Associating a Dialog with a Notebook Page ΓòÉΓòÉΓòÉ
  4569.  
  4570.  
  4571. To understand the notebook implemented as a dialog, a Properties Notebook is 
  4572. used. The various objects whose properties can be changed or updated are 
  4573. displayed as major tabs. Included are sections that represent a folder, 
  4574. printer, and display (major tabs). The printer object is currently selected. 
  4575. Within the printer object, the user can choose to "View" or "Update" (minor 
  4576. tabs) the printer settings. The topmost page is a printer dialog from which the 
  4577. user can update the printer name, type, and device information. 
  4578.  
  4579. The following sample code shows how the printer dialog is created and 
  4580. associated with a notebook page. The example ends by showing the dialog 
  4581. procedure for the associated dialog. 
  4582.  
  4583. #define INCL_DOSRESOURCES
  4584.  
  4585. APIRET       dlgret;
  4586. HWND         hwndPage, hwndNotebook;
  4587. PDLGTEMPLATE pDlgt;
  4588. SEL          sel = NULL;
  4589.  
  4590. /**********************************************************************/
  4591. /* Allocate memory.                                                   */
  4592. /**********************************************************************/
  4593. DosAllocMem((PPVOID)&pDlgt,
  4594.             sizeof(DLGTEMPLATE),
  4595.             PAG_COMMIT |
  4596.             PAG_READ   |
  4597.             PAG_WRITE);
  4598.  
  4599. /**********************************************************************/
  4600. /* Retrieve the dialog resource.                                      */
  4601. /**********************************************************************/
  4602. dlgret = DosGetResource((HMODULE)0,       /* Resource                 */
  4603.                                           /* (Obtain from executable) */
  4604.                         RT_DIALOG,        /* Resource type            */
  4605.                         ID_DLG_PRINTDRV,  /* Resource ID              */
  4606.                         (PPVOID)&pDlgt);  /* Dialog template address  */
  4607.  
  4608. /**********************************************************************/
  4609. /* Create a dialog.                                                   */
  4610. /**********************************************************************/
  4611. hwndPage = WinCreateDlg(HWND_DESKTOP,     /* Parent window handle     */
  4612.                         hwndBook,         /* Owner window handle      */
  4613.                         fnwpPrint,        /* Dialog procedure         */
  4614.                                           /* address                  */
  4615.                         pDlgt,            /* Dialog data structure    */
  4616.                                           /* address                  */
  4617.                         NULL);            /* Application data         */
  4618.  
  4619. DosFreeMem(pDlgt);                        /* Free memory              */
  4620.  
  4621. /**********************************************************************/
  4622. /* Associate dialog with the inserted notebook page.                  */
  4623. /**********************************************************************/
  4624. WinSendMsg(hwndBook,
  4625.            BKM_SETPAGEWINDOWHWND,
  4626.            MPFROMLONG(ulPageId),
  4627.            MPFROMHWND(hwndPage));
  4628.  
  4629. /**********************************************************************/
  4630. /* Dialog procedure.                                                  */
  4631. /**********************************************************************/
  4632. MRESULT EXPENTRY fnwpPrint(HWND hwndDlg,ULONG msg,MPARAM mp1,MPARAM mp2)
  4633. {
  4634.   switch (msg)
  4635.   {
  4636.     case WM_INITDLG:
  4637.  
  4638.       /****************************************************************/
  4639.       /* Place dialog initialization code here.                       */
  4640.       /****************************************************************/
  4641.       break;
  4642.  
  4643.     case WM_COMMAND:
  4644.       return ((MRESULT) FALSE);
  4645.       break;
  4646.  
  4647.     default:
  4648.       return WinDefDlgProc (hwndDlg,msg,mp1,mp2);
  4649.   }
  4650.   return WinDefDlgProc (hwndDlg,msg,mp1,mp2);
  4651. }
  4652.  
  4653.  
  4654. ΓòÉΓòÉΓòÉ 8.2.6. Deleting Notebook Pages ΓòÉΓòÉΓòÉ
  4655.  
  4656. The BKM_DELETEPAGE message is used to delete one or more pages from the 
  4657. notebook. The application can delete one page (BKA_SINGLE attribute), all pages 
  4658. within a major or minor tab section (BKA_TAB attribute), or all of the pages in 
  4659. the notebook (BKA_ALL attribute). The default, if no attributes are specified, 
  4660. is to delete no pages. The following sample code shows how the BKM_QUERYPAGEID 
  4661. message is used to get the ID of the top page and how the BKM_DELETEPAGE 
  4662. message is then used to delete that page: 
  4663.  
  4664. /**********************************************************************/
  4665. /* Set the range of pages to be deleted.                              */
  4666. /**********************************************************************/
  4667.  
  4668. /* Set attribute to delete a single page. */
  4669. usDeleteFlag = BKA_SINGLE
  4670.  
  4671. /**********************************************************************/
  4672. /* Get the ID of the notebook's top page.                             */
  4673. /**********************************************************************/
  4674. ulPageId = (ULONG) WinSendMsg(
  4675.   hwndNotebook,                /* Notebook window handle              */
  4676.   BKM_QUERYPAGEID,             /* Message to query a page ID          */
  4677.   NULL,                        /* NULL for page ID                    */
  4678.   (MPARAM)BKA_TOP);            /* Get ID of top page                  */
  4679.  
  4680. /**********************************************************************/
  4681. /* Delete the notebook's top page.                                    */
  4682. /**********************************************************************/
  4683. WinSendMsg(
  4684.   hwndNotebook,                /* Notebook window handle              */
  4685.   BKM_DELETEPAGE,              /* Message to delete the page          */
  4686.   MPFROMLONG(ulPageId),        /* ID of page to be deleted            */
  4687.   (MPARAM)usDeleteFlag);       /* Range of pages to be deleted        */
  4688.  
  4689.  
  4690. ΓòÉΓòÉΓòÉ 8.2.7. Notebook Colors ΓòÉΓòÉΓòÉ
  4691.  
  4692. The application can change the color of any part of the notebook. The colors of 
  4693. some parts can be changed by specifying presentation parameter attributes in 
  4694. WinSetPresParam. Other colors can be changed by specifying notebook attributes 
  4695. in the BKM_SETNOTEBOOKCOLORS message. The following sections define which parts 
  4696. of the notebook can have their colors changed by each of these two methods. 
  4697.  
  4698.  
  4699. ΓòÉΓòÉΓòÉ 8.2.7.1. Changing Colors Using WinSetPresParam ΓòÉΓòÉΓòÉ
  4700.  
  4701. WinSetPresParam is used to change the color of the notebook outline, window 
  4702. background, selection cursor, and status-line text. The following list shows 
  4703. the mapping between the various notebook parts and their associated 
  4704. presentation parameter attributes. 
  4705.  
  4706.  Notebook outline PP_BORDERCOLOR or PP_BORDERCOLORINDEX. This color is set 
  4707.      initially to SYSCLR_WINDOWFRAME. 
  4708.  
  4709.  Notebook window background PP_BACKGROUNDCOLOR or PP_BACKGROUNDCOLORINDEX. This 
  4710.      color is set initially to SYSCLR_FIELDBACKGROUND. 
  4711.  
  4712.  Selection cursor PP_HILITEBACKGROUNDCOLOR or PP_HILITEBACKGROUNDCOLORINDEX. 
  4713.      This color is set initially to SYSCLR_HILITEBACKGROUND. 
  4714.  
  4715.  Status-line text PP_FOREGROUNDCOLOR or PP_FOREGROUNDCOLORINDEX. This color is 
  4716.      initially set to SYSCLR_WINDOWTEXT. 
  4717.  
  4718.  If a presentation parameter attribute is set, all parts of the notebook that 
  4719.  are mapped to this color are changed. The following sample code shows how to 
  4720.  change the color of the notebook outline: 
  4721.  
  4722.   /* Set number of bytes to be passed in usColorIdx */
  4723.   /* for color index table value                    */
  4724.   usColorLen = 4;
  4725.   /* Set color index table value to be assigned */
  4726.   ulColorIdx = 3;
  4727.  
  4728.   /**********************************************************************/
  4729.   /* Set the notebook outline color.                                    */
  4730.   /**********************************************************************/
  4731.   WinSetPresParam(
  4732.     hwndNotebook,                /* Notebook window handle              */
  4733.     PP_BORDERCOLOR,              /* Border color attribute              */
  4734.     usColorLen,                  /* Number of bytes in color index      */
  4735.                                  /* table value                         */
  4736.     &ulColorIdx);                /* Color index table value             */
  4737.  
  4738.  
  4739. ΓòÉΓòÉΓòÉ 8.2.7.2. Changing Colors Using BKM_SETNOTEBOOKCOLORS ΓòÉΓòÉΓòÉ
  4740.  
  4741. The BKM_SETNOTEBOOKCOLORS message is used to change the color of the major tab 
  4742. background and text, the minor tab background and text, and the notebook page 
  4743. background. The following list shows the mapping between the various notebook 
  4744. parts and their associated notebook attributes. 
  4745.  
  4746.  Major tab background BKA_BACKGROUNDMAJORCOLOR or 
  4747.      BKA_BACKGROUNDMAJORCOLORINDEX. This color is set initially to 
  4748.      SYSCLR_PAGEBACKGROUND. The currently selected major tab has the same 
  4749.      background color as the notebook page background. 
  4750.  
  4751.  Major tab text BKA_FOREGROUNDMAJORCOLOR or BKA_FOREGROUNDMAJORCOLORINDEX. This 
  4752.      color is set initially to SYSCLR_WINDOWTEXT. 
  4753.  
  4754.  Minor tab background BKA_BACKGROUNDMINORCOLOR or 
  4755.      BKA_BACKGROUNDMINORCOLORINDEX. This color is set initially to 
  4756.      SYSCLR_PAGEBACKGROUND. The currently selected minor tab has the same 
  4757.      background color as the notebook page background. 
  4758.  
  4759.  Minor tab text BKA_FOREGROUNDMINORCOLOR or BKA_FOREGROUNDMINORCOLORINDEX. This 
  4760.      color is set initially to SYSCLR_WINDOWTEXT. 
  4761.  
  4762.  Notebook page background BKA_BACKGROUNDPAGECOLOR or 
  4763.      BKA_BACKGROUNDPAGECOLORINDEX. This color is set initially to 
  4764.      SYSCLR_PAGEBACKGROUND. 
  4765.  
  4766.  If a notebook attribute is set, all parts of the notebook that are mapped to 
  4767.  this color are changed. The following sample code shows how to change the 
  4768.  color of the major tab background: 
  4769.  
  4770.   /* Color index value     */
  4771.   ulColorIdx    = SYSCLR_WINDOW;
  4772.   /* Major tab background  */
  4773.   ulColorRegion = BKA_BACKGROUNDMAJORCOLORINDEX;
  4774.  
  4775.   WinSendMsg(hwndBook,
  4776.              BKM_SETNOTEBOOKCOLORS,
  4777.              MPFROMLONG(ulColorIdx),
  4778.              MPFROMLONG(ulColorRegion));
  4779.  
  4780.  
  4781. ΓòÉΓòÉΓòÉ 8.3. Graphical User Interface Support for Notebook Controls ΓòÉΓòÉΓòÉ
  4782.  
  4783. The following section describes the support for graphical user interfaces 
  4784. (GUIs) provided by the notebook control. Except where noted, this support 
  4785. conforms to the guidelines in the SAA CUA Advanced Interface Design Reference. 
  4786.  
  4787. The GUI support provided by the notebook control consists of the notebook 
  4788. navigation techniques. 
  4789.  
  4790.  
  4791. ΓòÉΓòÉΓòÉ 8.3.1. Notebook Navigation Techniques ΓòÉΓòÉΓòÉ
  4792.  
  4793. The notebook control supports the use of a pointing device and the keyboard for 
  4794. displaying notebook pages and tabs and for moving the selection cursor from the 
  4795. notebook tabs to the application window and the other way around. 
  4796.  
  4797. Note:  If more than one notebook window is open, displaying a page or tab in 
  4798.        one notebook window has no effect on the pages or tabs displayed in any 
  4799.        other notebook window. 
  4800.  
  4801.  
  4802. ΓòÉΓòÉΓòÉ 8.3.1.1. Pointing Device Support ΓòÉΓòÉΓòÉ
  4803.  
  4804. A user can use a pointing device to display notebook pages or tabs by selecting 
  4805. the notebook components described in the following list. The CUA guidelines 
  4806. define mouse button 1 (the select button) to be used for selecting these 
  4807. components. This definition also applies to the same button on any other 
  4808. pointing device a user might have. 
  4809.  
  4810.      Selecting tabs using a pointing device 
  4811.  
  4812.       A tab can be selected to bring a page that has a major or minor tab 
  4813.       attribute to the top of the notebook. The selection cursor, a dotted 
  4814.       outline, is drawn inside the tab's border to indicate the selected tab. 
  4815.       In addition, the selected tab is given the same background color as the 
  4816.       notebook page area. The color of the other tabs is specified in the 
  4817.       BKM_SETNOTEBOOKCOLORS message. This helps the user distinguish the 
  4818.       selected tab from the other tabs if different colors are used. 
  4819.  
  4820.       Because all tabs are mutually exclusive, only one of them can be selected 
  4821.       at a time. Therefore, the only type of selection supported by the 
  4822.       notebook control is single selection. This selection type conforms to the 
  4823.       guidelines in the SAA CUA Advanced Interface Design Reference. 
  4824.  
  4825.       If the user moves the pointing device to a place in the notebook page 
  4826.       window that can accept a cursor, such as an entry field, check box, or 
  4827.       radio button, and presses the select button, the selection cursor is 
  4828.       removed from the tab it is on and is displayed in the notebook page 
  4829.       window. The selection cursor never can be displayed both on a tab and in 
  4830.       the notebook page window at the same time. 
  4831.  
  4832.      Selecting page buttons using a pointing device 
  4833.  
  4834.       A forward or backward page button can be selected to display the next or 
  4835.       previous page, respectively, one at a time. The arrow pointing to the 
  4836.       right is the forward page button, and the arrow pointing to the left is 
  4837.       the backward page button. When the selection of a page button brings a 
  4838.       page that has a major or minor tab to the top of the notebook, the 
  4839.       selection cursor is drawn inside that tab's border. 
  4840.  
  4841.      Selecting tab scroll buttons using a pointing device 
  4842.  
  4843.       A user can decrease the size of a notebook window so that some of the 
  4844.       available notebook tabs cannot be displayed. When this happens, the 
  4845.       notebook control automatically draws tab scroll buttons at the corners of 
  4846.       the notebook side or sides to notify the user that more tabs are 
  4847.       available. 
  4848.  
  4849.       Tab scroll buttons have another purpose: to give the user the means to 
  4850.       scroll into view, one at a time, the tabs that are not displayed. The 
  4851.       user does this by selecting a forward or backward tab scroll button, 
  4852.       which causes the next tab to scroll into view, but does not change the 
  4853.       location of the selection cursor. Once the tab is in view, the user can 
  4854.       display that tab's page by selecting the tab. 
  4855.  
  4856.       A maximum of four tab scroll buttons can be displayed: two for the major 
  4857.       tab side and two for the minor tab side. 
  4858.  
  4859.       When the first tab in the notebook is displayed, the backward tab scroll 
  4860.       button is deactivated. Unavailable-state emphasis is applied to it to 
  4861.       show that no more tabs can be scrolled into view by using the backward 
  4862.       tab scroll button. Unavailable-state emphasis is applied to the forward 
  4863.       tab scroll button if the last tab in the notebook is displayed. 
  4864.  
  4865.  
  4866. ΓòÉΓòÉΓòÉ 8.3.1.2. Keyboard Support ΓòÉΓòÉΓòÉ
  4867.  
  4868. The users can utilize the keyboard to display and manipulate notebook pages and 
  4869. components. 
  4870.  
  4871.  
  4872. ΓòÉΓòÉΓòÉ 8.3.1.2.1. Focus on Application Dialog or Window ΓòÉΓòÉΓòÉ
  4873.  
  4874.  
  4875. If the application dialog page or window has the focus, the notebook handles 
  4876. the following keyboard interactions: 
  4877.  
  4878.  Keyboard Input           Description 
  4879.  
  4880.  Alt+PgDn or PgDn         Brings the next page to the top of the notebook. If 
  4881.                           the application uses the PgDn key, then it must be 
  4882.                           used in combination with the Alt key. 
  4883.  
  4884.  Alt+PgUp or PgUp         Brings the previous page to the top of the notebook. 
  4885.                           If the application uses the PgUp key, then it must be 
  4886.                           used in combination with the Alt key. 
  4887.  
  4888.  Alt+Up Arrow             Switch the focus to the notebook window. 
  4889.  
  4890.  Tab                      Move the cursor to the next control within the top 
  4891.                           page window or dialog. If the cursor is currently on 
  4892.                           the last control within the top page window or dialog 
  4893.                           when the Tab key is pressed, the cursor is moved to 
  4894.                           the notebook major tab, if it exists; else to the 
  4895.                           minor tab, if it exists; else to the right page 
  4896.                           button. 
  4897.  
  4898.  Shift+Tab                Move the cursor to the previous control within the 
  4899.                           top page window or dialog. If the cursor is currently 
  4900.                           on the first control within the top page window or 
  4901.                           dialog when the Shift+Tab key is pressed, the cursor 
  4902.                           is moved to the previous control. If the previous 
  4903.                           control is the notebook, the cursor is moved to the 
  4904.                           right page button. 
  4905.  
  4906.  
  4907. ΓòÉΓòÉΓòÉ 8.3.1.2.2. Focus on the Notebook Control ΓòÉΓòÉΓòÉ
  4908.  
  4909.  
  4910. If the notebook control has the focus, it handles the following keyboard 
  4911. intereactions: 
  4912.  
  4913.  Keyboard Input           Description 
  4914.  
  4915.  Alt+Down Arrow           Switch the focus to the application's primary window. 
  4916.  
  4917.  Alt+PgDn or PgDn         Brings the next page to the top of the notebook. 
  4918.  
  4919.  Alt+PgUp or PgUp         Brings the previous page to the top of the notebook. 
  4920.  
  4921.  Left or Up Arrow         If the cursor is currently on a major tab, it is 
  4922.                           moved to the previous major tab. If the previous 
  4923.                           major tab is not visible, the tabs are scrolled to 
  4924.                           bring the previous major tab into view. If the first 
  4925.                           major tab is reached, scrolling ends. 
  4926.  
  4927.                           If the cursor is currently on a minor tab, it is 
  4928.                           moved to the previous minor tab. If the previous 
  4929.                           minor tab is not visible, the tabs are scrolled to 
  4930.                           bring the previous minor tab into view. If the first 
  4931.                           minor tab is reached, scrolling ends. 
  4932.  
  4933.                           If the cursor is currently on the right page button, 
  4934.                           the cursor moves to the left page button. If the 
  4935.                           cursor is currently on the left page button, no 
  4936.                           action is taken. 
  4937.  
  4938.  Right or Down Arrow      If the cursor is currently on a major tab, it is 
  4939.                           moved to the next major tab. If the next major tab is 
  4940.                           not visible, the tabs are scrolled to bring the next 
  4941.                           major tab into view. If the last major tab is 
  4942.                           reached, scrolling ends. 
  4943.  
  4944.                           If the cursor is currently on a minor tab, it is 
  4945.                           moved to the next minor tab. If the next minor tab is 
  4946.                           not visible, the tabs are scrolled to bring the next 
  4947.                           minor tab into view. If the last minor tab is 
  4948.                           reached, scrolling ends. 
  4949.  
  4950.                           If the cursor is currently on the right page button, 
  4951.                           no action is taken. If the cursor is currently on the 
  4952.                           left page button, the cursor moves to the right page 
  4953.                           button. 
  4954.  
  4955.  Tab                      The cursor moves from the major tab, then to the 
  4956.                           minor tab, then to the right page button, and then to 
  4957.                           the last tab stop in the application dialog or 
  4958.                           window. 
  4959.  
  4960.  Shift+Tab                The cursor moves from the page button, to the minor 
  4961.                           tab, to the major tab, and then to the first tab stop 
  4962.                           in the application dialog or window. 
  4963.  
  4964.  Home                     Brings the first page of the notebook to the top and 
  4965.                           sets the cursor on the associated tab. 
  4966.  
  4967.  End                      Brings the last page of the notebook to the top and 
  4968.                           sets the cursor on the associated tab. 
  4969.  
  4970.  Enter or Spacebar        If the cursor is on a major or minor tab, the 
  4971.                           associated page is brought to the top of the 
  4972.                           notebook, and the selected tab is given the same 
  4973.                           background color as the notebook page area. The other 
  4974.                           tabs have their color specified in the 
  4975.                           BKM_SETNOTEBOOKCOLORS message. This helps the user 
  4976.                           distinguish the selected tab from the other tabs if 
  4977.                           different colors are used. 
  4978.  
  4979.                           If the cursor is currently on the right page button, 
  4980.                           the next page is brought to the top of the notebook. 
  4981.                           If the cursor is currently on the left page button, 
  4982.                           the previous page is brought to the top of the 
  4983.                           notebook. 
  4984.  
  4985.  Mnemonics                Mnemonics are underlined characters in the text of a 
  4986.                           tab that cause the tab's page to be selected. Coding 
  4987.                           a tilde (~) before a text character in the 
  4988.                           BKM_SETTABTEXT message causes that character to be 
  4989.                           underlined and activates it as a mnemonic-selection 
  4990.                           character. 
  4991.  
  4992.                           A user performs mnemonic selection by pressing a 
  4993.                           character key that corresponds to an underlined 
  4994.                           character. When this happens, the tab that contains 
  4995.                           the underlined character is selected, and that tab's 
  4996.                           page is brought to the top of the notebook. 
  4997.  
  4998.                           Note:  Mnemonic selection is not case sensitive, so 
  4999.                           the user can type the underscored letter in either 
  5000.                           uppercase or lowercase. 
  5001.  
  5002.  
  5003. ΓòÉΓòÉΓòÉ 8.4. Enhancing Notebook Controls Performance and Effectiveness ΓòÉΓòÉΓòÉ
  5004.  
  5005. This section provides the following information to enable you to fine-tune a 
  5006. notebook control: 
  5007.  
  5008.      Dynamic resizing and scrolling 
  5009.      Tab painting and positioning 
  5010.  
  5011.  
  5012. ΓòÉΓòÉΓòÉ 8.4.1. Dynamic Resizing and Scrolling ΓòÉΓòÉΓòÉ
  5013.  
  5014. The notebook control supports dynamic resizing by recalculating the size of the 
  5015. notebook's parts when either the user or the application changes the size of 
  5016. any of those parts. A BKN_NEWPAGESIZE notification code is sent from the 
  5017. notebook to the application whenever the notebook's size changes. 
  5018.  
  5019. The notebook handles the sizing and positioning of each application page window 
  5020. if the BKA_AUTOPAGESIZE attribute is specified for the inserted notebook page. 
  5021. Otherwise, the application must handle this when it receives the 
  5022. BKN_NEWPAGESIZE notification code from the notebook. 
  5023.  
  5024. If the size of the notebook window is decreased so that the page window is not 
  5025. large enough to display all the information the page contains, the information 
  5026. in the page window is clipped. If scroll bars are desired to enable the clipped 
  5027. information to be scrolled into view, they must be provided by the application. 
  5028. Tab scroll buttons are automatically displayed if the size of the notebook is 
  5029. decreased so that all the major or minor tabs cannot be displayed. For example, 
  5030. a notebook has major tabs on the right side, but the height of the notebook 
  5031. does not allow all the tabs to be displayed. In this case, tab scroll buttons 
  5032. are displayed on the upper- and lower-right corners of the notebook. 
  5033.  
  5034.  
  5035. ΓòÉΓòÉΓòÉ 8.4.2. Tab Painting and Positioning ΓòÉΓòÉΓòÉ
  5036.  
  5037. The tab pages provide a method for organizing the information in a notebook so 
  5038. that the user easily can see and navigate to that information. When a page is 
  5039. inserted with a major or minor tab attribute, the notebook displays a tab for 
  5040. that page, based on the orientation of the notebook. The contents of the tab 
  5041. can be painted either by the notebook control or the application. 
  5042.  
  5043. If the notebook control is to paint the tabs, the application must associate a 
  5044. text string or bit map with the page whose tab is to be drawn.  This is done by 
  5045. sending the BKM_SETTABTEXT or BKM_SETTABBITMAP message to the notebook control 
  5046. for the specified page. If neither of these messages is sent for an inserted 
  5047. page with a major or minor tab attribute, the application must draw the 
  5048. contents of the tab, through ownerdraw. The application receives a WM_DRAWITEM 
  5049. message whenever a tab page that has no text or bit map associated with it is 
  5050. to be drawn. The application can either draw the tab contents or return FALSE, 
  5051. in which case the notebook control fills the tab with the tab background color. 
  5052.  
  5053. Positioning Tabs in Relation to the Top Tab: 
  5054. There are seven page edges that define the back pages.  The page attribute 
  5055. (BKA_MAJOR or BKA_MINOR) and the topmost page determine how the tabs are 
  5056. positioned. In most cases, the tabs must be drawn when their position changes. 
  5057. For example, this can happen when a page with a tab attribute is brought to the 
  5058. top of the notebook. 
  5059.  
  5060. The new top major or minor tab will appear attached to the top page. The other 
  5061. tabs will appear as described in the following list. This information is 
  5062. provided to help you understand the relationship between the top tab and the 
  5063. other tabs so that you can organize the information you put into a notebook 
  5064. appropriately. The application has no control over tab positioning. 
  5065.  
  5066.      When the top page is a major tab page: 
  5067.  
  5068.         -  Any major tabs prior to the top major tab are aligned on the last 
  5069.            page of the notebook. 
  5070.  
  5071.         -  Any major tabs after the top major tab are incrementally cascaded 
  5072.            from the topmost edge to the last page. 
  5073.  
  5074.         -  If the top major tab has minor tabs, no major tab is drawn on the 
  5075.            page edge that immediately follows the top tab page. Instead, any 
  5076.            major tabs that follow the top tab are incrementally cascaded, 
  5077.            beginning on the second page, edge-down from the top tab. This is 
  5078.            done to account for the minor tabs that are positioned between the 
  5079.            top major tab and the major tab that follows it on the perpendicular 
  5080.            notebook edge. 
  5081.  
  5082.            The minor tabs are all positioned on the third page edge from the 
  5083.            top, thereby giving the appearance of being between the top major 
  5084.            tab and the next major tab. 
  5085.  
  5086.      When the top page is a minor tab page: 
  5087.  
  5088.         -  Any minor tabs prior to the top minor tab are positioned on the 
  5089.            third page edge from the top of the notebook. 
  5090.  
  5091.         -  Any minor tabs after the top minor tab are incrementally cascaded up 
  5092.            to the third page edge from the top. 
  5093.  
  5094.  
  5095. ΓòÉΓòÉΓòÉ 9. Painting and Drawing ΓòÉΓòÉΓòÉ
  5096.  
  5097. This chapter describes presentation spaces, device contexts, and window 
  5098. regions, explaining how a PM application uses them for painting and drawing in 
  5099. windows. 
  5100.  
  5101.  
  5102. ΓòÉΓòÉΓòÉ 9.1. About Painting and Drawing ΓòÉΓòÉΓòÉ
  5103.  
  5104. An application typically maintains an internal representation of the data that 
  5105. it is manipulating.  The information displayed in a screen, window, or printed 
  5106. copy is a visual representation of some portion of that data.  This chapter 
  5107. introduces the concepts and strategies necessary to make your PM application 
  5108. function smoothly and cooperatively in the OS/2 display environment. 
  5109.  
  5110.  
  5111. ΓòÉΓòÉΓòÉ 9.1.1. Presentation Spaces and Device Contexts ΓòÉΓòÉΓòÉ
  5112.  
  5113. A presentation space is a data structure, maintained by the operating system, 
  5114. that describes the drawing environment for an application.  An application can 
  5115. create and hold several presentation spaces, each describing a different 
  5116. drawing environment.  All drawing in a PM application must be directed to a 
  5117. presentation space. 
  5118.  
  5119. Normally each presentation space is associated with a device context that 
  5120. describes the physical device where graphics commands are displayed.  The 
  5121. device context translates graphics commands made to the presentation space into 
  5122. commands that enable the physical device to display information.  Typical 
  5123. device contexts are the screen, printers and plotters, and off-screen memory 
  5124. bit maps. By creating presentation spaces and associating them with particular 
  5125. device contexts, an application can control where its graphics output appears. 
  5126. Typically, a presentation space and device context isolate the application from 
  5127. the physical details of displaying graphics, so the same graphics commands can 
  5128. be used for many types of displays.  This virtualization of output can reduce 
  5129. the amount of display code an application must include to support multiple 
  5130. output devices. 
  5131.  
  5132. This chapter describes how an application sets up its presentation spaces and 
  5133. device contexts before drawing, and how to use window-drawing functions.  Refer 
  5134. to the Graphics Programming Interface Programming Guide for the graphics 
  5135. functions available to PM applications. 
  5136.  
  5137.  
  5138. ΓòÉΓòÉΓòÉ 9.1.2. Window Regions ΓòÉΓòÉΓòÉ
  5139.  
  5140. A window and its associated presentation space have three regions that control 
  5141. where drawing takes place in the window. These regions ensure that the 
  5142. application does not draw outside the boundaries of the window or intrude into 
  5143. the space of an overlapping window. 
  5144.  
  5145. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5146. ΓöéRegion         ΓöéDescription                                  Γöé
  5147. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5148. ΓöéUpdate Region  ΓöéThis region represents the area of the windowΓöé
  5149. Γöé               Γöéthat needs to be redrawn. This region changesΓöé
  5150. Γöé               Γöéwhen overlapping windows change their z-orderΓöé
  5151. Γöé               Γöéor when an application explicitly adds an    Γöé
  5152. Γöé               Γöéarea to the update region to force a window  Γöé
  5153. Γöé               Γöéto be painted.                               Γöé
  5154. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5155. ΓöéClip Region    ΓöéThis region and the visible region determine Γöé
  5156. Γöé               Γöéwhere drawing takes place. Applications can  Γöé
  5157. Γöé               Γöéchange the clip region to limit drawing to a Γöé
  5158. Γöé               Γöéparticular portion of a window. Typically, a Γöé
  5159. Γöé               Γöépresentation space is created with a clip    Γöé
  5160. Γöé               Γöéregion equal to NULL, which makes this regionΓöé
  5161. Γöé               Γöéequivalent to the update region.             Γöé
  5162. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5163. ΓöéVisible Region ΓöéThis region and the clip region determine    Γöé
  5164. Γöé               Γöéwhere drawing takes place. The system changesΓöé
  5165. Γöé               Γöéthe visible region to represent the portion  Γöé
  5166. Γöé               Γöéof a window that is visible. Typically, the  Γöé
  5167. Γöé               Γöévisible region is used to mask out           Γöé
  5168. Γöé               Γöéoverlapping windows. When an application     Γöé
  5169. Γöé               Γöécalls the WinBeginPaint function in response Γöé
  5170. Γöé               Γöéto a WM_PAINT message, the system sets the   Γöé
  5171. Γöé               Γöévisible region to the intersection of the    Γöé
  5172. Γöé               Γöévisible region and the update region to      Γöé
  5173. Γöé               Γöéproduce a new visible region. Applications   Γöé
  5174. Γöé               Γöécannot change the visible region directly.   Γöé
  5175. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5176. Whenever drawing occurs in a window's presentation space, the output is clipped 
  5177. to the intersection of the visible region and clip region. 
  5178.  
  5179. The clip region includes the overlapped part of the back window, but the 
  5180. visible region excludes that portion of the back window.  The system maintains 
  5181. the visible region to protect other windows on the screen; the application 
  5182. maintains the clip region to specify the portion of the window in which it 
  5183. draws.  Together, these two regions provide safe and controllable clipping. 
  5184.  
  5185. To further control drawing, both the system and the application manipulate the 
  5186. update region. For example, if a window's position is switched from back to 
  5187. front, positions front to back, several changes occur in the regions of both 
  5188. windows.  The system adds the lower-right corner of the new front window to 
  5189. that window's visible region.  The system also adds that corner area to the 
  5190. window's update region. 
  5191.  
  5192.  
  5193. ΓòÉΓòÉΓòÉ 9.1.3. Window Styles for Painting ΓòÉΓòÉΓòÉ
  5194.  
  5195. Most of the styles relating to window drawing can be set either for the window 
  5196. class (CS_ prefix) or for an individual window (WS_ prefix).  The styles 
  5197. described in this section control how the system manipulates the window's 
  5198. regions and how the window is notified when it must be painted or redrawn. 
  5199.  
  5200.  
  5201. ΓòÉΓòÉΓòÉ 9.1.3.1. WS_CLIPCHILDREN, CS_CLIPCHILDREN ΓòÉΓòÉΓòÉ
  5202.  
  5203. All the windows with this style are excluded from their parent's visible 
  5204. region.  This style protects windows but increases the amount of time necessary 
  5205. to calculate the parent's visible region.  This style normally is not 
  5206. necessary, because if the parent and child windows overlap and both are 
  5207. invalidated, the parent window is drawn before the child window.  If the child 
  5208. window is invalidated independently from its parent window, only the child 
  5209. window is redrawn.  If the update region of the parent window does not 
  5210. intersect the child window, drawing the parent window does not disturb the 
  5211. child window. 
  5212.  
  5213.  
  5214. ΓòÉΓòÉΓòÉ 9.1.3.2. WS_CLIPSIBLINGS, CS_CLIPSIBLINGS ΓòÉΓòÉΓòÉ
  5215.  
  5216. Windows with this style are excluded from the visible region of sibling 
  5217. windows.  This style protects windows with the same parent from being drawn 
  5218. accidentally, but increases the amount of time necessary to calculate the 
  5219. visible region.  This style is appropriate for sibling windows that overlap. 
  5220.  
  5221.  
  5222. ΓòÉΓòÉΓòÉ 9.1.3.3. WS_PARENTCLIP, CS_PARENTCLIP ΓòÉΓòÉΓòÉ
  5223.  
  5224. The visible region for a window with this style is the same as the visible 
  5225. region of the parent window.  This style simplifies the calculation of the 
  5226. visible region but is potentially hazardous, because the parent window's 
  5227. visible region usually is larger than the child window.  Windows with this 
  5228. style should not draw outside their boundaries. 
  5229.  
  5230.  
  5231. ΓòÉΓòÉΓòÉ 9.1.3.4. WS_SAVEBITS, CS_SAVEBITS ΓòÉΓòÉΓòÉ
  5232.  
  5233. The system saves the bits beneath a window with this style when the window is 
  5234. displayed.  When the window moves or is hidden, the system simply restores the 
  5235. uncovered bits.  This operation can consume a great deal of memory; it is 
  5236. recommended only for transient windows such as menus and dialog boxes-not for 
  5237. main application windows.  This style also is inappropriate for windows that 
  5238. are updated dynamically, such as clocks. 
  5239.  
  5240.  
  5241. ΓòÉΓòÉΓòÉ 9.1.3.5. WS_SYNCPAINT, CS_SYNCPAINT ΓòÉΓòÉΓòÉ
  5242.  
  5243. Windows that have these styles receive WM_PAINT messages as soon as their 
  5244. update regions contain something; they are updated immediately (synchronously). 
  5245.  
  5246.  
  5247. ΓòÉΓòÉΓòÉ 9.1.3.6. CS_SIZEREDRAW ΓòÉΓòÉΓòÉ
  5248.  
  5249. A window with this class style receives a WM_PAINT message; the window is 
  5250. completely invalidated whenever it is resized, even if it is made smaller. 
  5251. (Typically, only the uncovered area of a window is invalidated when a window is 
  5252. resized.)  This class style is useful when an application scales graphics to 
  5253. fill the current window. 
  5254.  
  5255.  
  5256. ΓòÉΓòÉΓòÉ 9.2. Strategies for Painting and Drawing ΓòÉΓòÉΓòÉ
  5257.  
  5258. A PM application shares the screen with other windows and applications; 
  5259. therefore, painting and drawing must not interfere with those other 
  5260. applications and windows.  When you follow these strategies, your application 
  5261. can coexist with other applications and still take full advantage of the 
  5262. graphics capabilities of the operating system. 
  5263.  
  5264.  
  5265. ΓòÉΓòÉΓòÉ 9.2.1. Drawing in a Window ΓòÉΓòÉΓòÉ
  5266.  
  5267. Ideally, all drawing in a window occurs as a result of an application's 
  5268. processing a WM_PAINT message.  Applications maintain an internal 
  5269. representation of what must be displayed in the window, such as text or a 
  5270. linked list of graphics objects, and use the WM_PAINT message as a cue to 
  5271. display a visual representation of that data in the window. 
  5272.  
  5273. To route all display output through the WM_PAINT message, an application must 
  5274. not draw on the screen at the time its data changes.  Instead, it must update 
  5275. the internal representation of the data and call the WinInvalidateRect or 
  5276. WinInvalidateRegion functions to invalidate the portion of the window that must 
  5277. be redrawn.  Sometimes it is much more efficient to draw directly in a window 
  5278. without relying on the WM_PAINT message-for example, when drawing and redrawing 
  5279. an object for a user who is using the mouse to drag or size the object. 
  5280.  
  5281. If a window has the WS_SYNCPAINT or CS_SYNCPAINT style, invalidating a portion 
  5282. of the window causes a WM_PAINT message to be sent to the window immediately. 
  5283. Essentially, sending a message is like making a function call; the actions 
  5284. corresponding to the WM_PAINT message are carried out before the call that 
  5285. caused the invalidation returns-that is to say, the painting is synchronous. 
  5286.  
  5287. If the window does not have the WS_SYNCPAINT or CS_SYNCPAINT style, 
  5288. invalidating a portion of the window causes the invalidated region to be added 
  5289. to the window's update region.  The next time the application calls the 
  5290. WinGetMsg or WinPeekMsg functions, the application is sent a WM_PAINT message. 
  5291. If there are many messages in the queue, the painting occurs after the 
  5292. invalidation-that is, the painting is asynchronous.  A WM_PAINT message is not 
  5293. posted to the queue in this case, so all invalidation operations since the last 
  5294. WM_PAINT message are consolidated into a single WM_PAINT message the next time 
  5295. the application has no messages in the queue. 
  5296.  
  5297. There are advantages to both synchronous and asynchronous painting.  Windows 
  5298. that have simple painting functions should be painted synchronously.  Most of 
  5299. the system-defined control windows, such as buttons and frame controls, are 
  5300. painted synchronously because they can be painted quickly without interfering 
  5301. with the responsiveness of the program.  Windows that require more 
  5302. time-consuming painting operations should be painted asynchronously so that the 
  5303. painting can be initiated only when there are no other pending messages that 
  5304. might otherwise be blocked while waiting for the window to be painted.  Also, a 
  5305. window that uses an incremental approach to invalidating small portions of 
  5306. itself usually should allow those operations to consolidate into a single 
  5307. asynchronous WM_PAINT message, rather than a series of synchronous WM_PAINT 
  5308. messages. If necessary, an application can call the WinUpdateWindow function to 
  5309. cause an asynchronous window to update itself without going through the event 
  5310. loop.  WinUpdateWindow sends a WM_PAINT message directly to the window if the 
  5311. window's update region is not empty. 
  5312.  
  5313.  
  5314. ΓòÉΓòÉΓòÉ 9.2.2. The WM_PAINT Message ΓòÉΓòÉΓòÉ
  5315.  
  5316. A window receives a WM_PAINT message whenever its update region is not NULL.  A 
  5317. window procedure responds to a WM_PAINT message by calling the WinBeginPaint 
  5318. function, drawing to fill in the update areas, then calling the WinEndPaint 
  5319. function. 
  5320.  
  5321. The WinBeginPaint function returns a handle to a presentation space that is 
  5322. associated with the device context for the window and that has a visible region 
  5323. equal to the intersection of the window's update region and its visible region. 
  5324. This means that only those portions of the window that need to be redrawn are 
  5325. drawn.  Attempts to draw outside this region are clipped and do not appear on 
  5326. the screen. 
  5327.  
  5328. If the application maintains its own presentation space for the window, it can 
  5329. pass the handle of that presentation space to WinBeginPaint, which modifies the 
  5330. visible region of the presentation space and passes the presentation-space 
  5331. handle back to the caller.  If the application does not have its own 
  5332. presentation space, it can pass a NULL presentation-space handle and the system 
  5333. will return a cached-micro presentation space for the window.  In either case, 
  5334. the application can use the presentation space to draw in the window. 
  5335.  
  5336. The WinBeginPaint function takes a pointer to a RECTL structure, filling in 
  5337. this structure with the coordinates of the rectangle that encloses the area to 
  5338. be updated.  The application can use this rectangle to optimize drawing, by 
  5339. drawing only those portions of the window that intersect with the rectangle. 
  5340. If an application passes a NULL pointer for the rectangle argument, the 
  5341. application draws the entire window and relies on the clipping mechanism to 
  5342. filter out the unneeded areas. 
  5343.  
  5344. After the WinBeginPaint function sets the update region of a window to NULL, 
  5345. the application does the necessary drawing to fill the update areas.  If an 
  5346. application handles a WM_PAINT message and does not call WinBeginPaint, or 
  5347. otherwise empty the update region, the application continues to receive 
  5348. WM_PAINT messages as long as the update region is not empty. 
  5349.  
  5350. After the application finishes drawing, it calls the WinEndPaint function to 
  5351. restore the presentation space to its former state.  When a cached-micro 
  5352. presentation space is returned by WinBeginPaint, the presentation space is 
  5353. returned to the system for reuse.  If the application supplies its own 
  5354. presentation space to WinBeginPaint, the presentation space is restored to its 
  5355. previous state. 
  5356.  
  5357.  
  5358. ΓòÉΓòÉΓòÉ 9.2.2.1. Drawing the Minimized View ΓòÉΓòÉΓòÉ
  5359.  
  5360. When an application creates a standard frame window, it has the option of 
  5361. specifying an icon that the system uses to represent the application in its 
  5362. minimized state.  Typically, if an icon is supplied, the system draws it in the 
  5363. minimized window and labels it with the name of the window.  If the application 
  5364. does not specify the FS_ICON style for the window, the window receives a 
  5365. WM_PAINT message when it is minimized.  The code in the window procedure that 
  5366. handles the WM_PAINT message can determine whether the frame window currently 
  5367. is minimized and draw accordingly.  Notice that because the WS_MINIMIZED style 
  5368. is relevant only for the frame window, and not for the client window, the 
  5369. window procedure checks the frame window rather than the client window. 
  5370.  
  5371. The following code fragment shows how to draw a window in both the minimized 
  5372. and normal states: 
  5373.  
  5374.     MRESULT EXPENTRY ClientWndProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
  5375.     {
  5376.         HPS hps;
  5377.         RECTL rcl;
  5378.         ULONG flStyle;
  5379.  
  5380.         switch (msg) {
  5381.             case WM_PAINT:
  5382.                 hps = WinBeginPaint(hwnd, (HPS) NULL, &rcl);
  5383.  
  5384.                          /* Check whether the frame window
  5385.                           (client's parent window)
  5386.                            is minimized.               */
  5387.  
  5388.                 flStyle = WinQueryWindowULong(WinQueryWindow(hwnd,
  5389.                     QW_PARENT), QWL_STYLE);
  5390.  
  5391.                 if (flStyle & WS_MINIMIZED) {
  5392.                     .
  5393.                     .    /* Paint the minimized state. */
  5394.                     .
  5395.                 }
  5396.                 else {
  5397.                     .
  5398.                     .    /* Paint the normal state.    */
  5399.                     .
  5400.                 }
  5401.                 WinEndPaint(hps);
  5402.                 return 0;
  5403.         }
  5404.     }
  5405.  
  5406.  
  5407. ΓòÉΓòÉΓòÉ 9.2.3. Drawing Without the WM_PAINT Message ΓòÉΓòÉΓòÉ
  5408.  
  5409. An application can draw in a window's presentation space without having 
  5410. received a WM_PAINT message.  As long as there is a presentation space for the 
  5411. window, an application can draw into the presentation space and avoid intruding 
  5412. into other windows or the desktop.  Applications that draw without using the 
  5413. WM_PAINT message typically call the WinGetPS function to obtain a cached-micro 
  5414. presentation space for the window and call the WinReleasePS function when they 
  5415. have finished drawing.  An application also can use any of the other types of 
  5416. presentation spaces described in the following sections. 
  5417.  
  5418.  
  5419. ΓòÉΓòÉΓòÉ 9.2.4. Three Types of Presentation Spaces ΓòÉΓòÉΓòÉ
  5420.  
  5421. All drawing must take place within a presentation space. The operating system 
  5422. provides three types of presentation spaces for drawing:  normal, micro, and 
  5423. cached-micro presentation spaces. The normal presentation space provides the 
  5424. most functionality, allowing access to all the graphics functions of the 
  5425. operating system and enabling the application to draw to all device types.  The 
  5426. normal presentation space is more difficult to use than the other two kinds of 
  5427. presentation spaces and it uses more memory.  It is created by using the 
  5428. GpiCreatePS function and is destroyed by using the GpiDestroyPS function. 
  5429.  
  5430. The micro presentation space allows access to only a subset of the operating 
  5431. system graphics functions, but it uses less memory and is faster than a normal 
  5432. presentation space.  The micro presentation space also enables the application 
  5433. to draw to all device types.  It is created by using the GpiCreatePS function 
  5434. and destroyed by using the GpiDestroyPS function. 
  5435.  
  5436. The cached-micro presentation space provides the least functionality of the 
  5437. three kinds of presentation spaces, but it is the most efficient and easiest to 
  5438. use.  The cached-micro presentation space draws only to the screen.  It is 
  5439. created and destroyed by using either the WinBeginPaint and WinEndPaint 
  5440. functions or the WinGetPS and WinReleasePS functions. 
  5441.  
  5442. The following sections describe each of the types of presentation spaces, in 
  5443. detail, and suggest strategies for using each type in an application.  All 
  5444. three kinds of presentation spaces can be used in a single application.  Some 
  5445. windows, especially if they never will be printed, are best served by 
  5446. cached-micro presentation spaces.  Other windows might require the more 
  5447. flexible services of micro or normal presentation spaces. 
  5448.  
  5449.  
  5450. ΓòÉΓòÉΓòÉ 9.2.4.1. Normal Presentation Spaces ΓòÉΓòÉΓòÉ
  5451.  
  5452. The normal presentation space supports the full power of the operating system 
  5453. graphics, including retained graphics.  The primary advantages of a normal 
  5454. presentation space over the other two presentation-space types are its support 
  5455. of all graphics functions and its ability to be associated with many kinds of 
  5456. device contexts. 
  5457.  
  5458. A normal presentation space can be associated with many different device 
  5459. contexts.  Typically, this means that an application creates a normal 
  5460. presentation space and associates it with a window device context for screen 
  5461. display.  When the user asks to print, the application associates the same 
  5462. presentation space with a printer device context.  Later, the application can 
  5463. reassociate the presentation space with the window device context.  A 
  5464. presentation space can be associated with only one device context at a time, 
  5465. but the normal presentation space enables the application to change the device 
  5466. context whenever necessary. 
  5467.  
  5468. When creating a normal presentation space, an application can associate it with 
  5469. a device context or defer the association to a later time.  The GpiAssociate 
  5470. function associates a device context with a normal presentation space after the 
  5471. presentation space has been created.  An application typically associates the 
  5472. normal presentation space with a device context when calling the GpiCreatePS 
  5473. function and, later, associates the presentation space with a different device 
  5474. context by calling GpiAssociate.  To obtain a device context for a window, call 
  5475. the WinOpenWindowDC function.  To obtain a device context for a device other 
  5476. than the screen, call the DevOpenDC function. 
  5477.  
  5478. An application typically creates a normal presentation space during 
  5479. initialization and uses it until termination.  Each time the application 
  5480. receives a WM_PAINT message, it passes the handle of the normal presentation 
  5481. space as an argument to WinBeginPaint; this prevents the system from returning 
  5482. a cached-micro presentation space.  The system modifies the visible region of 
  5483. the supplied normal presentation space and returns the presentation space to 
  5484. the application.  This method enables the application to use the same 
  5485. presentation space for all the drawing in a specified window. Normal 
  5486. presentation spaces created using GpiCreatePS must be destroyed by calling 
  5487. GpiDestroyPS before the application terminates.  Do not call WinReleasePS to 
  5488. release a presentation space obtained using GpiCreatePS.  Before terminating, 
  5489. applications also must use DevCloseDC to close any device contexts opened using 
  5490. DevOpenDC.  No action is necessary for device contexts obtained using 
  5491. WinOpenWindowDC, because the system automatically closes these device contexts 
  5492. when destroying the associated windows. 
  5493.  
  5494.  
  5495. ΓòÉΓòÉΓòÉ 9.2.4.2. Micro Presentation Spaces ΓòÉΓòÉΓòÉ
  5496.  
  5497. The primary advantage of a micro presentation space over a cached-micro 
  5498. presentation space is that it can be used for printing as well as painting in a 
  5499. window.  An application that uses a micro presentation space must explicitly 
  5500. associate it with a device context.  This makes the micro presentation space 
  5501. useful for painting to a printer, a plotter, or an off-screen memory bit map. 
  5502.  
  5503. A micro presentation space does not support the full set of OS/2 graphics 
  5504. functions.  Unlike a normal presentation space, a micro presentation space does 
  5505. not support retained graphics. 
  5506.  
  5507. An application that must display graphics or text in a window and print to a 
  5508. printer or plotter typically maintains two presentation spaces: one for the 
  5509. window and one for the printing device. The following figure shows how an 
  5510. application's graphics output can be routed through separate presentation 
  5511. spaces to produce a screen display and printed copy. An application creates a 
  5512. micro presentation space by calling the GpiCreatePS function.  A device context 
  5513. must be supplied at the time the micro presentation space is created.  An 
  5514. application typically creates a device context and then a presentation space. 
  5515. The following code fragment demonstrates this by obtaining a device context for 
  5516. a window and associating it with a new micro presentation space: 
  5517.  
  5518.  
  5519.         hdc = WinOpenWindowDC(...);
  5520.         hps = GpiCreatePS(..., hdc, ..., GPIA_ASSOC);
  5521.  
  5522. To create a micro presentation space for a device other than the screen, 
  5523. replace the call to the WinOpenWindowDC function with a call to the DevOpenDC 
  5524. function, which obtains a device context for a device other than the screen. 
  5525. Then the device context that is obtained by this call can be used as an 
  5526. argument to GpiCreatePS. 
  5527.  
  5528. An application typically creates a micro presentation space during 
  5529. initialization and uses it until termination.  Each time the application 
  5530. receives a WM_PAINT message, it should pass the handle of the micro 
  5531. presentation space as an argument to the WinBeginPaint function; this prevents 
  5532. the system from returning a cached-micro presentation space.  The system 
  5533. modifies the visible region of the supplied micro presentation space and 
  5534. returns the presentation space to the application.  This method enables the 
  5535. application to use the same presentation space for all drawing in a specified 
  5536. window. 
  5537.  
  5538. Micro presentation spaces created by using GpiCreatePS should be destroyed by 
  5539. calling GpiDestroyPS before the application terminates.  Do not call the 
  5540. WinReleasePS function to release a presentation space obtained by using 
  5541. GpiCreatePS.  Before terminating, applications must use the DevCloseDC function 
  5542. to close any device contexts opened using the DevOpenDC function.  No action is 
  5543. necessary for device contexts obtained using WinOpenWindowDC, because the 
  5544. system automatically closes these device contexts when destroying the 
  5545. associated windows. 
  5546.  
  5547.  
  5548. ΓòÉΓòÉΓòÉ 9.2.4.3. Cached-Micro Presentation Spaces ΓòÉΓòÉΓòÉ
  5549.  
  5550. The cached-micro presentation space provides the simplest and most efficient 
  5551. drawing environment.  It can be used only for drawing on the screen, typically 
  5552. in the context of a window.  It is most appropriate for application tasks that 
  5553. require simple window-drawing functions that will not be printed.  Cached-micro 
  5554. presentation spaces do not support retained graphics. 
  5555.  
  5556. After an application draws to a cached-micro presentation space, the drawing 
  5557. commands are routed through an implied device context to the current display. 
  5558. The application does not require information about the actual device context, 
  5559. because the device context is assumed to be the display.  This process makes 
  5560. cached-micro presentation spaces easy for applications to use. The following 
  5561. code fragment illustrates this process: 
  5562.  
  5563.        HPS    hps;
  5564.  
  5565.             case WM_PAINT:
  5566.                 hps = WinBeginPaint(hwnd,NULL,NULL);
  5567.  
  5568.                 /*
  5569.                  * Use PS.
  5570.                  */
  5571.  
  5572.                 WinEndPaint (hps);
  5573.  
  5574.               or 
  5575.  
  5576.         HPS    hps;
  5577.  
  5578.             case WM_PAINT:
  5579.  
  5580.                  hps = WinGetPS(hwnd);
  5581.  
  5582.                  /*
  5583.                  * Use PS.
  5584.                  */
  5585.  
  5586.                  WinReleasePS(hps);
  5587.  
  5588. There are two common strategies for using cached-micro presentation spaces in 
  5589. an application. The simplest strategy is to call the WinBeginPaint function 
  5590. during the WM_PAINT message, use the resulting cached-micro presentation space 
  5591. to draw in the window, then return the presentation space to the system by 
  5592. calling the WinEndPaint function.  By using this method, the application 
  5593. interacts with the presentation space only when drawing in the presentation 
  5594. space.  This method is most appropriate for simple drawing.  A disadvantage of 
  5595. this method is that the application must set up any special attributes for the 
  5596. presentation space, such as line color and font, each time a new presentation 
  5597. space is obtained. 
  5598.  
  5599. A second strategy is for the application to allocate a cached-micro 
  5600. presentation space during initialization, by calling the WinGetPS function and 
  5601. saving the resulting presentation-space handle in a static variable.  Then the 
  5602. application can set attributes in the presentation space that exist for the 
  5603. life of the program.  The presentation-space handle can be used as an argument 
  5604. to the WinBeginPaint function each time the window gets a WM_PAINT message; the 
  5605. system modifies the visible region and returns the presentation space to the 
  5606. application with its attributes intact. This strategy is appropriate for 
  5607. applications that need to customize their window-drawing attributes. A 
  5608. presentation space that is obtained by calling the WinGetPS function must be 
  5609. released by calling WinReleasePS when the application has finished using it, 
  5610. typically during program termination.  A presentation space that is obtained by 
  5611. calling WinBeginPaint must be released by calling WinEndPaint, typically as the 
  5612. last part of processing a WM_PAINT message. 
  5613.  
  5614.  
  5615. ΓòÉΓòÉΓòÉ 10. Resource Files ΓòÉΓòÉΓòÉ
  5616.  
  5617. Resource files enable you to specify the resource information used in creating 
  5618. an application's window. Some examples of resources that can be defined in 
  5619. resource files are: 
  5620.  
  5621.      Menus 
  5622.      Accelerator tables 
  5623.      Dialog and window templates 
  5624.      Icons 
  5625.      Fonts 
  5626.      Bit maps 
  5627.      Strings 
  5628.  
  5629.  To add resource information to an application, use a text editor to create a 
  5630.  resource script file, and then compile it using the Resource Compiler, RC.EXE. 
  5631.  The advantage of using resource files is that resource information can be 
  5632.  maintained and updated separately in the resource script file and then linked 
  5633.  to your application program's .EXE file. This greatly simplifies customizing 
  5634.  an application because you can modify resource information without having to 
  5635.  recompile the entire application. 
  5636.  
  5637.  This chapter describes the use of resource files in Presentation Manager (PM) 
  5638.  programming. 
  5639.  
  5640.  
  5641. ΓòÉΓòÉΓòÉ 10.1. About Resource Files ΓòÉΓòÉΓòÉ
  5642.  
  5643. A resource script file is a text file that contains one or more resource 
  5644. statements that define the type, identifier, and data for each resource. 
  5645. Because some resources might contain binary data that cannot be created using a 
  5646. text editor, there are resource statements that let you specify additional 
  5647. files to include when compiling the resource script file. For example, you can 
  5648. use the Dialog Box Editor to design dialog boxes, the Font Editor to edit font 
  5649. files, and the Icon Editor to create customized icons, pointers, and bit maps. 
  5650. The definitions for these resources can be included with other resource 
  5651. definitions in the resource file. 
  5652.  
  5653.  
  5654. ΓòÉΓòÉΓòÉ 10.1.1. Resource Statements ΓòÉΓòÉΓòÉ
  5655.  
  5656. This section provides overview information on resource statements and 
  5657. directives.  Resource statements consist of one or more keywords, numbers, 
  5658. character strings, constants, or file names. You combine these to define the 
  5659. resource type, identifier, and data. Directives are special types of resource 
  5660. statements that perform functions such as including header files, defining 
  5661. constants, and conditionally compiling portions of the file. Resource 
  5662. statements have three basic forms: 
  5663.  
  5664.      Single-line statements 
  5665.      Multiple-line statements 
  5666.      Directives 
  5667.  
  5668.  
  5669. ΓòÉΓòÉΓòÉ 10.1.1.1. Single-line Statements ΓòÉΓòÉΓòÉ
  5670.  
  5671. Single-line statements consist of a keyword identifying the resource type, a 
  5672. constant or number specifying the resource identifier, and a file name 
  5673. specifying the file containing the resource data. For example, this ICON 
  5674. statement defines an icon resource: 
  5675.  
  5676.   ICON 1 myicon.ico
  5677.  
  5678. The icon resource has the icon identifier 1, and the file MYICON.ICO contains 
  5679. the icon data. 
  5680.  
  5681.  
  5682. ΓòÉΓòÉΓòÉ 10.1.1.2. Multiple-line Statements ΓòÉΓòÉΓòÉ
  5683.  
  5684. Multiple-line statements consist of a keyword identifying the resource type, a 
  5685. constant or number specifying the resource identifier, and, between the BEGIN 
  5686. and END keywords, additional resource statements that define the resource data. 
  5687. For example, this MENU statement defines a menu resource: 
  5688.  
  5689.   MENU 1
  5690.   BEGIN
  5691.       MENUITEM "Alpha", 101
  5692.       MENUITEM "Beta",  102
  5693.   END
  5694.  
  5695. The menu identifier is 1. The menu contains two MENUITEM statements that define 
  5696. the contents of the menu. 
  5697.  
  5698. In multiple-line statements such as DLGTEMPLATE and WINDOWTEMPLATE, any level 
  5699. of nested statements is allowed. For example, the DLGTEMPLATE and 
  5700. WINDOWTEMPLATE statements typically contain a single DIALOG or FRAME statement. 
  5701. These statements can contain any number of WINDOW and CONTROL statements; the 
  5702. WINDOW and CONTROL statements can contain additional WINDOW and CONTROL 
  5703. statements, and so forth. The nested statements let you define controls and 
  5704. other child windows for the dialog boxes and windows. 
  5705.  
  5706. If a nested statement creates a child window or control, the parent and owner 
  5707. of the new window is the window created by the containing statement. (FRAME 
  5708. statements occasionally create frame controls whose parent and owner windows 
  5709. are not the same.) 
  5710.  
  5711.  
  5712. ΓòÉΓòÉΓòÉ 10.1.1.3. Directives ΓòÉΓòÉΓòÉ
  5713.  
  5714. Directives consist of the reserved character # in the first column of a line, 
  5715. followed by the directive keyword and any additional numbers, character 
  5716. strings, or file names. 
  5717.  
  5718. Some examples of directives are: 
  5719.  
  5720.      #define 
  5721.      #if 
  5722.      #ifdef 
  5723.      #include 
  5724.  
  5725.  Descriptions of the individual directives follow the resource file statement 
  5726.  descriptions. 
  5727.  
  5728.  
  5729. ΓòÉΓòÉΓòÉ 10.1.2. Resource File Statement Descriptions ΓòÉΓòÉΓòÉ
  5730.  
  5731. This section provides the syntax, description, and an example of each of the 
  5732. resource file statements. 
  5733.  
  5734. The following table summarizes, at a general level, the most commonly used 
  5735. parameters on the statements. 
  5736.  
  5737. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5738. ΓöéParameter   ΓöéDescription                                     Γöé
  5739. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5740. Γöéid          ΓöéControl identifier.                             Γöé
  5741. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5742. Γöéx           ΓöéX coordinate of the lower-left corner of the    Γöé
  5743. Γöé            Γöécontrol.                                        Γöé
  5744. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5745. Γöéy           ΓöéY coordinate of the lower-left corner of the    Γöé
  5746. Γöé            Γöécontrol.                                        Γöé
  5747. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5748. Γöéheight      ΓöéHeight of the control ( in 1/8 character units).Γöé
  5749. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5750. Γöéwidth       ΓöéWidth of the control.                           Γöé
  5751. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5752. Γöéstyle       ΓöéPredefined bit representation of a style or     Γöé
  5753. Γöé            Γöécombination of styles.                          Γöé
  5754. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5755. Γöéload option ΓöéDefinition of when the system should load the   Γöé
  5756. Γöé            Γöéresource into memory (for example, PRELOAD or   Γöé
  5757. Γöé            ΓöéLOADONCALL).                                    Γöé
  5758. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5759. Γöémem option  ΓöéDefinition of how the system manages the        Γöé
  5760. Γöé            Γöéresource when in memory (for example, FIXED,    Γöé
  5761. Γöé            ΓöéMOVABLE, or DISCARDABLE).                       Γöé
  5762. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5763. Γöétext        ΓöéText associated with a control.                 Γöé
  5764. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5765. Γöéclass       ΓöéPredefined class for a particular control.      Γöé
  5766. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5767.  
  5768.  
  5769. ΓòÉΓòÉΓòÉ 10.1.2.1. ACCELTABLE Statement ΓòÉΓòÉΓòÉ
  5770.  
  5771.  The ACCELTABLE statement creates a table of accelerators for an application. 
  5772.  
  5773.  
  5774. ΓòÉΓòÉΓòÉ 10.1.2.1.1. Syntax ΓòÉΓòÉΓòÉ
  5775.  
  5776.   ACCELTABLE acceltable-id [mem-option][load-option]
  5777.   BEGIN
  5778.   key-value, command[, accelerator-options] ...
  5779.       .
  5780.       .
  5781.       .
  5782.   END
  5783.  
  5784.  
  5785. ΓòÉΓòÉΓòÉ 10.1.2.1.2. Description ΓòÉΓòÉΓòÉ
  5786.  
  5787. An accelerator is a keystroke that gives the user a quick way to choose a 
  5788. command from a menu or carry out some other task. An accelerator table can be 
  5789. loaded when needed from the executable file by using the WinLoadAccelTable 
  5790. function. 
  5791.  
  5792.  
  5793. ΓòÉΓòÉΓòÉ 10.1.2.1.3. Example ΓòÉΓòÉΓòÉ
  5794.  
  5795. This example creates an accelerator table whose accelerator-table identifier is 
  5796. 1. The table contains two accelerators:  Ctrl+S and Ctrl+G. These accelerators 
  5797. generate WM_COMMAND messages with values of 101 and 102, respectively, when the 
  5798. user presses the corresponding keys. 
  5799.  
  5800.   ACCELTABLE 1
  5801.   BEGIN
  5802.       "S", 101, CONTROL
  5803.       "G", 102, CONTROL
  5804.   END
  5805.  
  5806.  
  5807. ΓòÉΓòÉΓòÉ 10.1.2.2. ASSOCTABLE Statement ΓòÉΓòÉΓòÉ
  5808.  
  5809.  The ASSOCTABLE statement defines a file-association table for an application. 
  5810.  
  5811.  
  5812. ΓòÉΓòÉΓòÉ 10.1.2.2.1. Syntax ΓòÉΓòÉΓòÉ
  5813.  
  5814.   ASSOCTABLE assoctable-id [load-option][mem-option]
  5815.   BEGIN
  5816.   association-name, file-match-string[, extended-attribute-flag]
  5817.     [, icon-filename]
  5818.     .
  5819.     .
  5820.     .
  5821.   END
  5822.  
  5823.  
  5824. ΓòÉΓòÉΓòÉ 10.1.2.2.2. Description ΓòÉΓòÉΓòÉ
  5825.  
  5826. This table associates the data files that an application creates with the 
  5827. executable file of the application. When the user selects one of these data 
  5828. files, the associated application begins executing. 
  5829.  
  5830. A file-association table can also associate icons with the data files that an 
  5831. application creates. The icons are used to identify the data files graphically. 
  5832. Because a file-association table associates icons by file type, all data files 
  5833. having the same file type have the same icon. 
  5834.  
  5835. You can provide any number of ASSOCTABLE statements in a resource script file, 
  5836. but each statement must specify a unique assoctable-id value. The 
  5837. file-association tables are written not only to the resources within your 
  5838. executable file, but also to the .ASSOC extended attribute. However, only the 
  5839. last file-association table specified in the resource script file is actually 
  5840. written to the extended attribute. 
  5841.  
  5842.  
  5843. ΓòÉΓòÉΓòÉ 10.1.2.3. AUTOCHECKBOX Statement ΓòÉΓòÉΓòÉ
  5844.  
  5845.  The AUTOCHECKBOX statement creates an automatic-check-box control. 
  5846.  
  5847.  
  5848. ΓòÉΓòÉΓòÉ 10.1.2.3.1. Syntax ΓòÉΓòÉΓòÉ
  5849.  
  5850.   AUTOCHECKBOX text, id, x, y, width [, style]
  5851.  
  5852.  
  5853. ΓòÉΓòÉΓòÉ 10.1.2.3.2. Description ΓòÉΓòÉΓòÉ
  5854.  
  5855. The control is a small rectangle (check box) that contains an X when the user 
  5856. selects it. The specified text is displayed to the right of the check box. An X 
  5857. appears in the square when the user first selects the control and disappears 
  5858. the next time the user selects it. The AUTOCHECKBOX statement, which can only 
  5859. be used in a DIALOG or WINDOW statement, defines the text, identifier, 
  5860. dimensions, and attributes of a control window. The predefined class for this 
  5861. control is WC_BUTTON. If the style is not specified, the default style is 
  5862. BS_AUTOCHECKBOX and WS_TABSTOP. 
  5863.  
  5864.  
  5865. ΓòÉΓòÉΓòÉ 10.1.2.3.3. Example ΓòÉΓòÉΓòÉ
  5866.  
  5867. This example creates an automatic-check-box control that is labeled "Italic." 
  5868.  
  5869.   AUTOCHECKBOX "Italic", 101, 10, 10, 100, 100
  5870.  
  5871.  
  5872. ΓòÉΓòÉΓòÉ 10.1.2.4. AUTORADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  5873.  
  5874. The AUTORADIOBUTTON statement creates an automatic-radio-button control. 
  5875.  
  5876.  
  5877. ΓòÉΓòÉΓòÉ 10.1.2.4.1. Syntax ΓòÉΓòÉΓòÉ
  5878.  
  5879. AUTORADIOBUTTON text, id, x, y, width, height [, style]
  5880.  
  5881.  
  5882. ΓòÉΓòÉΓòÉ 10.1.2.4.2. Description ΓòÉΓòÉΓòÉ
  5883.  
  5884. This control is a small circle with the given text displayed to its right. The 
  5885. control highlights the circle and sends a message to its parent window when the 
  5886. user selects the button. The control also removes the selection from any other 
  5887. automatic-radio-button controls in the same group. When the user selects the 
  5888. button again, the control removes the highlight before sending a message. The 
  5889. AUTORADIOBUTTON statement, which you can use only in a DIALOG or WINDOW 
  5890. statement, defines the text, identifier, dimensions, and attributes of a 
  5891. control window. The predefined class for this control is WC_BUTTON. If you do 
  5892. not specify a style, the default style is BS_AUTORADIOBUTTON. 
  5893.  
  5894.  
  5895. ΓòÉΓòÉΓòÉ 10.1.2.4.3. Example ΓòÉΓòÉΓòÉ
  5896.  
  5897. This example creates an automatic-radio-button control that is labeled 
  5898. "Italic." 
  5899.  
  5900.   AUTORADIOBUTTON "Italic", 101, 10, 10, 24, 50
  5901.  
  5902.  
  5903. ΓòÉΓòÉΓòÉ 10.1.2.5. BITMAP Statement ΓòÉΓòÉΓòÉ
  5904.  
  5905.  The BITMAP statement defines a bit-map  resource for an application. 
  5906.  
  5907.  
  5908. ΓòÉΓòÉΓòÉ 10.1.2.5.1. Syntax ΓòÉΓòÉΓòÉ
  5909.  
  5910. BITMAP bitmap-id [load-option] [mem-option] filename
  5911.  
  5912.  
  5913. ΓòÉΓòÉΓòÉ 10.1.2.5.2. Description ΓòÉΓòÉΓòÉ
  5914.  
  5915. A bit-map resource, typically created using the Icon Editor, is a custom bit 
  5916. map that an application uses in its display or as an item in a menu. 
  5917.  
  5918. The BITMAP statement copies the bit-map resource from the file specified in the 
  5919. filename field and adds it to the application's other resources. A bit-map 
  5920. resource can be loaded from the executable file when needed by using the 
  5921. GpiLoadBitmap function. 
  5922.  
  5923. You can provide any number of BITMAP statements in a resource script file, but 
  5924. each statement must specify a unique bitmap-id value. 
  5925.  
  5926.  
  5927. ΓòÉΓòÉΓòÉ 10.1.2.5.3. Example ΓòÉΓòÉΓòÉ
  5928.  
  5929. This example defines a bit map whose bit-map identifier is 12. The bit-map 
  5930. resource is copied from the file CUSTOM.BMP. 
  5931.  
  5932.   BITMAP 12 custom.bmp
  5933.  
  5934.  
  5935. ΓòÉΓòÉΓòÉ 10.1.2.6. CHECKBOX Statement ΓòÉΓòÉΓòÉ
  5936.  
  5937. The CHECKBOX statement creates a check-box control. 
  5938.  
  5939.  
  5940. ΓòÉΓòÉΓòÉ 10.1.2.6.1. Syntax ΓòÉΓòÉΓòÉ
  5941.  
  5942. CHECKBOX text, id, x, y, width, height [, style]
  5943.  
  5944.  
  5945. ΓòÉΓòÉΓòÉ 10.1.2.6.2. Description ΓòÉΓòÉΓòÉ
  5946.  
  5947. The control is a small rectangle (check box) that has the specified text 
  5948. displayed to the right. The control highlights the rectangle and sends a 
  5949. message to its parent window when the user selects the control. The CHECKBOX 
  5950. statement, which you can use only in a DIALOG or WINDOW statement, defines the 
  5951. text, identifier, dimensions, and attributes of a control window. The 
  5952. predefined class for this control is WC_BUTTON. If you do not specify a style, 
  5953. the default style is BS_CHECKBOX and WS_TABSTOP. 
  5954.  
  5955.  
  5956. ΓòÉΓòÉΓòÉ 10.1.2.6.3. Example ΓòÉΓòÉΓòÉ
  5957.  
  5958. This example creates a check-box control that is labeled "Italic." 
  5959.  
  5960.   CHECKBOX "Italic", 101, 10, 10, 100, 100
  5961.  
  5962.  
  5963. ΓòÉΓòÉΓòÉ 10.1.2.7. CODEPAGE Statement ΓòÉΓòÉΓòÉ
  5964.  
  5965.  The CODEPAGE statement sets the code page for all subsequent resources. 
  5966.  
  5967.  
  5968. ΓòÉΓòÉΓòÉ 10.1.2.7.1. Syntax ΓòÉΓòÉΓòÉ
  5969.  
  5970. CODEPAGE codepage-id
  5971.  
  5972.  
  5973. ΓòÉΓòÉΓòÉ 10.1.2.7.2. Description ΓòÉΓòÉΓòÉ
  5974.  
  5975. The code page specifies the character set used for characters in the resource. 
  5976.  
  5977. If the CODEPAGE statement is not given in a resource script file, the resource 
  5978. compiler uses the code page set up for the individual system. If more than one 
  5979. CODEPAGE statement is given in the file, each CODEPAGE statement applies to the 
  5980. resource statements between it and the next CODEPAGE statement. 
  5981.  
  5982.  
  5983. ΓòÉΓòÉΓòÉ 10.1.2.7.3. Example ΓòÉΓòÉΓòÉ
  5984.  
  5985. In this example, the code page for the character-string resources is set to 
  5986. Portuguese (860). 
  5987.  
  5988.   CODEPAGE 860
  5989.  
  5990.   STRINGTABLE
  5991.   BEGIN
  5992.       1 "Filename not found"
  5993.       2 "Cannot open file for reading"
  5994.   END
  5995.  
  5996.  
  5997. ΓòÉΓòÉΓòÉ 10.1.2.8. COMBOBOX Statement ΓòÉΓòÉΓòÉ
  5998.  
  5999.  The COMBOBOX statement creates a combination-box control. 
  6000.  
  6001.  
  6002. ΓòÉΓòÉΓòÉ 10.1.2.8.1. Syntax ΓòÉΓòÉΓòÉ
  6003.  
  6004.   COMBOBOX text, id, x, y, width, height [, style]
  6005.  
  6006.  
  6007. ΓòÉΓòÉΓòÉ 10.1.2.8.2. Description ΓòÉΓòÉΓòÉ
  6008.  
  6009. This control combines a list-box control with an entry-field control. It allows 
  6010. the user to place the selected item from a list box into an entry field. 
  6011.  
  6012. The COMBOBOX statement, which you can use only in a DIALOG or WINDOW statement, 
  6013. defines the text, identifier, dimensions, and attributes of a control window. 
  6014. The predefined class for this control is WC_COMBOBOX. If you do not specify a 
  6015. style, the default style is CBS_SIMPLE, WS_GROUP, WS_TABSTOP, and WS_VISIBLE. 
  6016.  
  6017.  
  6018. ΓòÉΓòÉΓòÉ 10.1.2.8.3. Example ΓòÉΓòÉΓòÉ
  6019.  
  6020. This example creates a combination-box control. 
  6021.  
  6022.   COMBOBOX "", 101, 10, 10, 24, 50
  6023.  
  6024.  
  6025. ΓòÉΓòÉΓòÉ 10.1.2.9. CONTAINER Statement ΓòÉΓòÉΓòÉ
  6026.  
  6027. The CONTAINER statement creates a container control within a dialog window. 
  6028.  
  6029.  
  6030. ΓòÉΓòÉΓòÉ 10.1.2.9.1. Syntax ΓòÉΓòÉΓòÉ
  6031.  
  6032. CONTAINER  id, x, y, width, height [, style]
  6033.  
  6034.  
  6035. ΓòÉΓòÉΓòÉ 10.1.2.9.2. Description ΓòÉΓòÉΓòÉ
  6036.  
  6037. The container control is a visual component that holds objects. 
  6038.  
  6039. The CONTAINER statement defines the identifier, position, dimensions, and 
  6040. attributes of a container control. The predefined class for this control is 
  6041. WC_CONTAINER. If you do not specify a style, the default style is WS_TABSTOP, 
  6042. WS_VISIBLE, and CCS_SINGLESEL. A CONTAINER statement is only used in a DIALOG 
  6043. or WINDOW statement. 
  6044.  
  6045.  
  6046. ΓòÉΓòÉΓòÉ 10.1.2.9.3. Example ΓòÉΓòÉΓòÉ
  6047.  
  6048. This example creates a container control at position (30,30) within the dialog 
  6049. window. The container has a width of 70 character units and a height of 25 
  6050. character units. Its resource ID is 301. The default style CCS_SINGLESEL has 
  6051. been overridden by the style specification CCS_MULTIPLESEL. The default styles 
  6052. WS_TABSTOP and WS_GROUP are both in effect, though only the latter is 
  6053. specified. 
  6054.  
  6055. #define IDC_CONTAINER    301
  6056. #define IDD_CONTAINERDLG 504
  6057. DIALOG "Container", IDD_CONTAINERDLG, 23, 6, 120, 280, FS_NOBYTEALIGN |
  6058.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  6059.   BEGIN
  6060.      CONTAINER   IDC_CONTAINER, 30, 30, 70, 200, CCS_MULTIPLESEL |
  6061.                        WS_GROUP
  6062.   END
  6063.  
  6064.  
  6065. ΓòÉΓòÉΓòÉ 10.1.2.10. CONTROL Statement ΓòÉΓòÉΓòÉ
  6066.  
  6067.  The CONTROL statement defines a control as belonging to the specified class. 
  6068.  
  6069.  
  6070. ΓòÉΓòÉΓòÉ 10.1.2.10.1. Syntax ΓòÉΓòÉΓòÉ
  6071.  
  6072.   CONTROL text, id, x, y, width, height, class [, style]
  6073.   [ data-definitions ] ...
  6074.   [ BEGIN
  6075.   control-definition
  6076.       .
  6077.       .
  6078.       .
  6079.   END ]
  6080.  
  6081.  
  6082. ΓòÉΓòÉΓòÉ 10.1.2.10.2. Description ΓòÉΓòÉΓòÉ
  6083.  
  6084. The statement defines the position and dimensions of the control within the 
  6085. parent window, as well as the control style. The CONTROL statement is most 
  6086. often used in a DIALOG or WINDOW statement. 
  6087.  
  6088. Typically, several CONTROL statements are used in each DIALOG statement, and 
  6089. each CONTROL statement must have a unique id value. The optional BEGIN and END 
  6090. statements enclose any CONTROL statements that may be given with the control. 
  6091. CONTROL statements given in this manner represent child windows belonging to 
  6092. the control created by the CONTROL statement. 
  6093.  
  6094. The CONTROL statement can actually contain any combination of CONTROL, DIALOG, 
  6095. and WINDOW statements, but it usually does not contain such statements. 
  6096.  
  6097.  
  6098. ΓòÉΓòÉΓòÉ 10.1.2.10.3. Example ΓòÉΓòÉΓòÉ
  6099.  
  6100. This example creates a push-button control with the WS_TABSTOP and WS_VISIBLE 
  6101. styles. 
  6102.  
  6103.   CONTROL "OK", 101, 10, 10, 20, 50, WC_BUTTON, BS_PUSHBUTTON |
  6104.                                                 WS_TABSTOP    |
  6105.                                                 WS_VISIBLE
  6106.  
  6107.  
  6108. ΓòÉΓòÉΓòÉ 10.1.2.11. CTEXT Statement ΓòÉΓòÉΓòÉ
  6109.  
  6110.  The CTEXT statement creates a centered-text control. 
  6111.  
  6112.  
  6113. ΓòÉΓòÉΓòÉ 10.1.2.11.1. Syntax ΓòÉΓòÉΓòÉ
  6114.  
  6115.   CTEXT text, id, x, y, width, height [, style]
  6116.  
  6117.  
  6118. ΓòÉΓòÉΓòÉ 10.1.2.11.2. Description ΓòÉΓòÉΓòÉ
  6119.  
  6120. The control is a simple rectangle displaying the given text centered in the 
  6121. rectangle. The text is formatted before it is displayed. Words that would 
  6122. extend past the end of a line are automatically wrapped to the beginning of the 
  6123. next line. 
  6124.  
  6125. The CTEXT statement defines the text, identifier, dimensions, and attributes of 
  6126. the control. The predefined class for this control is WC_STATIC. If you do not 
  6127. specify a style, the default style is SS_TEXT, DT_CENTER, and WS_GROUP. 
  6128.  
  6129. Use the CTEXT statement only in a DIALOG or WINDOW statement. 
  6130.  
  6131.  
  6132. ΓòÉΓòÉΓòÉ 10.1.2.11.3. Example ΓòÉΓòÉΓòÉ
  6133.  
  6134. This example creates a centered-text control that is labeled "Filename." 
  6135.  
  6136.   CTEXT "Filename", 101, 10, 10, 100, 100
  6137.  
  6138.  
  6139. ΓòÉΓòÉΓòÉ 10.1.2.12. CTLDATA Statement ΓòÉΓòÉΓòÉ
  6140.  
  6141.  The CTLDATA statement defines control data for a custom dialog box, window, or 
  6142. control. 
  6143.  
  6144.  
  6145. ΓòÉΓòÉΓòÉ 10.1.2.12.1. Syntax ΓòÉΓòÉΓòÉ
  6146.  
  6147.   CTLDATA word-value [, word-value] ...
  6148.  
  6149.   CTLDATA string
  6150.  
  6151.   CTLDATA MENU
  6152.   BEGIN
  6153.   menuitem-definition
  6154.      .
  6155.      .
  6156.      .
  6157.   END
  6158.  
  6159.  
  6160. ΓòÉΓòÉΓòÉ 10.1.2.12.2. Description ΓòÉΓòÉΓòÉ
  6161.  
  6162. The statement has three basic forms to permit specifying a menu or specifying 
  6163. data in words or characters. The data can be in any format, because only your 
  6164. window procedure will use it. The window procedure of the dialog box, window, 
  6165. or control receives this data when the item is created. It is up to the window 
  6166. procedure to process the data. 
  6167.  
  6168. CTLDATA is often used to supply data that controls the subsequent operation of 
  6169. the custom window. For example, the CTLDATA statement may contain extended 
  6170. style bits - that is, style bits designed specifically for your customized 
  6171. window. 
  6172.  
  6173. You should reserve the CTLDATA statement for window classes that you create 
  6174. yourself. 
  6175.  
  6176.  
  6177. ΓòÉΓòÉΓòÉ 10.1.2.12.3. Example ΓòÉΓòÉΓòÉ
  6178.  
  6179. This example creates a menu for the window created with the WINDOW statement. 
  6180.  
  6181.   WINDOWTEMPLATE 1
  6182.   BEGIN
  6183.       WINDOW "Sample", 1, 0, 0, 100, 100, "MYCLASS", 0, FCF_STANDARD
  6184.       CTLDATA MENU
  6185.       BEGIN
  6186.           MENUITEM "Exit", 101
  6187.       END
  6188.   END
  6189.  
  6190.  
  6191. ΓòÉΓòÉΓòÉ 10.1.2.13. DEFAULTICON Statement ΓòÉΓòÉΓòÉ
  6192.  
  6193. This statement installs the named icon file definition under the ICON Extended 
  6194. Attribute of the program file. 
  6195.  
  6196.  
  6197. ΓòÉΓòÉΓòÉ 10.1.2.13.1. Syntax ΓòÉΓòÉΓòÉ
  6198.  
  6199. DEFAULTICON filename
  6200.  
  6201.  
  6202. ΓòÉΓòÉΓòÉ 10.1.2.13.2. Description ΓòÉΓòÉΓòÉ
  6203.  
  6204. An icon with an icon-id of 1 is the default icon by default, unless you supply 
  6205. a different icon. 
  6206.  
  6207.  
  6208. ΓòÉΓòÉΓòÉ 10.1.2.13.3. Example ΓòÉΓòÉΓòÉ
  6209.  
  6210. DEFAULTICON filename.ico 
  6211.  
  6212.  
  6213. ΓòÉΓòÉΓòÉ 10.1.2.14. DEFPUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  6214.  
  6215.  The DEFPUSHBUTTON statement creates a default push-button control. 
  6216.  
  6217.  
  6218. ΓòÉΓòÉΓòÉ 10.1.2.14.1. Syntax ΓòÉΓòÉΓòÉ
  6219.  
  6220. DEFPUSHBUTTON text, id, x, y, width, height [, style]
  6221.  
  6222.  
  6223. ΓòÉΓòÉΓòÉ 10.1.2.14.2. Description ΓòÉΓòÉΓòÉ
  6224.  
  6225. The control is a round-cornered rectangle containing the given text. The 
  6226. rectangle has a bold outline to represent that it is the default response for 
  6227. the user. The control sends a message to its parent window when the user 
  6228. chooses the control. The DEFPUSHBUTTON statement defines the text, identifier, 
  6229. dimensions, and attributes of the control. The predefined class for this 
  6230. control is WC_BUTTON. If you do not specify a style, the default style is 
  6231. BS_PUSHBUTTON, BS_DEFAULT, and WS_TABSTOP. 
  6232.  
  6233. Use the DEFPUSHBUTTON statement only in a DIALOG or WINDOW statement. 
  6234.  
  6235.  
  6236. ΓòÉΓòÉΓòÉ 10.1.2.14.3. Example ΓòÉΓòÉΓòÉ
  6237.  
  6238. This example creates a default push-button control that is labeled "Cancel." 
  6239.  
  6240. DEFPUSHBUTTON "Cancel", 101, 10, 10, 24, 50
  6241.  
  6242.  
  6243. ΓòÉΓòÉΓòÉ 10.1.2.15. DIALOG Statement ΓòÉΓòÉΓòÉ
  6244.  
  6245.  The DIALOG statement defines a window that an application can use to create 
  6246. dialog boxes. 
  6247.  
  6248.  
  6249. ΓòÉΓòÉΓòÉ 10.1.2.15.1. Syntax ΓòÉΓòÉΓòÉ
  6250.  
  6251. DIALOG text, id, x, y, width, height [, [style] [,framectl]] [data-definitions]
  6252. BEGIN
  6253. control-definition
  6254.     .
  6255.     .
  6256.     .
  6257. END
  6258.  
  6259.  
  6260. ΓòÉΓòÉΓòÉ 10.1.2.15.2. Description ΓòÉΓòÉΓòÉ
  6261.  
  6262. The statement defines the position and dimensions of the dialog box on the 
  6263. screen, as well as the dialog-box style. The DIALOG statement is most often 
  6264. used in a DLGTEMPLATE statement. 
  6265.  
  6266. Typically, you use only one DIALOG statement in each DLGTEMPLATE statement, and 
  6267. the DIALOG statement contains at least one control definition. 
  6268.  
  6269. The exact meaning of the coordinates depends on the style defined by the style 
  6270. field. For dialog boxes with FS_SCREENALIGN style, the coordinates are relative 
  6271. to the origin of the display screen. For dialog boxes with the style 
  6272. FS_MOUSEALIGN, the coordinates are relative to the position of the mouse 
  6273. pointer at the time the dialog box is created. For all other dialog boxes, the 
  6274. coordinates are relative to the origin of the parent window. 
  6275.  
  6276. The DIALOG statement can actually contain any combination of CONTROL, DIALOG, 
  6277. and WINDOW statements. Typically, a DIALOG statement contains one or more 
  6278. CONTROL statements. 
  6279.  
  6280.  
  6281. ΓòÉΓòÉΓòÉ 10.1.2.15.3. Example ΓòÉΓòÉΓòÉ
  6282.  
  6283. This example creates a dialog box that is labeled "Disk Error." 
  6284.  
  6285. DLGTEMPLATE 1
  6286. BEGIN
  6287.     DIALOG  "Disk Error", 100, 10, 10, 300, 110
  6288.     BEGIN
  6289.         CTEXT "Select One:", 1, 10, 80, 280, 12
  6290.         RADIOBUTTON "Retry", 2, 75, 50, 60, 12
  6291.         RADIOBUTTON "Abort", 3, 75, 30, 60, 12
  6292.         RADIOBUTTON "Ignore", 4, 75, 10, 60, 12
  6293.     END
  6294. END
  6295.  
  6296.  
  6297. ΓòÉΓòÉΓòÉ 10.1.2.16. DLGINCLUDE Statement ΓòÉΓòÉΓòÉ
  6298.  
  6299.  The DLGINCLUDE statement adds the specified file name to the resource file. 
  6300.  
  6301.  
  6302. ΓòÉΓòÉΓòÉ 10.1.2.16.1. Syntax ΓòÉΓòÉΓòÉ
  6303.  
  6304. DLGINCLUDE id filename
  6305.  
  6306.  
  6307. ΓòÉΓòÉΓòÉ 10.1.2.16.2. Description ΓòÉΓòÉΓòÉ
  6308.  
  6309. The DLGINCLUDE statement is typically used to let the application access the 
  6310. definitions file for the dialog box with the corresponding identifier. The file 
  6311. specified in the filename field must contain the define directives used by the 
  6312. dialog box. 
  6313.  
  6314. You can provide any number of DLGINCLUDE statements in a resource script file, 
  6315. but each must have a unique identifier. 
  6316.  
  6317.  
  6318. ΓòÉΓòÉΓòÉ 10.1.2.16.3. Example ΓòÉΓòÉΓòÉ
  6319.  
  6320. This example includes the name of the definition file dlgdef.h. The dialog-box 
  6321. identifier is 5. 
  6322.  
  6323. DLGINCLUDE 5 \\INCLUDE\\DLGDEF.H
  6324.  
  6325.  
  6326. ΓòÉΓòÉΓòÉ 10.1.2.17. DLGTEMPLATE Statement ΓòÉΓòÉΓòÉ
  6327.  
  6328.  The DLGTEMPLATE statement creates a dialog-box template. 
  6329.  
  6330.  
  6331. ΓòÉΓòÉΓòÉ 10.1.2.17.1. Syntax ΓòÉΓòÉΓòÉ
  6332.  
  6333. DLGTEMPLATE dialog-id [load-option] [mem-option]
  6334. BEGIN
  6335. dialog-definition
  6336.     .
  6337.     .
  6338.     .
  6339. END
  6340.  
  6341.  
  6342. ΓòÉΓòÉΓòÉ 10.1.2.17.2. Description ΓòÉΓòÉΓòÉ
  6343.  
  6344. A dialog-box template consists of a series of statements that define the 
  6345. identifier, load and memory options, dialog-box dimensions, and controls in the 
  6346. dialog box. The dialog-box template can be loaded from the executable file by 
  6347. using the WinLoadDlg function. 
  6348.  
  6349. You can provide any number of dialog-box templates in a resource script file, 
  6350. but each template must have a unique dialog-id value. 
  6351.  
  6352. A DLGTEMPLATE statement can actually contain DIALOG, CONTROL, and WINDOW 
  6353. statements. Typically, you include only one DIALOG statement. 
  6354.  
  6355.  
  6356. ΓòÉΓòÉΓòÉ 10.1.2.17.3. Example ΓòÉΓòÉΓòÉ
  6357.  
  6358. This example uses a DLGTEMPLATE statement to create a dialog box. 
  6359.  
  6360. DLGTEMPLATE ID_GETTIMER
  6361. BEGIN
  6362.     DIALOG "Timer", 1, 10, 10, 100, 40
  6363.     BEGIN
  6364.         LTEXT "Time (0 - 15):", 4, 8, 24, 72, 12
  6365.         ENTRYFIELD "0", ID_TIME, 80, 28, 16, 8, ES_MARGIN
  6366.         DEFPUSHBUTTON "Enter", ID_TIMEOK, 10, 6, 36, 12
  6367.         PUSHBUTTON "Cancel", ID_TIMECANCEL, 52, 6, 40, 12
  6368.     END
  6369. END
  6370.  
  6371.  
  6372. ΓòÉΓòÉΓòÉ 10.1.2.18. EDITTEXT Statement ΓòÉΓòÉΓòÉ
  6373.  
  6374.  The EDITTEXT statement creates an entry-field control. 
  6375.  
  6376.  
  6377. ΓòÉΓòÉΓòÉ 10.1.2.18.1. Syntax ΓòÉΓòÉΓòÉ
  6378.  
  6379. EDITTEXT text, id, x, y, width, height [, style]
  6380.  
  6381.  
  6382. ΓòÉΓòÉΓòÉ 10.1.2.18.2. Description ΓòÉΓòÉΓòÉ
  6383.  
  6384. This control is a rectangle in which the user can type and edit text. The 
  6385. control displays a pointer when the user selects the control. The user can then 
  6386. use the keyboard to enter text or edit the existing text. Editing keys include 
  6387. the BACKSPACE and DELETE keys. By using the mouse or the DIRECTION keys, the 
  6388. user can select the characters to delete or select the place to insert new 
  6389. characters. 
  6390.  
  6391. The EDITTEXT statement defines the text, identifier, dimensions, and attributes 
  6392. of a control window. The predefined class for this control is WC_ENTRYFIELD. If 
  6393. you do not specify a style, the default style is ES_AUTOSCROLL and WS_TABSTOP. 
  6394.  
  6395. The EDITTEXT control statement is identical to the ENTRYFIELD control 
  6396. statement. Use the EDITTEXT statement only in a DIALOG or WINDOW statement. 
  6397.  
  6398.  
  6399. ΓòÉΓòÉΓòÉ 10.1.2.18.3. Example ΓòÉΓòÉΓòÉ
  6400.  
  6401. This example creates an entry-field control that is not labeled. 
  6402.  
  6403.    EDITTEXT "", 101, 10, 10, 24, 50
  6404.  
  6405.  
  6406. ΓòÉΓòÉΓòÉ 10.1.2.19. ENTRYFIELD Statement ΓòÉΓòÉΓòÉ
  6407.  
  6408.  The ENTRYFIELD statement creates an entry-field control. 
  6409.  
  6410.  
  6411. ΓòÉΓòÉΓòÉ 10.1.2.19.1. Syntax ΓòÉΓòÉΓòÉ
  6412.  
  6413. ENTRYFIELD text, id, x, y, width, height [, style]
  6414.  
  6415.  
  6416. ΓòÉΓòÉΓòÉ 10.1.2.19.2. Description ΓòÉΓòÉΓòÉ
  6417.  
  6418. This control is a rectangle in which the user can type and edit text. The 
  6419. control displays a pointer when the user selects the control. The user can then 
  6420. use the keyboard to enter text or edit the existing text. Editing keys include 
  6421. the BACKSPACE and DELETE keys. By using the mouse or the DIRECTION keys, the 
  6422. user can select the characters to delete or select the place to insert new 
  6423. characters. The ENTRYFIELD statement, which you can use only in a DIALOG or 
  6424. WINDOW statement, defines the text, identifier, dimensions, and attributes of a 
  6425. control window. The predefined class for this control is WC_ENTRYFIELD. If you 
  6426. do not specify a style, the default style is ES_AUTOSCROLL and WS_TABSTOP. 
  6427.  
  6428.  
  6429. ΓòÉΓòÉΓòÉ 10.1.2.19.3. Example ΓòÉΓòÉΓòÉ
  6430.  
  6431. This example creates an entry-field control that is not labeled. 
  6432.  
  6433. ENTRYFIELD "", 101, 10, 10, 24, 50
  6434.  
  6435.  
  6436. ΓòÉΓòÉΓòÉ 10.1.2.20. FONT Statement ΓòÉΓòÉΓòÉ
  6437.  
  6438.  The FONT statement defines a font resource for an application. 
  6439.  
  6440.  
  6441. ΓòÉΓòÉΓòÉ 10.1.2.20.1. Syntax ΓòÉΓòÉΓòÉ
  6442.  
  6443. FONT font-id  [load-option] [mem-option] filename
  6444.  
  6445.  
  6446. ΓòÉΓòÉΓòÉ 10.1.2.20.2. Description ΓòÉΓòÉΓòÉ
  6447.  
  6448. A font resource, typically created by using the OS/2 Font Editor, is a bit map 
  6449. defining the shape of the individual characters in a character set. The FONT 
  6450. statement copies the font resource from the file specified in the filename 
  6451. field and adds it to the other resources of the application. A font resource 
  6452. can be loaded from the executable file when needed by using the GpiLoadFonts 
  6453. function. 
  6454.  
  6455. You can provide any number of FONT statements in a resource script file, but 
  6456. each statement must specify a unique font-id value. 
  6457.  
  6458.  
  6459. ΓòÉΓòÉΓòÉ 10.1.2.20.3. Example ΓòÉΓòÉΓòÉ
  6460.  
  6461. This example defines a font whose font identifier is 5. The font resource is 
  6462. copied from the file cmroman.fon. 
  6463.  
  6464. FONT 5 cmroman.fon
  6465.  
  6466.  
  6467. ΓòÉΓòÉΓòÉ 10.1.2.21. FRAME Statement ΓòÉΓòÉΓòÉ
  6468.  
  6469.  The FRAME statement defines a frame window. 
  6470.  
  6471.  
  6472. ΓòÉΓòÉΓòÉ 10.1.2.21.1. Syntax ΓòÉΓòÉΓòÉ
  6473.  
  6474. FRAME text, id, x, y, width, height, style [, framectl]
  6475.   data-definitions
  6476. [ BEGIN
  6477. window-definition
  6478.     .
  6479.     .
  6480.     .
  6481. END ]
  6482.  
  6483.  
  6484. ΓòÉΓòÉΓòÉ 10.1.2.21.2. Description ΓòÉΓòÉΓòÉ
  6485.  
  6486. The statement defines the title, identifier, position, and dimensions of the 
  6487. frame window, as well as the window style. The FRAME statement is most often 
  6488. used in a WINDOWTEMPLATE statement and, typically, only one FRAME statement is 
  6489. used. The FRAME statement, in turn, typically contains at least one WINDOW 
  6490. statement that defines the client window belonging to the frame window. 
  6491.  
  6492. The frame window has no default style. You must use the framectl field to 
  6493. define additional frame controls, such as a title bar and system menu, to be 
  6494. created when the frame window is created. If the text field is not empty, the 
  6495. statement automatically adds a title-bar control to the frame window, whether 
  6496. or not you specify the FCF_TITLEBAR style. Frame controls are given default 
  6497. styles and control identifiers, depending on their class. For example, a 
  6498. title-bar control receives the identifier FID_TITLEBAR. 
  6499.  
  6500. The FRAME statement can actually contain any combination of CONTROL, DIALOG, 
  6501. and WINDOW statements. Typically, a FRAME statement contains one WINDOW 
  6502. statement. 
  6503.  
  6504.  
  6505. ΓòÉΓòÉΓòÉ 10.1.2.21.3. Example ΓòÉΓòÉΓòÉ
  6506.  
  6507. This example creates a standard frame window with a title bar, a system menu, 
  6508. minimize and maximize boxes, and a vertical scroll bar. The FRAME statement 
  6509. contains a WINDOW statement defining the client window belonging to the frame 
  6510. window. 
  6511.  
  6512. WINDOWTEMPLATE 1
  6513. BEGIN
  6514.     FRAME "My Window", 1, 10, 10, 320, 130, 0,
  6515.             FCF_STANDARD | FCF_VERTSCROLL
  6516.     BEGIN
  6517.         WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  6518.     END
  6519. END
  6520.  
  6521.  
  6522. ΓòÉΓòÉΓòÉ 10.1.2.22. GROUPBOX Statement ΓòÉΓòÉΓòÉ
  6523.  
  6524.  The GROUPBOX statement creates a group-box control. 
  6525.  
  6526.  
  6527. ΓòÉΓòÉΓòÉ 10.1.2.22.1. Syntax ΓòÉΓòÉΓòÉ
  6528.  
  6529. GROUPBOX text, id, x, y, width, height [, style]
  6530.  
  6531.  
  6532. ΓòÉΓòÉΓòÉ 10.1.2.22.2. Description ΓòÉΓòÉΓòÉ
  6533.  
  6534. The control is a rectangle that groups other controls together by drawing a 
  6535. border around them and displaying the given text in the upper-left corner. 
  6536.  
  6537. The GROUPBOX statement defines the text, identifier, dimensions, and attributes 
  6538. of a control window. The predefined class for this control is WC_STATIC. If you 
  6539. do not specify a style, the default style is SS_GROUPBOX and WS_TABSTOP. 
  6540.  
  6541. Use the GROUPBOX statement only in a DIALOG or WINDOW statement. 
  6542.  
  6543.  
  6544. ΓòÉΓòÉΓòÉ 10.1.2.22.3. Example ΓòÉΓòÉΓòÉ
  6545.  
  6546. This example creates a group-box control that is labeled "Options." 
  6547.  
  6548. GROUPBOX "Options", 101, 10, 10, 100, 100
  6549.  
  6550.  
  6551. ΓòÉΓòÉΓòÉ 10.1.2.23. HELPITEM Statement ΓòÉΓòÉΓòÉ
  6552.  
  6553.  The HELPITEM statement defines the help items in a help table. 
  6554.  
  6555.  
  6556. ΓòÉΓòÉΓòÉ 10.1.2.23.1. Syntax ΓòÉΓòÉΓòÉ
  6557.  
  6558. HELPITEM application-window-id, help-subtable-id, extended-helppanel-id
  6559.  
  6560.  
  6561. ΓòÉΓòÉΓòÉ 10.1.2.23.2. Description ΓòÉΓòÉΓòÉ
  6562.  
  6563. This statement specifies the resource identifier of an application window for 
  6564. which help is provided, along with the resource identifiers of the help 
  6565. subtable and extended help panel associated with the application window. 
  6566.  
  6567. You can provide any number of HELPITEM statements in a HELPTABLE statement. You 
  6568. should provide one HELPITEM statement for each application window for which 
  6569. help is provided. 
  6570.  
  6571. Use the HELPITEM statement only in a HELPTABLE statement. 
  6572.  
  6573.  
  6574. ΓòÉΓòÉΓòÉ 10.1.2.23.3. Example ΓòÉΓòÉΓòÉ
  6575.  
  6576. This example defines a help item that associates a help subtable called 
  6577. IDSUB_FILEMENU and an extended help panel called IDEXT_APPHLP with an 
  6578. application window called IDWIN_FILEMENU. 
  6579.  
  6580. HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  6581.  
  6582.  
  6583. ΓòÉΓòÉΓòÉ 10.1.2.24. HELPSUBITEM Statement ΓòÉΓòÉΓòÉ
  6584.  
  6585.  The HELPSUBITEM statement defines the help subitems in a help  subtable. 
  6586.  
  6587.  
  6588. ΓòÉΓòÉΓòÉ 10.1.2.24.1. Syntax ΓòÉΓòÉΓòÉ
  6589.  
  6590. HELPSUBITEM child-window-id, helppanel-id [, integer] ...
  6591.  
  6592.  
  6593. ΓòÉΓòÉΓòÉ 10.1.2.24.2. Description ΓòÉΓòÉΓòÉ
  6594.  
  6595. This statement specifies the identifier of a child window for which help is 
  6596. provided, the identifier of the help panel associated with the child window, 
  6597. and one or more optional, application-defined integers. 
  6598.  
  6599. You can provide any number of HELPSUBITEM statements in a HELPSUBTABLE 
  6600. statement. You should provide one HELPSUBITEM statement for each child window 
  6601. for which help is provided. 
  6602.  
  6603. Use the HELPSUBITEM statement only in a HELPSUBTABLE statement. 
  6604.  
  6605.  
  6606. ΓòÉΓòÉΓòÉ 10.1.2.24.3. Example ΓòÉΓòÉΓòÉ
  6607.  
  6608. This example defines a help subitem that associates a child window called 
  6609. IDCLD_FILEMENU with a help panel called IDHP_FILEMENU. 
  6610.  
  6611. HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU
  6612.  
  6613.  
  6614. ΓòÉΓòÉΓòÉ 10.1.2.25. HELPSUBTABLE Statement ΓòÉΓòÉΓòÉ
  6615.  
  6616.  The HELPSUBTABLE statement defines the contents of a help-subtable resource. 
  6617.  
  6618.  
  6619. ΓòÉΓòÉΓòÉ 10.1.2.25.1. Syntax ΓòÉΓòÉΓòÉ
  6620.  
  6621. HELPSUBTABLE helpsubtable-id
  6622.  [SUBITEMSIZE size]
  6623. BEGIN
  6624. helpsubitem-definition
  6625.     .
  6626.     .
  6627.     .
  6628. END
  6629.  
  6630.  
  6631. ΓòÉΓòÉΓòÉ 10.1.2.25.2. Description ΓòÉΓòÉΓòÉ
  6632.  
  6633. A help-subtable resource contains a help-subitem entry for each item that can 
  6634. be selected in an application window. Each of these items should be a child 
  6635. window of the application window specified in the help-table resource. The help 
  6636. subtable should contain a help subitem for each control, child window, and menu 
  6637. item in the application window. 
  6638.  
  6639. You can provide any number of HELPSUBTABLE statements in a resource script 
  6640. file, but each statement must specify a unique helpsubtable-id value. You can 
  6641. also provide any number of helpsubitem-definition statements in the help 
  6642. subtable. These specify the child window for which help is provided, the help 
  6643. panel containing the help text for the child window, and one or more 
  6644. application-defined integers. 
  6645.  
  6646. If you include optional integers in the helpsubitem-definition statements, you 
  6647. must also include a SUBITEMSIZE statement to specify the size, in words, of 
  6648. each help subitem. All help subitems in a help subtable must be the same size. 
  6649. The default size is two words per help subitem. 
  6650.  
  6651.  
  6652. ΓòÉΓòÉΓòÉ 10.1.2.25.3. Example ΓòÉΓòÉΓòÉ
  6653.  
  6654. This example creates a help-subtable resource whose help-subtable identifier is 
  6655. IDSUB_FILEMENU. Each HELPSUBITEM statement specifies a child window and a help 
  6656. panel. 
  6657.  
  6658. HELPSUBTABLE IDSUB_FILEMENU
  6659. BEGIN
  6660.     HELPSUBITEM IDCLD_OPEN, IDPNL_OPEN
  6661.     HELPSUBITEM IDCLD_SAVE, IDPNL_SAVE
  6662. END
  6663.  
  6664.  
  6665. ΓòÉΓòÉΓòÉ 10.1.2.26. HELPTABLE Statement ΓòÉΓòÉΓòÉ
  6666.  
  6667.  The HELPTABLE statement defines the contents of a help-table resource. 
  6668.  
  6669.  
  6670. ΓòÉΓòÉΓòÉ 10.1.2.26.1. Syntax ΓòÉΓòÉΓòÉ
  6671.  
  6672. HELPTABLE helptable-id
  6673. BEGIN
  6674. helpitem-definition
  6675.     .
  6676.     .
  6677.     .
  6678. END
  6679.  
  6680.  
  6681. ΓòÉΓòÉΓòÉ 10.1.2.26.2. Description ΓòÉΓòÉΓòÉ
  6682.  
  6683. A help-table resource contains a help-item entry for each application window, 
  6684. dialog box, and message box for which help is provided. 
  6685.  
  6686. You can provide any number of HELPTABLE statements in a resource script file, 
  6687. but each statement must specify a unique helptable-id value. You can also 
  6688. provide any number of helpitem-definition statements in the help table. These 
  6689. statements specify the application windows for which help is provided, the help 
  6690. subtables associated with each application window, and the extended help panels 
  6691. associated with each application window. 
  6692.  
  6693.  
  6694. ΓòÉΓòÉΓòÉ 10.1.2.26.3. Example ΓòÉΓòÉΓòÉ
  6695.  
  6696. This example creates a help-table resource whose help-table identifier is 1. 
  6697. Each HELPITEM statement specifies an application window, a help subtable, and 
  6698. an extended help panel. 
  6699.  
  6700. HELPTABLE 1
  6701. BEGIN
  6702.     HELPITEM IDWIN_FILEMENU, IDSUB_FILEMENU, IDEXT_APPHLP
  6703.     HELPITEM IDWIN_EDITMENU, IDSUB_EDITMENU, IDEXT_APPHLP
  6704. END
  6705.  
  6706.  
  6707. ΓòÉΓòÉΓòÉ 10.1.2.27. ICON Statement (Resource) ΓòÉΓòÉΓòÉ
  6708.  
  6709.  This form of the ICON statement defines an icon resource for an application. 
  6710.  
  6711.  
  6712. ΓòÉΓòÉΓòÉ 10.1.2.27.1. Syntax ΓòÉΓòÉΓòÉ
  6713.  
  6714. ICON icon-id [load-option] [mem-option] filename
  6715.  
  6716.  
  6717. ΓòÉΓòÉΓòÉ 10.1.2.27.2. Description ΓòÉΓòÉΓòÉ
  6718.  
  6719. An icon resource, typically created by using the Icon Editor, is a bit map 
  6720. defining the shape of the icon to be used for a given application. The ICON 
  6721. statement copies the icon resource from the file specified in the filename 
  6722. field and adds it to the application's other resources. An icon resource can be 
  6723. loaded when creating a window by using the WinCreateStdWindow function with the 
  6724. FS_ICON style. 
  6725.  
  6726. You can provide any number of ICON statements in a resource script file, but 
  6727. each statement must specify a unique icon-id value. 
  6728.  
  6729. An icon with an icon-id of 1 is the default icon. The RC program writes the 
  6730. icon not only to the resources in your executable file but also as the .ICON 
  6731. extended attribute. 
  6732.  
  6733.  
  6734. ΓòÉΓòÉΓòÉ 10.1.2.27.3. Example ΓòÉΓòÉΓòÉ
  6735.  
  6736. This example defines an icon whose icon identifier is 11. The icon resource is 
  6737. copied from the file custom.ico. 
  6738.  
  6739. ICON 11 custom.ico
  6740.  
  6741.  
  6742. ΓòÉΓòÉΓòÉ 10.1.2.28. ICON Statement (Control) ΓòÉΓòÉΓòÉ
  6743.  
  6744.  This form of the ICON statement creates an icon control. 
  6745.  
  6746.  
  6747. ΓòÉΓòÉΓòÉ 10.1.2.28.1. Syntax ΓòÉΓòÉΓòÉ
  6748.  
  6749. ICON icon-id, id, x, y, width, height [, style]
  6750.  
  6751.  
  6752. ΓòÉΓòÉΓòÉ 10.1.2.28.2. Description ΓòÉΓòÉΓòÉ
  6753.  
  6754. This control is an icon displayed in a dialog box. The ICON statement defines 
  6755. the icon-resource identifier, icon-control identifier, and  position and 
  6756. attributes of a control window. The predefined class for this control is 
  6757. WC_STATIC. If you do not specify a style, the default style is SS_ICON. For the 
  6758. ICON statement, the width and height fields are ignored; the icon automatically 
  6759. sizes itself. 
  6760.  
  6761. Use the ICON statement only in a DIALOG or WINDOW statement. 
  6762.  
  6763.  
  6764. ΓòÉΓòÉΓòÉ 10.1.2.28.3. Example ΓòÉΓòÉΓòÉ
  6765.  
  6766. This example creates an icon control whose icon identifier is 99. 
  6767.  
  6768. ICON 99, 101, 10, 10, 0, 0
  6769.  
  6770.  
  6771. ΓòÉΓòÉΓòÉ 10.1.2.29. LISTBOX Statement ΓòÉΓòÉΓòÉ
  6772.  
  6773.  The LISTBOX statement creates commonly-used controls for a dialog box or 
  6774. window. 
  6775.  
  6776.  
  6777. ΓòÉΓòÉΓòÉ 10.1.2.29.1. Syntax ΓòÉΓòÉΓòÉ
  6778.  
  6779. LISTBOX id, x, y, width, height [, style]
  6780.  
  6781.  
  6782. ΓòÉΓòÉΓòÉ 10.1.2.29.2. Description ΓòÉΓòÉΓòÉ
  6783.  
  6784. The control is a rectangle containing a list of user-selectable strings, such 
  6785. as file names. 
  6786.  
  6787. The LISTBOX statement defines the identifier, dimensions, and attributes of a 
  6788. control window. The predefined class for this control is WC_LISTBOX. If you do 
  6789. not specify a style, the default style is WS_TABSTOP. 
  6790.  
  6791. Use the LISTBOX statement only in a DIALOG or WINDOW statement. 
  6792.  
  6793.  
  6794. ΓòÉΓòÉΓòÉ 10.1.2.29.3. Example ΓòÉΓòÉΓòÉ
  6795.  
  6796. This example creates a list-box control whose identifier is 101. 
  6797.  
  6798. LISTBOX 101, 10, 10, 100, 100
  6799.  
  6800.  
  6801. ΓòÉΓòÉΓòÉ 10.1.2.30. LTEXT Statement ΓòÉΓòÉΓòÉ
  6802.  
  6803.  The LTEXT statement creates a left-aligned text control. 
  6804.  
  6805.  
  6806. ΓòÉΓòÉΓòÉ 10.1.2.30.1. Syntax ΓòÉΓòÉΓòÉ
  6807.  
  6808. LTEXT text, id, x, y, width, height [, style]
  6809.  
  6810.  
  6811. ΓòÉΓòÉΓòÉ 10.1.2.30.2. Description ΓòÉΓòÉΓòÉ
  6812.  
  6813. The control is a simple rectangle displaying the given text left-aligned in the 
  6814. rectangle. The text is formatted before it is displayed. Words that would 
  6815. extend past the end of a line are automatically wrapped to the beginning of the 
  6816. next line. The LTEXT statement defines the text, identifier, dimensions, and 
  6817. attributes of the control. The predefined class for this control is WC_STATIC. 
  6818. If you do not specify a style, the default style is SS_TEXT, DT_LEFT, and 
  6819. WS_GROUP. 
  6820.  
  6821. Use the LTEXT statement only in a DIALOG or WINDOW statement. 
  6822.  
  6823.  
  6824. ΓòÉΓòÉΓòÉ 10.1.2.30.3. Example ΓòÉΓòÉΓòÉ
  6825.  
  6826. This example creates a left-aligned text control that is labeled "Filename." 
  6827.  
  6828. LTEXT "Filename", 101, 10, 10, 100, 100
  6829.  
  6830.  
  6831. ΓòÉΓòÉΓòÉ 10.1.2.31. MENU Statement ΓòÉΓòÉΓòÉ
  6832.  
  6833.  The MENU statement defines the contents of a menu resource. 
  6834.  
  6835.  
  6836. ΓòÉΓòÉΓòÉ 10.1.2.31.1. Syntax ΓòÉΓòÉΓòÉ
  6837.  
  6838. MENU menu-id [load-option] [mem-option]
  6839. BEGIN
  6840. menuitem-definition
  6841.     .
  6842.     .
  6843.     .
  6844. END
  6845.  
  6846.  
  6847. ΓòÉΓòÉΓòÉ 10.1.2.31.2. Description ΓòÉΓòÉΓòÉ
  6848.  
  6849. A menu resource is a collection of information that defines the appearance and 
  6850. function of an application menu. A menu is a special input tool that lets a 
  6851. user choose commands from a list of command names. A menu resource can be 
  6852. loaded from the executable file when needed by using the WinLoadMenu function. 
  6853.  
  6854. You can provide any number of MENU statements in a resource script file, but 
  6855. each statement must specify a unique menu-id value. You can provide any number 
  6856. of menuitem-definition statements in the menu. These define the submenus and 
  6857. menu items (commands) in the menu. The order of the statements defines the 
  6858. order of the menu items. 
  6859.  
  6860.  
  6861. ΓòÉΓòÉΓòÉ 10.1.2.31.3. Example ΓòÉΓòÉΓòÉ
  6862.  
  6863. This example creates a menu resource whose menu identifier is 1. The menu 
  6864. contains a menu item named Alpha and a submenu named Beta. The submenu contains 
  6865. two menu items:  Item 1 and Item 2. 
  6866.  
  6867. =
  6868. MENU 1
  6869. BEGIN
  6870.     MENUITEM "Alpha", 100
  6871.     SUBMENU "Beta", 101
  6872.     BEGIN
  6873.         MENUITEM "Item 1", 200
  6874.         MENUITEM "Item 2", 201, , MIA_CHECKED
  6875.     END
  6876. END
  6877.  
  6878.  
  6879. ΓòÉΓòÉΓòÉ 10.1.2.32. MENUITEM Statement ΓòÉΓòÉΓòÉ
  6880.  
  6881.  The MENUITEM statement creates a menu item for a menu. 
  6882.  
  6883.  
  6884. ΓòÉΓòÉΓòÉ 10.1.2.32.1. Syntax ΓòÉΓòÉΓòÉ
  6885.  
  6886. MENUITEM text, menu-id [, menuitem-style [, menuitem-attributerbrk.]
  6887.  
  6888.  
  6889. ΓòÉΓòÉΓòÉ 10.1.2.32.2. Description ΓòÉΓòÉΓòÉ
  6890.  
  6891. This statement defines the text, identifier, and attributes of a menu item. Use 
  6892. the MENUITEM statement only in a MENU or SUBMENU statement. 
  6893.  
  6894. The system displays the text when it displays the corresponding menu. If the 
  6895. user chooses the menu item, the system generates a WM_COMMAND message that 
  6896. includes the specified menu-item identifier and sends it to the window owning 
  6897. the menu. 
  6898.  
  6899. You can provide any number of MENUITEM statements, but each must have a unique 
  6900. menu-id value. 
  6901.  
  6902. The alternative form of the MENUITEM statement, MENUITEM SEPARATOR, creates a 
  6903. menu separator. A menu separator is a horizontal dividing bar between two menu 
  6904. items in a submenu. The separator is not active - that is, the user cannot 
  6905. choose it, it has no text associated with it, and it has no identifier. 
  6906.  
  6907. You can use the \t or \a character combination in any item name. The \t 
  6908. character inserts a tab when the name is displayed and is typically used to 
  6909. separate the menu-item name from the name of an accelerator key. The \a 
  6910. character aligns to the right all text that follows it. These characters are 
  6911. intended to be used for menu items in submenus only. The width of the displayed 
  6912. submenu is always adjusted so there is at least one space (and usually more) 
  6913. between any pieces of text separated by a \t or \a. (When compiling the menu 
  6914. resource, the compiler stores the \t and \a characters as control characters. 
  6915. For example, the \t is stored as 0x09.) 
  6916.  
  6917. A tilde ( ~ ) character in the item name indicates that the following character 
  6918. is used as a mnemonic character for the item. When the menu is displayed, the 
  6919. tilde is not shown, but the mnemonic character is underlined. The user can 
  6920. choose the menu item by pressing the key corresponding to the underlined 
  6921. mnemonic character. 
  6922.  
  6923.  
  6924. ΓòÉΓòÉΓòÉ 10.1.2.32.3. Example ΓòÉΓòÉΓòÉ
  6925.  
  6926. This example creates a menu item named Alpha. The item identifier is 101. 
  6927.  
  6928. MENUITEM "Alpha", 101
  6929.  
  6930. This example creates a menu item named Beta. The item identifier is 102. The 
  6931. menu item has a text style and a checked attribute. 
  6932.  
  6933. MENUITEM "Beta", 102, MIS_TEXT, MIA_CHECKED
  6934.  
  6935. This example creates a menu separator between menu items named Gamma and Delta. 
  6936.  
  6937. MENUITEM "Gamma", 103
  6938. MENUITEM SEPARATOR
  6939. MENUITEM "Delta", 104
  6940.  
  6941. This example creates a menu item that has a bit map instead of a name. The 
  6942. bit-map identifier, 1, is first defined using a BITMAP statement. The 
  6943. identifier for the menu item is 301. Note that a # sign must be placed in front 
  6944. of the bit map identifier in the MENUITEM statement. 
  6945.  
  6946. BITMAP 1 mybitmap.bmp
  6947.  
  6948. MENUITEM "#1", 301, MIS_BITMAP
  6949.  
  6950.  
  6951. ΓòÉΓòÉΓòÉ 10.1.2.33. MESSAGETABLE Statement ΓòÉΓòÉΓòÉ
  6952.  
  6953.  The MESSAGETABLE statement creates one or more string resources for an 
  6954. application. 
  6955.  
  6956.  
  6957. ΓòÉΓòÉΓòÉ 10.1.2.33.1. Syntax ΓòÉΓòÉΓòÉ
  6958.  
  6959. MESSAGETABLE [load-option] [mem-option]
  6960. BEGIN
  6961. string-id string-definition
  6962.     .
  6963.     .
  6964.     .
  6965. END
  6966.  
  6967.  
  6968. ΓòÉΓòÉΓòÉ 10.1.2.33.2. Description ΓòÉΓòÉΓòÉ
  6969.  
  6970. A string resource is a null-terminated character string that has a unique 
  6971. string identifier. A string resource can be loaded from the executable file 
  6972. when needed by using the DosGetResource function with the RT_MESSAGE resource 
  6973. type. RT_MESSAGE resources are bundled together in groups of 16, with any 
  6974. missing IDs replaced with zero length strings. Each group, or bundle, is 
  6975. assigned a unique sequential ID. The resource string ID is not necessarily the 
  6976. same as the ID specified when using DosGetResource. The formula for calculating 
  6977. the ID of the resource bundle, for use in DosGetResource, is as follows: 
  6978.  
  6979. bundle ID = ( id / 16) +1,
  6980. where id is the string ID assigned in the RC file. 
  6981.  
  6982. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  6983. and so on. Once the address of the bundle has been returned by DosGetResource 
  6984. (using the calculated ID), the buffer can be parsed to locate the particular 
  6985. string within the bundle. The number of the string is calculated by the 
  6986. formula: 
  6987.  
  6988. string = id % 16
  6989. (string = remainder for id/16). 
  6990.  
  6991. The buffer returned consists of the CodePage of the strings in the first 
  6992. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  6993. is the length of the string (including the null terminator), followed by the 
  6994. string and the terminator. A zero length string is represented by two bytes: 
  6995. 01 (string length) followed by the null terminator. 
  6996.  
  6997. You can provide any number of MESSAGETABLE statements in a resource script 
  6998. file. The compiler treats all the strings from the various MESSAGETABLE 
  6999. statements as if they belonged to a single statement. This means that no two 
  7000. strings in a resource script file can have the same string identifier. 
  7001.  
  7002. Although the MESSAGETABLE and STRINGTABLE statements are nearly identical, most 
  7003. applications use the STRINGTABLE statement instead of the MESSAGETABLE 
  7004. statement to create string resources. 
  7005.  
  7006. You can continue a string on multiple lines by terminating the line with a 
  7007. backslash (\) or by terminating the line with a double quotation mark (") and 
  7008. then starting the next line with a double quotation mark. 
  7009.  
  7010.  
  7011. ΓòÉΓòÉΓòÉ 10.1.2.33.3. Example ΓòÉΓòÉΓòÉ
  7012.  
  7013. This example creates two string resources whose string identifiers are 1 and 2. 
  7014.  
  7015. MESSAGETABLE
  7016. BEGIN
  7017.     1 "Filename not found"
  7018.     2 "Cannot open file for reading"
  7019. END
  7020.  
  7021.  
  7022. ΓòÉΓòÉΓòÉ 10.1.2.34. MLE Statement ΓòÉΓòÉΓòÉ
  7023.  
  7024.  The MLE statement creates a multiple-line entry-field control. 
  7025.  
  7026.  
  7027. ΓòÉΓòÉΓòÉ 10.1.2.34.1. Syntax ΓòÉΓòÉΓòÉ
  7028.  
  7029. MLE text, id, x, y, width, height [, style]
  7030.  
  7031.  
  7032. ΓòÉΓòÉΓòÉ 10.1.2.34.2. Description ΓòÉΓòÉΓòÉ
  7033.  
  7034. The control is a rectangle in which the user can type and edit multiple lines 
  7035. of text. The control displays a pointer when the user selects it. The user can 
  7036. then use the keyboard to enter text or edit the existing text. Editing keys 
  7037. include the BACKSPACE and DELETE keys. By using the mouse or the DIRECTION 
  7038. keys, the user can select the characters to delete or select the place to 
  7039. insert new characters. The MLE statement, which you can use only in a DIALOG or 
  7040. WINDOW statement, defines the text, identifier, dimensions, and attributes of a 
  7041. control window. The predefined class for this control is WC_MLE. If you do not 
  7042. specify a style, the default style is MLS_BORDER, WS_GROUP, and WS_TABSTOP. 
  7043.  
  7044.  
  7045. ΓòÉΓòÉΓòÉ 10.1.2.34.3. Example ΓòÉΓòÉΓòÉ
  7046.  
  7047. This example creates a multiple-line entry-field control that is not labeled. 
  7048.  
  7049. MLE "", 101, 10, 10, 50, 100
  7050.  
  7051.  
  7052. ΓòÉΓòÉΓòÉ 10.1.2.35. NOTEBOOK Statement ΓòÉΓòÉΓòÉ
  7053.  
  7054.  The NOTEBOOK statement creates a notebook control within the dialog window. 
  7055.  
  7056.  
  7057. ΓòÉΓòÉΓòÉ 10.1.2.35.1. Syntax ΓòÉΓòÉΓòÉ
  7058.  
  7059. NOTEBOOK   id, x, y, width, height [, style]
  7060.  
  7061.  
  7062. ΓòÉΓòÉΓòÉ 10.1.2.35.2. Description ΓòÉΓòÉΓòÉ
  7063.  
  7064. This control is used to organize information on individual pages so that it can 
  7065. be located and displayed easily. The NOTEBOOK statement defines the identifier, 
  7066. position, dimensions, and attributes of a notebook control. The predefined 
  7067. class for this control is WC_NOTEBOOK. If you do not specify a style, the 
  7068. default style is WS_TABSTOP and WS_VISIBLE. 
  7069.  
  7070. Use the NOTEBOOK statement only in a DIALOG or WINDOW statement. 
  7071.  
  7072.  
  7073. ΓòÉΓòÉΓòÉ 10.1.2.35.3. Example ΓòÉΓòÉΓòÉ
  7074.  
  7075. This example creates a notebook control at position (20, 20) within the dialog 
  7076. window. The notebook has a width of 200 character units and a height of 50 
  7077. character units. Its resource ID is 201. The tabs style BKS_ROUNDEDTABS 
  7078. specification overrides the notebook default style of square tabs. The default 
  7079. styles WS_TABSTOP and WS_GROUP are both in effect, although only the latter is 
  7080. specified. 
  7081.  
  7082. #define    IDC_NOTEBOOK     201
  7083. #define    IDD_NOTEBOOKDLG  503
  7084. DIALOG "Notebook", IDD_NOTEBOOKDLG, 11, 11, 420, 420, FS_NOBYTEALIGN |
  7085.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  7086.   BEGIN
  7087.     NOTEBOOK   IDC_NOTEBOOK, 20, 20, 200, 400, BKS_ROUNDEDTABS | WS_GROUP
  7088.   END
  7089.  
  7090.  
  7091. ΓòÉΓòÉΓòÉ 10.1.2.36. POINTER Statement ΓòÉΓòÉΓòÉ
  7092.  
  7093.  The POINTER statement defines a pointer resource for an application. 
  7094.  
  7095.  
  7096. ΓòÉΓòÉΓòÉ 10.1.2.36.1. Syntax ΓòÉΓòÉΓòÉ
  7097.  
  7098. POINTER pointer-id [load-option] [mem-option] filename
  7099.  
  7100.  
  7101. ΓòÉΓòÉΓòÉ 10.1.2.36.2. Description ΓòÉΓòÉΓòÉ
  7102.  
  7103. A pointer resource, typically created by using the OS/2 Icon Editor, is a bit 
  7104. map defining the shape of the mouse pointer on the screen. The POINTER 
  7105. statement copies the pointer resource from the file specified in the filename 
  7106. field and adds it to the application's other resources. A pointer resource can 
  7107. be loaded from the executable file when needed by using the WinLoadPointer 
  7108. function. 
  7109.  
  7110. You can provide any number of POINTER statements in a resource script file, but 
  7111. each statement must specify a unique pointer-id value. 
  7112.  
  7113.  
  7114. ΓòÉΓòÉΓòÉ 10.1.2.36.3. Example ΓòÉΓòÉΓòÉ
  7115.  
  7116. This example defines a pointer whose pointer identifier is 10. The pointer 
  7117. resource is copied from the file custom.cur. 
  7118.  
  7119. POINTER 10 custom.cur
  7120.  
  7121.  
  7122. ΓòÉΓòÉΓòÉ 10.1.2.37. PRESPARAMS Statement ΓòÉΓòÉΓòÉ
  7123.  
  7124.  The PRESPARAMS statement defines presentation fields that customize a dialog 
  7125. box, menu, window, or control. 
  7126.  
  7127.  
  7128. ΓòÉΓòÉΓòÉ 10.1.2.37.1. Syntax ΓòÉΓòÉΓòÉ
  7129.  
  7130. PRESPARAMS presparam, value [, value]  ...
  7131.  
  7132.  
  7133. ΓòÉΓòÉΓòÉ 10.1.2.37.2. Description ΓòÉΓòÉΓòÉ
  7134.  
  7135. PRESPARAMS data is a series of types and values. The window procedure of the 
  7136. dialog box, menu, window, or control receives and processes this data when the 
  7137. item is created. The data for custom controls can be in any format. 
  7138.  
  7139. PRESPARAMS is often used to supply data to control the appearance of the 
  7140. customized window when it is first created. For example, the PRESPARAMS 
  7141. statement may specify the colors to be used in the window. 
  7142.  
  7143.  
  7144. ΓòÉΓòÉΓòÉ 10.1.2.37.3. Example ΓòÉΓòÉΓòÉ
  7145.  
  7146. This example creates a menu resource with a menu identifier of 1. The 
  7147. PRESPARAMS statement specifies that the following three menu items be displayed 
  7148. in the 12-point Helvetica** font. 
  7149.  
  7150. MENU 1
  7151. BEGIN
  7152.     PRESPARAMS PP_FONTNAMESIZE, "12.Helv"
  7153.     MENUITEM "New", 100
  7154.     MENUITEM "Open", 101
  7155.     MENUITEM "Save", 102
  7156. END
  7157.  
  7158.  
  7159. ΓòÉΓòÉΓòÉ 10.1.2.38. PUSHBUTTON Statement ΓòÉΓòÉΓòÉ
  7160.  
  7161.  The PUSHBUTTON statement creates a push-button control. 
  7162.  
  7163.  
  7164. ΓòÉΓòÉΓòÉ 10.1.2.38.1. Syntax ΓòÉΓòÉΓòÉ
  7165.  
  7166. PUSHBUTTON text, id, x, y, width, height [, style ]
  7167.  
  7168.  
  7169. ΓòÉΓòÉΓòÉ 10.1.2.38.2. Description ΓòÉΓòÉΓòÉ
  7170.  
  7171. The control is a round-cornered rectangle containing the given text. The 
  7172. control sends a message to its parent whenever the user chooses the control. 
  7173. The PUSHBUTTON statement defines the text, identifier, dimensions, and 
  7174. attributes of a control window. The predefined class for this control is 
  7175. WC_BUTTON. If you do not specify a style, the default style is BS_PUSHBUTTON 
  7176. and WS_TABSTOP. 
  7177.  
  7178. Use the PUSHBUTTON statement only in a DIALOG or WINDOW statement. 
  7179.  
  7180.  
  7181. ΓòÉΓòÉΓòÉ 10.1.2.38.3. Example ΓòÉΓòÉΓòÉ
  7182.  
  7183. This example creates a push-button control that is labeled "OK." 
  7184.  
  7185. PUSHBUTTON "OK", 101, 10, 10, 100, 100
  7186.  
  7187.  
  7188. ΓòÉΓòÉΓòÉ 10.1.2.39. RADIOBUTTON Statement ΓòÉΓòÉΓòÉ
  7189.  
  7190.  The RADIOBUTTON statement creates a radio-button control, which is a small 
  7191. circle that has the given text displayed to its right. 
  7192.  
  7193.  
  7194. ΓòÉΓòÉΓòÉ 10.1.2.39.1. Syntax ΓòÉΓòÉΓòÉ
  7195.  
  7196. RADIOBUTTON text, id, x, y, width, height [, style]
  7197.  
  7198.  
  7199. ΓòÉΓòÉΓòÉ 10.1.2.39.2. Description ΓòÉΓòÉΓòÉ
  7200.  
  7201. The control highlights the circle and sends a message to its parent window when 
  7202. the user selects the button. The control removes the highlight and sends a 
  7203. message when the button is next selected. The RADIOBUTTON statement defines the 
  7204. text, identifier, dimensions, and attributes of a control window. The 
  7205. predefined class for this control is WC_BUTTON. If you do not specify a style, 
  7206. the default style is BS_RADIOBUTTON. 
  7207.  
  7208. Use the RADIOBUTTON statement only in a DIALOG or WINDOW statement. 
  7209.  
  7210.  
  7211. ΓòÉΓòÉΓòÉ 10.1.2.39.3. Example ΓòÉΓòÉΓòÉ
  7212.  
  7213. This example creates a radio-button control that is labeled "Italic." 
  7214.  
  7215. RADIOBUTTON "Italic", 101, 10, 10, 24, 50
  7216.  
  7217.  
  7218. ΓòÉΓòÉΓòÉ 10.1.2.40. RCDATA Statement ΓòÉΓòÉΓòÉ
  7219.  
  7220.  The RCDATA statement defines a custom-data resource for an application. 
  7221.  
  7222.  
  7223. ΓòÉΓòÉΓòÉ 10.1.2.40.1. Syntax ΓòÉΓòÉΓòÉ
  7224.  
  7225. RCDATA resource-id
  7226. BEGIN
  7227. data-definition [, data-definition]   ...
  7228.     .
  7229.     .
  7230.     .
  7231. END
  7232.  
  7233.  
  7234. ΓòÉΓòÉΓòÉ 10.1.2.40.2. Description ΓòÉΓòÉΓòÉ
  7235.  
  7236. The custom data can be in whatever format the application requires. You can 
  7237. provide any number of RCDATA statements in a resource script file, but each 
  7238. statement must specify a unique resource-id value. A custom-data resource can 
  7239. be loaded from the executable file when needed by using the DosGetResource or 
  7240. DosGetResource2 functions with the RT_RCDATA resource type. 
  7241.  
  7242.  
  7243. ΓòÉΓòÉΓòÉ 10.1.2.40.3. Example ΓòÉΓòÉΓòÉ
  7244.  
  7245. This example defines custom data that has a resource identifier of 5. 
  7246.  
  7247. RCDATA 5
  7248. BEGIN
  7249.     "E. A. Poe", 1849, -32, 3L, 0x8000000l, 3+4+5
  7250. END
  7251.  
  7252.  
  7253. ΓòÉΓòÉΓòÉ 10.1.2.41. RCINCLUDE Statement ΓòÉΓòÉΓòÉ
  7254.  
  7255.  The RCINCLUDE statement causes RC to process the resource script file 
  7256. specified in the filename field along with the current resource script file. 
  7257.  
  7258.  
  7259. ΓòÉΓòÉΓòÉ 10.1.2.41.1. Syntax ΓòÉΓòÉΓòÉ
  7260.  
  7261. RCINCLUDE filename
  7262.  
  7263.  
  7264. ΓòÉΓòÉΓòÉ 10.1.2.41.2. Description ΓòÉΓòÉΓòÉ
  7265.  
  7266. The contents of both script files are compiled by RC and the results are placed 
  7267. in one binary resource file and/or executable file. 
  7268.  
  7269. RCINCLUDE statements are processed before any other processing is done, 
  7270. including preprocessing by RCPP.EXE, which removes comments, replaces values in 
  7271. the define directives, and so forth. 
  7272.  
  7273. When specifying a high performance file system (HPFS) file name on an RCINCLUDE 
  7274. statement, enclose the path and file name in double quotes; for example: 
  7275.  
  7276.    RCINCLUDE "d:\project\long dialog.dlg"
  7277.  
  7278. Double quotes enable the resource compiler to recognize a name containing 
  7279. embedded blank characters. 
  7280.  
  7281.  
  7282. ΓòÉΓòÉΓòÉ 10.1.2.41.3. Example ΓòÉΓòÉΓòÉ
  7283.  
  7284. This example includes the file DIALOGS.RC as part of the current resource 
  7285. script file. 
  7286.  
  7287. RCINCLUDE dialogs.rc
  7288.  
  7289.  
  7290. ΓòÉΓòÉΓòÉ 10.1.2.42. RESOURCE Statement ΓòÉΓòÉΓòÉ
  7291.  
  7292.  The RESOURCE statement defines a custom resource for an application. 
  7293.  
  7294.  
  7295. ΓòÉΓòÉΓòÉ 10.1.2.42.1. Syntax ΓòÉΓòÉΓòÉ
  7296.  
  7297. RESOURCE type-id resource-id [load-option] [mem-option] filename
  7298.  
  7299.  
  7300. ΓòÉΓòÉΓòÉ 10.1.2.42.2. Description ΓòÉΓòÉΓòÉ
  7301.  
  7302. A custom resource can be any data in any format. The RESOURCE statement copies 
  7303. the custom resource from the specified file and adds it to the application's 
  7304. other resources. A custom resource can be loaded from the executable file when 
  7305. needed by using the DosGetResource or DosGetResource2 function and specifying 
  7306. the resource's type and resource identifier. 
  7307.  
  7308. You can provide any number of RESOURCE statements in a resource script file, 
  7309. but each statement must specify a unique combination of type-id and resource-id 
  7310. values. That is, RESOURCE statements having the same type-id value are 
  7311. permitted as long as the resource-id value for each is unique. 
  7312.  
  7313.  
  7314. ΓòÉΓòÉΓòÉ 10.1.2.42.3. Example ΓòÉΓòÉΓòÉ
  7315.  
  7316. This example defines a custom resource whose type identifier is 300 and whose 
  7317. resource identifier is 14. The custom resource is copied from the file 
  7318. CUSTOM.RES. 
  7319.  
  7320. RESOURCE 300 14 custom.res
  7321.  
  7322.  
  7323. ΓòÉΓòÉΓòÉ 10.1.2.43. RTEXT Statement ΓòÉΓòÉΓòÉ
  7324.  
  7325.  The RTEXT statement creates a right-aligned text control. 
  7326.  
  7327.  
  7328. ΓòÉΓòÉΓòÉ 10.1.2.43.1. Syntax ΓòÉΓòÉΓòÉ
  7329.  
  7330. RTEXT text, id, x, y, width, height [, style]
  7331.  
  7332.  
  7333. ΓòÉΓòÉΓòÉ 10.1.2.43.2. Description ΓòÉΓòÉΓòÉ
  7334.  
  7335. The control is a simple rectangle displaying the given text right-aligned in 
  7336. the rectangle. The text is formatted before it is displayed. Words that would 
  7337. extend past the end of a line are automatically wrapped to the beginning of the 
  7338. next line. The RTEXT statement, which you can use only in a DIALOG or WINDOW 
  7339. statement, defines the text, identifier, dimensions, and attributes of the 
  7340. control. The predefined class for the control is WC_STATIC. If you do not 
  7341. specify a style, the default style is SS_TEXT, DT_RIGHT, and WS_GROUP. 
  7342.  
  7343.  
  7344. ΓòÉΓòÉΓòÉ 10.1.2.43.3. Example ΓòÉΓòÉΓòÉ
  7345.  
  7346. This example creates a right-aligned text control that is labeled "Filename." 
  7347.  
  7348. RTEXT "Filename", 101, 10, 10, 100, 100
  7349.  
  7350.  
  7351. ΓòÉΓòÉΓòÉ 10.1.2.44. SLIDER Statement ΓòÉΓòÉΓòÉ
  7352.  
  7353.  The SLIDER statement creates a slider control within the dialog window. 
  7354.  
  7355.  
  7356. ΓòÉΓòÉΓòÉ 10.1.2.44.1. Syntax ΓòÉΓòÉΓòÉ
  7357.  
  7358. SLIDER   id, x, y, width, height [, style]
  7359.  
  7360.  
  7361. ΓòÉΓòÉΓòÉ 10.1.2.44.2. Description ΓòÉΓòÉΓòÉ
  7362.  
  7363. This control lets the user set, display, or modify a value by moving a slider 
  7364. arm along a slider shaft. The SLIDER statement defines the identifier, 
  7365. position, dimensions, and attributes of a slider control. The predefined class 
  7366. for this control is WC_SLIDER. If you do not specify a style, the default style 
  7367. is WS_TABSTOP and WS_VISIBLE. 
  7368.  
  7369. Use the SLIDER statement only in a DIALOG or WINDOW statement. 
  7370.  
  7371.  
  7372. ΓòÉΓòÉΓòÉ 10.1.2.44.3. Example ΓòÉΓòÉΓòÉ
  7373.  
  7374. This example creates a slider control at position (40, 30) within the dialog 
  7375. window.  The slider has a width of 120 character units and a height of 2 
  7376. character units.  Its resource ID is 101. The style specification 
  7377. SLS_BUTTONSLEFT adds buttons to the left of the slider shaft.  The default 
  7378. styles WS_TABSTOP and WS_VISIBLE are both in effect, although only the latter 
  7379. is specified. 
  7380.  
  7381. #define    IDC_SLIDER       101
  7382. #define    IDD_SLIDERDLG    502
  7383. DIALOG "Slider", IDD_SLIDERDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  7384.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  7385.   BEGIN
  7386.     SLIDER   IDC_SLIDER, 40, 30, 120, 16, SLS_BUTTONSLEFT | WS_VISIBLE
  7387.   END
  7388.  
  7389.  
  7390. ΓòÉΓòÉΓòÉ 10.1.2.45. SPINBUTTON Statement ΓòÉΓòÉΓòÉ
  7391.  
  7392.  The SPINBUTTON statement creates a spin-button control within the dialog 
  7393. window. 
  7394.  
  7395.  
  7396. ΓòÉΓòÉΓòÉ 10.1.2.45.1. Syntax ΓòÉΓòÉΓòÉ
  7397.  
  7398. SPINBUTTON   id, x, y, width, height [, style]
  7399.  
  7400.  
  7401. ΓòÉΓòÉΓòÉ 10.1.2.45.2. Description ΓòÉΓòÉΓòÉ
  7402.  
  7403. This control gives the user quick access to a finite set of data. The 
  7404. SPINBUTTON statement defines the identifier, position, dimensions, and 
  7405. attributes of a spin-button control. The predefined class for this control is 
  7406. WC_SPINBUTTON. If you do not specify a style, the default style is WS_TABSTOP, 
  7407. WS_VISIBLE, and SPBS_MASTER. 
  7408.  
  7409. Use the SPINBUTTON statement only in a DIALOG or WINDOW statement. 
  7410.  
  7411.  
  7412. ΓòÉΓòÉΓòÉ 10.1.2.45.3. Example ΓòÉΓòÉΓòÉ
  7413.  
  7414. This example creates a spin-button control at position (80, 20) within the 
  7415. dialog window. The spin button has a width of 60 character units and a height 
  7416. of 3 character units. Its resource ID is 302. The style specification 
  7417. SPBS_NUMERICONLY creates a control which accepts only the digits 0-9 and 
  7418. virtual keys. The default styles SPBS_MASTER, WS_TABSTOP, and WS_VISIBLE are 
  7419. all in effect, although only WS_TABSTOP is specified. 
  7420.  
  7421. #define    IDC_SPINBUTTON   302
  7422. #define    IDD_SPINDLG    502
  7423. DIALOG "Spin button", IDD_SPINDLG, 11, 11, 200, 240, FS_NOBYTEALIGN |
  7424.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  7425.   BEGIN
  7426.     SPINBUTTON  IDC_SPINBUTTON, 80, 20, 60, 24, SPBS_NUMERICONLY | WS_TABSTOP
  7427.   END
  7428.  
  7429.  
  7430. ΓòÉΓòÉΓòÉ 10.1.2.46. STRINGTABLE Statement ΓòÉΓòÉΓòÉ
  7431.  
  7432.  The STRINGTABLE statement creates one or more string resources for an 
  7433. application. 
  7434.  
  7435.  
  7436. ΓòÉΓòÉΓòÉ 10.1.2.46.1. Syntax ΓòÉΓòÉΓòÉ
  7437.  
  7438. STRINGTABLE [load-option] [mem-option]
  7439. BEGIN
  7440. string-id string-definition
  7441.     .
  7442.     .
  7443.     .
  7444. END
  7445.  
  7446.  
  7447. ΓòÉΓòÉΓòÉ 10.1.2.46.2. Description ΓòÉΓòÉΓòÉ
  7448.  
  7449. A string resource is a null-terminated character string that has a unique 
  7450. string identifier. A string resource can be loaded from the executable file 
  7451. when needed by using WinLoadString or with DosGetResource with the RT_STRING 
  7452. resource type. RT_STRING resources are bundled together in groups of 16, with 
  7453. any missing IDs replaced with zero length strings. Each group, or bundle, is 
  7454. assigned a unique sequential ID. The resource string ID is not necessarily the 
  7455. same as the ID specified when using DosGetResource. The formula for calculating 
  7456. the ID of the resource bundle, for use in DosGetResource, is as follows: 
  7457.  
  7458. bundle ID = ( id / 16) +1
  7459. where id is the string ID assigned in the RC file. 
  7460.  
  7461. Thus, bundle 1 contains strings 0 to 15, bundle 2 contains strings 16 to 31, 
  7462. and so on. Once the address of the bundle has been returned by DosGetResource 
  7463. (using the calculated ID), the buffer can be parsed to locate the particular 
  7464. string within the bundle. The number of the string is calculated by the 
  7465. formula: 
  7466.  
  7467. string = id % 16
  7468. (string = remainder for id/16). 
  7469.  
  7470. The buffer returned consists of the CodePage of the strings in the first 
  7471. USHORT, followed by the 16 strings in the bundle. The first BYTE of each string 
  7472. is the length of the string (including the null terminator), followed by the 
  7473. string and the terminator. A zero length string is represented by two bytes: 
  7474. 01 (string length) followed by the null terminator. 
  7475.  
  7476. You can provide any number of STRINGTABLE statements in a resource script file. 
  7477. The compiler treats all the strings from the various STRINGTABLE statements as 
  7478. if they belonged to a single statement. This means that no two strings in a 
  7479. resource script file can have the same string identifier. 
  7480.  
  7481. You can continue a string on multiple lines by terminating the line with a 
  7482. backslash (\) or by terminating the line with a double quotation mark (") and 
  7483. then starting the next line with a double quotation mark. 
  7484.  
  7485.  
  7486. ΓòÉΓòÉΓòÉ 10.1.2.46.3. Example ΓòÉΓòÉΓòÉ
  7487.  
  7488. This example creates two string resources whose string identifiers are 1 and 2. 
  7489.  
  7490. #define IDS_HELLO    1
  7491. #define IDS_GOODBYE  2
  7492.  
  7493. STRINGTABLE
  7494. BEGIN
  7495.     IDS_HELLO   "Hello"
  7496.     IDS_GOODBYE "Goodbye"
  7497. END
  7498.  
  7499.  
  7500. ΓòÉΓòÉΓòÉ 10.1.2.47. SUBITEMSIZE Statement ΓòÉΓòÉΓòÉ
  7501.  
  7502.  The SUBITEMSIZE statement specifies the size, in words, of each help subitem 
  7503. in a help subtable. 
  7504.  
  7505.  
  7506. ΓòÉΓòÉΓòÉ 10.1.2.47.1. Syntax ΓòÉΓòÉΓòÉ
  7507.  
  7508. SUBITEMSIZE  size
  7509.  
  7510.  
  7511. ΓòÉΓòÉΓòÉ 10.1.2.47.2. Description ΓòÉΓòÉΓòÉ
  7512.  
  7513. The minimum size is two words, and each help subitem in a help subtable must be 
  7514. the same size. When used, the SUBITEMSIZE statement must appear after the 
  7515. HELPSUBTABLE statement and before the BEGIN keyword. 
  7516.  
  7517. You do not need to use the SUBITEMSIZE statement if the help subitems are the 
  7518. default size (2). 
  7519.  
  7520.  
  7521. ΓòÉΓòÉΓòÉ 10.1.2.47.3. Example ΓòÉΓòÉΓòÉ
  7522.  
  7523. The SUBITEMSIZE statement in this example specifies that each HELPSUBITEM 
  7524. statement contains three words. 
  7525.  
  7526. HELPSUBTABLE 1
  7527. SUBITEMSIZE 3
  7528. BEGIN
  7529.     HELPSUBITEM IDCLD_FILEMENU, IDHP_FILEMENU, 5
  7530.     HELPSUBITEM IDCLD_HELPMENU, IDHP_HELPMENU, 6
  7531. END
  7532.  
  7533.  
  7534. ΓòÉΓòÉΓòÉ 10.1.2.48. SUBMENU Statement ΓòÉΓòÉΓòÉ
  7535.  
  7536.  The SUBMENU statement creates a submenu for a given menu. 
  7537.  
  7538.  
  7539. ΓòÉΓòÉΓòÉ 10.1.2.48.1. Syntax ΓòÉΓòÉΓòÉ
  7540.  
  7541. SUBMENU text, submenu-id [, menuitem-style[, menuitem-attributerbrk.]
  7542. BEGIN
  7543. menuitem-definition
  7544.     .
  7545.     .
  7546.     .
  7547. END
  7548.  
  7549.  
  7550. ΓòÉΓòÉΓòÉ 10.1.2.48.2. Description ΓòÉΓòÉΓòÉ
  7551.  
  7552. A submenu is a vertical list of menu items from which the user can choose a 
  7553. command. 
  7554.  
  7555. You can provide any number of SUBMENU statements in a MENU statement, but each 
  7556. SUBMENU statement must specify a unique submenu-id value. You can provide any 
  7557. number of menuitem-definition statements in the SUBMENU statement. These define 
  7558. the menu items (commands) in the menu. The order of the statements determines 
  7559. the order of the menu items. 
  7560.  
  7561.  
  7562. ΓòÉΓòÉΓòÉ 10.1.2.48.3. Example ΓòÉΓòÉΓòÉ
  7563.  
  7564. This example creates a submenu named Elements. Its identifier is 2. The submenu 
  7565. contains three menu items, which are created by using MENUITEM statements. 
  7566.  
  7567. SUBMENU "Elements", 2
  7568. BEGIN
  7569.     MENUITEM "Oxygen", 200
  7570.     MENUITEM "Carbon", 201, , MIA_CHECKED
  7571.     MENUITEM "Hydrogen", 202
  7572. END
  7573.  
  7574.  
  7575. ΓòÉΓòÉΓòÉ 10.1.2.49. VALUESET Statement ΓòÉΓòÉΓòÉ
  7576.  
  7577.  The VALUESET statement creates a value set control within the dialog window. 
  7578.  
  7579.  
  7580. ΓòÉΓòÉΓòÉ 10.1.2.49.1. Syntax ΓòÉΓòÉΓòÉ
  7581.  
  7582. VALUESET   id, x, y, width, height [, style]
  7583.  
  7584.  
  7585. ΓòÉΓòÉΓòÉ 10.1.2.49.2. Description ΓòÉΓòÉΓòÉ
  7586.  
  7587. This control lets a user select one choice from a group of mutually exclusive 
  7588. choices. The VALUESET statement defines the identifier, position, dimensions, 
  7589. and attributes of a value set control. The predefined class for this control is 
  7590. WC_VALUESET. If you do not specify a style, the default style is WS_TABSTOP and 
  7591. WS_VISIBLE. 
  7592.  
  7593. Use the VALUESET statement only in a DIALOG or WINDOW statement. 
  7594.  
  7595.  
  7596. ΓòÉΓòÉΓòÉ 10.1.2.49.3. Example ΓòÉΓòÉΓòÉ
  7597.  
  7598. This example creates a value set control at position (40, 40) within the dialog 
  7599. window. The value set control has a width of 220 character units and a height 
  7600. of 20 character units. Its resource ID is 302. The style specification VS_ICON 
  7601. creates a control to show items in icon form. The default styles WS_TABSTOP and 
  7602. WS_VISIBLE are both in effect, although only WS_TABSTOP is specified. 
  7603.  
  7604. #define    IDC_VALUESET     302
  7605. #define    IDD_VALUESETDLG  501
  7606. DIALOG "Value set", IDD_VALUESETDLG, 11, 11, 260, 240, FS_NOBYTEALIGN |
  7607.         WS_VISIBLE, FCF_SYSMENU | FCF_TITLEBAR
  7608.   BEGIN
  7609.     VALUESET  IDC_VALUESET, 40, 40, 220, 160, VS_ICON | WS_TABSTOP
  7610.   END
  7611.  
  7612.  
  7613. ΓòÉΓòÉΓòÉ 10.1.2.50. WINDOW Statement ΓòÉΓòÉΓòÉ
  7614.  
  7615.  The WINDOW statement creates a window of the specified class. 
  7616.  
  7617.  
  7618. ΓòÉΓòÉΓòÉ 10.1.2.50.1. Syntax ΓòÉΓòÉΓòÉ
  7619.  
  7620. WINDOW text, id, x, y, width, height, class [, style [, framect]]
  7621.   data-definitions
  7622. [ BEGIN
  7623. control-definition
  7624.     .
  7625.     .
  7626.     .
  7627. END ]
  7628.  
  7629.  
  7630. ΓòÉΓòÉΓòÉ 10.1.2.50.2. Description ΓòÉΓòÉΓòÉ
  7631.  
  7632. The statement defines the position and dimensions of the window relative to its 
  7633. parent window, as well as the window-box style. The WINDOW statement is 
  7634. typically used in a WINDOWTEMPLATE or FRAME statement. 
  7635.  
  7636. Usually, only one WINDOW statement is used in a FRAME statement. It defines the 
  7637. client window belonging to the corresponding frame window. The optional BEGIN 
  7638. and END keywords enclose any CONTROL statements that are given with the window. 
  7639. CONTROL statements given in this manner represent child windows belonging to 
  7640. the window created by the WINDOW statement. 
  7641.  
  7642. The WINDOW statement can actually contain any combination of CONTROL, DIALOG, 
  7643. and WINDOW statements. Typically, a WINDOW statement contains one or no such 
  7644. statements. 
  7645.  
  7646.  
  7647. ΓòÉΓòÉΓòÉ 10.1.2.50.3. Example ΓòÉΓòÉΓòÉ
  7648.  
  7649. This example creates a client window belonging to the frame window. The client 
  7650. window belongs to the "MyClientClass" window class and has the standard window 
  7651. identifier FID_CLIENT. 
  7652.  
  7653. WINDOWTEMPLATE 1
  7654. BEGIN
  7655.     FRAME "My Window", 1, 10, 10, 320, 130,
  7656.              0, FCF_STANDARD | FCF_VERTSCROLL
  7657.     BEGIN
  7658.         WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass"
  7659.     END
  7660. END
  7661.  
  7662.  
  7663. ΓòÉΓòÉΓòÉ 10.1.2.51. WINDOWTEMPLATE Statement ΓòÉΓòÉΓòÉ
  7664.  
  7665.  The WINDOWTEMPLATE statement creates a window template. 
  7666.  
  7667.  
  7668. ΓòÉΓòÉΓòÉ 10.1.2.51.1. Syntax ΓòÉΓòÉΓòÉ
  7669.  
  7670. WINDOWTEMPLATE window-id [load-option] [mem-option]
  7671. BEGIN
  7672. window-definition
  7673.     .
  7674.     .
  7675.     .
  7676. END
  7677.  
  7678.  
  7679. ΓòÉΓòÉΓòÉ 10.1.2.51.2. Description ΓòÉΓòÉΓòÉ
  7680.  
  7681. A window template consists of a series of statements that define the window 
  7682. identifier, load and memory options, window dimensions, and controls in the 
  7683. window. The window template can be loaded from the executable file by using the 
  7684. WinLoadDlg function. 
  7685.  
  7686. You can provide any number of window templates in a resource script file, but 
  7687. each template must have a unique window-id value. 
  7688.  
  7689. A WINDOWTEMPLATE statement can contain DIALOG, CONTROL, and WINDOW statements. 
  7690. Typically, only one WINDOW statement is used in the WINDOWTEMPLATE statement. 
  7691.  
  7692.  
  7693. ΓòÉΓòÉΓòÉ 10.2. Directive Descriptions ΓòÉΓòÉΓòÉ
  7694.  
  7695. This section provides the syntax, a description, and an example of each of the 
  7696. directives. 
  7697.  
  7698.  
  7699. ΓòÉΓòÉΓòÉ 10.2.1. #define Directive ΓòÉΓòÉΓòÉ
  7700.  
  7701. The #define directive assigns the given value to the specified name. All 
  7702. subsequent occurrences of the name are replaced by the value. 
  7703.  
  7704.  
  7705. ΓòÉΓòÉΓòÉ 10.2.1.1. Syntax ΓòÉΓòÉΓòÉ
  7706.  
  7707.  #define name value
  7708.  
  7709.  
  7710. ΓòÉΓòÉΓòÉ 10.2.1.2. Example ΓòÉΓòÉΓòÉ
  7711.  
  7712. This example assigns values to the names "NONZERO" and "USERCLASS". 
  7713.  
  7714.   #define     NONZERO     1
  7715.   #define     USERCLASS   "MyControlClass"
  7716.  
  7717.  
  7718. ΓòÉΓòÉΓòÉ 10.2.2. #elif Directive ΓòÉΓòÉΓòÉ
  7719.  
  7720. The #elif directive marks an optional clause of a conditional-compilation block 
  7721. defined by a #ifdef, #ifndef, or #if directive. The directive controls 
  7722. conditional compilation of the resource file by checking the specified constant 
  7723. expression. If the constant expression is nonzero, #elif directs the compiler 
  7724. to continue processing statements up to the next #endif, #else, or #elif 
  7725. directive and then skip to the statement after #endif. If the constant 
  7726. expression is zero, #elif directs the compiler to skip to the next #endif, 
  7727. #else, or #elif directive. You can use any number of #elif directives in a 
  7728. conditional block. 
  7729.  
  7730.  
  7731. ΓòÉΓòÉΓòÉ 10.2.2.1. Syntax ΓòÉΓòÉΓòÉ
  7732.  
  7733. #elif constant-expression
  7734.  
  7735.  
  7736. ΓòÉΓòÉΓòÉ 10.2.2.2. Example ΓòÉΓòÉΓòÉ
  7737.  
  7738. In this example, #elif directs the compiler to process the second BITMAP 
  7739. statement only if the value assigned to the name "Version" is less than 7. The 
  7740. #elif directive itself is processed only if Version is greater than or equal to 
  7741. 3. 
  7742.  
  7743. #if Version < 3
  7744. BITMAP 1 errbox.bmp
  7745. #elif Version < 7
  7746. BITMAP 1 userbox.bmp
  7747. #endif
  7748.  
  7749.  
  7750. ΓòÉΓòÉΓòÉ 10.2.3. #else Directive ΓòÉΓòÉΓòÉ
  7751.  
  7752. The #else directive marks an optional clause of a conditional-compilation block 
  7753. defined by a #ifdef, #ifndef, or #if directive. The #else directive must be the 
  7754. last directive before the #endif directive. 
  7755.  
  7756. This directive has no arguments. 
  7757.  
  7758.  
  7759. ΓòÉΓòÉΓòÉ 10.2.3.1. Syntax ΓòÉΓòÉΓòÉ
  7760.  
  7761. #else 
  7762.  
  7763.  
  7764. ΓòÉΓòÉΓòÉ 10.2.3.2. Example ΓòÉΓòÉΓòÉ
  7765.  
  7766. This example compiles the second BITMAP statement only if the name "DEBUG" is 
  7767. not defined. 
  7768.  
  7769.     #ifdef DEBUG
  7770.         BITMAP 1 errbox.bmp
  7771.     #else
  7772.         BITMAP 1 userbox.bmp
  7773.     #endif
  7774.  
  7775.  
  7776. ΓòÉΓòÉΓòÉ 10.2.4. #endif directive ΓòÉΓòÉΓòÉ
  7777.  
  7778. The #endif directive marks the end of a conditional-compilation block defined 
  7779. by a #ifdef directive. One #endif is required for each #if, #ifdef, or #ifndef 
  7780. directive. 
  7781.  
  7782. This directive has no arguments. 
  7783.  
  7784.  
  7785. ΓòÉΓòÉΓòÉ 10.2.4.1. Syntax ΓòÉΓòÉΓòÉ
  7786.  
  7787. #endif 
  7788.  
  7789.  
  7790. ΓòÉΓòÉΓòÉ 10.2.5. #if Directive ΓòÉΓòÉΓòÉ
  7791.  
  7792. The #if directive controls conditional compilation of the resource file by 
  7793. checking the specified constant expression. If the constant expression is 
  7794. nonzero, #if directs the compiler to continue processing statements up to the 
  7795. next #endif, #else, or #elif directive and then skip to the statement after the 
  7796. #endif directive. If the constant expression is zero, it directs the compiler 
  7797. to skip to the next #endif, #else, or #elif directive. 
  7798.  
  7799.  
  7800. ΓòÉΓòÉΓòÉ 10.2.5.1. Syntax ΓòÉΓòÉΓòÉ
  7801.  
  7802. #if constant-expression
  7803.  
  7804.  
  7805. ΓòÉΓòÉΓòÉ 10.2.5.2. Example ΓòÉΓòÉΓòÉ
  7806.  
  7807. This example compiles the BITMAP statement only if the value assigned to the 
  7808. name "Version" is less than 3. 
  7809.  
  7810. #if Version < 3
  7811. BITMAP 1 errbox.bmp
  7812. #endif
  7813.  
  7814.  
  7815. ΓòÉΓòÉΓòÉ 10.2.6. #ifdef Directive ΓòÉΓòÉΓòÉ
  7816.  
  7817. The #ifdef directive controls conditional compilation of the resource file by 
  7818. checking the specified name. If the name has been defined by using a define 
  7819. directive or by using the -d command-line option of rc, #ifdef directs the 
  7820. compiler to continue with the statement immediately after the #ifdef directive. 
  7821. If the name has not been defined, #ifdef directs the compiler to skip all 
  7822. statements up to the next #endif directive. 
  7823.  
  7824.  
  7825. ΓòÉΓòÉΓòÉ 10.2.6.1. Syntax ΓòÉΓòÉΓòÉ
  7826.  
  7827. #ifdef name 
  7828.  
  7829.  
  7830. ΓòÉΓòÉΓòÉ 10.2.6.2. Example ΓòÉΓòÉΓòÉ
  7831.  
  7832. This example compiles the BITMAP statement only if the name "Debug" is defined. 
  7833.  
  7834. #ifdef Debug
  7835. BITMAP 1 errbox.bmp
  7836. #endif
  7837.  
  7838.  
  7839. ΓòÉΓòÉΓòÉ 10.2.7. #ifndef Directive ΓòÉΓòÉΓòÉ
  7840.  
  7841. The #ifndef directive controls conditional compilation of the resource file by 
  7842. checking the specified name. If the name has not been defined or if its 
  7843. definition has been removed by using the #undef directive, #ifndef directs the 
  7844. compiler to continue processing statements up to the next #endif, #else, or 
  7845. #elif directive and then skip to the statement after the #endif directive. If 
  7846. the name is defined, #ifndef directs the compiler to skip to the next #endif, 
  7847. #else, or #elif directive. 
  7848.  
  7849.  
  7850. ΓòÉΓòÉΓòÉ 10.2.7.1. Syntax ΓòÉΓòÉΓòÉ
  7851.  
  7852. #ifndef name 
  7853.  
  7854.  
  7855. ΓòÉΓòÉΓòÉ 10.2.7.2. Example ΓòÉΓòÉΓòÉ
  7856.  
  7857. This example compiles the BITMAP statement only if the name "Optimize" is not 
  7858. defined. 
  7859.  
  7860. #ifndef Optimize
  7861. BITMAP 1 errbox.bmp
  7862. #endif
  7863.  
  7864.  
  7865. ΓòÉΓòÉΓòÉ 10.2.8. #include Directive ΓòÉΓòÉΓòÉ
  7866.  
  7867. The #include directive causes RC to process the file specified in the filename 
  7868. field. This file should be a header file that defines the constants used in the 
  7869. resource script file. Only the define directives in the specified file are 
  7870. processed. All other statements are ignored. 
  7871.  
  7872. The filename field is handled as a C string. Therefore, you must include two 
  7873. backslashes (\\) wherever one is required in the path. (As an alternative, you 
  7874. can use a single forward slash (/) instead of two backslashes.) 
  7875.  
  7876.  
  7877. ΓòÉΓòÉΓòÉ 10.2.8.1. Syntax ΓòÉΓòÉΓòÉ
  7878.  
  7879. #include filename
  7880.  
  7881.  
  7882. ΓòÉΓòÉΓòÉ 10.2.8.2. Example ΓòÉΓòÉΓòÉ
  7883.  
  7884. This example processes the header files OS2.H and HEADERS\MYDEFS.H\I while 
  7885. compiling the resource script file. 
  7886.  
  7887. #include <os2.h>
  7888. #include "headers\\\\mydefs.h"
  7889.  
  7890.  
  7891. ΓòÉΓòÉΓòÉ 10.2.9. #undef Directive ΓòÉΓòÉΓòÉ
  7892.  
  7893. The undef directive removes the current definition of the specified name. All 
  7894. subsequent occurrences of the name are processed without replacement. 
  7895.  
  7896.  
  7897. ΓòÉΓòÉΓòÉ 10.2.9.1. Syntax ΓòÉΓòÉΓòÉ
  7898.  
  7899. #undef name 
  7900.  
  7901.  
  7902. ΓòÉΓòÉΓòÉ 10.2.9.2. Example ΓòÉΓòÉΓòÉ
  7903.  
  7904. This example removes the definitions for the names "nonzero" and "USERCLASS". 
  7905.  
  7906. #undef     nonzero
  7907. #undef     USERCLASS
  7908.  
  7909.  
  7910. ΓòÉΓòÉΓòÉ 10.3. Using Resource Files ΓòÉΓòÉΓòÉ
  7911.  
  7912. This section explains how to create a resource script file, compile it using 
  7913. the Resource Compiler (RC.EXE), and optionally add the resources to your 
  7914. executable file. Resource script files have a default file-name extension of 
  7915. .RC. 
  7916.  
  7917. For resource information on the individual controls, see the chapter on the 
  7918. specific control. For example, an example of a resource script file for frame 
  7919. windows is in Frame Windows. 
  7920.  
  7921.  
  7922. ΓòÉΓòÉΓòÉ 10.3.1. Creating and Compiling a Resource File ΓòÉΓòÉΓòÉ
  7923.  
  7924. The resource compiler (RC) compiles a resource script file to create a new 
  7925. file, called a binary resource file, which has a .RES file-name extension. The 
  7926. binary resource file can be added to the executable file of the application, 
  7927. thereby replacing any existing resources in that file. 
  7928.  
  7929. The RC command line has the following three basic forms: 
  7930.  
  7931.   rc resource-script-file [executable-file]
  7932.  
  7933.   rc binary-resource-file [executable-file]
  7934.  
  7935.   rc -r  resource-script-file [binary-resource-file]
  7936.  
  7937. Note:  The third option does not add to the executable file.
  7938.  
  7939.   The resource-script-file parameter is the file name of the resource script 
  7940.  file to be compiled. 
  7941.  
  7942.  The executable-file parameter must be the name of the executable file to 
  7943.  receive the compiled resources. This is a file having a file-name extension of 
  7944.  either .EXE or .DLL. If you omit the executable-file field, RC adds the 
  7945.  compiled resources to the executable file that has the same name as the 
  7946.  resource script file but which has the .EXE file-name extension. 
  7947.  
  7948.  The binary-resource-file parameter is the name of the binary resource file to 
  7949.  be added to the executable file. 
  7950.  
  7951.  The -r option directs RC to compile the resource script file without adding it 
  7952.  to an executable file. 
  7953.  
  7954.  
  7955. ΓòÉΓòÉΓòÉ 10.3.1.1. Compiling and Adding Resources to the .EXE File ΓòÉΓòÉΓòÉ
  7956.  
  7957. To compile the resource script file EXAMPLE.RC and add the result to the 
  7958. executable file EXAMPLE.EXE, use the following command: 
  7959.  
  7960.   rc example
  7961.  
  7962. You do not need to specify the .RC extension. RC creates the binary resource 
  7963. file EXAMPLE.RES and adds the compiled resource to the executable file 
  7964. EXAMPLE.EXE. 
  7965.  
  7966.  
  7967. ΓòÉΓòÉΓòÉ 10.3.1.2. Compiling without Adding Resources to the .EXE File ΓòÉΓòÉΓòÉ
  7968.  
  7969. To compile the resource script file EXAMPLE.RC into a binary resource file 
  7970. without adding the resources to an executable file, use the following command: 
  7971.  
  7972.   rc -r example
  7973.  
  7974. The compiler creates the binary resource file EXAMPLE.RES. To create a binary 
  7975. resource file that has a name different from the resource script file, use the 
  7976. following command: 
  7977.  
  7978.   rc -r example newfile.res
  7979.  
  7980.  
  7981. ΓòÉΓòÉΓòÉ 10.3.1.3. Adding the Compiled Resources to the .EXE File ΓòÉΓòÉΓòÉ
  7982.  
  7983. To add the compiled resources in the binary resource file EXAMPLE.RES to an 
  7984. executable file, use the following command: 
  7985.  
  7986.   rc example.res
  7987.  
  7988. To specify the name of the executable file, if the name is different from the 
  7989. resource file, use the following command: 
  7990.  
  7991.   rc example.res newfile.exe
  7992.  
  7993.  
  7994. ΓòÉΓòÉΓòÉ 10.3.1.4. Adding the Compiled Resources to a DLL ΓòÉΓòÉΓòÉ
  7995.  
  7996. To add the compiled resources to a dynamic-link-library (DLL) file, use the 
  7997. following command: 
  7998.  
  7999.   rc example.res dynalink.dll
  8000.  
  8001.  
  8002. ΓòÉΓòÉΓòÉ 11. Scroll-Bar Controls ΓòÉΓòÉΓòÉ
  8003.  
  8004. Scroll bars are control windows that convert mouse and keyboard input into 
  8005. integers; they are used by an application to scroll the contents of a client 
  8006. window.  This chapter describes how to create and use scroll bars in PM 
  8007. applications. 
  8008.  
  8009.  
  8010. ΓòÉΓòÉΓòÉ 11.1. About Scroll Bars ΓòÉΓòÉΓòÉ
  8011.  
  8012. A scroll bar has three main parts:  the bar, its arrows, and a slider. 
  8013.  
  8014. The arrows are located at each end of the scroll bar. The left scroll arrow, on 
  8015. the left side of a horizontal scroll bar, enables the user to scroll to the 
  8016. left in a document. The right scroll arrow lets the user scroll to the right. 
  8017.  
  8018. On a vertical scroll bar, the upper scroll arrow enables the user to scroll 
  8019. upward in the document; the lower scroll arrow, downward.  The slider, which 
  8020. lies between the two scroll arrows, reflects the current value of the scroll 
  8021. bar.  Scroll bars monitor the slider and send notification messages to the 
  8022. owner window when the slider position changes as a result of mouse or keyboard 
  8023. input. 
  8024.  
  8025. Although, typically, scroll bars are used in frame windows, an application can 
  8026. use stand-alone scroll bars of any size or shape, at any position, in a window 
  8027. of almost any class.  Scroll bars can be used as parts of other control 
  8028. windows; for example, a list box uses a scroll bar to enable the user to view 
  8029. items when the list box is too small to display all the items. 
  8030.  
  8031.  
  8032. ΓòÉΓòÉΓòÉ 11.1.1. Scroll-Bar Creation ΓòÉΓòÉΓòÉ
  8033.  
  8034. An application can include a scroll bar in a standard frame window by 
  8035. specifying the FCF_HORZSCROLL or FCF_VERTSCROLL flag in the WinCreateStdWindow 
  8036. function.  To create a scroll bar in another type of window, an application can 
  8037. specify the predefined (preregistered) window class WC_SCROLLBAR in the 
  8038. WinCreateWindow function or in the CONTROL statement in a resource file. 
  8039.  
  8040. Although most applications specify an owner window when creating a scroll bar, 
  8041. an owner is not required.  If an application does not specify an owner, the 
  8042. scroll bar does not send notification messages. 
  8043.  
  8044.  
  8045. ΓòÉΓòÉΓòÉ 11.1.1.1. Scroll-Bar Styles ΓòÉΓòÉΓòÉ
  8046.  
  8047. A scroll bar has styles that determine what it looks like and how it responds 
  8048. to input.  Styles are specified in the WinCreateWindow function or the CONTROL 
  8049. statement.  A scroll-bar can have the following styles: 
  8050.  
  8051. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8052. ΓöéStyle          ΓöéMeaning                                      Γöé
  8053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8054. ΓöéSBS_AUTOTRACK  ΓöéCauses the entire slider to track the        Γöé
  8055. Γöé               Γöémovement of the mouse pointer when the user  Γöé
  8056. Γöé               Γöéscrolls the window. Without this style, only Γöé
  8057. Γöé               Γöéan outlined image of the slider tracks the   Γöé
  8058. Γöé               Γöémovement of the mouse pointer, and the sliderΓöé
  8059. Γöé               Γöéjumps to the new location when the user      Γöé
  8060. Γöé               Γöéreleases the mouse button.                   Γöé
  8061. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8062. ΓöéSBS_HORZ       ΓöéCreates a horizontal scroll bar.             Γöé
  8063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8064. ΓöéSBS_THUMBSIZE  ΓöéUsed to calculate the size of the scroll-bar Γöé
  8065. Γöé               Γöéslider from the SBCDATA passed to            Γöé
  8066. Γöé               ΓöéWinCreateWindow.                             Γöé
  8067. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8068. ΓöéSBS_VERT       ΓöéCreates a vertical scroll bar.               Γöé
  8069. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8070.  
  8071.  
  8072. ΓòÉΓòÉΓòÉ 11.1.1.2. Scroll-Bar Range and Position ΓòÉΓòÉΓòÉ
  8073.  
  8074. Every scroll bar has a range and a slider position.  The range specifies the 
  8075. minimum and maximum values for the slider position.  As the user moves the 
  8076. slider in a scroll bar, the scroll bar reports the slider position as an 
  8077. integer in this range.  If the slider position is the minimum value, the slider 
  8078. is at the top of a vertical scroll bar or at the left end of a horizontal 
  8079. scroll bar.  If the slider position is the maximum value, the slider is at the 
  8080. bottom or right end of the vertical or horizontal scroll bar, respectively. 
  8081.  
  8082. An application can adjust the range to convenient integers by using 
  8083. SBM_SETSCROLLBAR or WM_SETWINDOWPARAMS, or by using the SBCDATA structure 
  8084. during creation of the scroll bar. This enables you to easily translate the 
  8085. slider position into a value that corresponds to the data being scrolled.  For 
  8086. example, an application attempting to display 100 lines of text (numbered 0 to 
  8087. 99) in a window that can show only 20 lines at a time could set the vertical 
  8088. scroll-bar range from 0-99, permitting any line to be the top line, and 
  8089. requiring blank lines to fill the viewing area when there are not sufficient 
  8090. lines of information to fill the area (lines 80-99). More likely, the range 
  8091. would be set to 0-79, so that only the first 80 lines could be the top line; 
  8092. this guarantees that there would always be 20 lines of text to fill the window. 
  8093.  
  8094. The current settings can be obtained using SBM_QUERYRANGE or 
  8095. WM_QUERYWINDOWPARAMS. 
  8096.  
  8097. To establish a useful relationship between the scroll-bar range and the data, 
  8098. an application must adjust the range whenever the data or the size of the 
  8099. window changes.  This means the application should adjust the range as part of 
  8100. processing WM_SIZE messages. 
  8101.  
  8102. An application must move the slider in a scroll bar.  Although the user 
  8103. requests scrolling in a scroll bar, the scroll bar does not update the slider 
  8104. position.  Instead, it passes the request to the owner window, which scrolls 
  8105. the data and updates the slider position using the SBM_SETPOS message.  The 
  8106. application controls the slider movement and can move the slider in the 
  8107. increments best suited for the data being scrolled. 
  8108.  
  8109. An application can retrieve the current slider position of a scroll bar by 
  8110. sending the SBM_QUERYPOS message to the scroll bar. 
  8111.  
  8112. If a scroll bar is a descendant of a frame window, its position relative to its 
  8113. parent can change when the position of the frame window changes.  Frame windows 
  8114. draw scroll bars relative to the upper-left corner of the frame window (rather 
  8115. than the lower-left corner).  The frame window can adjust the y coordinate of 
  8116. the scroll-bar position, which would be desirable if the scroll bar is a child 
  8117. of the frame window, but would be undesirable if the scroll bar is not a child 
  8118. window. 
  8119.  
  8120.  
  8121. ΓòÉΓòÉΓòÉ 11.1.1.3. Scroll-Bar Slider Size ΓòÉΓòÉΓòÉ
  8122.  
  8123. The slider can be displayed either as a square (the default), or as a portion 
  8124. of the scroll bar if SBCDATA and the SBS_THUMBSIZE style are specified at 
  8125. creation. Displaying the slider as a proportional rectangle permits the size of 
  8126. the slider to be proportional to the amount of data being viewed in the visible 
  8127. range. The size is set based on the visible range and the number of values in 
  8128. the range. As an example, where the viewing area is 20 items and the range is 
  8129. 100, the slider size would be 20% of the potential slider area. Note that there 
  8130. is no direct connection between the scroll bar range and the range value used 
  8131. to set the slider size.  It is possible to set the scroll-bar range from 0-99, 
  8132. and base the slider size on a viewing area of 500 and a range of 1000.  This 
  8133. will set the scroll-bar to have 100 positions and will display a slider that is 
  8134. half the size of the scroll bar. 
  8135.  
  8136. The slider size can be set using SBM_SETTHUMBSIZE or WM_SETWINDOWPARAMS, and 
  8137. obtained using WM_QUERYWINDOWPARAMS. 
  8138.  
  8139.  
  8140. ΓòÉΓòÉΓòÉ 11.1.2. Scroll-Bar Notification Messages ΓòÉΓòÉΓòÉ
  8141.  
  8142. A scroll bar sends notification messages to its owner whenever the user clicks 
  8143. the scroll bar.  WM_VSCROLL and WM_HSCROLL are the notification messages for 
  8144. vertical and horizontal scroll bars, respectively.  If the scroll bar is a 
  8145. frame control window, the frame window passes the message to its client window. 
  8146.  
  8147. Each notification message includes the scroll-bar identifier, scroll-bar 
  8148. command code corresponding to the action of the user, and, in some cases, the 
  8149. position of the slider.  If an application creates a scroll bar as part of a 
  8150. frame control window, the scroll-bar identifier is the predefined constant 
  8151. FID_VERTSCROLL or FID_HORZSCROLL.  Otherwise, it is the identifier given in the 
  8152. WinCreateWindow function. 
  8153.  
  8154. The scroll-bar command codes specify the action the user has taken.  Operating 
  8155. system user-interface guidelines recommend certain responses for each action. 
  8156.  
  8157. Following is a list of the command codes; for each code, the user action is 
  8158. specified, followed by the application's response. In each case, a scrolling 
  8159. unit, appropriate for the given data, must be defined by the application.  For 
  8160. example, for scrolling text vertically, the typical unit is a line. 
  8161.  
  8162. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8163. ΓöéCommand Code        ΓöéDescription                             Γöé
  8164. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8165. ΓöéSB_LINEUP           ΓöéIndicates that the user clicked the top Γöé
  8166. Γöé                    Γöéscroll arrow. Decrement the slider      Γöé
  8167. Γöé                    Γöéposition by one, and scroll toward the  Γöé
  8168. Γöé                    Γöétop of the data by one unit.            Γöé
  8169. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8170. ΓöéSB_LINEDOWN         ΓöéIndicates that the user clicked the     Γöé
  8171. Γöé                    Γöébottom scroll arrow. Increment the      Γöé
  8172. Γöé                    Γöéslider position by one, and scroll      Γöé
  8173. Γöé                    Γöétoward the bottom of the data by one    Γöé
  8174. Γöé                    Γöéunit.                                   Γöé
  8175. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8176. ΓöéSB_LINELEFT         ΓöéIndicates that the user clicked the leftΓöé
  8177. Γöé                    Γöéscroll arrow. Decrement the slider      Γöé
  8178. Γöé                    Γöéposition by one, and scroll toward the  Γöé
  8179. Γöé                    Γöéleft end of the data by one unit.       Γöé
  8180. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8181. ΓöéSB_LINERIGHT        ΓöéIndicates that the user clicked the     Γöé
  8182. Γöé                    Γöéright scroll arrow. Increment the sliderΓöé
  8183. Γöé                    Γöéposition by one, and scroll toward the  Γöé
  8184. Γöé                    Γöéright end of the data by one unit.      Γöé
  8185. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8186. ΓöéSB_PAGEUP           ΓöéIndicates that the user clicked the     Γöé
  8187. Γöé                    Γöéscroll-bar background above the slider. Γöé
  8188. Γöé                    ΓöéDecrement the slider position by the    Γöé
  8189. Γöé                    Γöénumber of data units in the window, and Γöé
  8190. Γöé                    Γöéscroll toward the top of the data by theΓöé
  8191. Γöé                    Γöésame number of units.                   Γöé
  8192. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8193. ΓöéSB_PAGEDOWN         ΓöéIndicates that the user clicked the     Γöé
  8194. Γöé                    Γöéscroll-bar background below the slider. Γöé
  8195. Γöé                    ΓöéIncrement the slider position by the    Γöé
  8196. Γöé                    Γöénumber of data units in the window, and Γöé
  8197. Γöé                    Γöéscroll toward the bottom of the data by Γöé
  8198. Γöé                    Γöéthe same number of units.               Γöé
  8199. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8200. ΓöéSB_PAGELEFT         ΓöéIndicates that the user clicked the     Γöé
  8201. Γöé                    Γöéscroll-bar background to the left of theΓöé
  8202. Γöé                    Γöéslider. Decrement the slider position byΓöé
  8203. Γöé                    Γöéthe number of data units in the window, Γöé
  8204. Γöé                    Γöéand scroll toward the left end of the   Γöé
  8205. Γöé                    Γöédata by the same number of units.       Γöé
  8206. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8207. ΓöéSB_PAGERIGHT        ΓöéIndicates that the user clicked the     Γöé
  8208. Γöé                    Γöéscroll-bar background to the right of   Γöé
  8209. Γöé                    Γöéthe slider. Increment the slider        Γöé
  8210. Γöé                    Γöéposition by the number of data units in Γöé
  8211. Γöé                    Γöéthe window, and scroll toward the right Γöé
  8212. Γöé                    Γöéend of the data by the same number of   Γöé
  8213. Γöé                    Γöéunits.                                  Γöé
  8214. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8215. ΓöéSB_SLIDERTRACK      ΓöéIndicates that the user is dragging the Γöé
  8216. Γöé                    Γöéslider. Applications that draw data     Γöé
  8217. Γöé                    Γöéquickly can set the slider to the       Γöé
  8218. Γöé                    Γöéposition given in the message, and      Γöé
  8219. Γöé                    Γöéscroll the data by the same number of   Γöé
  8220. Γöé                    Γöéunits the slider has moved. ApplicationsΓöé
  8221. Γöé                    Γöéthat cannot draw data quickly should    Γöé
  8222. Γöé                    Γöéwait for the SB_SLIDERPOSITION code     Γöé
  8223. Γöé                    Γöébefore moving the slider and scrolling  Γöé
  8224. Γöé                    Γöéthe data.                               Γöé
  8225. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8226. ΓöéSB_SLIDERPOSITION   ΓöéIndicates that the user released the    Γöé
  8227. Γöé                    Γöéslider after dragging it. Set the sliderΓöé
  8228. Γöé                    Γöéto the position given in the message,   Γöé
  8229. Γöé                    Γöéand scroll the data by the same number  Γöé
  8230. Γöé                    Γöéof units the slider was moved.          Γöé
  8231. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8232. ΓöéSB_ENDSCROLL        ΓöéIndicates that the user released the    Γöé
  8233. Γöé                    Γöémouse after holding it on an arrow or inΓöé
  8234. Γöé                    Γöéthe scroll-bar background. No response  Γöé
  8235. Γöé                    Γöéis necessary.                           Γöé
  8236. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8237. If the command code is SB_SLIDERTRACK or SB_SLIDERPOSITION, indicating that the 
  8238. user is moving the scroll-bar slider, the notification message also contains 
  8239. the current position of the slider. 
  8240.  
  8241. The owner window can send a message to the scroll bar to read or reset the 
  8242. current value and range of the scroll bar.  To reflect any changes in the state 
  8243. of the scroll bar, the owner window also can adjust the data the scroll bar 
  8244. controls. 
  8245.  
  8246. An application can use the WinEnableWindow function to disable a scroll bar.  A 
  8247. disabled scroll bar ignores the actions of the user, sending out no 
  8248. notification messages when the user tries to manipulate it.  If an application 
  8249. has no data to scroll, or if all data fits in the client window, the 
  8250. application should disable the scroll bar. 
  8251.  
  8252.  
  8253. ΓòÉΓòÉΓòÉ 11.1.3. Scroll Bars and the Keyboard ΓòÉΓòÉΓòÉ
  8254.  
  8255. When a scroll bar has the keyboard focus, it generates notification messages 
  8256. for the following keys: 
  8257.  
  8258. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8259. ΓöéKeys           ΓöéResponse                                     Γöé
  8260. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8261. ΓöéUP             ΓöéSB_LINEUP or SB_LINELEFT                     Γöé
  8262. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8263. ΓöéLEFT           ΓöéSB_LINEUP or SB_LINELEFT                     Γöé
  8264. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8265. ΓöéDOWN           ΓöéSB_LINEDOWN or SB_LINERIGHT                  Γöé
  8266. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8267. ΓöéRIGHT          ΓöéSB_LINEDOWN or SB_LINERIGHT                  Γöé
  8268. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8269. ΓöéPGUP           ΓöéSB_PAGEUP or SB_PAGELEFT                     Γöé
  8270. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8271. ΓöéPGDN           ΓöéSB_PAGEDOWN or SB_PAGERIGHT                  Γöé
  8272. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8273.  
  8274. If an application uses scroll bars to scroll data but does not give the scroll 
  8275. bar the input focus, the window with the focus must process keyboard input. 
  8276. The window can generate scroll-bar notification messages or carry out the 
  8277. indicated scrolling.  The following table shows the responses to keys that a 
  8278. window must process: 
  8279.  
  8280. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8281. ΓöéKey            ΓöéResponse                                     Γöé
  8282. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8283. ΓöéUP             ΓöéSB_LINEUP                                    Γöé
  8284. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8285. ΓöéDOWN           ΓöéSB_LINEDOWN                                  Γöé
  8286. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8287. ΓöéPGUP           ΓöéSB_PAGEUP                                    Γöé
  8288. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8289. ΓöéPGDN           ΓöéSB_PAGEDOWN                                  Γöé
  8290. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8291. ΓöéCTRL+HOME      ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8292. Γöé               Γöéminimum position                             Γöé
  8293. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8294. ΓöéCTRL+END       ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8295. Γöé               Γöémaximum position                             Γöé
  8296. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8297. ΓöéLEFT           ΓöéSB_LINELEFT                                  Γöé
  8298. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8299. ΓöéRIGHT          ΓöéSB_LINERIGHT                                 Γöé
  8300. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8301. ΓöéCTRL+PGUP      ΓöéSB_PAGELEFT                                  Γöé
  8302. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8303. ΓöéCTRL+PGDN      ΓöéSB_PAGERIGHT                                 Γöé
  8304. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8305. ΓöéHOME           ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8306. Γöé               Γöéminimum position                             Γöé
  8307. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8308. ΓöéEND            ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8309. Γöé               Γöémaximum position                             Γöé
  8310. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8311.  
  8312. For vertical scroll bars that are part of list boxes, the following table shows 
  8313. the responses to keys: 
  8314.  
  8315. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8316. ΓöéKey            ΓöéCommand                                      Γöé
  8317. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8318. ΓöéCTRL+UP        ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8319. Γöé               Γöéminimum position                             Γöé
  8320. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8321. ΓöéCTRL+DOWN      ΓöéSB_SLIDERTRACK, with the slider set to the   Γöé
  8322. Γöé               Γöémaximum position                             Γöé
  8323. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8324. ΓöéF7             ΓöéSB_PAGEUP                                    Γöé
  8325. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8326. ΓöéF8             ΓöéSB_PAGEDOWN                                  Γöé
  8327. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8328.  
  8329.  
  8330. ΓòÉΓòÉΓòÉ 11.2. Using Scroll Bars ΓòÉΓòÉΓòÉ
  8331.  
  8332. This section explains how to perform the following tasks: 
  8333.  
  8334.      Create scroll bars 
  8335.      Retrieve a scroll-bar handle 
  8336.      Initialize, adjust, and read the scroll-bar range and position 
  8337.  
  8338.  
  8339. ΓòÉΓòÉΓòÉ 11.2.1. Creating Scroll Bars ΓòÉΓòÉΓòÉ
  8340.  
  8341. When creating a frame window, you can add scroll bars by specifying the 
  8342. FCF_HORZSCROLL flag, FCF_VERTSCROLL flag, or both flags in the 
  8343. WinCreateStdWindow function.  This adds horizontal, vertical, or both (as 
  8344. specified) scroll bars to the frame window.  The frame window owns the scroll 
  8345. bars and passes notification messages from the scroll bars to the client 
  8346. window. The following code fragment adds scroll bars to a frame window: 
  8347.  
  8348.  
  8349.     /* Set flags for a main window with scroll bars. */
  8350.     ULONG ulFrameControlFlags =
  8351.         FCF_STANDARD | FCF_HORZSCROLL | FCF_VERTSCROLL;
  8352.  
  8353.     /* Create the window.                            */
  8354.     hwndFrame = WinCreateStdWindow(HWND_DESKTOP,
  8355.         WS_VISIBLE,
  8356.         &ulFrameControlFlags,
  8357.         szClientClass,
  8358.         szFrameTitle,
  8359.         0,
  8360.         (HMODULE) NULL,
  8361.         0,
  8362.         &hwndClient);
  8363.  
  8364. Scroll bars created this way have the window identifier FID_HORZSCROLL or 
  8365. FID_VERTSCROLL.  To determine the size and position of the scroll bars, the 
  8366. frame window uses the standard size specified by the system values SV_CXVSCROLL 
  8367. and SV_CYHSCROLL.  The position always is defined by the right and bottom edges 
  8368. of the frame window. 
  8369.  
  8370. Another way to create scroll bars is using the WinCreateWindow function.  This 
  8371. method is most commonly used for stand-alone scroll bars.  Creating scroll bars 
  8372. this way lets you set the size and position of the scroll bars.  You also can 
  8373. specify which window should receive notification messages. 
  8374.  
  8375. The following code fragment creates a stand-alone scroll bar: 
  8376.  
  8377.     #define ID_SCROLL_BAR 1
  8378.  
  8379.     HWND hwndScroll,hwndClient;
  8380.     hwndScroll = WinCreateWindow(
  8381.         hwndClient,                      /* Scroll-bar parent window       */
  8382.         WC_SCROLLBAR,                    /* Preregistered scroll-bar class */
  8383.         (PSZ) NULL,                      /* No window title                */
  8384.         SBS_VERT | WS_VISIBLE,           /* Vertical style and visible     */
  8385.         10, 10,                          /* Position & Size                */
  8386.         20, 100,                         /* Size                           */
  8387.         hwndClient,                      /* Owner                          */
  8388.         HWND_TOP,                        /* Z-order position               */
  8389.         ID_SCROLL_BAR,                   /* Scroll-bar identifier          */
  8390.         NULL,                            /* No class-specific data         */
  8391.         NULL);                           /* No presentation parameters     */
  8392.  
  8393.  
  8394. ΓòÉΓòÉΓòÉ 11.2.2. Retrieving a Scroll-Bar Handle ΓòÉΓòÉΓòÉ
  8395.  
  8396. If you use the WinCreateStdWindow function to create a scroll bar as a child of 
  8397. the frame window, you must be able to retrieve the scroll-bar handle.  One way 
  8398. to do this is to use the WinWindowFromID function, the frame-window handle, and 
  8399. a predefined identifier (such as FID_HORZSCROLL or FID_VERTSCROLL), as shown in 
  8400. the following code fragment: 
  8401.  
  8402.     HWND hwndFrame,hwndHorzScroll,hwndVertScroll;
  8403.  
  8404.     hwndHorzScroll = WinWindowFromID(hwndFrame, FID_HORZSCROLL);
  8405.     hwndVertScroll = WinWindowFromID(hwndFrame, FID_VERTSCROLL);
  8406.  
  8407. If the standard frame window includes a client window, you can use that handle 
  8408. to access the scroll bars.  The idea is to get the frame-window handle first; 
  8409. then, the scroll-bar handle. 
  8410.  
  8411.  
  8412.     HWND hwndScroll,hwndClient;
  8413.  
  8414.     /* Get a handle to the horizontal scroll bar. */
  8415.     hwndScroll = WinWindowFromID(
  8416.         WinQueryWindow(hwndClient, QW_PARENT),
  8417.         FID_HORZSCROLL);
  8418.  
  8419.  
  8420. ΓòÉΓòÉΓòÉ 11.2.3. Using the Scroll-Bar Range and Position ΓòÉΓòÉΓòÉ
  8421.  
  8422. You can initialize the current value and range of a scroll bar to non-default 
  8423. values by sending the SBCDATA structure with class-specific data for a call to 
  8424. WinCreateWindow: 
  8425.  
  8426.     #define ID_SCROLL_BAR 1
  8427.  
  8428.     SBCDATA sbcd;
  8429.     HWND hwndScroll,hwndClient;
  8430.  
  8431.     /* Set up scroll-bar control data.                     */
  8432.     sbcd.posFirst = 200;
  8433.     sbcd.posLast  = 400;
  8434.     sbcd.posThumb = 300;
  8435.  
  8436.     /* Create the scroll bar.                              */
  8437.     hwndScroll = WinCreateWindow(hwndClient,
  8438.         WC_SCROLLBAR,
  8439.         (PSZ) NULL,
  8440.         SBS_VERT | WS_VISIBLE,
  8441.         10, 10,
  8442.         20, 100,
  8443.         hwndClient,
  8444.         HWND_TOP,
  8445.         ID_SCROLL_BAR,
  8446.         &sbcd,                     /* Class-specific data  */
  8447.         NULL);
  8448.  
  8449. You can adjust a scroll-bar value and range by sending it an SBM_SETSCROLLBAR 
  8450. message: 
  8451.  
  8452.     /* Set the scroll-bar value and range. */
  8453.  
  8454.     WinSendMsg(hwndScroll, SBM_SETSCROLLBAR,
  8455.         (MPARAM)300,
  8456.         MPFROM2SHORT(200, 400));
  8457.  
  8458. You can read a scroll-bar value by sending it an SBM_QUERYPOS message: 
  8459.  
  8460.     USHORT usSliderPos;
  8461.  
  8462.     /* Read the scroll-bar value. */
  8463.     usSliderPos = (USHORT) WinSendMsg(hwndScroll,
  8464.         SBM_QUERYPOS, (MPARAM) NULL, (MPARAM) NULL);
  8465.  
  8466. Similarly, you can set a scroll-bar value by sending an SBM_SETPOS message: 
  8467.  
  8468.     /* Set the vertical scroll-bar value. */
  8469.     WinSendMsg(hwndScroll, SBM_SETPOS, (MPARAM)300, (MPARAM) NULL);
  8470.  
  8471. You can read a scroll-bar range by sending it an SBM_QUERYRANGE message: 
  8472.  
  8473.     MRESULT mr;
  8474.     USHORT  usMinimum, usMaximum;
  8475.  
  8476.     /* Read the vertical scroll-bar range.                               */
  8477.     mr = WinSendMsg(hwndScroll, SBM_QUERYRANGE, (MPARAM) NULL, (MPARAM) NULL);
  8478.  
  8479.     usMinimum = SHORT1FROMMR(mr);            /* minimum in the low word  */
  8480.     usMaximum = SHORT2FROMMR(mr);            /* maximum in the high word */
  8481.  
  8482.  
  8483. ΓòÉΓòÉΓòÉ 12. Slider Controls ΓòÉΓòÉΓòÉ
  8484.  
  8485. A slider control is a visual component that displays a range of values and 
  8486. allows a user to set, display, or modify a value by moving a slider arm. There 
  8487. are two types of sliders: 
  8488.  
  8489.      The linear slider is represented as a shaft along which the slider arm 
  8490.       can be moved by the user to set a value. 
  8491.  
  8492.      The circular slider is represented as a dial with the slider arm shown as 
  8493.       the radius of the dial. 
  8494.  
  8495.  This chapter explains how to use each of these slider controls in PM 
  8496.  applications. 
  8497.  
  8498.  
  8499. ΓòÉΓòÉΓòÉ 12.1. About Slider Controls ΓòÉΓòÉΓòÉ
  8500.  
  8501. This section covers linear and circular slider controls. Linear sliders are 
  8502. used to set values that have familiar increments. Circular sliders, although 
  8503. different in appearance from linear sliders, provide much the same function. 
  8504. Both types of sliders can be used in a window to create a user interface. 
  8505.  
  8506.  
  8507. ΓòÉΓòÉΓòÉ 12.1.1. Linear Sliders ΓòÉΓòÉΓòÉ
  8508.  
  8509. Typically, linear sliders are used to easily set values that have familiar 
  8510. increments, such as feet, inches, degrees, and decibels. They also can be used 
  8511. for other purposes when immediate feedback is required, such as blending colors 
  8512. or showing a task's percentage of completion. For example, an application might 
  8513. let a user mix and match color shades by moving a slider arm, or a read-only 
  8514. slider could show how much of a task is complete by filling in the slider shaft 
  8515. as the task progresses. These are just a few examples of the ways in which 
  8516. sliders can be used. 
  8517.  
  8518. The slider arm shows the value currently set by its position on the slider 
  8519. shaft. The user selects slider values by changing the location of the slider 
  8520. arm. 
  8521.  
  8522. A tick mark indicates an incremental value in a slider scale. A detent, which 
  8523. is similar to a tick mark, also represents a value on the scale. However, a 
  8524. detent can be placed anywhere along the slider scale, rather than only in 
  8525. specific increments, and can be selected. 
  8526.  
  8527. The appearance of a slider and the user interaction with a slider are similar 
  8528. to that of a scroll bar. However, these two controls are not interchangeable 
  8529. because each has a unique purpose. A scroll bar scrolls information into view 
  8530. that is outside a window's work area, while the slider is used to set, display, 
  8531. or modify that information, whether it is in or out of the work area. 
  8532.  
  8533. Although linear sliders usually use values that have familiar increments, text 
  8534. also can be used. However, if the text is too long it can overlap the text 
  8535. displayed on the next tick mark or detent. Also, if the text on the far edge 
  8536. markers is too long, some of the text will not be displayed on screen. To 
  8537. prevent this use one of the following: 
  8538.  
  8539.      Smaller font 
  8540.      Shorter text values 
  8541.      Static controls 
  8542.  
  8543.  The slider can be customized to meet varying application requirements, while 
  8544.  providing a user interface component that can be used easily to develop 
  8545.  products that conform to the Systems Application Architecture (SAA) Common 
  8546.  User Access (CUA) user interface guidelines. The application can specify 
  8547.  different scales, sizes, and orientations for its sliders, but the underlying 
  8548.  function of the control remains the same. For a complete description of CUA 
  8549.  sliders, refer to the SAA CUA Guide to User Interface Design and the SAA CUA 
  8550.  Advanced Interface Design Reference. 
  8551.  
  8552.  
  8553. ΓòÉΓòÉΓòÉ 12.1.1.1. Linear Slider Styles ΓòÉΓòÉΓòÉ
  8554.  
  8555. Slider control styles are set when a slider window is created. The following 
  8556. table describes linear slider control styles. If no styles are specified, 
  8557. defaults are used as indicated in the table. 
  8558.  
  8559. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8560. ΓöéStyle Name            ΓöéDescription                           Γöé
  8561. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8562. ΓöéSLS_BOTTOM            ΓöéPositions the slider at the bottom of Γöé
  8563. Γöé                      Γöéthe slider window. Valid only for     Γöé
  8564. Γöé                      Γöéhorizontal sliders.                   Γöé
  8565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8566. ΓöéSLS_BUTTONSBOTTOM     ΓöéSpecifies that the optional slider    Γöé
  8567. Γöé                      Γöébuttons are to be used and places themΓöé
  8568. Γöé                      Γöéat the bottom of the slider shaft. TheΓöé
  8569. Γöé                      Γöébuttons move the slider arm by one    Γöé
  8570. Γöé                      Γöéposition, up or down, in the directionΓöé
  8571. Γöé                      Γöéselected. Valid only for vertical     Γöé
  8572. Γöé                      Γöésliders.                              Γöé
  8573. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8574. ΓöéSLS_BUTTONSLEFT       ΓöéSpecifies that the optional slider    Γöé
  8575. Γöé                      Γöébuttons are to be used and places themΓöé
  8576. Γöé                      Γöéto the left of the slider shaft. The  Γöé
  8577. Γöé                      Γöébuttons move the slider arm by one    Γöé
  8578. Γöé                      Γöéposition, left or right, in the       Γöé
  8579. Γöé                      Γöédirection selected. Valid only for    Γöé
  8580. Γöé                      Γöéhorizontal sliders.                   Γöé
  8581. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8582. ΓöéSLS_BUTTONSRIGHT      ΓöéSpecifies that the optional slider    Γöé
  8583. Γöé                      Γöébuttons are to be used and places themΓöé
  8584. Γöé                      Γöéto the right of the slider shaft. The Γöé
  8585. Γöé                      Γöébuttons move the slider arm by one    Γöé
  8586. Γöé                      Γöéposition, left or right, in the       Γöé
  8587. Γöé                      Γöédirection selected. Valid only for    Γöé
  8588. Γöé                      Γöéhorizontal sliders.                   Γöé
  8589. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8590. ΓöéSLS_BUTTONSTOP        ΓöéSpecifies that the optional slider    Γöé
  8591. Γöé                      Γöébuttons are to be used and places themΓöé
  8592. Γöé                      Γöéat the top of the slider shaft. The   Γöé
  8593. Γöé                      Γöébuttons move the slider arm by one    Γöé
  8594. Γöé                      Γöéposition, up or down, in the directionΓöé
  8595. Γöé                      Γöéselected. Valid only for vertical     Γöé
  8596. Γöé                      Γöésliders.                              Γöé
  8597. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8598. ΓöéSLS_CENTER            ΓöéCenters the slider within the slider  Γöé
  8599. Γöé                      Γöéwindow. This is the default position  Γöé
  8600. Γöé                      Γöéof the slider.                        Γöé
  8601. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8602. ΓöéSLS_HOMEBOTTOM        ΓöéSpecifies the slider arm's home       Γöé
  8603. Γöé                      Γöéposition. The bottom of the slider is Γöé
  8604. Γöé                      Γöéused as the base value for            Γöé
  8605. Γöé                      Γöéincrementing. Valid only for vertical Γöé
  8606. Γöé                      Γöésliders.                              Γöé
  8607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8608. ΓöéSLS_HOMELEFT          ΓöéSpecifies the slider arm's home       Γöé
  8609. Γöé                      Γöéposition. The left edge is used as theΓöé
  8610. Γöé                      Γöébase value for incrementing. This is  Γöé
  8611. Γöé                      Γöéthe default for horizontal sliders andΓöé
  8612. Γöé                      Γöéis valid only for horizontal sliders. Γöé
  8613. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8614. ΓöéSLS_HOMERIGHT         ΓöéSpecifies the slider arm's home       Γöé
  8615. Γöé                      Γöéposition. The right edge is used as   Γöé
  8616. Γöé                      Γöéthe base value for incrementing. ValidΓöé
  8617. Γöé                      Γöéonly for horizontal sliders.          Γöé
  8618. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8619. ΓöéSLS_HOMETOP           ΓöéSpecifies the slider arm's home       Γöé
  8620. Γöé                      Γöéposition. The top of the slider is    Γöé
  8621. Γöé                      Γöéused as the base value for            Γöé
  8622. Γöé                      Γöéincrementing. Valid only for vertical Γöé
  8623. Γöé                      Γöésliders.                              Γöé
  8624. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8625. ΓöéSLS_HORIZONTAL        ΓöéPositions the slider horizontally. TheΓöé
  8626. Γöé                      Γöéslider arm can move left and right on Γöé
  8627. Γöé                      Γöéthe slider shaft. A scale can be      Γöé
  8628. Γöé                      Γöéplaced on top of the slider shaft,    Γöé
  8629. Γöé                      Γöébelow the slider shaft, or in both    Γöé
  8630. Γöé                      Γöéplaces. This is the default           Γöé
  8631. Γöé                      Γöéorientation of the slider.            Γöé
  8632. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8633. ΓöéSLS_LEFT              ΓöéPositions the slider at the left edge Γöé
  8634. Γöé                      Γöéof the slider window. Valid only for  Γöé
  8635. Γöé                      Γöévertical sliders.                     Γöé
  8636. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8637. ΓöéSLS_OWNERDRAW         ΓöéNotifies the application whenever the Γöé
  8638. Γöé                      Γöéslider shaft, the ribbon strip, the   Γöé
  8639. Γöé                      Γöéslider arm, and the slider background Γöé
  8640. Γöé                      Γöéare to be drawn.                      Γöé
  8641. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8642. ΓöéSLS_PRIMARYSCALE1     ΓöéDetermines the location of the scale  Γöé
  8643. Γöé                      Γöéon the slider shaft by using incrementΓöé
  8644. Γöé                      Γöéand spacing specified for scale 1 as  Γöé
  8645. Γöé                      Γöéthe incremental value for positioning Γöé
  8646. Γöé                      Γöéthe slider arm. Scale 1 is displayed  Γöé
  8647. Γöé                      Γöéabove the slider shaft of a horizontalΓöé
  8648. Γöé                      Γöéslider and to the right of the slider Γöé
  8649. Γöé                      Γöéshaft of a vertical slider. This is   Γöé
  8650. Γöé                      Γöéthe default for a slider.             Γöé
  8651. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8652. ΓöéSLS_PRIMARYSCALE2     ΓöéDetermines the location of the scale  Γöé
  8653. Γöé                      Γöéon the slider shaft by using incrementΓöé
  8654. Γöé                      Γöéand spacing specified for scale 2 as  Γöé
  8655. Γöé                      Γöéthe incremental value for positioning Γöé
  8656. Γöé                      Γöéthe slider arm. Scale 2 is displayed  Γöé
  8657. Γöé                      Γöébelow the slider shaft of a horizontalΓöé
  8658. Γöé                      Γöéslider and to the left of the slider  Γöé
  8659. Γöé                      Γöéshaft of a vertical slider.           Γöé
  8660. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8661. ΓöéSLS_READONLY          ΓöéCreates a read-only slider, which     Γöé
  8662. Γöé                      Γöépresents information to the user but  Γöé
  8663. Γöé                      Γöéallows no interaction with the user.  Γöé
  8664. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8665. ΓöéSLS_RIBBONSTRIP       ΓöéFills, as the slider arm moves, the   Γöé
  8666. Γöé                      Γöéslider shaft between the home positionΓöé
  8667. Γöé                      Γöéand the slider arm with a color value Γöé
  8668. Γöé                      Γöédifferent from slider shaft color,    Γöé
  8669. Γöé                      Γöésimilar to mercury in a thermometer.  Γöé
  8670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8671. ΓöéSLS_RIGHT             ΓöéPositions the slider at the right edgeΓöé
  8672. Γöé                      Γöéof the slider window. Valid only for  Γöé
  8673. Γöé                      Γöévertical sliders.                     Γöé
  8674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8675. ΓöéSLS_SNAPTOINCREMENT   ΓöéCauses the slider arm, when positionedΓöé
  8676. Γöé                      Γöébetween two values, to be positioned  Γöé
  8677. Γöé                      Γöéto the nearest value and redrawn at   Γöé
  8678. Γöé                      Γöéthat position.                        Γöé
  8679. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8680. ΓöéSLS_TOP               ΓöéPositions the slider at the top of theΓöé
  8681. Γöé                      Γöéslider window. Valid only for         Γöé
  8682. Γöé                      Γöéhorizontal sliders.                   Γöé
  8683. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8684. ΓöéSLS_VERTICAL          ΓöéPositions the slider vertically. The  Γöé
  8685. Γöé                      Γöéslider arm can move up and down the   Γöé
  8686. Γöé                      Γöéslider shaft. A scale can be placed onΓöé
  8687. Γöé                      Γöéthe left side of the slider shaft, on Γöé
  8688. Γöé                      Γöéthe right side of the slider shaft, orΓöé
  8689. Γöé                      Γöéin both places.                       Γöé
  8690. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8691.  
  8692.  
  8693. ΓòÉΓòÉΓòÉ 12.1.1.1.1. More on Linear Slider Styles ΓòÉΓòÉΓòÉ
  8694.  
  8695.  
  8696. This section summarizes information in the table and provides additional 
  8697. information on some of the styles. 
  8698.  
  8699.  
  8700. ΓòÉΓòÉΓòÉ 12.1.1.1.1.1. Slider Orientation ΓòÉΓòÉΓòÉ
  8701.  
  8702.  
  8703. The slider's orientation is determined by specifying SLS_HORIZONTAL or 
  8704. SLS_VERTICAL. The default orientation is horizontal, with the slider arm moving 
  8705. left and right on the shaft. 
  8706.  
  8707.  
  8708. ΓòÉΓòÉΓòÉ 12.1.1.1.1.2. Slider Positioning ΓòÉΓòÉΓòÉ
  8709.  
  8710.  
  8711. The slider's positioning within the slider window is determined by specifying 
  8712. SLS_CENTER, SLS_BOTTOM, SLS_TOP, SLS_LEFT, or SLS_RIGHT. The default 
  8713. positioning is centered in the slider window. 
  8714.  
  8715.  
  8716. ΓòÉΓòÉΓòÉ 12.1.1.1.1.3. Slider Scale Location ΓòÉΓòÉΓòÉ
  8717.  
  8718.  
  8719. The location of the scale on the slider shaft is determined by specifying 
  8720. SLS_PRIMARYSCALE1 or SLS_PRIMARYSCALE2. The default is to use the increment and 
  8721. spacing specified for scale 1 as the incremental value for positioning the 
  8722. slider arm. Scale 1 is displayed above the slider shaft of a horizontal slider 
  8723. and to the right of the slider shaft of a vertical slider. 
  8724.  
  8725.  
  8726. ΓòÉΓòÉΓòÉ 12.1.1.1.1.4. Slider Arm Home Position ΓòÉΓòÉΓòÉ
  8727.  
  8728.  
  8729. The slider arm's home position is determined by specifying SLS_HOMELEFT, 
  8730. SLS_HOMERIGHT, SLS_HOMEBOTTOM, or SLS_HOMETOP. The default is SLS_HOMELEFT for 
  8731. horizontal sliders and SLS_HOMEBOTTOM for vertical sliders. 
  8732.  
  8733.  
  8734. ΓòÉΓòÉΓòÉ 12.1.1.1.1.5. Slider Buttons Location ΓòÉΓòÉΓòÉ
  8735.  
  8736.  
  8737. The location of the slider buttons, if used, is determined by specifying 
  8738. SLS_BUTTONSLEFT, SLS_BUTTONSRIGHT, SLS_BUTTONSBOTTOM, or SLS_BUTTONSTOP. If you 
  8739. do not specify one of these styles, or if conflicting styles are specified, 
  8740. slider buttons are not included in the slider control. 
  8741.  
  8742.  
  8743. ΓòÉΓòÉΓòÉ 12.1.1.1.1.6. Other Styles ΓòÉΓòÉΓòÉ
  8744.  
  8745.  
  8746. If SLS_SNAPTOINCREMENT is specified and the slider arm is moved to a position 
  8747. between two values on the slider scale, it is positioned on the nearest value 
  8748. and redrawn at that position. If this style is not specified, the slider arm 
  8749. remains at the position to which it is moved. 
  8750.  
  8751. SLS_READONLY creates a read-only slider. This means the user cannot interact 
  8752. with the slider. It is simply used as to present a quantity to the user, such 
  8753. as the percentage of completion of an ongoing task. Visual differences for a 
  8754. read-only slider include a narrow slider arm, no slider buttons, and no 
  8755. detents. 
  8756.  
  8757. The SLS_RIBBONSTRIP style allows movement of the slider arm to cause the slider 
  8758. shaft between home position and the slider arm to be filled with a color value 
  8759. that is different from the slider shaft color, similar to mercury in a 
  8760. thermometer. 
  8761.  
  8762. If SLS_OWNERDRAW is specified, the application is notified whenever the slider 
  8763. shaft, the ribbon strip, the slider arm, and the slider background are to be 
  8764. drawn. 
  8765.  
  8766.  
  8767. ΓòÉΓòÉΓòÉ 12.1.2. Circular Sliders ΓòÉΓòÉΓòÉ
  8768.  
  8769. The circular slider, although different in appearance from the linear slider, 
  8770. provides much the same function. The circular slider control provides an analog 
  8771. user interface and emulates the controls of stereo and video equipment. Because 
  8772. the circular slider takes up less space on the screen, it may be more practical 
  8773. to use in cases where you might want to have several controls in the same 
  8774. window. You may want to use both types of sliders in a window to create a user 
  8775. interface that makes good use of available space and provides a familiar 
  8776. appearance to the user. 
  8777.  
  8778. The slider arm shows the value currently set by its position on the slider 
  8779. dial. The slider arm can also be represented as a small circular thumb on the 
  8780. dial rather than a line. The user selects slider values by changing the 
  8781. location of the slider arm on the dial. Outside the perimeter of the dial is a 
  8782. circular scale with tick marks representing incremental values the slider arm 
  8783. can point to. Its values can be tracked by pointing to any area on the dial and 
  8784. pressing the select button while moving the mouse on the desktop. 
  8785.  
  8786. The circular slider can have a set of buttons, one to the left and the other to 
  8787. the right of the scroll range, similar to the buttons found on the linear 
  8788. slider, that can be used to modify the value shown on the slider. 
  8789.  
  8790. The minus sign on the left button and plus sign on the right button can be 
  8791. replaced with other symbols. For example, you might want to use a left arrow 
  8792. and a right arrow instead of the minus and plus signs. 
  8793.  
  8794. Another option of the circular slider is to have a window, in the center of the 
  8795. dial, that displays the value of the dial in scrollable numeric text. 
  8796.  
  8797. The appearance and functionality of the circular slider are controlled by the 
  8798. circular slider control styles specified. These style bits are summarized in 
  8799. the section that follows. 
  8800.  
  8801.  
  8802. ΓòÉΓòÉΓòÉ 12.1.2.1. Circular Slider Styles ΓòÉΓòÉΓòÉ
  8803.  
  8804. Circular slider control style bits control the appearance and behavior of the 
  8805. slider. The following table describes circular slider control styles: 
  8806.  
  8807. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8808. ΓöéStyle Name            ΓöéDescription                           Γöé
  8809. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8810. ΓöéCSS_360               ΓöéExtends the scroll range of the dial  Γöé
  8811. Γöé                      Γöéto 360 degrees. When this style is    Γöé
  8812. Γöé                      Γöéset, CSS_NONUMBER and CSS_NOBUTTON    Γöé
  8813. Γöé                      Γöéstyles automatically are set.         Γöé
  8814. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8815. ΓöéCSS_CIRCULARVALUE     ΓöéDraws a circular thumb, rather than a Γöé
  8816. Γöé                      Γöéline, for the value indicator.        Γöé
  8817. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8818. ΓöéCSS_MIDPOINT          ΓöéEnlarges the mid-point and end-point  Γöé
  8819. Γöé                      Γöétick marks.                           Γöé
  8820. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8821. ΓöéCSS_NOBUTTON          ΓöéPrevents the display of the + and -   Γöé
  8822. Γöé                      Γöévalue buttons.                        Γöé
  8823. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8824. ΓöéCSS_NONUMBER          ΓöéPrevents the display of a scrollable  Γöé
  8825. Γöé                      Γöénumeric value on the dial indicating  Γöé
  8826. Γöé                      Γöéthe dial's value.                     Γöé
  8827. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8828. ΓöéCSS_NOTEXT            ΓöéPrevents the display of a window titleΓöé
  8829. Γöé                      Γöébeneath the dial.                     Γöé
  8830. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8831. ΓöéCSS_POINTSELECT       ΓöéEnables tracking of the dial's value  Γöé
  8832. Γöé                      Γöéwith the mouse.                       Γöé
  8833. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8834. ΓöéCSS_PROPORTIONALTICKS ΓöéEnables the length of the tick marks  Γöé
  8835. Γöé                      Γöéto be calculated as a percentage of   Γöé
  8836. Γöé                      Γöéthe dial's radius.                    Γöé
  8837. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8838.  
  8839.  
  8840. ΓòÉΓòÉΓòÉ 12.1.2.1.1. More on Circular Slider Styles ΓòÉΓòÉΓòÉ
  8841.  
  8842.  
  8843. This section provides information on some of the styles. 
  8844.  
  8845.  
  8846. ΓòÉΓòÉΓòÉ 12.1.2.1.1.1. Circular Slider Buttons ΓòÉΓòÉΓòÉ
  8847.  
  8848.  
  8849. The circular slider has a set of buttons, one to the left and the other to the 
  8850. right of the scroll range. These buttons are similar to the buttons found on 
  8851. the linear slider. When selected, they modify the value of the circular slider 
  8852. in opposing ways. If you decide you do not want to display these buttons as 
  8853. part of your circular slider, specify the style CSS_NOBUTTON. 
  8854.  
  8855. The bit maps that show a minus sign (-) on the left button and a plus sign (+) 
  8856. on the right button can be replaced. For example, you might want to use a left 
  8857. arrow () and a right arrow (). To set the bit map data for the replacement 
  8858. bit maps, the owner window must send the CSM_SETBITMAPDATA control message. The 
  8859. optimal size for the button bit maps is 10x10 pels. 
  8860.  
  8861.  
  8862. ΓòÉΓòÉΓòÉ 12.1.2.1.1.2. Window Title ΓòÉΓòÉΓòÉ
  8863.  
  8864.  
  8865. Centered beneath the dial of the circular slider is a rectangular text field 
  8866. that contains the title of the window. To prevent the display of this feature, 
  8867. specify CSS_NOTEXT. 
  8868.  
  8869.  
  8870. ΓòÉΓòÉΓòÉ 12.1.2.1.1.3. Dial Value Window ΓòÉΓòÉΓòÉ
  8871.  
  8872.  
  8873. Another option of the circular slider is a window, in the center of the dial, 
  8874. that displays the value of the dial in scrollable numeric text. To prevent the 
  8875. display of this window, specify CSS_NONUMBER. 
  8876.  
  8877.  
  8878. ΓòÉΓòÉΓòÉ 12.1.2.1.1.4. 360-Degree Scale ΓòÉΓòÉΓòÉ
  8879.  
  8880.  
  8881. You can choose a scale of 360 degrees for your slider with CSS_360. Setting 
  8882. this style causes the CSS_NOBUTTON and CSS_NONUMBER styles to be set 
  8883. automatically. The CSS_NONUMBER style prevents the value indicator from 
  8884. corrupting the dial value. A 360-degree circular slider is displayed without 
  8885. the bit maps for the plus and minus buttons. 
  8886.  
  8887.  
  8888. ΓòÉΓòÉΓòÉ 12.1.2.1.1.5. Tracking Modes for Direct Manipulation ΓòÉΓòÉΓòÉ
  8889.  
  8890.  
  8891. There are two tracking modes used for direct manipulation of the circular 
  8892. slider: scrolling the dial and point selection. 
  8893.  
  8894. The default tracking behavior is scrolling, where the dial position of the 
  8895. slider is changed gradually. For example, by holding down the select mouse 
  8896. button while the pointer is positioned on the indicator line of the dial, you 
  8897. can move the mouse and cause the dial to rotate. This gradual changing of the 
  8898. dial value might be desirable for a volume control. 
  8899.  
  8900. If the CSS_POINTSELECT style is specified for the circular slider, the position 
  8901. of the dial is changed immediately to a point on the scale that has been 
  8902. selected by the mouse. Point selection allows value changes to occur 
  8903. immediately. 
  8904.  
  8905.  
  8906. ΓòÉΓòÉΓòÉ 12.1.2.1.1.6. Sizing Tick Marks ΓòÉΓòÉΓòÉ
  8907.  
  8908.  
  8909. When a low-resolution display is being used, or in situations where the 
  8910. circular slider must be made very small, the length of the tick marks can be 
  8911. sized proportionately to allow effective sizing of the circular slider. 
  8912. Specifying the CSS_PROPORTIONALTICKS style causes the length of the tick marks 
  8913. to be calculated as a percentage of the dial's radius. This style does not 
  8914. adversely affect the size of the push buttons and bit-map graphics an 
  8915. application might provide. 
  8916.  
  8917.  
  8918. ΓòÉΓòÉΓòÉ 12.2. Using Slider Controls ΓòÉΓòÉΓòÉ
  8919.  
  8920. This section explains how to use sliders in your PM applications. It covers: 
  8921.  
  8922.      Creating a linear slider 
  8923.      Retrieving data for selected slider values 
  8924.      Creating a circular slider 
  8925.  
  8926.  Code samples are provided. 
  8927.  
  8928.  
  8929. ΓòÉΓòÉΓòÉ 12.2.1. Creating a Linear Slider ΓòÉΓòÉΓòÉ
  8930.  
  8931. Before the slider is created, a temporary SLDCDATA data structure is allocated, 
  8932. and variables are specified for the slider control window handle and slider 
  8933. style. The SLDCDATA data structure is allocated so that the scale increments 
  8934. and spacing of the slider can be specified. 
  8935.  
  8936. The slider style variable enables the application to specify style bits, SLS_* 
  8937. values, that are used to customize the slider. 
  8938.  
  8939. You create a slider by using the WC_SLIDER window class name in the ClassName 
  8940. parameter of WinCreateWindow call. The handle of the slider control window is 
  8941. returned in the slider window variable. 
  8942.  
  8943. After the slider is created, but before it is made visible, the application can 
  8944. set other slider control characteristics, such as: 
  8945.  
  8946.      Size and placement of tick marks 
  8947.      Text above one or more tick marks 
  8948.      One or more detents 
  8949.      Initial slider arm position 
  8950.  
  8951.  The settings in the preceding list are just a few that an application can 
  8952.  specify. Slider control messages are used to specify these settings. 
  8953.  
  8954.  The sample code in the following figure shows an example of how a linear 
  8955.  slider is created. The main components of the slider are labeled. 
  8956.  
  8957.   SLDCDATA sldcData;                  /* SLDCDATA data structure        */
  8958.   CHAR     szTickText[5];             /* Text strings variable          */
  8959.   USHORT   idx;                       /* Counter for setting text       */
  8960.                                       /* strings                        */
  8961.   HWND     hwndSlider;                /* Slider window handle           */
  8962.   ULONG    ulSliderStyle;             /* Slider styles                  */
  8963.  
  8964.   /**********************************************************************/
  8965.   /* Initialize the parameters in the data structure.                   */
  8966.   /**********************************************************************/
  8967.   sldcData.cbSize = sizeof(SLDCDATA); /* Size of SLDCDATA structure     */
  8968.   sldcData.usScale1Increments = 6;    /* Number of increments           */
  8969.   sldcData.usScale1Spacing = 0;       /* Use 0 to have slider calculate */
  8970.                                       /* spacing                        */
  8971.  
  8972.   /**********************************************************************/
  8973.   /* Set the SLS_* style flags to the default values, plus slider       */
  8974.   /* buttons right.                                                     */
  8975.   /**********************************************************************/
  8976.   ulSliderStyle = SLS_HORIZONTAL    | /* Slider is horizontal           */
  8977.                   SLS_CENTER        | /* Slider shaft centered in       */
  8978.                                       /* slider window                  */
  8979.                   SLS_HOMELEFT      | /* Home position is left edge of  */
  8980.                                       /* slider                         */
  8981.                   SLS_PRIMARYSCALE1 | /* Scale is displayed above       */
  8982.                                       /* slider shaft                   */
  8983.                   SLS_BUTTONSRIGHT;   /* Slider buttons at right end of */
  8984.                                       /* slider                         */
  8985.  
  8986.   /**********************************************************************/
  8987.   /* Create the slider control window.                                  */
  8988.   /* The handle of the window is returned in hwndSlider.                */
  8989.   /**********************************************************************/
  8990.   hwndSlider = WinCreateWindow(
  8991.                  hwndClient,          /* Parent window handle           */
  8992.                  WC_SLIDER,           /* Slider window class name       */
  8993.                  (PSZ)NULL,           /* No window text                 */
  8994.                  ulSliderStyle,       /* Slider styles variable         */
  8995.                  (SHORT)10,           /* X coordinate                   */
  8996.                  (SHORT)10,           /* Y coordinate                   */
  8997.                  (SHORT)150,          /* Window width                   */
  8998.                  (SHORT)80,           /* Window height                  */
  8999.                  hwndClient,          /* Owner window handle            */
  9000.                  HWND_TOP,            /* Sibling window handle          */
  9001.                  ID_SLIDER,           /* Slider control window ID       */
  9002.                  &sldcData,           /* Control data structure         */
  9003.                  (PVOID)NULL);        /* No presentation parameters     */
  9004.  
  9005.   /**********************************************************************/
  9006.   /* Set tick marks at several places on the slider shaft using the     */
  9007.   /* primary scale.                                                     */
  9008.   /**********************************************************************/
  9009.   WinSendMsg(hwndSlider,              /* Slider window handle           */
  9010.              SLM_SETTICKSIZE,         /* Message for setting tick mark  */
  9011.                                       /* size.                          */
  9012.              MPFROM2SHORT(
  9013.                SMA_SETALLTICKS,       /* Attribute for setting all tick */
  9014.                                       /* marks to the same size         */
  9015.                6),                    /* Draw tick marks 6 pixels long  */
  9016.              NULL);                   /* Reserved value                 */
  9017.  
  9018.   /**********************************************************************/
  9019.   /* Set text above the tick marks.                                     */
  9020.   /**********************************************************************/
  9021.   for (idx = 0; idx <= 5; idx++)      /* Count from 0 to 5              */
  9022.   {
  9023.     itoa(10*idx, szTickText, 10);     /* Set text at increments of 10   */
  9024.  
  9025.     WinSendMsg(hwndSlider,            /* Slider window handle           */
  9026.              SLM_SETSCALETEXT,        /* Message for setting text on a  */
  9027.                                       /* slider scale                   */
  9028.              MPFROMSHORT(idx),        /* Text string counter            */
  9029.              MPFROMP(szTickText));    /* Text to put on slider scale    */
  9030.   }
  9031.  
  9032.   /**********************************************************************/
  9033.   /* Set detents between two of the tick marks on the slider shaft.     */
  9034.   /**********************************************************************/
  9035.   WinSendMsg(hwndSlider,              /* Slider window handle           */
  9036.              SLM_ADDDETENT,           /* Message for adding detents to  */
  9037.                                       /* a slider scale                 */
  9038.              MPFROMSHORT(5),          /* Put a detent 5 pixels from home*/
  9039.              NULL);                   /* Reserved value                 */
  9040.  
  9041.   WinSendMsg(hwndSlider,              /* Slider window handle           */
  9042.              SLM_ADDDETENT,           /* Message for adding detents to  */
  9043.                                       /* slider scale                   */
  9044.              MPFROMSHORT(25),         /* Put a detent 25 pixels from    */
  9045.                                       /* home                           */
  9046.              NULL);                   /* Reserved value                 */
  9047.  
  9048.   /**********************************************************************/
  9049.   /* Set the slider arm position to the 1st increment on the scale.     */
  9050.   /**********************************************************************/
  9051.   WinSendMsg(hwndSlider,              /* Slider window handle           */
  9052.              SLM_SETSLIDERINFO,       /* Message for setting slider     */
  9053.                                       /* attributes                     */
  9054.              MPFROM2SHORT(
  9055.                SMA_SLIDERARMPOSITION, /* Modify slider arm position     */
  9056.                SMA_INCREMENTVALUE),   /* Use an increment value         */
  9057.              MPFROMSHORT(1));         /* Value to use is 1st            */
  9058.                                       /* increment                      */
  9059.  
  9060.   /**********************************************************************/
  9061.   /* Since all items have been set, make the control visible.           */
  9062.   /**********************************************************************/
  9063.   WinShowWindow(hwndSlider,           /* Slider window handle           */
  9064.                 TRUE);                /* Make the window visible        */
  9065.  
  9066.  
  9067. ΓòÉΓòÉΓòÉ 12.2.2. Retrieving Data for Selected Slider Values ΓòÉΓòÉΓòÉ
  9068.  
  9069. To retrieve data represented by a slider value, specify a variable for the 
  9070. current position of the slider arm. Then, use the SLM_QUERYSLIDERINFO message 
  9071. to retrieve information about the current slider arm position in increment 
  9072. coordinates. The code fragment in the following figure shows how to retrieve 
  9073. data for a selected slider value: 
  9074.  
  9075. ULONG  ulValue;                     /* Variable in which to store     */
  9076.                                     /* current slider arm position    */
  9077.  
  9078. /**********************************************************************/
  9079. /* Get the information about the current slider arm position in       */
  9080. /* incremental coordinates.                                           */
  9081. /**********************************************************************/
  9082. ulValue = (ULONG)WinSendMsg(
  9083.   hwndSlider,                       /* Slider window handle           */
  9084.   SLM_QUERYSLIDERINFO,              /* Message for querying slider    */
  9085.                                     /* attributes                     */
  9086.   MPFROM2SHORT(
  9087.     SMA_SLIDERARMPOSITION,          /* Get increment at which slider  */
  9088.     SMA_INCREMENTVALUE),            /* arm is located                 */
  9089.   NULL);                            /* Reserved value                 */
  9090.  
  9091.  
  9092. ΓòÉΓòÉΓòÉ 12.2.3. Creating a Circular Slider ΓòÉΓòÉΓòÉ
  9093.  
  9094. The circular slider PM window class WC_CIRCULARSLIDER is similar to the window 
  9095. class of a linear slider or a scroll bar. This window class must be registered 
  9096. with WinRegisterCircularSlider before you can create a circular slider. A 
  9097. circular slider can be created by a CONTROL statement in a dialog resource, as 
  9098. shown in the following figure: 
  9099.  
  9100. CONTROL "~Balance",
  9101.         ID_BALANCECS,
  9102.         10, 50, 60, 60,
  9103.         WC_CIRCULARSLIDER,
  9104.         WS_TABSTOP |
  9105.         WS_VISIBLE |
  9106.         CSS_POINTSELECT
  9107.  
  9108. A circular slider also can be created by specifying the WC_CIRCULARSLIDER 
  9109. window class name as a parameter of the WinCreateWindow call, as shown in the 
  9110. following sample code: 
  9111.  
  9112. hwndCS = WinCreateWindow (hwndClient,           /* Parent handle  */
  9113.                           WC_CIRCULARSLIDER,    /* Class name     */
  9114.                           "~Balance",           /* Window text    */
  9115.                           WS_VISIBLE |
  9116.                           WS_TABSTOP |
  9117.                           CSS_POINTSELECT,
  9118.                           0,0,0,0,              /* Coordinates    */
  9119.                           hwndClient,           /* Owner handle   */
  9120.                           HWND_TOP,             /* Z-order        */
  9121.                           ID_BALANCECS,         /* Window ID      */
  9122.                           NULL,                 /* Control data   */
  9123.                           NULL);                /* Presparam      */
  9124.  
  9125.  
  9126. ΓòÉΓòÉΓòÉ 12.2.4. Circular Slider Sample ΓòÉΓòÉΓòÉ
  9127.  
  9128. The following is a complete coding example for adding a circular slider, and 
  9129. includes the following files: 
  9130.  
  9131.      CIRCLE.C 
  9132.      CIRCLE.RC 
  9133.      CIRCLE.H 
  9134.  
  9135.   ================
  9136.   CIRCLE.C
  9137.   ================
  9138.   #define  INCL_WIN
  9139.  
  9140.   #include <os2.h>
  9141.   #include "circle.h"
  9142.  
  9143.   /* Procedure Prototype */
  9144.   MRESULT EXPENTRY MyWindowProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2);
  9145.   MRESULT EXPENTRY MainProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2);
  9146.  
  9147.   /* Global Variables */
  9148.   HAB     hab;
  9149.   HMQ     hmq;
  9150.   QMSG    qmsg;
  9151.   HWND    hwndFrame;
  9152.   ULONG   flCreate;
  9153.   HWND    hwndClient;
  9154.  
  9155.   INT main(VOID)
  9156.   {
  9157.     /* Convert system pointer into hourglass pointer */
  9158.     WinSetPointer(HWND_DESKTOP,
  9159.       WinQuerySysPointer(HWND_DESKTOP,SPTR_WAIT,FALSE));
  9160.  
  9161.     hab = WinInitialize(0);
  9162.     hmq = WinCreateMsgQueue(hab,0);
  9163.  
  9164.     WinRegisterClass(hab,"Client",MainProc,CS_SIZEREDRAW,0);
  9165.  
  9166.     flCreate = FCF_SYSMENU       |
  9167.                FCF_SIZEBORDER    |
  9168.                FCF_TITLEBAR      |
  9169.                FCF_MENU          |
  9170.                FCF_MINMAX        |
  9171.                FCF_SHELLPOSITION |
  9172.                FCF_TASKLIST;
  9173.  
  9174.     hwndFrame = WinCreateStdWindow(HWND_DESKTOP,
  9175.                                    WS_VISIBLE,
  9176.                                    &flCreate,
  9177.                                    "Client",
  9178.                                    "My Dial",
  9179.                                    0L, 0,
  9180.                                    MAIN_FRAME,
  9181.                                    &hwndClient);
  9182.  
  9183.     /* Convert system pointer into arrow pointer */
  9184.     WinSetPointer(HWND_DESKTOP,
  9185.       WinQuerySysPointer(HWND_DESKTOP,SPTR_ARROW,FALSE));
  9186.  
  9187.     while (WinGetMsg(hab,&qmsg,0,0,0))WinDispatchMsg(hab,&qmsg);
  9188.  
  9189.     WinDestroyWindow(hwndFrame);
  9190.     WinDestroyMsgQueue(hmq);
  9191.     WinTerminate(hab);
  9192.  
  9193.     /* Beep when done */
  9194.     DosBeep(750,500);
  9195.     return(0);
  9196.   }
  9197.  
  9198.   MRESULT EXPENTRY MainProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
  9199.   {
  9200.       HPS     hps;
  9201.       static  HWND hwndCirc;
  9202.       SWP     swp;
  9203.       switch(msg)
  9204.  
  9205.       {
  9206.           case WM_CLOSE:
  9207.               WinPostMsg(hwnd,WM_QUIT,0L,0L);
  9208.               return ((MRESULT)NULL);
  9209.  
  9210.           case WM_COMMAND:
  9211.               /* Exit option was selected in the menu bar */
  9212.               switch(SHORT1FROMMP(mp1))
  9213.               {
  9214.                   case IDM_FILEEXIT:
  9215.                       WinPostMsg(hwnd,WM_QUIT,0L,0L);
  9216.                       return ((MRESULT)NULL);
  9217.               }
  9218.               return ((MRESULT)NULL);
  9219.  
  9220.           case WM_CONTROL:
  9221.               /* Process circular slider notification messages */
  9222.               if (SHORT1FROMMP(mp1) == ID_DIAL)
  9223.               {
  9224.                 switch (SHORT2FROMMP(mp1))
  9225.                 {
  9226.                  /* Notification codes can be specified here */
  9227.                 }
  9228.               }
  9229.               /* Default processing for other control window ids */
  9230.               return (WinDefWindowProc(hwnd,msg,mp1,mp2));
  9231.  
  9232.           case WM_CREATE:
  9233.               /* Create circular slider control */
  9234.               hwndCirc = WinCreateWindow(hwnd,
  9235.                           WC_CIRCULARSLIDER,
  9236.                           "My Dial Window",
  9237.                           WS_VISIBLE,
  9238.                           0, 0, 0, 0,          /* Position & size      */
  9239.                           hwnd,                /* Client window        */
  9240.                           HWND_TOP,
  9241.                           ID_DIAL,
  9242.                           NULL,NULL);
  9243.  
  9244.               /* Specify range of values for circular slider */
  9245.               WinSendMsg (hwndCirc,
  9246.                           CSM_SETRANGE,
  9247.                           MPFROMLONG(0L),
  9248.                           MPFROMLONG(100L));
  9249.  
  9250.               /* Specify scroll & tick mark increments */
  9251.               WinSendMsg (hwndCirc,
  9252.                           CSM_SETINCREMENT,
  9253.                           MPFROMLONG(10L),
  9254.                           MPFROMLONG(2L));
  9255.  
  9256.               /* Set initial value */
  9257.               WinSendMsg (hwndCirc,
  9258.                           CSM_SETVALUE,
  9259.                           MPFROMLONG(80L),
  9260.                           NULL);
  9261.  
  9262.               return (MRESULT)FALSE;
  9263.  
  9264.           case WM_SIZE:
  9265.               /* The frame window has changed in size */
  9266.               /* Recalculate size of circular slider  */
  9267.               WinQueryWindowPos(hwnd,&swp);
  9268.               WinSetWindowPos(hwndCirc,
  9269.                               HWND_TOP,
  9270.                               0, 0,
  9271.                               swp.cx,
  9272.                               swp.cy,
  9273.                               SWP_MOVE |
  9274.                               SWP_SIZE);
  9275.               return (MRESULT)NULL;
  9276.  
  9277.           case WM_PAINT:
  9278.               hps = WinBeginPaint(hwnd,0,NULL);
  9279.               WinEndPaint(hps);
  9280.               return (MRESULT)NULL;
  9281.  
  9282.           default:
  9283.               return (WinDefWindowProc(hwnd,msg,mp1,mp2));
  9284.       }
  9285.   }
  9286.  
  9287.   ================
  9288.    CIRCLE.RC
  9289.   ================
  9290.   #include <os2.h>
  9291.   #include "circle.h"
  9292.  
  9293.   ACCELTABLE MAIN_FRAME
  9294.   {
  9295.           VK_F3, IDM_FILEEXIT, VIRTUALKEY
  9296.   }
  9297.  
  9298.   MENU    MAIN_FRAME
  9299.   {
  9300.       SUBMENU         "~File",            IDM_FILEMENU
  9301.       {
  9302.           MENUITEM    "E~xit\tF3",        IDM_FILEEXIT
  9303.       }
  9304.   }
  9305.  
  9306.   ================
  9307.   CIRCLE.H
  9308.   ================
  9309.   #define MAIN_FRAME    255
  9310.   #define IDM_FILEMENU  256
  9311.   #define IDM_FILEEXIT  257
  9312.   #define ID_DIAL       258
  9313.  
  9314.  
  9315. ΓòÉΓòÉΓòÉ 12.3. Graphical User Interface Support for Slider Controls ΓòÉΓòÉΓòÉ
  9316.  
  9317. This section describes the support the slider control provides for graphical 
  9318. user interfaces (GUIs). Except where noted, this support conforms to the 
  9319. guidelines in the SAA CUA Advanced Interface Design Reference. 
  9320.  
  9321. Since slider values all are mutually exclusive, only one of them can be 
  9322. selected at a time. Therefore, the only type of selection supported by the 
  9323. slider control is single selection. 
  9324.  
  9325. Note:  If more than one slider window is open, selecting values in one slider 
  9326.        window has no effect on the values selected in any other slider window. 
  9327.        For linear sliders, a black square is drawn in the center of the slider 
  9328.        arm to show which slider control window has the focus. 
  9329.  
  9330.  An initial value is selected when the slider control is first displayed. If 
  9331.  the application does not provide the initial selection for a linear slider 
  9332.  (using the SLM_SETSLIDERINFO message) to position the slider arm, the value at 
  9333.  the home position is selected automatically. The home position is the end of 
  9334.  the slider that contains the lowest value on the scale. 
  9335.  
  9336.  
  9337. ΓòÉΓòÉΓòÉ 12.3.1. Slider Navigation Techniques ΓòÉΓòÉΓòÉ
  9338.  
  9339. The slider control supports the use of pointing devices and the keyboard for 
  9340. selecting values. 
  9341.  
  9342.  
  9343. ΓòÉΓòÉΓòÉ 12.3.1.1. Pointing Device Support ΓòÉΓòÉΓòÉ
  9344.  
  9345. A user can select slider values with a pointing device. The CUA guidelines 
  9346. defines mouse button 1 (the select button) as the button for selecting values, 
  9347. and button 2 (the drag button) for dragging the slider arm to a value. These 
  9348. definitions also apply to the same buttons on any other pointing device, such 
  9349. as a joystick. 
  9350.  
  9351. The select button and drag button can be used in conjunction with the following 
  9352. slider components to select slider values: 
  9353.  
  9354.      Slider arm 
  9355.  
  9356.       Moving the pointer over the slider arm, then pressing and holding the 
  9357.       select or drag buttons while moving the pointer, causes the slider arm to 
  9358.       move in the direction the pointer is moving. When the button is released, 
  9359.       the value closest to the slider arm position becomes the selected value. 
  9360.  
  9361.      Slider shaft 
  9362.  
  9363.       Clicking the select button when the pointer is over the slider shaft 
  9364.       causes the slider arm to move one increment in the direction of the 
  9365.       pointer. For linear sliders, increments are determined by the initial 
  9366.       values passed for the primary scale specified (SLS_PRIMARYSCALE1 or 
  9367.       SLS_PRIMARYSCALE2) when the slider is created. 
  9368.  
  9369.       Clicking the drag button when the pointer is over the slider shaft causes 
  9370.       the slider arm to move to the pointer's location. 
  9371.  
  9372.      Slider buttons 
  9373.  
  9374.       Clicking the select button when the pointer is over a slider button 
  9375.       causes the slider arm to move one increment in the direction the arrow on 
  9376.       the slider button is pointing. 
  9377.  
  9378.       Slider buttons are optional. If used, two slider buttons are available to 
  9379.       the user. The arrows on top of the slider buttons point to opposite ends 
  9380.       of the slider. Both slider buttons are positioned at the same end of the 
  9381.       slider. 
  9382.  
  9383.       For linear sliders, slider buttons are enabled by specifying the 
  9384.       appropriate SLS_* value when the slider control window is created. For 
  9385.       horizontal sliders, you can specify either SLS_BUTTONSLEFT or 
  9386.       SLS_BUTTONSRIGHT. For vertical sliders, you can specify either 
  9387.       SLS_BUTTONSBOTTOM or SLS_BUTTONSTOP. The default is no slider buttons. If 
  9388.       more than one of these style bits is specified, no slider buttons are 
  9389.       enabled. 
  9390.  
  9391.      Detents 
  9392.  
  9393.       A detent is similar to a tick mark on a linear slider scale because it 
  9394.       represents a value on the scale. However, unlike a tick mark, a detent 
  9395.       can be placed anywhere along the slider scale instead of in specific 
  9396.       increments. 
  9397.  
  9398.       A detent can be selected by moving the pointer over it and pressing the 
  9399.       select button on the pointing device. When this happens, the slider arm 
  9400.       moves to the position on the slider shaft indicated by the detent. 
  9401.  
  9402.  
  9403. ΓòÉΓòÉΓòÉ 12.3.1.2. Keyboard Support ΓòÉΓòÉΓòÉ
  9404.  
  9405. A user can select a value by using the navigation keys to move the slider arm 
  9406. to the value or by typing a value in an entry field, if one is provided by the 
  9407. application, to change the slider arm position. The following list describes 
  9408. these methods of selecting slider values: 
  9409.  
  9410.      Values can be selected using the Up, Down, Left, and Right Arrow keys to 
  9411.       move the slider arm one increment at a time. The Up and Down Arrow keys 
  9412.       are enabled for vertical sliders, and the Right and Left Arrow keys are 
  9413.       enabled for horizontal sliders. If no tick mark exists on the scale in 
  9414.       the requested direction, the slider arm does not move. 
  9415.  
  9416.       If an Arrow key is pressed in conjunction with the Shift key, the slider 
  9417.       arm moves to the next detent instead of the next tick mark. If no detent 
  9418.       exists on the scale in the requested direction, the slider arm does not 
  9419.       move. 
  9420.  
  9421.      The Home and End keys can be used to select the lowest and highest 
  9422.       values, respectively, in the scale. If the Ctrl key is pressed in 
  9423.       combination with the Home or End keys, the result is the same as pressing 
  9424.       only the Home or End keys. 
  9425.  
  9426.      The application can provide an optional entry field for the slider 
  9427.       control. The entry field is a separate control, but it can work in 
  9428.       conjunction with the slider control. 
  9429.  
  9430.       If the application provides an entry field for the slider control window, 
  9431.       it must be implemented as follows: 
  9432.  
  9433.         -  The user must be allowed to type a value into the entry field. 
  9434.  
  9435.         -  If the typed value is within the range of the slider scale, the 
  9436.            slider arm moves to that value as soon as the value is typed. 
  9437.  
  9438.         -  No other action, such as pressing the Enter key, is required. 
  9439.  
  9440.  
  9441. ΓòÉΓòÉΓòÉ 13. Spin Button Controls ΓòÉΓòÉΓòÉ
  9442.  
  9443. A spin button control (WC_SPINBUTTON window class) is a visual component that 
  9444. gives users quick access to a finite set of data by letting them select from a 
  9445. scrollable ring of choices. Because the user can see only one item at a time, a 
  9446. spin button should be used only with data that is intuitively related, such as 
  9447. a list of the months of the year, or an alphabetic list of cities or states. 
  9448. This chapter explains when and how to use spin buttons in PM applications. 
  9449.  
  9450.  
  9451. ΓòÉΓòÉΓòÉ 13.1. About Spin Button Controls ΓòÉΓòÉΓòÉ
  9452.  
  9453. A spin button consists of at least one spin field that is a single-line entry 
  9454. (SLE) field, and up and down arrows that are stacked on top of one another. 
  9455. These arrows are positioned to the right of the SLE field. 
  9456.  
  9457. You can create multi-field spin buttons for those applications in which users 
  9458. must select more than one value. For example, in setting a date, the spin 
  9459. button control can provide individual fields for setting the month, day, and 
  9460. year. The first spin field in the spin button could contain a list of months; 
  9461. the second, a list of numbers; and the third, a list of years. 
  9462.  
  9463. The application uses a multi-field spin button by creating one master component 
  9464. that contains a spin field and the spin arrows, and servant components that 
  9465. contain only spin fields. The spin buttons are created at component 
  9466. initialization. The servant components are passed a handle to the master 
  9467. component in a message. When a servant spin field has the focus, it is spun by 
  9468. the arrows in the master component. 
  9469.  
  9470. The list of values in a spin button entry field can be an array of data or a 
  9471. list of consecutive integers, defined by an upper and a lower limit. 
  9472.  
  9473.  
  9474. ΓòÉΓòÉΓòÉ 13.2. Using Spin Button Controls ΓòÉΓòÉΓòÉ
  9475.  
  9476. This section describes how to create a spin button control. 
  9477.  
  9478.  
  9479. ΓòÉΓòÉΓòÉ 13.2.1. Creating a Spin Button ΓòÉΓòÉΓòÉ
  9480.  
  9481. A spin button is created as a public window class by using WinCreateWindow, 
  9482. with a class style of WC_SPINBUTTON and a window style of WS_VISIBLE. These are 
  9483. joined with any of the spin button style flags by using a logical OR (|). The 
  9484. spin button style flags let you specify: 
  9485.  
  9486.      Character input restrictions (none, numeric, read-only) 
  9487.      Presentation of the data in the spin field (left-justified, 
  9488.       right-justified, centered) 
  9489.      Presence or absence of a border around the spin field 
  9490.      Spin speed 
  9491.      Zero-padding of numeric spin fields 
  9492.  
  9493.  The placement and width of the spin button component are specified as 
  9494.  parameters in WinCreateWindow. 
  9495.  
  9496.  The upper and lower limits of numeric fields, the value array pointer for 
  9497.  arrays of strings, and the initial value in the spin field are all set by 
  9498.  messages sent from the application to the component. 
  9499.  
  9500.  You can destroy the spin button component window using WinDestroyWindow when 
  9501.  finished. The component handle that was returned when the spin button was 
  9502.  created is the input parameter to WinDestroyWindow. The following sample code 
  9503.  shows an example of how to create a spin button. 
  9504.  
  9505.   ULONG      ulSpinStyle;              /* Spin Button style             */
  9506.   HWND       hwndSpin;                 /* Spin Button window handle     */
  9507.  
  9508.   /**********************************************************************/
  9509.   /* Set the SPBS_* style flags.                                        */
  9510.   /**********************************************************************/
  9511.   ulSpinStyle = SPBS_MASTER      |     /* Spin button has its own       */
  9512.                                        /* buttons,                      */
  9513.                 SPBS_NUMERICONLY |     /* and it only holds numbers     */
  9514.                 SPBS_JUSTRIGHT   |     /* that are right justified,     */
  9515.                 SPBS_FASTSPIN;         /* and it spins faster as        */
  9516.                                        /* the arrows are held down      */
  9517.  
  9518.   /**********************************************************************/
  9519.   /* Create the Spin Button control window.                             */
  9520.   /* The handle of the window is returned in hwndSpin.                  */
  9521.   /**********************************************************************/
  9522.   hwndSpin = WinCreateWindow (
  9523.                        hwndClient,     /* Parent window handle          */
  9524.                        WC_SPINBUTTON,  /* Spin Button window class name */
  9525.                        (PSZ)NULL,      /* No window text                */
  9526.                        ulSpinStyle,    /* Spin Button styles variable   */
  9527.  
  9528.                        (LONG)10,       /* X coordinate                  */
  9529.                        (LONG)10,       /* Y coordinate                  */
  9530.                        (LONG)150,      /* Window width                  */
  9531.                        (LONG)50,       /* Window height                 */
  9532.                        hwndClient,     /* Owner window handle           */
  9533.                        HWND_TOP,       /* Sibling window handle         */
  9534.                        ID_SPINBUTTON,  /* Spin Button control window ID */
  9535.                        (PVOID)NULL,    /* No control data structure     */
  9536.                        (PVOID)NULL);   /* No presentation parameters    */
  9537.  
  9538.   /**********************************************************************/
  9539.   /* Set the limits of the Spin Button control, since it has a style    */
  9540.   /* of SPBS_NUMERICONLY.                                               */
  9541.   /**********************************************************************/
  9542.   WinSendMsg (hwndSpin,                /* Spin Button window handle     */
  9543.               SPBM_SETLIMITS,          /* Set limits message            */
  9544.               (MPARAM)1000,            /* Spin Button maximum setting   */
  9545.               (MPARAM)0);              /* Spin Button minimum setting   */
  9546.  
  9547.   /**********************************************************************/
  9548.   /* Set the initial value of the Spin Button.                          */
  9549.   /**********************************************************************/
  9550.   WinSendMsg (hwndSpin,                /* Spin Button window handle     */
  9551.               SPBM_SETCURRENTVALUE,    /* Set current value message     */
  9552.               (MPARAM)100,             /* Spin Button initial value     */
  9553.               (MPARAM)NULL);           /* Reserved value                */
  9554.  
  9555.   /**********************************************************************/
  9556.   /* Because all items have been set, make the control visible.         */
  9557.   /**********************************************************************/
  9558.   WinShowWindow (hwndSpin,             /* Spin Button window handle     */
  9559.                  TRUE);                /* Make the window visible       */
  9560.  
  9561.  
  9562. ΓòÉΓòÉΓòÉ 13.3. Graphical User Interface Support for Spin Button Controls ΓòÉΓòÉΓòÉ
  9563.  
  9564. Users can interact with the spin button using either the keyboard or a pointing 
  9565. device, such as a mouse, as follows: 
  9566.  
  9567.      Using the select button (button 1) on the pointing device, users first 
  9568.       give focus to the spin field they want to change, and then click on 
  9569.       either the Up Arrow or Down Arrow until the value they want is displayed 
  9570.       in the spin field. 
  9571.  
  9572.      Using a keyboard, users press the: 
  9573.  
  9574.         -  Up Arrow and Down Arrow keys to see the choices 
  9575.  
  9576.         -  Left Arrow and Right Arrow keys to move the cursor left and right 
  9577.            within a spin field 
  9578.  
  9579.         -  Home and End keys to move the cursor to the first and last 
  9580.            characters in a spin field 
  9581.  
  9582.         -  Tab and Shift+Tab keys to move the input focus from one field to 
  9583.            another in multi-field spin buttons 
  9584.  
  9585.  Users can view the values in a spin field one at a time, or they can rapidly 
  9586.  scroll a list by keeping either the Up or Down Arrow keys pressed. When a spin 
  9587.  button is not read-only, users can advance quickly to the value they want to 
  9588.  set in a spin field by typing over the value currently displayed. 
  9589.  
  9590.  
  9591. ΓòÉΓòÉΓòÉ 14. Static Controls ΓòÉΓòÉΓòÉ
  9592.  
  9593. A static control is a simple text field, bit map, or icon that an application 
  9594. can use to label, enclose, or separate other control windows. This chapter 
  9595. describes how to create and use static controls in PM applications. 
  9596.  
  9597.  
  9598. ΓòÉΓòÉΓòÉ 14.1. About Static Controls ΓòÉΓòÉΓòÉ
  9599.  
  9600. Unlike the other types of control windows, a static control does not accept 
  9601. user input or send notification messages to its owner. The primary advantage of 
  9602. a static control is that it provides a label or graphic that requires little 
  9603. attention from an application. At most, an application might change the text or 
  9604. position of a static control. 
  9605.  
  9606.  
  9607. ΓòÉΓòÉΓòÉ 14.1.1. Keyboard Focus ΓòÉΓòÉΓòÉ
  9608.  
  9609. A static control never accepts the keyboard focus. When a static control 
  9610. receives a WM_SETFOCUS message, or when a user clicks the static control, the 
  9611. system advances the focus to the next sibling window that is not a static 
  9612. control. If the control has no siblings, the system gives the focus to the 
  9613. owner of the static control. 
  9614.  
  9615.  
  9616. ΓòÉΓòÉΓòÉ 14.1.2. Static Control Handle ΓòÉΓòÉΓòÉ
  9617.  
  9618. Every static control is associated with a 32-bit data field. A static control 
  9619. with the SS_BITMAP or SS_ICON style uses this field to store the handle of the 
  9620. bit map or icon that it displays. An application can obtain that handle by 
  9621. sending the SM_QUERYHANDLE message to the control. An application can replace 
  9622. the bit map or icon by sending the SM_SETHANDLE message to the control, 
  9623. specifying a valid icon or bit map handle. Changing the handle causes the 
  9624. system to redraw the control. 
  9625.  
  9626. For a non-icon or non-bit map static control, the data field is available for 
  9627. application-defined data and has no effect on the appearance of the control. 
  9628.  
  9629. An application can retrieve the data field of a static control window by 
  9630. calling WinWindowFromID, using the handle of the owner and the window 
  9631. identifier of the static control. The static control window identifier is 
  9632. specified in either the dialog-window template or WinCreateWindow. 
  9633.  
  9634.  
  9635. ΓòÉΓòÉΓòÉ 14.1.3. Static Control Styles ΓòÉΓòÉΓòÉ
  9636.  
  9637. A static control has style bits that determine whether the control displays 
  9638. text, draws a simple box containing text, displays an icon or a bit map, or 
  9639. shows a framed or unframed colored box. Applications can specify a combination 
  9640. of the following styles for a static control: 
  9641.  
  9642. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9643. ΓöéStyle Name          ΓöéDescription                             Γöé
  9644. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9645. ΓöéSS_BITMAP           ΓöéDraws a bit map. The bit map resource   Γöé
  9646. Γöé                    Γöémust be provided in the                 Γöé
  9647. Γöé                    Γöéresource-definition file. To include theΓöé
  9648. Γöé                    Γöébit map in a dialog window, the resourceΓöé
  9649. Γöé                    Γöéidentifier must be specified in the textΓöé
  9650. Γöé                    Γöéparameter of the CONTROL statement in   Γöé
  9651. Γöé                    Γöéthe resource definition file. To includeΓöé
  9652. Γöé                    Γöéthe bit map in a non-dialog window, the Γöé
  9653. Γöé                    ΓöéASCII representation of the identifier  Γöé
  9654. Γöé                    Γöémust be specified in the pszName        Γöé
  9655. Γöé                    Γöéparameter of WinCreateWindow, that is,  Γöé
  9656. Γöé                    Γöéthe first byte of the pszName parameter Γöé
  9657. Γöé                    Γöémust be the cross-hatch character (#),  Γöé
  9658. Γöé                    Γöéand the remaining text must be the ASCIIΓöé
  9659. Γöé                    Γöérepresentation of the identifier, for   Γöé
  9660. Γöé                    Γöéexample, #125.                          Γöé
  9661. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9662. ΓöéSS_BKGNDFRAME       ΓöéCreates a box whose frame has the       Γöé
  9663. Γöé                    Γöébackground color.                       Γöé
  9664. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9665. ΓöéSS_BKGNDRECT        ΓöéCreates a rectangle filled with the     Γöé
  9666. Γöé                    Γöébackground color.                       Γöé
  9667. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9668. ΓöéSS_FGNDFRAME        ΓöéCreates a box whose frame has the       Γöé
  9669. Γöé                    Γöéforeground color.                       Γöé
  9670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9671. ΓöéSS_FGNDRECT         ΓöéCreates a rectangle filled with the     Γöé
  9672. Γöé                    Γöéforeground color.                       Γöé
  9673. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9674. ΓöéSS_GROUPBOX         ΓöéCreates a box whose upper-right corner  Γöé
  9675. Γöé                    Γöécontains control text. This style is    Γöé
  9676. Γöé                    Γöéuseful for enclosing groups of radio    Γöé
  9677. Γöé                    Γöébuttons or check boxes in a box.        Γöé
  9678. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9679. ΓöéSS_HALFTONEFRAME    ΓöéCreates a box whose frame has halftone  Γöé
  9680. Γöé                    Γöéshading.                                Γöé
  9681. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9682. ΓöéSS_HALFTONERECT     ΓöéCreates a box filled with halftone      Γöé
  9683. Γöé                    Γöéshading.                                Γöé
  9684. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9685. ΓöéSS_ICON             ΓöéDraws an icon. The resource identifier  Γöé
  9686. Γöé                    Γöéfor the icon resource is determined the Γöé
  9687. Γöé                    Γöésame way as the SS_BITMAP style. The    Γöé
  9688. Γöé                    Γöéicon resource must be in the            Γöé
  9689. Γöé                    Γöéresource-definition file.               Γöé
  9690. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9691. ΓöéSS_SYSICON          ΓöéDraws a system-pointer icon. The        Γöé
  9692. Γöé                    Γöéresource identifier for the             Γöé
  9693. Γöé                    Γöésystem-pointer resource is determined   Γöé
  9694. Γöé                    Γöéthe same way as the SS_BITMAP style. To Γöé
  9695. Γöé                    Γöédisplay this system pointer, the system Γöé
  9696. Γöé                    Γöécalls WinQuerySysPointer with the       Γöé
  9697. Γöé                    Γöéspecified identifier.                   Γöé
  9698. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9699. ΓöéSS_TEXT             ΓöéCreates a box with formatted text. An   Γöé
  9700. Γöé                    Γöéapplication can combine various         Γöé
  9701. Γöé                    Γöéformatting options with this style to   Γöé
  9702. Γöé                    Γöéproduce formatted text in the boundariesΓöé
  9703. Γöé                    Γöéof the control. The formatting flags areΓöé
  9704. Γöé                    Γöéthe same as those used for WinDrawText. Γöé
  9705. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9706.  
  9707.  
  9708. ΓòÉΓòÉΓòÉ 14.1.4. Default Static Control Performance ΓòÉΓòÉΓòÉ
  9709.  
  9710. The messages specifically handled by the predefined static control class 
  9711. (WC_STATIC) are as follows: 
  9712.  
  9713. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9714. ΓöéMessage Name          ΓöéDescription                           Γöé
  9715. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9716. ΓöéSM_QUERYHANDLE        ΓöéReturns the handle associated with theΓöé
  9717. Γöé                      Γöéstatic control window.                Γöé
  9718. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9719. ΓöéSM_SETHANDLE          ΓöéSets the handle associated with the   Γöé
  9720. Γöé                      Γöéstatic control and invalidates the    Γöé
  9721. Γöé                      Γöécontrol window, forcing it to be      Γöé
  9722. Γöé                      Γöéredrawn.                              Γöé
  9723. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9724. ΓöéWM_ADJUSTWINDOWPOS    ΓöéAdjusts the SWP data structure so thatΓöé
  9725. Γöé                      Γöéthe new window size matches the bit   Γöé
  9726. Γöé                      Γöémap, icon, or system-pointer          Γöé
  9727. Γöé                      Γöédimensions associated with the static Γöé
  9728. Γöé                      Γöécontrol.                              Γöé
  9729. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9730. ΓöéWM_CREATE             ΓöéSets the text for a static-text       Γöé
  9731. Γöé                      Γöécontrol. Loads the bit map or icon    Γöé
  9732. Γöé                      Γöéresource for the bit map or icon      Γöé
  9733. Γöé                      Γöéstatic control. Returns TRUE if the   Γöé
  9734. Γöé                      Γöéresource cannot be loaded.            Γöé
  9735. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9736. ΓöéWM_DESTROY            ΓöéFrees the text for a static-text      Γöé
  9737. Γöé                      Γöécontrol. Destroys the bit map or icon Γöé
  9738. Γöé                      Γöéfor a bit map or icon static control. Γöé
  9739. Γöé                      ΓöéThe icon for a system-pointer static  Γöé
  9740. Γöé                      Γöécontrol is not destroyed because it   Γöé
  9741. Γöé                      Γöébelongs to the system.                Γöé
  9742. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9743. ΓöéWM_ENABLE             ΓöéInvalidates the entire static control Γöé
  9744. Γöé                      Γöéwindow, forcing it to be redrawn.     Γöé
  9745. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9746. ΓöéWM_HITTEST            ΓöéReturns the value HT_TRANSPARENT for  Γöé
  9747. Γöé                      Γöéthe following static-control styles:  Γöé
  9748. Γöé                      Γöéo SS_BKGNDFRAME                       Γöé
  9749. Γöé                      Γöéo SS_BKGNDRECT                        Γöé
  9750. Γöé                      Γöéo SS_FGNDFRAME                        Γöé
  9751. Γöé                      Γöéo SS_FGNDRECT                         Γöé
  9752. Γöé                      Γöéo SS_GROUPBOX                         Γöé
  9753. Γöé                      Γöéo SS_HALFTONEFRAME                    Γöé
  9754. Γöé                      Γöéo SS_HALFTONERECT.                    Γöé
  9755. Γöé                      Γöé                                      Γöé
  9756. Γöé                      ΓöéFor other styles, this message returnsΓöé
  9757. Γöé                      Γöéthe result of WinDefWindowProc.       Γöé
  9758. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9759. ΓöéWM_MATCHMNEMONIC      ΓöéReturns TRUE if the mnemonic passed inΓöé
  9760. Γöé                      Γöéthe mp1 parameter matches the mnemonicΓöé
  9761. Γöé                      Γöéin the control-window text.           Γöé
  9762. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9763. ΓöéWM_MOUSEMOVE          ΓöéSets the mouse pointer to the arrow   Γöé
  9764. Γöé                      Γöépointer and returns TRUE.             Γöé
  9765. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9766. ΓöéWM_PAINT              ΓöéDraws the static control based on its Γöé
  9767. Γöé                      Γöéstyle attributes.                     Γöé
  9768. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9769. ΓöéWM_QUERYDLGCODE       ΓöéReturns the predefined constant       Γöé
  9770. Γöé                      ΓöéDLGC_STATIC.                          Γöé
  9771. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9772. ΓöéWM_QUERYWINDOWPARAMS  ΓöéReturns the requested window          Γöé
  9773. Γöé                      Γöéparameters.                           Γöé
  9774. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9775. ΓöéWM_SETFOCUS           ΓöéSets the focus to the next sibling    Γöé
  9776. Γöé                      Γöéwindow that can accept the focus; or  Γöé
  9777. Γöé                      Γöéif no such sibling exists, sets the   Γöé
  9778. Γöé                      Γöéfocus to the parent window.           Γöé
  9779. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9780. ΓöéWM_SETWINDOWPARAMS    ΓöéAllows the text to be set (static-textΓöé
  9781. Γöé                      Γöécontrols only).                       Γöé
  9782. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9783.  
  9784.  
  9785. ΓòÉΓòÉΓòÉ 14.2. Using Static Controls ΓòÉΓòÉΓòÉ
  9786.  
  9787. This section explains how to perform the following tasks: 
  9788.  
  9789.      Include a static control in a dialog window 
  9790.      Include a static control in a client window 
  9791.  
  9792.  
  9793. ΓòÉΓòÉΓòÉ 14.2.1. Including a Static Control in a Dialog Window ΓòÉΓòÉΓòÉ
  9794.  
  9795. To include a static control in a dialog window, you must define the control in 
  9796. a dialog-window template in a resource-definition file. The following 
  9797. resource-definition file creates a dialog window that contains a static-text 
  9798. control and three static-icon controls: 
  9799.  
  9800. DLGTEMPLATE IDD_TOOLDLG LOADONCALL MOVEABLE DISCARDABLE
  9801.   BEGIN
  9802.     DIALOG "",
  9803.            IDD_TOOLDLG,
  9804.            114, 53, 161, 127,
  9805.            FS_NOBYTEALIGN |
  9806.            FS_DLGBORDER   |
  9807.            WS_VISIBLE     |
  9808.            WS_SAVEBITS
  9809.  
  9810.     BEGIN
  9811.       CTEXT "Select a tool",
  9812.             IDS_TEXT,
  9813.             49, 110, 56, 8,
  9814.             SS_TEXT   |
  9815.             DT_CENTER |
  9816.             DT_TOP    |
  9817.             WS_GROUP  |
  9818.             WS_VISIBLE
  9819.  
  9820.       AUTORADIOBUTTON "Paintbrush",
  9821.                       IDB_BRUSH,
  9822.                       63, 87, 61, 10,
  9823.                       WS_TABSTOP |
  9824.                       WS_GROUP   |
  9825.                       WS_VISIBLE
  9826.  
  9827.       AUTORADIOBUTTON "Scissors",
  9828.                       IDB_SCISSORS,
  9829.                       63, 64, 60, 10,
  9830.                       WS_TABSTOP |
  9831.                       WS_VISIBLE
  9832.  
  9833.       AUTORADIOBUTTON "Eraser",
  9834.                       IDB_ERASER,
  9835.                       65, 39, 43, 10,
  9836.                       WS_TABSTOP |
  9837.                       WS_VISIBLE
  9838.  
  9839.       ICON IDI_BRUSH,
  9840.            IDI_BRUSHICON,
  9841.            33, 84, 22, 16,
  9842.            WS_GROUP |
  9843.            WS_VISIBLE
  9844.  
  9845.       ICON IDI_SCISSORS,
  9846.            IDI_SCISSORSICON,
  9847.            33, 60, 22, 16,
  9848.            WS_GROUP |
  9849.            WS_VISIBLE
  9850.  
  9851.       ICON IDI_ERASER,
  9852.            IDI_ERASERICON,
  9853.            33, 36, 22, 16,
  9854.            WS_GROUP |
  9855.            WS_VISIBLE
  9856.  
  9857.       PUSHBUTTON "OK",
  9858.                  DID_OK,
  9859.                  10, 12, 38, 13,
  9860.                  WS_TABSTOP |
  9861.                  WS_GROUP   |
  9862.                  WS_VISIBLE
  9863.  
  9864.       PUSHBUTTON "Cancel",
  9865.                  DID_CANCEL,
  9866.                  59, 12, 38, 13,
  9867.                  BS_DEFAULT |
  9868.                  WS_TABSTOP |
  9869.                  WS_GROUP   |
  9870.                  WS_VISIBLE
  9871.  
  9872.       PUSHBUTTON "Help",
  9873.                  IDB_HELP,
  9874.                  111, 13, 38, 13,
  9875.                  BS_HELP    |
  9876.                  WS_TABSTOP |
  9877.                  WS_GROUP   |
  9878.                  WS_VISIBLE
  9879.     END
  9880.   END
  9881.  
  9882. ICON IDI_BRUSH    brush.ico
  9883. ICON IDI_SCISSORS scissr.ico
  9884. ICON IDI_ERASER   eraser.ico
  9885.  
  9886.  
  9887. ΓòÉΓòÉΓòÉ 14.2.2. Including a Static Control in a Client Window ΓòÉΓòÉΓòÉ
  9888.  
  9889. An application can include a static control in a non-dialog window by calling 
  9890. WinCreateWindow with the window class WC_STATIC. The flStyle parameter to 
  9891. WinCreateWindow defines the appearance of the control. 
  9892.  
  9893. The following code fragment creates a static text control whose size and 
  9894. position are based on the size of the client window and the metrics for the 
  9895. current font: 
  9896.  
  9897. #define ID_TITLE 5
  9898. #define INCL_GPILCIDS
  9899.  
  9900. HWND hwnd,hwndStatic,hwndClient;
  9901. HPS hps;
  9902. RECTL rcl;
  9903. FONTMETRICS fm;
  9904. ULONG ulTitleLen;
  9905. CHAR szTitle[] = "Static Text Controls";
  9906.  
  9907. /* Obtain the size of the client window */
  9908. WinQueryWindowRect(hwnd, &rcl);
  9909.  
  9910. /* Obtain a presentation space handle and */
  9911. /* the metrics for the current font       */
  9912. hps = WinBeginPaint (hwnd, (HPS) NULL, (PRECTL) NULL);
  9913. GpiQueryFontMetrics(hps, sizeof(FONTMETRICS), &fm);
  9914.  
  9915. /* Obtain the size of the static control text string */
  9916. ulTitleLen = (ULONG) strlen(szTitle);
  9917.  
  9918. /* Create the static control. Base the size and  */
  9919. /* position on the size of the client window and */
  9920. /* the metrics of the current font.              */
  9921.  
  9922. hwndStatic = WinCreateWindow(
  9923.                hwndClient,                    /* Parent window          */
  9924.                WC_STATIC,                     /* Window class           */
  9925.                szTitle,                       /* Window text            */
  9926.                WS_VISIBLE |                   /* Make it visible        */
  9927.                SS_TEXT    |                   /* Static-text control    */
  9928.                DT_VCENTER |                   /* Center text vert.      */
  9929.                DT_CENTER,                     /* Center text horiz.     */
  9930.  
  9931.                ((rcl.xRight / 2) -
  9932.                (ulTitleLen / 2) * fm.lEmInc), /* x position             */
  9933.                rcl.yTop - fm.lEmHeight * 2,   /* y position             */
  9934.                fm.lEmInc * ulTitleLen,        /* Width                  */
  9935.                fm.lEmHeight * 2,              /* Height                 */
  9936.                hwndClient,                    /* Owner window           */
  9937.                HWND_TOP,                      /* Top of z-order         */
  9938.                ID_TITLE,                      /* Window identifier      */
  9939.                NULL,                          /* Control data           */
  9940.                NULL);                         /* Presentation parameters*/
  9941.  
  9942. WinEndPaint(hps);
  9943.  
  9944. If your application creates a static control with the SS_ICON or SS_BITMAP 
  9945. style, make sure that the resource identifier specified in the pszName 
  9946. parameter corresponds to an icon or a bit map resource in the 
  9947. resource-definition file. If there is no resource, the application cannot 
  9948. create the static control. 
  9949.  
  9950.  
  9951. ΓòÉΓòÉΓòÉ 15. Title-Bar Controls ΓòÉΓòÉΓòÉ
  9952.  
  9953. A title bar is one of several control windows that comprise a standard frame 
  9954. window, giving the frame window its distinctive look and performance 
  9955. capabilities.  This chapter describes how to create and use title-bar control 
  9956. windows in PM applications. 
  9957.  
  9958.  
  9959. ΓòÉΓòÉΓòÉ 15.1. About Title Bars ΓòÉΓòÉΓòÉ
  9960.  
  9961. The title bar in a standard frame window performs the following four functions: 
  9962.  
  9963.      Displays the title of the window across the top of the frame window 
  9964.  
  9965.      Changes its highlighted appearance to show whether the frame window is 
  9966.       active  (Ordinarily, the topmost window on the screen is the active 
  9967.       window.) 
  9968.  
  9969.      Responds to the actions of the user-for example, dragging the frame 
  9970.       window to a new location on the screen. 
  9971.  
  9972.      Flashes (as a result of the WinFlashWindow function) to get the attention 
  9973.       of the user. 
  9974.  
  9975.  Once the frame controls are in place in the frame window, an application 
  9976.  typically ignores them, because the system handles frame controls.  In some 
  9977.  cases, however, an application can take control of the title bar by sending 
  9978.  messages to the title-bar control window. 
  9979.  
  9980.  
  9981. ΓòÉΓòÉΓòÉ 15.1.1. Default Title-Bar Behavior ΓòÉΓòÉΓòÉ
  9982.  
  9983. A title-bar control window sends messages to its owner (the frame window) when 
  9984. the control receives user input.  Following are the messages that the title-bar 
  9985. control processes.  Each message is described in terms of how the title-bar 
  9986. control responds to that message. 
  9987.  
  9988. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9989. ΓöéMessage             ΓöéDescription                             Γöé
  9990. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9991. ΓöéTBM_QUERYHILITE     ΓöéReturns the highlighted state of the    Γöé
  9992. Γöé                    Γöétitle bar.                              Γöé
  9993. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9994. ΓöéTBM_SETHILITE       ΓöéSets the highlighted state of the title Γöé
  9995. Γöé                    Γöébar, repainting the title bar if the    Γöé
  9996. Γöé                    Γöéstate is changing.                      Γöé
  9997. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9998. ΓöéWM_BUTTON1DBLCLK    ΓöéRestores the title bar if the owner     Γöé
  9999. Γöé                    Γöéwindow is minimized or maximized.  If   Γöé
  10000. Γöé                    Γöéthe window is neither minimized nor     Γöé
  10001. Γöé                    Γöémaximized, this message maximizes the   Γöé
  10002. Γöé                    Γöéwindow.                                 Γöé
  10003. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10004. ΓöéWM_BUTTON1DOWN      ΓöéSends the WM_TRACKFRAME message to the  Γöé
  10005. Γöé                    Γöéowner window to start the tracking      Γöé
  10006. Γöé                    Γöéoperation for the frame window.         Γöé
  10007. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10008. ΓöéWM_CREATE           ΓöéSets the text for the title bar. ReturnsΓöé
  10009. Γöé                    ΓöéFALSE if the text is already set.       Γöé
  10010. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10011. ΓöéWM_DESTROY          ΓöéFrees the window text for the title bar.Γöé
  10012. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10013. ΓöéWM_HITTEST          ΓöéAlways returns HT_NORMAL, so that the   Γöé
  10014. Γöé                    Γöétitle bar does not beep when it is      Γöé
  10015. Γöé                    Γöédisabled. (It is disabled when the frameΓöé
  10016. Γöé                    Γöéwindow is maximized.)                   Γöé
  10017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10018. ΓöéWM_PAINT            ΓöéDraws the title bar.                    Γöé
  10019. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10020. ΓöéWM_QUERYDLGCODE     ΓöéReturns the predefined constant         Γöé
  10021. Γöé                    ΓöéDLGC_STATIC. The user cannot use the TabΓöé
  10022. Γöé                    Γöékey to move to the title bar in a dialogΓöé
  10023. Γöé                    Γöéwindow.                                 Γöé
  10024. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10025. ΓöéWM_QUERYWINDOWPARAMSΓöéReturns the requested window parameters.Γöé
  10026. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10027. ΓöéWM_SETWINDOWPARAMS  ΓöéSets the specified window parameters.   Γöé
  10028. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10029. ΓöéWM_WINDOWPOSCHANGED ΓöéReturns FALSE. Processes this message toΓöé
  10030. Γöé                    Γöéprevent the WinDefWindowProc function   Γöé
  10031. Γöé                    Γöéfrom sending the size and show messages.Γöé
  10032. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10033.  
  10034.  
  10035. ΓòÉΓòÉΓòÉ 15.2. Using Title-Bar Controls ΓòÉΓòÉΓòÉ
  10036.  
  10037. This section explains how to: 
  10038.  
  10039.      Include a title bar in a frame window 
  10040.      Alter the dragging action of a title bar 
  10041.  
  10042.  
  10043. ΓòÉΓòÉΓòÉ 15.2.1. Including a Title Bar in a Frame Window ΓòÉΓòÉΓòÉ
  10044.  
  10045. An application can include a title bar in a standard frame window by specifying 
  10046. the FCF_TITLEBAR flag in the WinCreateStdWindow function. 
  10047.  
  10048. The following code fragment shows how to create a standard frame window with a 
  10049. title bar, minimize and maximize (window-sizing) buttons, size border, system 
  10050. menu, and an application menu. 
  10051.  
  10052.     #define ID_MENU_RESOURCE 101
  10053.  
  10054.     HWND hwndFrame,hwndClient;
  10055.     UCHAR szClassName[255];
  10056.  
  10057.     ULONG flControlStyle = FCF_TITLEBAR | FCF_MINMAX | FCF_SIZEBORDER |
  10058.                            FCF_SYSMENU  | FCF_MENU;
  10059.  
  10060.     hwndFrame = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE | FS_ACCELTABLE,
  10061.                                    &flControlStyle, szClassName, "",
  10062.                                    0, (HMODULE) NULL, ID_MENU_RESOURCE,
  10063.                                    &hwndClient);
  10064.  
  10065. To get the window handle of a title-bar control, an application calls 
  10066. WinWindowFromID, specifying the frame-window handle and a constant identifying 
  10067. the title-bar control, as shown in the following code fragment: 
  10068.  
  10069.  
  10070.     hwndTitleBar = WinWindowFromID(hwndFrame, FID_TITLEBAR);
  10071.  
  10072. To set the text of a title bar, an application can use the WinSetWindowText 
  10073. function.  The frame window passes the new text to the title-bar control in a 
  10074. WM_SETWINDOWPARAMS message. 
  10075.  
  10076.  
  10077. ΓòÉΓòÉΓòÉ 15.2.2. Altering Dragging Action ΓòÉΓòÉΓòÉ
  10078.  
  10079. When the user clicks the title bar, the title-bar control sends a WM_TRACKFRAME 
  10080. message to its owner (the frame window).  When the frame window receives the 
  10081. WM_TRACKFRAME message, the frame sends a WM_QUERYTRACKINFO message to itself to 
  10082. fill in a TRACKINFO structure that defines the tracking parameters and 
  10083. boundaries.  To modify the default behavior, an application must subclass the 
  10084. frame window, intercept the WM_QUERYTRACKINFO message, and modify the TRACKINFO 
  10085. structure.  If the application returns TRUE for the WM_QUERYTRACKINFO message, 
  10086. the tracking operation proceeds according to the information in the TRACKINFO 
  10087. structure.  If the application returns FALSE, no tracking occurs. 
  10088.  
  10089.  
  10090. ΓòÉΓòÉΓòÉ 16. Value Set Controls ΓòÉΓòÉΓòÉ
  10091.  
  10092. A value set control (WC_VALUESET window class), like a radio button,  is a 
  10093. visual component that enables a user to select one choice from a group of 
  10094. mutually exclusive choices. However, unlike radio buttons, a value set can use 
  10095. graphic images (bit maps or icons), as well as colors, text, and numbers, to 
  10096. represent the items a user can select. This chapter presents the basics about 
  10097. value set controls and tells you how to create and use them in PM applications. 
  10098.  
  10099.  
  10100. ΓòÉΓòÉΓòÉ 16.1. About Value Set Controls ΓòÉΓòÉΓòÉ
  10101.  
  10102. Even though text is supported, the purpose of a value set control is to display 
  10103. choices as graphic images for faster selection. The user can see the selections 
  10104. instead of having to take time to read descriptions of the choices. Using 
  10105. graphic images in a value set also lets you conserve space on the display 
  10106. screen. For example, if you want to let a user choose from a variety of 
  10107. patterns, you can present those patterns as value set choices, If long strings 
  10108. of data are to be displayed as choices, radio buttons should be used. However, 
  10109. for small sets of numeric or textual information, you can use either a value 
  10110. set or radio buttons. 
  10111.  
  10112. The value set is customizable to meet varying application requirements, while 
  10113. providing a user interface component that can be used easily to develop 
  10114. products that conform to the Common User Access (CUA) user interface 
  10115. guidelines. The application can specify different types of items, sizes, and 
  10116. orientations for its value sets, but the underlying function of the control 
  10117. remains the same. For a complete description of CUA value sets, refer to the 
  10118. SAA CUA Guide to User Interface Design and the SAA CUA Advanced Interface 
  10119. Design Reference. 
  10120.  
  10121.  
  10122. ΓòÉΓòÉΓòÉ 16.1.1. Value Set Styles ΓòÉΓòÉΓòÉ
  10123.  
  10124. Value set control window styles are set when a value set window is created. 
  10125.  
  10126.      Set one of the following styles when creating a value set control window. 
  10127.       You can override these styles by specifying VIA_BITMAP, VIA_ICON, 
  10128.       VIA_TEXT, VIA_RGB, or VIA_COLORINDEX attributes for individual value set 
  10129.       items. 
  10130.  
  10131.       VS_BITMAP                The attribute for each value set item is set to 
  10132.                                the VIA_BITMAP value set item attribute, which 
  10133.                                means the value set treats each item as a bit 
  10134.                                map unless otherwise specified. This is the 
  10135.                                default. 
  10136.  
  10137.       VS_COLORINDEX            The attribute for each value set item is set to 
  10138.                                the VIA_COLORINDEX value set item attribute, 
  10139.                                which means the value set treats each item as an 
  10140.                                index into the logical color table unless 
  10141.                                otherwise specified. This style is most often 
  10142.                                used when the colors currently available are 
  10143.                                adequate. 
  10144.  
  10145.       VS_ICON                  The attribute for each value set item is set to 
  10146.                                the VIA_ICON value set item attribute, which 
  10147.                                means the value set treats each item as an icon 
  10148.                                unless otherwise specified. 
  10149.  
  10150.       VS_RGB                   The attribute for each value set item is set to 
  10151.                                the VIA_RGB value set item attribute, which 
  10152.                                means the value set treats each item as a RGB 
  10153.                                color value unless otherwise specified. This 
  10154.                                style is most often used when you need to create 
  10155.                                new colors. 
  10156.  
  10157.       VS_TEXT                  The attribute for each value set item is set to 
  10158.                                the VIA_TEXT value set item attribute, which 
  10159.                                means the value set treats each item as a text 
  10160.                                string unless otherwise specified. 
  10161.  
  10162.      Specify one or more of the following optional window styles, if desired, 
  10163.       by using an OR operator (|) to combine them with the style specified from 
  10164.       the preceding list: 
  10165.  
  10166.       VS_BORDER                The value set draws a thin border around itself 
  10167.                                to delineate the control. 
  10168.  
  10169.       VS_ITEMBORDER            The value set draws a thin border around each 
  10170.                                item to delineate it from other items. 
  10171.  
  10172.                                Note:  The VS_ITEMBORDER style is useful for 
  10173.                                       items that are hard to see, such as faint 
  10174.                                       colors or patterns. 
  10175.  
  10176.       VS_OWNERDRAW             The application is notified whenever the 
  10177.                                background of the value set window is to be 
  10178.                                painted. 
  10179.  
  10180.       VS_RIGHTTOLEFT           The value set interprets column orientation as 
  10181.                                right-to-left, instead of the default 
  10182.                                left-to-right arrangement. This means columns 
  10183.                                are numbered from right-to-left with the 
  10184.                                rightmost column being 1 and counting up as you 
  10185.                                move left. Home is the rightmost column and end 
  10186.                                is the leftmost column. 
  10187.  
  10188.                                There is no visible difference between a value 
  10189.                                set ordered left-to-right and a value set 
  10190.                                ordered right-to-left. Therefore, if your 
  10191.                                application uses multiple value sets, the 
  10192.                                ordering of the items should be consistent in 
  10193.                                each value set to avoid confusing the user. 
  10194.  
  10195.                                Note:  The VS_RIGHTTOLEFT style is used on 
  10196.                                       creation of the control. Changing this 
  10197.                                       style after creation causes unexpected 
  10198.                                       results. 
  10199.  
  10200.       VS_SCALEBITMAPS          The value set automatically scales bit maps to 
  10201.                                the size of the cell. If this style is not used, 
  10202.                                each bit map is centered in its cell. Also, if 
  10203.                                the cell is smaller than the bit map, the bit 
  10204.                                map is clipped to the size of the cell. 
  10205.  
  10206.  
  10207. ΓòÉΓòÉΓòÉ 16.2. Using Value Set Controls ΓòÉΓòÉΓòÉ
  10208.  
  10209. This section provides information that will enable you to create and use a 
  10210. value set control effectively. 
  10211.  
  10212.  
  10213. ΓòÉΓòÉΓòÉ 16.2.1. Creating a Value Set ΓòÉΓòÉΓòÉ
  10214.  
  10215. You create a value set by using the WC_VALUESET window class name in the 
  10216. ClassName parameter of WinCreateWindow call. 
  10217.  
  10218. Before the value set is created, a temporary VSCDATA data structure is 
  10219. allocated so that the number of rows and columns of the value set can be 
  10220. specified. 
  10221.  
  10222. Also, VS_* values are specified in the ulValueSetStyle variable so that the 
  10223. value set can be customized. The following sample code shows the creation of a 
  10224. value set: 
  10225.  
  10226. VSCDATA vscData;                    /* VSCDATA data structure         */
  10227. HWND    hwndValueSet;               /* Value set window handle        */
  10228. ULONG   ulValueSetStyle;            /* Value set style variable       */
  10229.  
  10230. /**********************************************************************/
  10231. /* Initialize the parameters in the data structure.                   */
  10232. /**********************************************************************/
  10233. vscData.cbSize =                    /* Size of value set equals size  */
  10234.   sizeof(VSCDATA);                  /* of VSCDATA                     */
  10235. vscData.usRowCount = 1;             /* 1 row in the value set         */
  10236. vscData.usColumnCount = 3;          /* 3 columns in the value set     */
  10237.  
  10238. /**********************************************************************/
  10239. /* Set the VS_* style flags to customize the value set.               */
  10240. /**********************************************************************/
  10241. ulValueSetStyle =
  10242.   VS_RGB        |                   /* Use colors for items.          */
  10243.   VS_ITEMBORDER |                   /* Put border around each value   */
  10244.                                     /* set item.                      */
  10245.   VS_BORDER;                        /* Put border around the entire   */
  10246.                                     /* value set                      */
  10247.  
  10248. /**********************************************************************/
  10249. /* Create the value set control window.                               */
  10250. /* The handle of the window is returned in hwndValueSet.              */
  10251. /**********************************************************************/
  10252. hwndValueSet = WinCreateWindow(
  10253.                  hwndClient,        /* Parent window handle           */
  10254.                  WC_VALUESET,       /* Value set class name           */
  10255.                  (PSZ)NULL,         /* No window text                 */
  10256.                  ulValueSetStyle,   /* Value set styles               */
  10257.                  (SHORT)10,         /* X coordinate                   */
  10258.                  (SHORT)10,         /* Y coordinate                   */
  10259.  
  10260.                  (SHORT)300,        /* Window width                   */
  10261.                  (SHORT)200,        /* Window height                  */
  10262.                  hwndClient,        /* Owner window handle            */
  10263.                  HWND_TOP,          /* Z-order position               */
  10264.                  ID_VALUESET,       /* Value set window ID            */
  10265.                  &vscData,          /* Control data structure         */
  10266.                  (PVOID)NULL);      /* No presentation parameters     */
  10267.  
  10268. /**********************************************************************/
  10269. /* Set the color value for each item in each row and column.          */
  10270. /**********************************************************************/
  10271. WinSendMsg(hwndValueSet,            /* Value set window handle        */
  10272.            VM_SETITEM,              /* Message for setting items      */
  10273.            MPFROM2SHORT(1,1),       /* Set item in row 1, column 1    */
  10274.            MPFROMLONG(0x00FF0000)); /* to the color red.              */
  10275.  
  10276. WinSendMsg(hwndValueSet,            /* Value set window handle        */
  10277.            VM_SETITEM,              /* Message for setting items      */
  10278.            MPFROM2SHORT(1,2),       /* Set item in row 1, column 2    */
  10279.            MPFROMLONG(0x0000FF00)); /* to the color green.            */
  10280.  
  10281. WinSendMsg(hwndValueSet,            /* Value set window handle        */
  10282.            VM_SETITEM,              /* Message for setting items      */
  10283.            MPFROM2SHORT(1,3),       /* Set item in row 1, column 3    */
  10284.            MPFROMLONG(0x000000FF)); /* to the color blue.             */
  10285.  
  10286. /**********************************************************************/
  10287. /* Set the default selection.                                         */
  10288. /**********************************************************************/
  10289. WinSendMsg(hwndValueSet,            /* Value set window handle        */
  10290.            VM_SELECTITEM,           /* Message for selecting items    */
  10291.            MPFROM2SHORT(1,2),       /* Item in row 1, column 2        */
  10292.            NULL);                   /* Reserved value                 */
  10293.  
  10294. /**********************************************************************/
  10295. /* Since all items have been set in the control,                      */
  10296. /* make the control visible.                                          */
  10297. /**********************************************************************/
  10298. WinShowWindow(hwndValueSet,         /* Value set window handle        */
  10299.               TRUE);                /* Make the window visible        */
  10300.  
  10301.  
  10302. ΓòÉΓòÉΓòÉ 16.2.2. Retrieving Data for Selected Value Set Items ΓòÉΓòÉΓòÉ
  10303.  
  10304. The next step is to be able to retrieve the data represented by a value set 
  10305. item. To do this, variables are specified for combined row and column index 
  10306. values, item attributes, and item information. Then the VM_QUERYSELECTEDITEM, 
  10307. VM_QUERYITEMATTR, and VM_QUERYITEM messages are used to retrieve the index 
  10308. values, attributes, and data. The following sample code shows how data for 
  10309. selected value set items is retrieved: 
  10310.  
  10311. ULONG  ulIdx;                       /* Combined row and column        */
  10312.                                     /* index value                    */
  10313. USHORT usItemAttr;                  /* Item attributes                */
  10314. ULONG  ulItemData;                  /* Item data                      */
  10315.  
  10316. /**********************************************************************/
  10317. /* Get the row and column index values of the item selected by the    */
  10318. /* user.  These values are returned in the ulIdx parameter.           */
  10319. /**********************************************************************/
  10320. ulIdx = (ULONG)WinSendMsg(
  10321.   hwndValueSet,                     /* Value set window handle        */
  10322.   VM_QUERYSELECTEDITEM,             /* Message for querying           */
  10323.                                     /* the selected item              */
  10324.   NULL, NULL);                      /* Reserved values                */
  10325.  
  10326. /**********************************************************************/
  10327. /* Determine the type of item that was selected. This message is      */
  10328. /* only to determine how to interpret item data when a value set      */
  10329. /* contains different types of items.                                 */
  10330. /**********************************************************************/
  10331. usItemAttr = (USHORT)WinSendMsg(
  10332.   hwndValueSet,                /* Value set window handle             */
  10333.   VM_QUERYITEMATTR,            /* Message for querying item attribute */
  10334.   MPFROMLONG(ulIdx),           /* Row and column of selected item     */
  10335.   NULL);                       /* Reserved value                      */
  10336.  
  10337. /**********************************************************************/
  10338. /* Get the information about the selected (non-textual) item.         */
  10339. /* If you are dealing with text, you need to allocate a buffer        */
  10340. /* for the text string.                                               */
  10341. /**********************************************************************/
  10342. ulItemData = (ULONG)WinSendMsg(
  10343.   hwndValueSet,                /* Value set window handle             */
  10344.   VM_QUERYITEM,                /* Message for querying an item        */
  10345.   MPFROMLONG(ulIdx),           /* Row and column of selected item     */
  10346.   NULL);                       /* Set to NULL because the item is not */
  10347.                                /* a text item                         */
  10348.  
  10349.  
  10350. ΓòÉΓòÉΓòÉ 16.2.3. Arranging Value Set Items ΓòÉΓòÉΓòÉ
  10351.  
  10352. The application defines the arrangement of value set items; they can be 
  10353. arranged in one or more rows, columns, or both. Items are placed from left to 
  10354. right in rows and from top to bottom in columns. The application can change the 
  10355. number of rows and columns at any time. 
  10356.  
  10357. The number of items that can be displayed depends on the number of items that 
  10358. fit into the spaces provided by the defined rows and columns. If the number of 
  10359. items exceeds the number of spaces, the excess items are not displayed. 
  10360.  
  10361. You can change the composition of a value set by specifying new items. The new 
  10362. items either can be added to the value set or can replace existing items. 
  10363.  
  10364.  
  10365. ΓòÉΓòÉΓòÉ 16.3. Graphical User Interface Support for Value Set Controls ΓòÉΓòÉΓòÉ
  10366.  
  10367. This section describes the support the value set control provides for graphical 
  10368. user interfaces (GUIs). Except where noted, this support conforms to the 
  10369. guidelines in the SAA CUA Advanced Interface Design Reference. 
  10370.  
  10371. The GUI support provided by the value set control consists of Navigating to and 
  10372. selecting value set items. 
  10373.  
  10374.  
  10375. ΓòÉΓòÉΓòÉ 16.3.1. Value Set Navigation Techniques ΓòÉΓòÉΓòÉ
  10376.  
  10377. Since all value set items are mutually exclusive, only one of them can be 
  10378. selected at a time. Therefore, the only type of selection supported by the 
  10379. value set control is single selection. 
  10380.  
  10381. Note:  If more than one value set window is open, navigating to and selecting 
  10382.        items in one value set window has no affect on the items displayed in 
  10383.        any other value set window. 
  10384.  
  10385.  An initial choice is selected when the value set control is first displayed. 
  10386.  If the application does not provide the initial selection by using the 
  10387.  VM_SELECTITEM message, the choice in row 1, column 1 is selected 
  10388.  automatically. 
  10389.  
  10390.  The value set control supports the use of a pointing device, such as a mouse, 
  10391.  and the keyboard for navigating to and selecting items, except for items that 
  10392.  are dimmed on the screen. This dimming of items is called unavailable-state 
  10393.  emphasis and indicates that the items cannot be selected. However, the 
  10394.  selection cursor, a dotted outline that usually indicates that an item can be 
  10395.  selected, can be moved to unavailable items so that a user can press F1 to 
  10396.  determine why they cannot be selected. The following sections describe the 
  10397.  pointing device and keyboard support for the value set control. 
  10398.  
  10399.  
  10400. ΓòÉΓòÉΓòÉ 16.3.1.1. Pointing Device Support ΓòÉΓòÉΓòÉ
  10401.  
  10402. A user can use a pointing device to select value set items. The SAA CUA Guide 
  10403. to User Interface Design defines mouse button 1, the select button, to be used 
  10404. for selecting items. This definition also applies to the same button on any 
  10405. other pointing device. 
  10406.  
  10407. An item can be selected by moving the pointer of the pointing device to the 
  10408. item and clicking the select button. When this happens, a black box is drawn 
  10409. around the item to show that it has been selected. The black box is called 
  10410. selected-state emphasis. In addition, the selection cursor is drawn inside the 
  10411. black box. 
  10412.  
  10413.  
  10414. ΓòÉΓòÉΓòÉ 16.3.1.2. Keyboard Support ΓòÉΓòÉΓòÉ
  10415.  
  10416. The value set control supports automatic selection, which means that an 
  10417. available item is selected when the selection cursor is moved to that item. The 
  10418. item is given selected-state emphasis as soon as the selection cursor is moved 
  10419. to it. No further action, such as pressing the spacebar, is required. The same 
  10420. black box and dotted outline are used, for selected-state emphasis and the 
  10421. selection cursor respectively, as when an item is selected with a pointing 
  10422. device. 
  10423.  
  10424. A user can navigate to and select an item by using either the navigation keys 
  10425. or mnemonic selection to move the selection cursor to the item, as described in 
  10426. the following list: 
  10427.  
  10428.      Items can be selected using the Up, Down, Left, and Right Arrow keys to 
  10429.       move the selection cursor from one item to another. 
  10430.  
  10431.      The Home and End keys can be used to select the leftmost and rightmost 
  10432.       items, respectively, in the current row. If the Ctrl key is pressed in 
  10433.       combination with the Home or End key, the item in the top row and the 
  10434.       leftmost column, or the item in the bottom row and the rightmost column, 
  10435.       respectively, is selected. 
  10436.  
  10437.       Note:  The preceding description assumes that the current style of the 
  10438.              value set window is left-to-right. However, if the VS_RIGHTTOLEFT 
  10439.              style bit is set, the directions described for the Home, End, 
  10440.              Ctrl+Home, and Ctrl+End keys in the preceding paragraph are 
  10441.              reversed. 
  10442.  
  10443.      The PgUp key can be used to select the item in the top row that is 
  10444.       directly above the current position of the selection cursor. The PgDn key 
  10445.       can be used to select the item in the bottom row that is directly below 
  10446.       the current position of the selection cursor. If the space in the top or 
  10447.       bottom row directly above or below the current cursor position is blank, 
  10448.       the cursor moves to the blank space. 
  10449.  
  10450.      Another keyboard method of selecting items is mnemonic selection. A user 
  10451.       performs mnemonic selection by pressing a character key that corresponds 
  10452.       to an underlined character. Coding a tilde (~) before a text character in 
  10453.       the item causes that character to be underlined and activates it as a 
  10454.       mnemonic selection character. When this happens, the selection cursor is 
  10455.       moved to the item that contains the underlined character, and that item 
  10456.       is selected. 
  10457.  
  10458.  
  10459. ΓòÉΓòÉΓòÉ 16.4. Enhancing Value Set Controls Performance and Effectiveness ΓòÉΓòÉΓòÉ
  10460.  
  10461. This section provides dynamic resizing and scrolling to enable you to fine-tune 
  10462. a value set control. 
  10463.  
  10464.  
  10465. ΓòÉΓòÉΓòÉ 16.4.1. Dynamic Resizing and Scrolling ΓòÉΓòÉΓòÉ
  10466.  
  10467. The value set control supports dynamic resizing if the application sends the 
  10468. WM_SIZE message to a value set window. This means that the value set control 
  10469. automatically recalculates the size of the items when either the user or the 
  10470. application changes the size of the value set window. 
  10471.  
  10472. If the value set window's size is decreased so that the window is not large 
  10473. enough to display all of the items the value set contains, the items are 
  10474. clipped. If scroll bars are desired to allow the clipped information to be 
  10475. scrolled into view, they must be provided by the application. 
  10476.  
  10477.  
  10478. ΓòÉΓòÉΓòÉ 17. Windows ΓòÉΓòÉΓòÉ
  10479.  
  10480. To most users, a window is a rectangular area of the display screen where an 
  10481. application receives input from the user and displays output.  This chapter 
  10482. describes the parts of the operating system that enable a Presentation Manager 
  10483. (PM) application to create and use windows; manage relationships between 
  10484. windows; and size, move, and display windows.  An overview of the following 
  10485. topics is presented: 
  10486.  
  10487.      Window types, classes, and styles 
  10488.      Window-creation techniques 
  10489.      Window messages and message queues 
  10490.      Methods of window input and output 
  10491.      Window resources and procedures 
  10492.      Window identification and modification 
  10493.  
  10494.  Subsequent chapters present more in-depth descriptions of windows, their 
  10495.  advantages and uses, along with example code fragments. 
  10496.  
  10497.  
  10498. ΓòÉΓòÉΓòÉ 17.1. About Windows ΓòÉΓòÉΓòÉ
  10499.  
  10500. A PM application can interact with the user and perform tasks only by way of 
  10501. windows.  Each window shares the screen with other windows, including those 
  10502. from other applications.  The user employs the mouse and keyboard to interact 
  10503. with windows and their owner applications. 
  10504.  
  10505.  
  10506. ΓòÉΓòÉΓòÉ 17.1.1. Desktop Window and Desktop-Object Window ΓòÉΓòÉΓòÉ
  10507.  
  10508. The OS/2 operating system automatically creates the desktop window (known as 
  10509. the workplace in user terminology) when it starts a PM session. 
  10510.  
  10511.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10512.  Γöé    Desktop Window                              Γöé
  10513.  Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                Γöé
  10514.  Γöé  Γöé Main Window 3              Γöé                Γöé
  10515.  Γöé  Γöé      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ         Γöé
  10516.  Γöé  Γöé      Γöé Main Window 2              Γöé         Γöé
  10517.  Γöé  Γöé      Γöé      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé
  10518.  Γöé  Γöé      Γöé  ΓöîΓöÇΓöÇΓöÇΓöñ Main Window 1              Γöé  Γöé
  10519.  Γöé  Γöé      Γöé  ΓöéChiΓöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ         Γöé  Γöé
  10520.  Γöé  Γöé      Γöé  ΓöéWinΓöé  Γöé               Γöé         Γöé  Γöé
  10521.  Γöé  Γöé      Γöé  Γöé2A Γöé  Γöé               Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé  Γöé
  10522.  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  ΓööΓöÇΓöÇΓöÇΓöñ  ΓöéChild Window 1aΓöé      Γöé  Γöé  Γöé
  10523.  Γöé         Γöé      Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ      Γöé  Γöé  Γöé
  10524.  Γöé         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ       Γöé Child Window 1b Γöé  Γöé  Γöé
  10525.  Γöé                Γöé       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé  Γöé
  10526.  Γöé                ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé
  10527.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10528.  
  10529. Desktop Window Containing Windows of Several Applications The desktop window 
  10530. paints the background color of the screen and serves as the "progenitor" of all 
  10531. the windows displayed by all PM applications (but not of object windows, which 
  10532. do not require screen display).  To make the desktop the parent in the 
  10533. WinCreateStdWindow function, you specify HWND_DESKTOP. 
  10534.  
  10535. The windows immediately below the desktop are called main or top-level windows; 
  10536. these are called primary windows in user terminology.  Every PM application 
  10537. creates at least one window to serve as the main window for that application. 
  10538. Most applications also create many other windows, directly or indirectly, to 
  10539. perform tasks related to the main window. 
  10540.  
  10541. Each window helps display output and receive input from the user. The previous 
  10542. figure shows the desktop window containing windows of several applications. 
  10543. Notice that the main windows can overlap one another. (At times, it is possible 
  10544. for a main window to be completely hidden.) Operations in one main window 
  10545. normally do not affect the other main windows. 
  10546.  
  10547. The desktop-object window is like a desktop window that is never displayed; it 
  10548. serves as the base window to coordinate the activity of an application's object 
  10549. windows.  The desktop-object window cannot display windows nor process keyboard 
  10550. and mouse input.  The primary purpose of the desktop-object window is to enable 
  10551. you to create windows that need not respond to messages at the same rate as the 
  10552. user interface. 
  10553.  
  10554.  
  10555. ΓòÉΓòÉΓòÉ 17.1.2. Window Relationships ΓòÉΓòÉΓòÉ
  10556.  
  10557. Window relationships define how windows interact with each other-on the screen 
  10558. and through messages.  There are parent-child window relationships and 
  10559. window-owner relationships. 
  10560.  
  10561. The parent-child relationship determines where and how windows appear when 
  10562. drawn on the screen.  It also determines what happens to a window when a 
  10563. related window is destroyed or hidden.  The parent-child rules apply to all 
  10564. windows at all times and cannot be modified. 
  10565.  
  10566. Ownership determines how windows communicate using messages.  Cooperating 
  10567. windows define and carry out their rules of ownership.  Although some windows 
  10568. (such as windows of the preregistered public window class, WC_FRAME) have very 
  10569. complex rules of ownership, the application usually defines the ownership 
  10570. rules. The following figure represents the logical relationship of the windows 
  10571. in two applications. 
  10572.  
  10573.                           Desktop Window
  10574.                                ΓöîΓöÇΓöÉ
  10575.          Application 1         Γöé Γöé          Application 2
  10576. ΓöîΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÉ Γöé Γöé ΓöîΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÉ
  10577.              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÿ ΓööΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10578. Γöé            Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé             Γöé
  10579.              Γöé Γöé                                Γöé Γöé
  10580. Γöé       Main Window 1        Γöé     Γöé      Main Window 2         Γöé
  10581.              Γöé Γöé                                Γöé Γöé
  10582. Γöé     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ      Γöé     Γöé     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ      Γöé
  10583.       Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé                  Γöé ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  10584. Γöé     Γöé Γöé           Γöé Γöé      Γöé     Γöé     Γöé Γöé           Γöé Γöé      Γöé
  10585.       Γöé Γöé           ΓööΓöÇΓöÿ                  ΓööΓöÇΓöÿ           ΓööΓöÇΓöÿ
  10586. Γöé    Child         Child     Γöé     Γöé    Child         Child     Γöé
  10587.    Window 1.1    Window 1.2           Window 2.1    Window 2.2
  10588. Γöé     Γöé Γöé                    Γöé     Γöé                            Γöé
  10589.       ΓööΓöÇΓöÿ
  10590. Γöé    Child                   Γöé     Γöé                            Γöé
  10591.   Window 1.1.1
  10592. ΓööΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÿ     ΓööΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÇ  ΓöÇΓöÿ
  10593.  
  10594. Typical Window Relationships 
  10595.  
  10596.  
  10597. ΓòÉΓòÉΓòÉ 17.1.2.1. Parent-Child Relationship ΓòÉΓòÉΓòÉ
  10598.  
  10599. Most windows have a parent window. (The exceptions are the desktop and 
  10600. desktop-object windows, which the system creates at system startup.)  An 
  10601. application specifies the parent when it creates a window; then, the system 
  10602. uses the parent to determine where and how to draw any new windows, as well as 
  10603. when to destroy the windows (free all associated resources and remove the 
  10604. windows from the screen). 
  10605.  
  10606. A child window is drawn relative to its parent.  The coordinates given to 
  10607. specify the position of a window's lower-left corner are relative to the 
  10608. lower-left corner of its parent.  For example, a main window (child of the 
  10609. desktop) is drawn relative to the lower-left corner of the screen (the desktop 
  10610. window's lower-left corner). 
  10611.  
  10612. All main windows are siblings because they share a common parent, the desktop 
  10613. window.  Because sibling windows can overlap, an application or a user arranges 
  10614. the windows, one behind another (like a stack of papers on a desk), in the 
  10615. desired viewing order (called z-order). Z-order uses the desktop as a reference 
  10616. point for a "three-dimensional" ranking of the overlapping windows: the topmost 
  10617. window has the highest ranking, while the window at the bottom of the stack has 
  10618. the lowest ranking.  The parent of the sibling windows is always at the bottom 
  10619. of the z-order. The following figure illustrates the hierarchy of such an 
  10620. arrangement. 
  10621.  
  10622.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10623.   Γöé Desktop Γöé
  10624.   ΓööΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÿ
  10625.      Γöé Γöé Γöé     Parent            Child
  10626.      Γöé Γöé Γöé                  ΓöîΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇΓöÉ
  10627.      Γöé Γöé Γöé                       Siblings
  10628.      Γöé Γöé Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  10629.      Γöé Γöé ΓööΓöÇΓöÇΓöé Main 1 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Child 1A Γöé
  10630.      Γöé Γöé     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÉ  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  10631.      Γöé Γöé                 Γöé  Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10632.      Γöé Γöé                 ΓööΓöÇΓöÇΓöÇΓöÇΓöé Child 1A Γöé Γöé
  10633.      Γöé Γöé                    Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10634.      Γöé Γöé                    ΓööΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇ ΓöÇΓöÿ
  10635.      Γöé Γöé     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ        ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10636.      Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöé Main 2 Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Child 2A Γöé
  10637.      Γöé       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10638.      Γöé       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10639.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Main 3 Γöé
  10640.              ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10641.  
  10642. Window Hierarchy 
  10643.  
  10644. Although PM supports z-order, it does not enforce the expected appearance 
  10645. unless you specify the CS_CLIPCHILDREN or CS_CLIPSIBLINGS styles.  No part of a 
  10646. child window ever appears outside the borders of its parent.  If an application 
  10647. creates a window that is larger than its parent, or positions a window so that 
  10648. some or all of it extends beyond the borders of the parent, the extended 
  10649. portion of the child window is not drawn. 
  10650.  
  10651. An application can use the WS_CLIPCHILDREN or WS_CLIPSIBLINGS styles to remove 
  10652. from a window's clipping area (the area in which the window can paint) the area 
  10653. occupied by its child or sibling windows.  For example, an application can use 
  10654. these styles to prevent a window from painting over a child or sibling window 
  10655. containing a complex graphic that would be time-consuming to redraw. 
  10656.  
  10657. When a window is minimized, hidden, or destroyed, all of its children are 
  10658. hidden, minimized, or destroyed as well.  The order of destruction is always 
  10659. such that every window is destroyed before its parent.  The window-destruction 
  10660. sequence starts at the bottom of descendancy so that all related windows can be 
  10661. cleaned up; the last one to go is the window you asked to be destroyed.  The 
  10662. final PM task in a window-destruction sequence is to send a WM_DESTROY message 
  10663. to that window, so it has one last chance to release any resources it has 
  10664. allocated and may still be holding. 
  10665.  
  10666. Every window has only one parent, but can have any number of children. window 
  10667. in this tree is said to be a descendant of any window appearing above it in the 
  10668. branch, and an ancestor of any window appearing below it.  There are two 
  10669. special cases, of course: the window immediately above is called the window's 
  10670. parent, and any window immediately below it is called its child.  An 
  10671. application can change a window's parent window at any time by using the 
  10672. WinSetParent function.  Changing the parent window also changes where and how 
  10673. the child window is drawn.  The system displays the child within the borders of 
  10674. the new parent and draws the window according to the styles specified for the 
  10675. new parent. 
  10676.  
  10677.  
  10678. ΓòÉΓòÉΓòÉ 17.1.2.2. Ownership ΓòÉΓòÉΓòÉ
  10679.  
  10680. Any window can have an owner window.  Typically, an application uses ownership 
  10681. to establish a connection between windows so that they can perform useful tasks 
  10682. together.  For example, the title bar in an application's main window is owned 
  10683. by the frame window; but, together, the user can move the entire main window by 
  10684. clicking the mouse in the title bar and dragging.  An application can set the 
  10685. owner window when it creates the window or at a later time. 
  10686.  
  10687. Ownership establishes a relationship between windows that is independent of the 
  10688. parent-child relationship.  While there are few predefined rules for owner- and 
  10689. owned-window interaction, a window always notifies its owner of anything 
  10690. considered a significant event. 
  10691.  
  10692. The preregistered public window classes provided by the OS/2 operating system 
  10693. recognize ownership.  Control windows of classes such as WC_TITLEBAR and 
  10694. WC_SCROLLBAR, notify their owners of events; frame windows, of class WC_FRAME, 
  10695. receive and process notification messages from the control windows they own. 
  10696. For example, a title-bar control sends a notification message to its owner when 
  10697. it receives a mouse click.  If the owner is a frame window, it receives the 
  10698. notification message and prepares to move itself and its children. 
  10699.  
  10700. Owner and owned windows must be created by the same thread; that is, they must 
  10701. belong to the same message queue.  Because ownership is independent of the 
  10702. parent-child relationship, the owner and owned windows do not have to be 
  10703. descendants of the same parent window.  However, this can affect how windows 
  10704. are destroyed.  Destroying an owner window does not necessarily destroy an 
  10705. owned window.  Except for frame windows, an application that needs to destroy 
  10706. an owned window that is not a descendant of the owner window must do so 
  10707. explicitly. 
  10708.  
  10709. Frame windows sometimes own windows that are not descendants but, instead, are 
  10710. siblings.  A frame window has the following special ownership properties: 
  10711.  
  10712.      When the frame window is destroyed, it destroys all of the windows it 
  10713.       owns, even if they are not descendants. 
  10714.  
  10715.      When a frame window moves, the windows it owns move also.  Owned windows 
  10716.       that are not descendants maintain their positions, relative to the 
  10717.       upper-left (not the usual lower-left) corner of the owner window.  An 
  10718.       owned window with the style FS_NOMOVEWITHOWNER does not move. 
  10719.  
  10720.      When the frame window changes its position in the z-order, it changes the 
  10721.       z-order of all the windows it owns. 
  10722.  
  10723.      When the frame window is minimized or hidden, it hides all the windows it 
  10724.       owns.  Owned windows hidden this way are restored when the frame window 
  10725.       is restored. 
  10726.  
  10727.  If an application needs this type of special processing for its own window 
  10728.  classes, it must provide that support in the window procedures for those 
  10729.  classes. 
  10730.  
  10731.  
  10732. ΓòÉΓòÉΓòÉ 17.1.2.3. Object Windows ΓòÉΓòÉΓòÉ
  10733.  
  10734. Any descendant of the desktop-object window is called an object window. 
  10735. Typically, an application uses an object window to provide services for another 
  10736. window.  For example, an application can use an object window to manage a 
  10737. shared database.  In this way, a window can obtain information from the shared 
  10738. database by sending a message to and receiving a reply from the object window. 
  10739.  
  10740. Only two system-defined messages are available to an object window-WM_CREATE 
  10741. and WM_DESTROY-but the object window enables the user to implement a set of 
  10742. user-defined messages.  The window procedure for an object window does not have 
  10743. to process paint messages or user input.  The object window processes only 
  10744. messages that affect the data belonging to the object. 
  10745.  
  10746. HWND_OBJECT is the only identifier needed to create an object window.  It is 
  10747. very unwise to create descendants of HWND_OBJECT in the same thread that 
  10748. creates descendants of HWND_DESKTOP: this causes the system to hang up or, at 
  10749. the very least, behave slowly.  Object windows, sometimes referred to as orphan 
  10750. windows, require no owner. 
  10751.  
  10752. The rules for parent-child and ownership relationships also apply to object 
  10753. windows.  In particular, changing the parent window of an object window to the 
  10754. desktop window, or to a descendant of the desktop window, causes the system to 
  10755. display the object window if the object window has the WS_VISIBLE style. 
  10756.  
  10757.  
  10758. ΓòÉΓòÉΓòÉ 17.1.3. Application Windows ΓòÉΓòÉΓòÉ
  10759.  
  10760. An application can use several types of secondary windows:  frame windows, 
  10761. client windows, control windows, dialog windows, message boxes, and menus. 
  10762. Typically, an application's main window consists of several of these windows 
  10763. acting as one. 
  10764.  
  10765. A frame window is a window that an application uses as the base when 
  10766. constructing a main window or other composite window, such as a dialog window 
  10767. or message box.  (A composite window is a collection of windows that interact 
  10768. with one another and are kept together as a unit.)  A frame window provides 
  10769. basic features, such as borders and a menu bar.  Frame windows have a set of 
  10770. resources associated with them.  These include icons, menus, and accelerators 
  10771. (shortcut keys to the user), which, typically, are defined in an application's 
  10772. resource file. 
  10773.  
  10774. A dialog window is a frame window that contains one or more control windows. 
  10775. Dialog windows are used almost exclusively for prompting the user for input. 
  10776. An application usually creates a dialog window when it needs additional 
  10777. information to complete a command.  The application destroys the dialog window 
  10778. after the user has provided the requested information. 
  10779.  
  10780. A message box is a frame window that an application uses to display a note, 
  10781. caution, or warning to the user.  For instance, an application can use a 
  10782. message box to inform the user of a problem that the application encountered 
  10783. while performing a task. 
  10784.  
  10785. A client window is the window in which the application displays the current 
  10786. document or data.  For example, a desktop-publishing application displays the 
  10787. current page of a document in a client window.  Most applications create at 
  10788. least one client window.  The application must provide a function, called a 
  10789. window procedure, to process input to the client window and to display output. 
  10790.  
  10791. A control window is a window used in conjunction with another window to perform 
  10792. useful tasks, such as displaying a menu or scrolling information in a client 
  10793. window.  The operating system provides several predefined control-window 
  10794. classes that an application can use to create control windows.  Control windows 
  10795. include buttons, entry fields, list boxes, combination boxes, menus, scroll 
  10796. bars, static text, and title bars. 
  10797.  
  10798. A menu is a control window that presents a list of commands and other menus to 
  10799. the user.  Using a mouse or the keyboard, the user can select a task; the 
  10800. application then performs the selected task. 
  10801.  
  10802.  
  10803. ΓòÉΓòÉΓòÉ 17.1.4. Window Input and Output ΓòÉΓòÉΓòÉ
  10804.  
  10805. The user directs input data to windows from a mouse and the keyboard.  Keyboard 
  10806. input goes to the window with input focus, and, normally, mouse input goes to 
  10807. the window under the mouse pointer. 
  10808.  
  10809. Windows also are places to display output data.  PM uses windows to display 
  10810. text and graphics on the screen and to process input from the mouse and 
  10811. keyboard.  Windows provide the same input and output capabilities as a virtual 
  10812. graphics terminal without having direct control of the hardware. 
  10813.  
  10814. An application is responsible for painting the data for the window classes it 
  10815. registers and creates.  This data can be graphics text or pictures or 
  10816. fixed-size alphanumeric text.  Normally it is not necessary for the application 
  10817. to paint the system-provided window classes; the OS/2 window procedures for 
  10818. those window classes do the painting. 
  10819.  
  10820.  
  10821. ΓòÉΓòÉΓòÉ 17.1.4.1. Active Window and Focus Window ΓòÉΓòÉΓòÉ
  10822.  
  10823. All frame-window ancestors of the input focus window are said to be active, 
  10824. meaning that the user interacts with them.  The active window usually is the 
  10825. topmost main window, which is positioned above all other top-level windows on 
  10826. the screen.  The active window is indicated by some form of highlighting.  For 
  10827. example, a highlighted title bar shows that a standard frame window is active; 
  10828. an active dialog window has a highlighted border.  These types of highlighting 
  10829. ensure that the user can see the window that is accepting input. 
  10830.  
  10831. A main window (or one of its child windows) is activated by using a mouse or 
  10832. the keyboard.  When a window is activated, it receives a WM_ACTIVATE message 
  10833. with its first parameter set to TRUE.  When it is deactivated, it receives a 
  10834. WM_ACTIVATE message with its first parameter set to FALSE. 
  10835.  
  10836. The focus window can be the active window or one of its descendant windows. 
  10837. The user can change the input focus the same way active windows are changed-by 
  10838. mouse or keyboard.  However, the application has more control over the input 
  10839. focus.  For example, in a window containing several text entry fields, the tab 
  10840. keys can move the input focus from one input field to another.  A WM_SETFOCUS 
  10841. message is sent to the window procedure when a window is gaining or losing the 
  10842. input focus.  The WinQueryFocus function tells the user which window has the 
  10843. input focus. 
  10844.  
  10845.  
  10846. ΓòÉΓòÉΓòÉ 17.1.4.2. Messages ΓòÉΓòÉΓòÉ
  10847.  
  10848. Messages are a fundamental part of the operating system.  PM applications use 
  10849. messages to communicate with the operating system and one another.  The system 
  10850. uses messages to communicate with applications to ensure concurrent running and 
  10851. sharing of devices.  Typically, a message notifies the receiving application 
  10852. that an event has occurred.  The operating system identifies the appropriate 
  10853. application window to receive a message by the window handle included in the 
  10854. message.  Sources of events that cause messages to be issued to applications 
  10855. are the user, the operating system, the application, or another application. 
  10856.  
  10857.  
  10858. ΓòÉΓòÉΓòÉ 17.1.4.2.1. The User ΓòÉΓòÉΓòÉ
  10859.  
  10860. Mouse or keyboard input to an application window causes the operating system to 
  10861. direct messages to that window. 
  10862.  
  10863.  
  10864. ΓòÉΓòÉΓòÉ 17.1.4.2.2. The Operating System ΓòÉΓòÉΓòÉ
  10865.  
  10866. Managing the application windows on the screen, the operating system issues 
  10867. messages to the windows, usually as an indirect result of user interaction. 
  10868. These messages enable the system to work in a uniform and well-ordered manner. 
  10869. For example, where several application windows overlap, and the user terminates 
  10870. an application so that its window disappears, the operating system issues 
  10871. messages to the underlying application windows so that they can repaint 
  10872. themselves. 
  10873.  
  10874.  
  10875. ΓòÉΓòÉΓòÉ 17.1.4.2.3. The Application ΓòÉΓòÉΓòÉ
  10876.  
  10877. An event can occur in the application to which another part of that application 
  10878. should respond; for example, when the contents of its window no longer 
  10879. accurately reflect the status of the application.  The application can define 
  10880. its own messages outside the range of system-defined messages to communicate 
  10881. such events. 
  10882.  
  10883.  
  10884. ΓòÉΓòÉΓòÉ 17.1.4.2.4. Another Application ΓòÉΓòÉΓòÉ
  10885.  
  10886. Communication with other applications through the operating system ensures 
  10887. cooperative use of the system; it even can be used to exchange data.  For 
  10888. example, an arithmetic application can supply the results of a lengthy 
  10889. calculation to a business graphics application. 
  10890.  
  10891.  
  10892. ΓòÉΓòÉΓòÉ 17.1.4.3. Enabled and Disabled Windows ΓòÉΓòÉΓòÉ
  10893.  
  10894. An application uses the WinEnableWindow function to enable or disable window 
  10895. input.  By default, a window is enabled when it is created.  However, an 
  10896. application can disable a newly created window. 
  10897.  
  10898. An application usually disables a window to prevent the user from using the 
  10899. window.  For example, an application might disable a push button in a dialog 
  10900. window.  Enabling a window restores normal input; an application can enable a 
  10901. disabled window at any time. 
  10902.  
  10903. When an application uses the WinEnableWindow function to disable an existing 
  10904. window, that window also loses keyboard focus.  WinEnableWindow sets the 
  10905. keyboard focus to NULL, which means that no window has the focus.  If a child 
  10906. window or other descendant window has the keyboard focus, it loses the focus 
  10907. when the parent window is disabled. 
  10908.  
  10909. An application can determine whether a window is enabled by calling 
  10910. WinIsWindowEnabled. 
  10911.  
  10912.  
  10913. ΓòÉΓòÉΓòÉ 17.1.4.4. System-Modal Window ΓòÉΓòÉΓòÉ
  10914.  
  10915. An application can designate a system-modal window: a window that receives all 
  10916. keyboard and mouse input, effectively disabling all other windows.  The user 
  10917. must respond to the system-modal window before continuing work in other 
  10918. windows.  An application sets and clears the system-modal window by using the 
  10919. WinSetSysModalWindow function. 
  10920.  
  10921. Because system-modal windows have absolute control of input, you must be 
  10922. careful when using them in your applications.  Ideally, an application uses a 
  10923. system-modal window only when there is danger of losing data if the user does 
  10924. not respond to a problem immediately. 
  10925.  
  10926. Although an application can destroy a system-modal window, the new active 
  10927. window then becomes a system-modal window.  An application can make another 
  10928. window active while the first system-modal window exists.  But again, the new 
  10929. active window will become the system-modal window.  In general, once a 
  10930. system-modal window is set, it continues to exist in the PM session until the 
  10931. application explicitly clears it. 
  10932.  
  10933.  
  10934. ΓòÉΓòÉΓòÉ 17.1.5. Window Creation ΓòÉΓòÉΓòÉ
  10935.  
  10936. Before any thread in an application can create windows, it must: 
  10937.  
  10938.    1. Call WinInitialize to create an anchor block 
  10939.    2. Call WinCreateMsgQueue to create a message queue for the thread 
  10940.  
  10941.  Then, it can create one or more windows by calling one of the window-creation 
  10942.  functions, such as WinCreateWindow. 
  10943.  
  10944.  The window-creation functions require that the following information be 
  10945.  supplied in some form: 
  10946.  
  10947.      Class 
  10948.      Styles 
  10949.      Name 
  10950.      Parent window 
  10951.      Position relative to the parent window 
  10952.      Position relative to any sibling windows (z-order) 
  10953.      Dimensions 
  10954.      Owner window 
  10955.      Identifier 
  10956.      Class-specific data 
  10957.      Resources 
  10958.  
  10959.  Every window belongs to a window class that defines that window's appearance 
  10960.  and behavior.  The chief component of the window class is the window 
  10961.  procedure. The window procedure is the function that receives and processes 
  10962.  all messages sent to the window. 
  10963.  
  10964.  Every window has a style.  The window style specifies aspects of a window's 
  10965.  appearance and behavior that are not specified by the window's class.  For 
  10966.  example, the WC_FRAME class always creates a frame window, but the FS_BORDER, 
  10967.  FS_DLGBORDER, and FS_SIZEBORDER styles determine the style of a frame window's 
  10968.  border.  A few window styles apply to all windows, but most apply only to 
  10969.  windows of specific window classes.  The window procedure for a given class 
  10970.  interprets the style and allows an application to adapt a window of a given 
  10971.  class for a special circumstance.  For example, an application can give a 
  10972.  window the style WS_SYNCPAINT to cause it to be painted immediately whenever 
  10973.  any portion of the window becomes invalid.  Normally, a window is painted only 
  10974.  if there are no messages waiting in the message queue. 
  10975.  
  10976.  A window can have a text string associated with it.  Typically, the window 
  10977.  text is displayed in the window or in a title bar.  The class of window 
  10978.  determines whether the window displays the text and, if so, where the text 
  10979.  appears within the window. 
  10980.  
  10981.  Every window except the desktop window and desktop-object window has a parent 
  10982.  window.  The parent provides the coordinate system used to position the window 
  10983.  and also affects aspects of a window's appearance.  For example, when the 
  10984.  parent window is minimized, hidden, or destroyed, the parent's child windows 
  10985.  are minimized, hidden, or destroyed also. 
  10986.  
  10987.  Every window has a screen position, size, and z-order position.  The screen 
  10988.  position is the location of the window's lower-left corner, relative to the 
  10989.  lower-left corner of its parent window.  A window's size is its width and 
  10990.  height, measured in pels.  A window's z-order position is the position of the 
  10991.  window in the order of overlapping windows.  This viewing order is oriented 
  10992.  along an imaginary axis, the z axis, extending outward from the screen.  The 
  10993.  window at the top of the z-order overlaps all sibling windows (that is, 
  10994.  windows having the same parent window).  A window at the bottom of the z-order 
  10995.  is overlapped by all sibling windows.  An application sets a window's z-order 
  10996.  position by placing it behind a given sibling window or at the top or bottom 
  10997.  of the z-order of the windows. 
  10998.  
  10999.  A window can own, or be owned by, another window.  The owner-owned 
  11000.  relationship affects how messages are sent between windows, allowing an 
  11001.  application to create combinations of windows that work together.  A window 
  11002.  issues messages about its state to its owner window; the owner window issues 
  11003.  messages back about what action to perform next. 
  11004.  
  11005.  The window handle is a unique number across the system that is totally 
  11006.  unambiguous-it identifies one particular window in the system and is assigned 
  11007.  by the system.  A window identifier is analogous to a "given" name in family 
  11008.  relationships; the only requirement is that the name be unique among siblings. 
  11009.  
  11010.  A window can have class-specific data that further defines how the window 
  11011.  appears and behaves when it is created.  The system passes the class-specific 
  11012.  data to the window procedure, which then applies the data to the new window. 
  11013.  
  11014.  
  11015. ΓòÉΓòÉΓòÉ 17.1.5.1. Window-Creation Functions ΓòÉΓòÉΓòÉ
  11016.  
  11017. The basic window-creation function is WinCreateWindow.  This function uses 
  11018. information about a window's class, style, size, and position to create a new 
  11019. window.  All other window-creation functions, such as WinCreateStdWindow and 
  11020. WinCreateDlg, supply some of this information by default and create windows of 
  11021. a specific class or style. 
  11022.  
  11023. Although the WinCreateWindow function provides the most direct means of 
  11024. creating a window, most applications do not use it.  Instead, they often use 
  11025. the WinCreateStdWindow function to create a main window and the WinDlgBox or 
  11026. WinCreateDlg functions to create dialog windows. 
  11027.  
  11028. The WinCreateMenu, WinLoadMenu, WinLoadDlg, WinMessageBox, and 
  11029. WinCreateFrameControls functions also create windows.  Each of these functions 
  11030. substitutes for one or more required calls to WinCreateWindow to create a given 
  11031. window.  For example, an application can create a frame window, one or more 
  11032. control windows, and a client window in a single call to WinCreateStdWindow. 
  11033.  
  11034.  
  11035. ΓòÉΓòÉΓòÉ 17.1.5.2. Window-Creation Messages ΓòÉΓòÉΓòÉ
  11036.  
  11037. While creating a window, the system sends messages to that window's window 
  11038. procedure.  The window procedure receives a WM_CREATE message, saying that the 
  11039. window is being created.  The window also receives a WM_ADJUSTWINDOWPOS 
  11040. message, specifying the initial size and position of the window being created. 
  11041. This message lets the window procedure adjust the size and position of the 
  11042. window before the window is displayed. 
  11043.  
  11044. The system also sends other messages while creating a window; the number and 
  11045. order of these messages depend on the class and style of the window and the 
  11046. function used to create it. 
  11047.  
  11048.  
  11049. ΓòÉΓòÉΓòÉ 17.1.6. Window Classes ΓòÉΓòÉΓòÉ
  11050.  
  11051. Each window of a specific window class uses the window procedure associated 
  11052. with that class.  An application can create one or more windows that belong to 
  11053. the same window class.  Because each window of the same class is processed by 
  11054. the same window procedure, they all behave the same way.  Since many windows 
  11055. can result from one window procedure, coding overhead is greatly reduced. 
  11056. There are two types of window classes: public and private. 
  11057.  
  11058.  
  11059. ΓòÉΓòÉΓòÉ 17.1.6.1. Public Window Classes ΓòÉΓòÉΓòÉ
  11060.  
  11061. A public window class is one that has a reentrant window procedure that is 
  11062. registered and resides in a dynamic link library (DLL); it can be used by any 
  11063. process in the system to create windows.  The operating system provides several 
  11064. preregistered public window classes.  You can specify the system-provided 
  11065. window classes by using the symbolic identifiers that have the prefix WC_, as 
  11066. shown in the following table: 
  11067.  
  11068. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11069. ΓöéClass Name     ΓöéDescription                                  Γöé
  11070. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11071. ΓöéWC_BUTTON      ΓöéConsists of buttons and boxes the user can   Γöé
  11072. Γöé               Γöéselect by clicking the pointing device or    Γöé
  11073. Γöé               Γöéusing the keyboard.                          Γöé
  11074. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11075. ΓöéWC_CONTAINER   ΓöéCreates a control for the user to group      Γöé
  11076. Γöé               Γöéobjects in a logical manner.  A container canΓöé
  11077. Γöé               Γöédisplay those objects in various formats or  Γöé
  11078. Γöé               Γöéviews.  The container control supports drag  Γöé
  11079. Γöé               Γöéand drop so the user can place information inΓöé
  11080. Γöé               Γöéa container by simply dragging and dropping. Γöé
  11081. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11082. ΓöéWC_ENTRYFIELD  ΓöéConsists of a single line of text that the   Γöé
  11083. Γöé               Γöéuser can edit.                               Γöé
  11084. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11085. ΓöéWC_FRAME       ΓöéA window class that can contain child windowsΓöé
  11086. Γöé               Γöéof many of the other window classes.         Γöé
  11087. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11088. ΓöéWC_LISTBOX     ΓöéPresents a list of text items from which the Γöé
  11089. Γöé               Γöéuser can make selections.                    Γöé
  11090. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11091. ΓöéWC_MENU        ΓöéPresents a list of items that can be         Γöé
  11092. Γöé               Γöédisplayed horizontally as menu bars, or      Γöé
  11093. Γöé               Γöévertically as pull-down menus.  Menus usuallyΓöé
  11094. Γöé               Γöéare used to provide a command interface to   Γöé
  11095. Γöé               Γöéapplications.                                Γöé
  11096. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11097. ΓöéWC_NOTEBOOK    ΓöéCreates a control for the user that is       Γöé
  11098. Γöé               Γöédisplayed as a number of pages.  The top pageΓöé
  11099. Γöé               Γöéis visible, and the others are hidden, with  Γöé
  11100. Γöé               Γöétheir presence being indicated by a visible  Γöé
  11101. Γöé               Γöéedge on each of the back pages.              Γöé
  11102. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11103. ΓöéWC_SCROLLBAR   ΓöéLets the user scroll the contents of an      Γöé
  11104. Γöé               Γöéassociated window.                           Γöé
  11105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11106. ΓöéWC_SLIDER      ΓöéCreates a control that is usable for         Γöé
  11107. Γöé               Γöéproducing approximate (analog) values or     Γöé
  11108. Γöé               Γöéproperties.  Scroll bars were used for this  Γöé
  11109. Γöé               Γöéfunction in the past, but the slider providesΓöé
  11110. Γöé               Γöéa more flexible method of achieving the same Γöé
  11111. Γöé               Γöéresult, with less programming effort.        Γöé
  11112. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11113. ΓöéWC_SPINBUTTON  ΓöéCreates a control that presents itself to theΓöé
  11114. Γöé               Γöéuser as a scrollable ring of choices, giving Γöé
  11115. Γöé               Γöéthe user quick access to the data.  The user Γöé
  11116. Γöé               Γöéis presented only one item at a time, so the Γöé
  11117. Γöé               Γöéspin button should be used with data that is Γöé
  11118. Γöé               Γöéintuitively related.                         Γöé
  11119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11120. ΓöéWC_STATIC      ΓöéSimple display items that do not respond to  Γöé
  11121. Γöé               Γöékeyboard or pointing device events.          Γöé
  11122. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11123. ΓöéWC_TITLEBAR    ΓöéDisplays the window title or caption and letsΓöé
  11124. Γöé               Γöéthe user move the window's owner.            Γöé
  11125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11126. ΓöéWC_VALUESET    ΓöéCreates a control similar in function to the Γöé
  11127. Γöé               Γöéradio buttons but provides additional        Γöé
  11128. Γöé               Γöéflexibility to display graphical, textual,   Γöé
  11129. Γöé               Γöéand numeric formats.  The values set with    Γöé
  11130. Γöé               Γöéthis control are mutually exclusive.         Γöé
  11131. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11132.  
  11133. With the exception of WC_FRAME, the system-provided window classes are known as 
  11134. control window classes because they give the user an easy means of controlling 
  11135. specific types of interaction.  For example, the WC_BUTTON class allows single 
  11136. or multiple selections.  These windows conform to the IBM* Systems Application 
  11137. Architecture (SAA) Common User Access (CUA) definition. They are designed 
  11138. specifically to provide function that meets the needs for a graphics-based 
  11139. standard user interface.  The code fragments provided in this guide make 
  11140. extensive use of the system window classes. 
  11141.  
  11142.  
  11143. ΓòÉΓòÉΓòÉ 17.1.6.2. Private Window Classes ΓòÉΓòÉΓòÉ
  11144.  
  11145. A private window class is one that an application registers for its own use; it 
  11146. is available only to the process that registers it.  The application-provided 
  11147. window procedure for a private window class resides either in the application's 
  11148. executable files or in a DLL file.  A private window class is deleted when its 
  11149. registering process is terminated. 
  11150.  
  11151.  
  11152. ΓòÉΓòÉΓòÉ 17.1.7. Window Styles ΓòÉΓòÉΓòÉ
  11153.  
  11154. A window can have a combination of styles; an application can combine styles by 
  11155. using the bitwise inclusive OR operator.  An application usually sets the 
  11156. window styles when it creates the window.  The OS/2 operating system provides 
  11157. several standard window styles that apply to all windows.  It also provides 
  11158. many styles for the predefined frame and control windows.  The frame and 
  11159. control styles are unique to each predefined window class and can be used only 
  11160. for windows of the corresponding class. 
  11161.  
  11162. Initially, the styles of the window class used to create the window determine 
  11163. the styles of the new window.  For example, if the window class has the style 
  11164. CS_SYNCPAINT, all windows created using that class, by default, will have the 
  11165. window style WS_SYNCPAINT. The OS/2 operating system has the following standard 
  11166. window styles: 
  11167.  
  11168. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11169. ΓöéStyle Name               ΓöéDescription                                  Γöé
  11170. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11171. ΓöéWS_CLIPCHILDREN          ΓöéPrevents a window from painting over its     Γöé
  11172. Γöé                         Γöéchild windows. This style increases the time Γöé
  11173. Γöé                         Γöénecessary to calculate the visible region.   Γöé
  11174. Γöé                         ΓöéThis style is usually not necessary because  Γöé
  11175. Γöé                         Γöéif the parent and child windows overlap and  Γöé
  11176. Γöé                         Γöéboth are invalidated, the system draws the   Γöé
  11177. Γöé                         Γöéparent window before drawing the child       Γöé
  11178. Γöé                         Γöéwindow. If the child window is invalidated   Γöé
  11179. Γöé                         Γöéindependently of the parent window, the      Γöé
  11180. Γöé                         Γöésystem redraws only the child window. If the Γöé
  11181. Γöé                         Γöéupdate region of the parent window does not  Γöé
  11182. Γöé                         Γöéintersect the child window, drawing the      Γöé
  11183. Γöé                         Γöéparent window causes the child window to be  Γöé
  11184. Γöé                         Γöéredrawn. This style is useful to prevent a   Γöé
  11185. Γöé                         Γöéchild window that contains a complex graphic Γöé
  11186. Γöé                         Γöéfrom being redrawn unnecessarily.            Γöé
  11187. Γöé                         ΓöéWS_CLIPCHILDREN is an absolute requirement ifΓöé
  11188. Γöé                         Γöéa window with children ever performs output  Γöé
  11189. Γöé                         Γöéin response to any message other than        Γöé
  11190. Γöé                         ΓöéWM_PAINT. Only WM_PAINT processing is        Γöé
  11191. Γöé                         Γöésynchronized such that the children will get Γöé
  11192. Γöé                         Γöétheir messages after the parent.             Γöé
  11193. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11194. ΓöéWS_CLIPSIBLINGS          ΓöéPrevents a window from painting over its     Γöé
  11195. Γöé                         Γöésibling windows. This style protects sibling Γöé
  11196. Γöé                         Γöéwindows but increases the time necessary to  Γöé
  11197. Γöé                         Γöécalculate the visible region. This style is  Γöé
  11198. Γöé                         Γöéappropriate for windows that overlap and thatΓöé
  11199. Γöé                         Γöéhave the same parent window.                 Γöé
  11200. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11201. ΓöéWS_DISABLED              ΓöéUsed by an application to disable a window.  Γöé
  11202. Γöé                         ΓöéIt is up to the window to recognize this     Γöé
  11203. Γöé                         Γöéstyle and reject input.                      Γöé
  11204. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11205. ΓöéWS_GROUP                 ΓöéSpecifies the first control of a group of    Γöé
  11206. Γöé                         Γöécontrols in which the user can move from one Γöé
  11207. Γöé                         Γöécontrol to the next by using the ARROW keys. Γöé
  11208. Γöé                         ΓöéAll controls defined after the control with  Γöé
  11209. Γöé                         Γöéthe WS_GROUP style belong to the same group. Γöé
  11210. Γöé                         ΓöéThe next control with the WS_GROUP style endsΓöé
  11211. Γöé                         Γöéthe first group and starts a new group.      Γöé
  11212. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11213. ΓöéWS_MAXIMIZED             ΓöéEnlarges a window to the maximum size.       Γöé
  11214. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11215. ΓöéWS_MINIMIZED             ΓöéReduces a window to the size of an icon.     Γöé
  11216. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11217. ΓöéWS_PARENTCLIP            ΓöéExtends a window's visible region to include Γöé
  11218. Γöé                         Γöéthat of its parent window. This style        Γöé
  11219. Γöé                         Γöésimplifies the calculation of the child      Γöé
  11220. Γöé                         Γöéwindow's visible region but is potentially   Γöé
  11221. Γöé                         Γöédangerous because the parent window's visibleΓöé
  11222. Γöé                         Γöéregion is usually larger than the child      Γöé
  11223. Γöé                         Γöéwindow.                                      Γöé
  11224. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11225. ΓöéWS_SAVEBITS              ΓöéSaves the screen area under a window as a bitΓöé
  11226. Γöé                         Γöémap. When the user hides or moves the window,Γöé
  11227. Γöé                         Γöéthe system restores the image by copying the Γöé
  11228. Γöé                         Γöébits; there is no need to add the area to theΓöé
  11229. Γöé                         Γöéuncovered window's update region. The style  Γöé
  11230. Γöé                         Γöécan improve system performance but also can  Γöé
  11231. Γöé                         Γöéconsume a great deal of memory. It is        Γöé
  11232. Γöé                         Γöérecommended only for transient windows, such Γöé
  11233. Γöé                         Γöéas menus and dialog windows, not for main    Γöé
  11234. Γöé                         Γöéapplication windows.                         Γöé
  11235. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11236. ΓöéWS_SYNCPAINT             ΓöéCauses a window to receive WM_PAINT messages Γöé
  11237. Γöé                         Γöéimmediately after a part of the window       Γöé
  11238. Γöé                         Γöébecomes invalid. Without this style, the     Γöé
  11239. Γöé                         Γöéwindow receives WM_PAINT messages only if no Γöé
  11240. Γöé                         Γöéother message is waiting to be processed.    Γöé
  11241. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11242. ΓöéWS_TABSTOP               ΓöéSpecifies one of any number of controls      Γöé
  11243. Γöé                         Γöéthrough which the user can move by tabbing.  Γöé
  11244. Γöé                         ΓöéPressing the TAB key moves the keyboard focusΓöé
  11245. Γöé                         Γöéto the next control that has the WS_TABSTOP  Γöé
  11246. Γöé                         Γöéstyle.                                       Γöé
  11247. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11248. ΓöéWS_VISIBLE               ΓöéMakes a window visible. The operating system Γöé
  11249. Γöé                         Γöédraws the window on the screen unless        Γöé
  11250. Γöé                         Γöéoverlapping windows completely obscure it.   Γöé
  11251. Γöé                         ΓöéWindows without this style are hidden. If    Γöé
  11252. Γöé                         Γöéoverlapping windows completely obscure the   Γöé
  11253. Γöé                         Γöéwindow, the window is still considered       Γöé
  11254. Γöé                         Γöévisible.  (Visibility means that the         Γöé
  11255. Γöé                         Γöéoperating system draws the window if it can.)Γöé
  11256. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11257.  
  11258.  
  11259. ΓòÉΓòÉΓòÉ 17.1.8. Window Handles ΓòÉΓòÉΓòÉ
  11260.  
  11261. After creating a window, the creation function returns a window handle that 
  11262. uniquely identifies the window.  An application can use this handle to direct 
  11263. the action of functions to the window.  Window handles have the data type HWND; 
  11264. applications must use this data type when declaring variables that hold window 
  11265. handles. 
  11266.  
  11267. There are special constants that an application can use instead of a window 
  11268. handle in certain functions.  For example, an application can use HWND_DESKTOP 
  11269. in the WinCreateWindow function to specify the desktop window as the new 
  11270. window's parent. Similarly, HWND_OBJECT represents the desktop-object window. 
  11271. HWND_TOP and HWND_BOTTOM represent the top and bottom positions relative to the 
  11272. z-order position of a window. 
  11273.  
  11274. Although the NULL constant is not a window handle, an application can use it in 
  11275. some functions to specify that no window is affected.  For example, an 
  11276. application can use NULL in the WinCreateWindow function to create a window 
  11277. that has no owner window.  Some functions might return NULL, indicating that 
  11278. the given action applies to no window. 
  11279.  
  11280.  
  11281. ΓòÉΓòÉΓòÉ 17.1.9. Window Size and Position ΓòÉΓòÉΓòÉ
  11282.  
  11283. A window's size and position can be expressed as a bounding rectangle, given in 
  11284. coordinates relative to its parent.  An application specifies the window's 
  11285. initial size and position when creating the window. 
  11286.  
  11287. To use the system-default values for the initial size and position of a frame 
  11288. window, an application can specify the FCF_SHELLPOSITION frame-creation flag. 
  11289. The application can change a window's size and position at any time. 
  11290.  
  11291. Note: 
  11292.  
  11293. The default coordinate system for a window specifies that the point (0,0) is at 
  11294. the lower-left corner of the window, with coordinates increasing as they go 
  11295. upward and to the right. 
  11296.  
  11297. A window can be positioned anywhere in relation to its parent. 
  11298.  
  11299.  
  11300. ΓòÉΓòÉΓòÉ 17.1.9.1. Size ΓòÉΓòÉΓòÉ
  11301.  
  11302. A window's size (width and height) is given in pels, in the range 0 through 
  11303. 65535.  A window can have 0 width and height; however, a window with 0 width or 
  11304. height is not drawn on the screen, even though it has the WS_VISIBLE style. 
  11305.  
  11306. An application can create very large windows; however, it should check the size 
  11307. of the screen before enlarging a window size.  One way to choose an appropriate 
  11308. size is to use the WinGetMaxPosition function to retrieve the size of the 
  11309. maximized window.  A window that is larger than its maximized size will be 
  11310. larger than the screen also. 
  11311.  
  11312. An application can retrieve the current size of the window by using the 
  11313. WinQueryWindowRect function. 
  11314.  
  11315.  
  11316. ΓòÉΓòÉΓòÉ 17.1.9.2. Position ΓòÉΓòÉΓòÉ
  11317.  
  11318. A window's position is defined as the x,y coordinates of its lower-left corner. 
  11319. These coordinates, sometimes called window coordinates, always are relative to 
  11320. the lower-left corner of the parent window.  For example, a window having the 
  11321. coordinates (10,10) is placed 10 pels to the right of, and 10 pels up from, the 
  11322. lower-left corner of its parent window.  Notice, however, that a window can be 
  11323. positioned anywhere in relation to its parent, but always relative to the 
  11324. parent's lower-left corner. 
  11325.  
  11326. Adjusting a window's position can improve drawing performance.  For example, an 
  11327. application could position a window so that its horizontal position is a 
  11328. multiple of 8, relative to the screen origin (the lower-left corner of the 
  11329. screen).  Coordinates that are multiples of 8 correspond to byte boundaries in 
  11330. the screen-memory bit map.  It is usually faster to start drawing at a byte 
  11331. boundary. 
  11332.  
  11333. By default, the system positions a frame window on a byte boundary; but an 
  11334. application can override this action by using the FCF_NOBYTEALIGN style when 
  11335. creating the window. 
  11336.  
  11337.  
  11338. ΓòÉΓòÉΓòÉ 17.1.9.3. Size and Position Messages ΓòÉΓòÉΓòÉ
  11339.  
  11340. A window receives messages when it changes size or position.  Before a change 
  11341. is made, the system might send a WM_ADJUSTWINDOWPOS message to allow the window 
  11342. procedure to make final adjustments to the window's size and position.  This 
  11343. message includes a pointer to an SWP structure that contains the requested 
  11344. width, height, and position.  If the window procedure adjusts these values in 
  11345. the structure, the system uses the adjusted values to redraw the window.  The 
  11346. WM_ADJUSTWINDOWPOS message is not sent if the change is a result of a call to 
  11347. the WinSetWindowPos function with the SWP_NOADJUST constant specified. 
  11348.  
  11349. After a change has been made to a window, the system sends a WM_SIZE message to 
  11350. specify the new size of the window.  If the window has the class style 
  11351. CS_MOVENOTIFY, the system also sends a WM_MOVE message, which includes the new 
  11352. position for the window.  The system sends a WM_SHOW message if the visibility 
  11353. of the window has changed. 
  11354.  
  11355.  
  11356. ΓòÉΓòÉΓòÉ 17.1.9.4. System Commands ΓòÉΓòÉΓòÉ
  11357.  
  11358. An application that has a window with a system menu can change the size and 
  11359. position of that window by sending system commands.  The system commands are 
  11360. generated when the user chooses commands from the system menu.  An application 
  11361. can emulate the user action by sending a WM_SYSCOMMAND message to the window. 
  11362.  
  11363. Following are some of the system commands: 
  11364.  
  11365. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11366. ΓöéCommand        ΓöéDescription                                  Γöé
  11367. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11368. ΓöéSC_SIZE        ΓöéStarts a Size command.  The user can change  Γöé
  11369. Γöé               Γöéthe size of the window with a mouse and the  Γöé
  11370. Γöé               Γöékeyboard.                                    Γöé
  11371. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11372. ΓöéSC_MOVE        ΓöéStarts a Move command.  The user can move theΓöé
  11373. Γöé               Γöéwindow with a mouse and the keyboard.        Γöé
  11374. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11375. ΓöéSC_MINIMIZE    ΓöéMinimizes the window.                        Γöé
  11376. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11377. ΓöéSC_MAXIMIZE    ΓöéMaximizes the window.                        Γöé
  11378. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11379. ΓöéSC_RESTORE     ΓöéRestores a minimized or maximized window to  Γöé
  11380. Γöé               Γöéits previous size and position.              Γöé
  11381. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11382. ΓöéSC_CLOSE       ΓöéCloses the window.  This command sends a     Γöé
  11383. Γöé               ΓöéWM_CLOSE message to the window.  The window  Γöé
  11384. Γöé               Γöéperforms all tasks needed to clean up and    Γöé
  11385. Γöé               Γöédestroy itself.                              Γöé
  11386. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11387.  
  11388.  
  11389. ΓòÉΓòÉΓòÉ 17.1.10. Window Data ΓòÉΓòÉΓòÉ
  11390.  
  11391. Every window has an associated data structure. The window data structure 
  11392. contains all the information specified for the window at the time it was 
  11393. created and any additional information supplied for the window since that time. 
  11394. Although the exact size and meaning of the information in the window data 
  11395. structure are private to the system, an application can access any of the 
  11396. following data items via system-provided functions: 
  11397.  
  11398.      Pointer to window-instance data structure 
  11399.      Pointer to window procedure 
  11400.      Parent-window handle 
  11401.      Owner-window handle 
  11402.      Handle of first child window 
  11403.      Handle of next sibling window 
  11404.      Window size and position (expressed as a rectangle) 
  11405.      Window style 
  11406.      Window identifier 
  11407.      Update-region handle 
  11408.      Message-queue handle 
  11409.  
  11410.  An application can examine and modify this data by using functions such as 
  11411.  WinQueryWindowUShort and WinSetWindowUShort. These functions let an 
  11412.  application access data that is stored as 16-bit integers.  Other functions 
  11413.  let an application access data containing 32-bit integers and pointers. 
  11414.  Several functions indirectly affect the data items in the window data 
  11415.  structure.  For example, the WinSubclassWindow function replaces the 
  11416.  window-procedure pointer, and the WinSetWindowPos function changes the size 
  11417.  and position of the window. 
  11418.  
  11419.  An application can extend the number of available data items in the window 
  11420.  data structure by specifying a count of extra bytes when it registers the 
  11421.  corresponding window class.  Then, the window procedure can use these bytes to 
  11422.  store information about the window.  The WinQueryWindowUShort and 
  11423.  WinSetWindowUShort functions give direct access to the extra bytes. 
  11424.  
  11425.  It generally is not a good idea to use direct storage in the window data.  It 
  11426.  is better to allocate a data structure dynamically and set a pointer to that 
  11427.  data structure in the window words.  This provides two advantages: 
  11428.  
  11429.    1. Most importantly, it is a symbolic way of referencing the data structure. 
  11430.       It is very easy to make mistakes and provide the wrong offsets to 
  11431.       WinQueryWindowUShort and so forth. 
  11432.  
  11433.    2. You now can add and remove fields without cross dependencies because you 
  11434.       now use symbolic references; whereas, when you use the technique of 
  11435.       putting window words directly in the window data structure, you have to 
  11436.       account for changed offsets. 
  11437.  
  11438.  
  11439. ΓòÉΓòÉΓòÉ 17.1.11. Window Resources ΓòÉΓòÉΓòÉ
  11440.  
  11441. Window resources are read-only data segments stored in an application's EXE 
  11442. file or in a dynamic link library's DLL file.  Predefined PM window resources 
  11443. include keyboard accelerator tables, icons, menus, bit maps, dialog boxes, and 
  11444. so forth; these are not a regular part of the application window's code and 
  11445. data.  Because, in most cases, window resources are not loaded into memory when 
  11446. the operating system runs a program, the resources can be shared by multiple 
  11447. instances of the same application. 
  11448.  
  11449. Most window resources are stored in a format that is unique to each resource 
  11450. type.  The application does not need to know these formats because the system 
  11451. translates them, as necessary, for use in PM functions.  The following table 
  11452. lists the ten most commonly used PM window resource types. 
  11453.  
  11454. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11455. ΓöéResource       ΓöéDescription                                  Γöé
  11456. ΓöéIdentifier     Γöé                                             Γöé
  11457. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11458. ΓöéRT_ACCELTABLE  ΓöéKeyboard accelerator table                   Γöé
  11459. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11460. ΓöéRT_BITMAP      ΓöéBit map                                      Γöé
  11461. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11462. ΓöéRT_DIALOG      ΓöéDialog box template                          Γöé
  11463. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11464. ΓöéRT_FONT        ΓöéFont                                         Γöé
  11465. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11466. ΓöéRT_FONTDIR     ΓöéFont directory                               Γöé
  11467. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11468. ΓöéRT_MENU        ΓöéMenu template                                Γöé
  11469. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11470. ΓöéRT_MESSAGE     ΓöéMessage string                               Γöé
  11471. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11472. ΓöéRT_POINTER     ΓöéIcon or mouse                                Γöé
  11473. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11474. ΓöéRT_RCDATA      ΓöéProgrammer-defined data                      Γöé
  11475. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11476. ΓöéRT_STRING      ΓöéText string                                  Γöé
  11477. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11478.  
  11479. To access these resources, you must prepare a resource file (ASCII file with 
  11480. the extension .RC). Then the ASCII resource file must be compiled into binary 
  11481. images using the resource compiler.  The compiled resource file extension is 
  11482. RES; it can be linked into your program's EXE file or to a dynamic link 
  11483. library's DLL file. 
  11484.  
  11485.  
  11486. ΓòÉΓòÉΓòÉ 17.1.12. Maximized and Minimized Windows ΓòÉΓòÉΓòÉ
  11487.  
  11488. A maximized window is a window that has been enlarged to fill the screen. 
  11489. Although a window's size can be set so that it fills the screen exactly, a 
  11490. maximized window is slightly different: the system automatically moves the 
  11491. window's title bar to the top of the screen and sets the WS_MAXIMIZED style for 
  11492. the window. 
  11493.  
  11494. A minimized window is a window whose size has been reduced to exactly the size 
  11495. of an icon or, in the Workplace Shell*, it disappears altogether (by default). 
  11496. Like a maximized window, a minimized window is more than just a window of a 
  11497. given size; typically, the system moves the (icon) minimized window to the 
  11498. lower part of the screen and sets the WS_MINIMIZED style for that window.  The 
  11499. lower part of the screen is sometimes called the icon area.  Unless the 
  11500. application specifies another position, the system moves a minimized window 
  11501. into the first available icon position in the icon area. 
  11502.  
  11503. If a window is created with the WS_MAXIMIZED or WS_MINIMIZED styles, the system 
  11504. draws the window as a maximized or minimized window. 
  11505.  
  11506. An application can restore maximized or minimized windows to their previous 
  11507. size and position by specifying the SWP_RESTORE flag in a call to the 
  11508. WinSetWindowPos function. 
  11509.  
  11510.  
  11511. ΓòÉΓòÉΓòÉ 17.1.13. Window Visibility ΓòÉΓòÉΓòÉ
  11512.  
  11513. A window that is a descendant of the desktop window can be either visible or 
  11514. invisible.  The system displays a visible window on the screen.  It hides an 
  11515. invisible window by not drawing it.  If a window is visible, the user can 
  11516. supply input to the window and view the window's output.  If a window is 
  11517. invisible, the window, in effect, is disabled.  An invisible window can process 
  11518. messages from the system or from other windows, but it cannot process user 
  11519. input or display output.  An application sets a window's visibility state when 
  11520. it creates the window.  Later, a user or the application can change the 
  11521. visibility state. 
  11522.  
  11523. The visible region of a window is the position clipped by any overlapping 
  11524. windows.  These overlapping windows can be child windows or other main windows 
  11525. in the system.  The visible region is defined by a set of one or more 
  11526. rectangles, as shown in the following figure. 
  11527.  
  11528.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11529.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11530.  Γöé Γûæ A ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11531.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé            B  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11532.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ         Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11533.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé C             Γöé         Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11534.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé               Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11535.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ Γöé               Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé
  11536.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæ ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11537.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé D             Γöé
  11538.  Γöé ΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæΓûæ Γöé               Γöé
  11539.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ               Γöé
  11540.                                        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11541.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11542.  Γöé ΓûæΓûæΓûæΓûæΓûæ Γöé - Visible region for Window A
  11543.  Γöé ΓûæΓûæΓûæΓûæΓûæ Γöé
  11544.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11545.  
  11546. Visible Region for Window A 
  11547.  
  11548. A window is visible if the WS_VISIBLE style is set for the window.  By default, 
  11549. the WinCreateWindow function creates invisible windows unless the application 
  11550. specifies WS_VISIBLE.  The application often hides a window to keep its 
  11551. operational details from the user.  For example, an application can keep a new 
  11552. window invisible while it customizes the window's appearance.  An application 
  11553. can determine whether a window has the WS_VISIBLE style by using the 
  11554. WinIsWindowVisible function. 
  11555.  
  11556. Even if a window has the WS_VISIBLE style, the user might not be able to see 
  11557. the window on the screen because other windows completely overlap it, or it 
  11558. might have been moved beyond the edge of its parent.  A visible window is 
  11559. subject to the clipping rules established by its parent-child relationship.  If 
  11560. the window's parent window is not visible, the window will not be visible. 
  11561. Because a child window is drawn relative to its parent's lower-left corner, if 
  11562. the parent window is moved beyond the edge of the screen, the child window also 
  11563. will be moved.  In other words, if a user moves the parent window containing 
  11564. the child window far enough off the edge of the screen, the user will not be 
  11565. able to see the child window, even though the child window and its parent 
  11566. window have the WS_VISIBLE style.  To determine whether the user actually can 
  11567. see a window, an application can use the WinIsWindowShowing function. 
  11568.  
  11569.  
  11570. ΓòÉΓòÉΓòÉ 17.1.14. Window Destruction ΓòÉΓòÉΓòÉ
  11571.  
  11572. In general, an application must destroy all the windows it creates. It does 
  11573. this by using the WinDestroyWindow function.  When a window is destroyed, the 
  11574. system hides the window, if it is visible, and then removes any internal data 
  11575. associated with the window.  This invalidates the window handle so that it can 
  11576. no longer be used by the application. 
  11577.  
  11578. An application destroys many of the windows it creates soon after creating 
  11579. them.  For example, an application usually destroys a dialog window as soon as 
  11580. the application has sufficient input from the user to continue its task.  An 
  11581. application eventually destroys the main window of the application (before 
  11582. terminating). 
  11583.  
  11584. Destroying a window does not affect the window class from which the window was 
  11585. created.  New windows still can be created using that class, and any existing 
  11586. windows of that class continue to operate. 
  11587.  
  11588. When the application calls WinDestroyWindow, the system searches the 
  11589. descendancy tree for all windows below the specified window and destroys them 
  11590. from the bottom up, so each child receives WM_DESTROY before its parent.  Each 
  11591. destroyed window is responsible for cleaning up its own resources in response 
  11592. to the WM_DESTROY message. 
  11593.  
  11594. If a presentation space was created by the WinGetPS function for any of the 
  11595. windows to be destroyed, it must be released by calling the WinReleasePS 
  11596. function.  The application must do this before calling the WinDestroyWindow 
  11597. function.  If a presentation space is associated with the device context for 
  11598. the window, the application must disassociate or destroy the presentation space 
  11599. by using the GpiAssociate or GpiDestroyPS function before calling 
  11600. WinDestroyWindow.  Failing to release a resource can cause an error. 
  11601.  
  11602. For more information about presentation spaces and device contexts, see 
  11603. Painting and Drawing. 
  11604.  
  11605. If the window being destroyed is the active window, both the active and focus 
  11606. states are transferred to another window.  The window that becomes the active 
  11607. window is the next window, as determined by the Alt+Esc key combination.  The 
  11608. new active window then determines which window receives the keyboard focus. 
  11609.  
  11610.  
  11611. ΓòÉΓòÉΓòÉ 17.2. Using Windows ΓòÉΓòÉΓòÉ
  11612.  
  11613. The following sections explain how to create and use windows in an application, 
  11614. how to manage ownership and parent-child window relationships, and how to move 
  11615. and size windows. 
  11616.  
  11617.  
  11618. ΓòÉΓòÉΓòÉ 17.2.1. Creating a Top-Level Frame Window ΓòÉΓòÉΓòÉ
  11619.  
  11620. The main window in most applications is a top-level frame window. An 
  11621. application creates a top-level frame window by specifying the handle of the 
  11622. desktop window, or HWND_DESKTOP, as the hwndParent parameter in a call to the 
  11623. WinCreateStdWindow function. 
  11624.  
  11625. The following figure shows the main() function for a simple PM application. 
  11626. This function initializes the application, creates a message queue, and 
  11627. registers the window class for the client window before creating a top-level 
  11628. frame window. 
  11629.  
  11630.     #define IDR_RESOURCES 1
  11631.  
  11632.     MRESULT EXPENTRY ClientWndProc(HWND, ULONG, MPARAM, MPARAM);
  11633.  
  11634.     int main(VOID)
  11635.     {
  11636.         HWND hwndFrame;
  11637.         HWND hwndClient;
  11638.         HMQ  hmq;
  11639.         QMSG qmsg;
  11640.         HAB  hab;
  11641.  
  11642.         /* Set the frame-window creation flags.                       */
  11643.         ULONG flFrameFlags =
  11644.             FCF_TITLEBAR      |   /* Title bar                        */
  11645.             FCF_SIZEBORDER    |   /* Size border                      */
  11646.             FCF_MINMAX        |   /* Minimize and maximize buttons.   */
  11647.             FCF_SYSMENU       |   /* System menu                      */
  11648.             FCF_SHELLPOSITION |   /* System-default size and position */
  11649.             FCF_TASKLIST ;        /* Add name to Task List.           */
  11650.  
  11651.         /* Initialize the application for PM                          */
  11652.         hab = WinInitialize(0);
  11653.  
  11654.         /* Create the application message queue.                      */
  11655.         hmq = WinCreateMsgQueue(hab, 0);
  11656.  
  11657.         /* Register the class for the client window.                  */
  11658.         WinRegisterClass(
  11659.             hab,                    /* Anchor block handle            */
  11660.             "MyPrivateClass",       /* Name of class being registered */
  11661.             (PFNWP)ClientWndProc,   /* Window procedure for class     */
  11662.             CS_SIZEREDRAW |         /* Class style                    */
  11663.             CS_HITTEST,             /* Class style                    */
  11664.             0);                     /* Extra bytes to reserve         */
  11665.  
  11666.         /* Create a top-level frame window with a client window       */
  11667.         /* that belongs to the window class "MyPrivateClass".         */
  11668.         hwndFrame = WinCreateStdWindow(
  11669.             HWND_DESKTOP,      /* Parent is desktop window.           */
  11670.             WS_VISIBLE,        /* Make frame window visible.          */
  11671.             &flFrameFlags,     /* Frame controls                      */
  11672.             "MyPrivateClass",  /* Window class for client             */
  11673.             NULL,              /* No window title                     */
  11674.             WS_VISIBLE,        /* Make client window visible .        */
  11675.             (HMODULE) 0,       /* Resources in application module     */
  11676.             IDR_RESOURCES,     /* Resource identifier                 */
  11677.             NULL);             /* Pointer to client window handle     */
  11678.  
  11679.         /* Start the main message loop. Get messages from the         */
  11680.         /* queue and dispatch them to the appropriate windows.        */
  11681.         while (WinGetMsg(hab, &qmsg, 0, 0, 0))
  11682.                WinDispatchMsg(hab, &qmsg);
  11683.  
  11684.         /* Main loop has terminated. Destroy all windows and the      */
  11685.         /* message queue; then terminate the application.             */
  11686.         WinDestroyWindow(hwndFrame);
  11687.         WinDestroyMsgQueue(hmq);
  11688.         WinTerminate(hab);
  11689.  
  11690.         return 0;
  11691.     }
  11692.  
  11693.  
  11694. ΓòÉΓòÉΓòÉ 17.2.2. Creating an Object Window ΓòÉΓòÉΓòÉ
  11695.  
  11696. An application can create an object window by using the WinCreateWindow 
  11697. function and setting the desktop-object window as the parent window.  The code 
  11698. fragment in the following figure shows how to create an object window. 
  11699.  
  11700.     #define ID_OBJWINDOW 2
  11701.  
  11702.     HWND hwndObject;
  11703.  
  11704.     hwndObject = WinCreateWindow(
  11705.         HWND_OBJECT,        /* Parent is object window.            */
  11706.         "MyObjClass",       /* Window class for client             */
  11707.         NULL,               /* Window text                         */
  11708.         0,                  /* No styles for object window         */
  11709.         0, 0,               /* Lower-left corner                   */
  11710.         0, 0,               /* Width and height                    */
  11711.         NULL,               /* No owner                            */
  11712.         HWND_BOTTOM,        /* Inserts window at bottom of z-order */
  11713.         ID_OBJWINDOW,       /* Window identifier                   */
  11714.         NULL,               /* No class-specific data              */
  11715.         NULL);              /* No presentation data                */
  11716.  
  11717.  
  11718. ΓòÉΓòÉΓòÉ 17.2.3. Querying Window Data ΓòÉΓòÉΓòÉ
  11719.  
  11720. An application can examine the values in the data structure associated with a 
  11721. window by using the WinQueryWindowUShort and WinQueryWindowULong functions. 
  11722. Each of these functions specifies a structure data item to examine.  The index 
  11723. value can be an integer representing a zero-based byte index or a constant 
  11724. (QWS_) that identifies a specific item of data. The code fragment in the 
  11725. following figure obtains the programmer-defined identifier of the object window 
  11726. defined in the previous example: 
  11727.  
  11728.  
  11729.     HWND hwndObject;
  11730.     USHORT usObjID;
  11731.  
  11732.     usObjID = WinQueryWindowUShort(hwndObject, QWS_ID);
  11733.  
  11734.  
  11735. ΓòÉΓòÉΓòÉ 17.2.4. Changing the Parent Window ΓòÉΓòÉΓòÉ
  11736.  
  11737. An application can change a window's parent window by using the WinSetParent 
  11738. function.  For example, in an application that uses child windows to display 
  11739. documents, you might want only the active document window to show a system 
  11740. menu.  You can do this by changing that menu's parent window back and forth 
  11741. between the document window and the object window when WM_ACTIVATE messages are 
  11742. received.  This technique is shown in the code fragment in the following 
  11743. figure. 
  11744.  
  11745.  
  11746.     switch (msg) {
  11747.  
  11748.     case WM_ACTIVATE:  {
  11749.  
  11750.     HWND hwndFrame, hwndSysMenu, hwnd;
  11751.  
  11752.         /* Get the handles of the frame window and system menu.        */
  11753.         hwndFrame = WinQueryWindow(hwnd, QW_PARENT);
  11754.         hwndSysMenu = WinWindowFromID(hwndFrame, FID_SYSMENU);
  11755.  
  11756.         /* If the window is being activated, make the frame window the */
  11757.         /* parent of the system menu. Otherwise, hide the system menu  */
  11758.         /* by making the object window the parent.                     */
  11759.  
  11760.         if ( SHORT1FROMMP(mp1))
  11761.             WinSetParent(hwndSysMenu, hwndFrame, TRUE);
  11762.  
  11763.         else
  11764.             WinSetParent(hwndSysMenu, HWND_OBJECT, TRUE);
  11765.  
  11766.         }
  11767.  
  11768.         return 0;
  11769.     }
  11770.  
  11771.  
  11772. ΓòÉΓòÉΓòÉ 17.2.5. Finding a Parent, Child, or Owner Window ΓòÉΓòÉΓòÉ
  11773.  
  11774. An application can determine the parent, child, and owner windows for any 
  11775. window by using the WinQueryWindow function.  This function returns the window 
  11776. handle of the requested window. 
  11777.  
  11778. The code fragment in the following figure determines the parent window of the 
  11779. given window: 
  11780.  
  11781.     HWND hwndParent;
  11782.     HWND hwndMyWindow;
  11783.  
  11784.     hwndParent = WinQueryWindow(hwndMyWindow, QW_PARENT);
  11785.  
  11786. The code fragment in the following figure determines the topmost child window 
  11787. (the child window in the top z-order position): 
  11788.  
  11789.     HWND hwndTopChild;
  11790.     HWND hwndParent;
  11791.  
  11792.     hwndTopChild = WinQueryWindow(hwndParent, QW_TOP);
  11793.  
  11794. If a given window does not have an owner or child window, WinQueryWindow 
  11795. returns NULL. 
  11796.  
  11797.  
  11798. ΓòÉΓòÉΓòÉ 17.2.6. Setting an Owner Window ΓòÉΓòÉΓòÉ
  11799.  
  11800. An application can set the owner for a window by using the WinSetOwner 
  11801. function.  Typically, after setting the owner, a window notifies the owner 
  11802. window of the new relationship by sending it a message. 
  11803.  
  11804. The code fragment in the following figure shows how to set the owner window and 
  11805. send it a message: 
  11806.  
  11807.     #define NEW_OWNER 1
  11808.  
  11809.     HWND hwndMyWindow;
  11810.     HWND hwndNewOwner;
  11811.  
  11812.     if (WinSetOwner(hwndMyWindow, hwndNewOwner))
  11813.  
  11814.         /* Send a notification message.                                 */
  11815.         WinSendMsg(hwndNewOwner,   /* Sends to owner                    */
  11816.             WM_CONTROL,            /* Control message for notification  */
  11817.             (MPARAM) NEW_OWNER,    /* Notification code                 */
  11818.             NULL);                 /* No extra data                     */
  11819.  
  11820. A window can have only one owner, so WinSetOwner removes any previous owner. 
  11821.  
  11822.  
  11823. ΓòÉΓòÉΓòÉ 17.2.7. Retrieving the Handle of a Child or Owned Window ΓòÉΓòÉΓòÉ
  11824.  
  11825. A parent or owner window can retrieve the handle of a child or owned window by 
  11826. using the WinWindowFromID function and supplying the identifier of the child or 
  11827. owned window.  WinWindowFromID searches all child and owned windows to locate 
  11828. the window with the given identifier.  The window identifier is set when the 
  11829. application creates the child or owned window. 
  11830.  
  11831. Typically, an owned window uses WinQueryWindow to get the handle of the owner 
  11832. window; then uses WinSendMsg to issue a notification message to its owner 
  11833. window. 
  11834.  
  11835. The code fragment in the following figure retrieves the window handle of an 
  11836. owner window and sends the window a WM_ENABLE message. 
  11837.  
  11838.     HWND hwndOwned;
  11839.     HWND hwndOwner;
  11840.  
  11841.     case WM_CONTROL:
  11842.         switch (SHORT2FROMMP (mp2)) {
  11843.             case BN_CLICKED:
  11844.                 hwndOwned = WinWindowFromID(hwndOwner,
  11845.                 (ULONG)SHORT1FROMMP(mp1));
  11846.                 WinSendMsg(hwndOwned, WM_ENABLE,
  11847.                 (MPARAM)TRUE, (MPARAM) NULL);
  11848.                 return 0;
  11849.             .
  11850.             . /* Check for other notification codes. */
  11851.             .
  11852.  
  11853.             }
  11854.  
  11855. An application also can retrieve the handle of a child window by using the 
  11856. WinWindowFromPoint function and supplying a point in the corresponding parent 
  11857. window. 
  11858.  
  11859.  
  11860. ΓòÉΓòÉΓòÉ 17.2.8. Enumerating Top-Level Windows ΓòÉΓòÉΓòÉ
  11861.  
  11862. An application can enumerate all top-level windows in the system by using the 
  11863. WinBeginEnumWindows and WinGetNextWindow functions.  An application also can 
  11864. create a list of all child windows for a given parent window using 
  11865. WinBeginEnumWindows.  This list contains the window handles of immediate child 
  11866. windows.  By using WinGetNextWindow, the application then can retrieve the 
  11867. window handles, one at a time, from the list.  When the application has 
  11868. finished using the list, it must release the list with the WinEndEnumWindows 
  11869. function. 
  11870.  
  11871. The code fragment in the following figure shows how to enumerate all top-level 
  11872. windows (all immediate child windows of the desktop window): 
  11873.  
  11874.  
  11875.     HWND hwndTop;
  11876.     HENUM henum;
  11877.  
  11878.     /* Enumerate all top-level windows.           */
  11879.  
  11880.     henum = WinBeginEnumWindows(HWND_DESKTOP);
  11881.  
  11882.     /* Loop through all enumerated windows.       */
  11883.     while (hwndTop = WinGetNextWindow(henum)) {
  11884.         .
  11885.         . /* Perform desired task on each window. */
  11886.         .
  11887.     }
  11888.  
  11889.     WinEndEnumWindows(henum);
  11890.  
  11891.  
  11892. ΓòÉΓòÉΓòÉ 17.2.9. Moving and Sizing a Window ΓòÉΓòÉΓòÉ
  11893.  
  11894. An application can move a window by using the WinSetWindowPos function and 
  11895. specifying the SWP_MOVE constant.  The function changes the position of the 
  11896. window to the specified position.  The position is always given in coordinates 
  11897. relative to the parent window. 
  11898.  
  11899. The code fragment in the following figure moves the window to the position 
  11900. (10,10): 
  11901.  
  11902.     HWND hwnd;
  11903.  
  11904.     WinSetWindowPos(
  11905.         hwnd,                 /* Window handle                  */
  11906.         NULL,                 /* Not used for moving and sizing */
  11907.         10, 10,               /* New position                   */
  11908.         0, 0,                 /* Not used for moving            */
  11909.         SWP_MOVE);            /* Move window                    */
  11910.  
  11911. An application can set the size of a window by using the WinSetWindowPos 
  11912. function and specifying the SWP_SIZE constant.  WinSetWindowPos changes the 
  11913. width and height of the window to the specified width and height. 
  11914.  
  11915. An application can combine moving and sizing in a single function call, as 
  11916. shown in the following figure. 
  11917.  
  11918.  
  11919.     HWND hwnd;
  11920.  
  11921.     WinSetWindowPos(
  11922.         hwnd,                 /* Window handle                  */
  11923.         NULL,                 /* Not used for moving and sizing */
  11924.         10, 10,               /* New position                   */
  11925.         200, 200,             /* Width and height               */
  11926.         SWP_MOVE | SWP_SIZE); /* Move and size window.          */
  11927.  
  11928. An application can retrieve the current size and position of a window by using 
  11929. the WinQueryWindowPos function.  This function copies the current information 
  11930. to an SWP structure. 
  11931.  
  11932. The code fragment in the following figure uses the current size and position to 
  11933. change the height of the window, leaving the width and position unchanged. 
  11934.  
  11935.  
  11936.     HWND hwnd;
  11937.     SWP swp;
  11938.  
  11939.     WinQueryWindowPos(hwnd, &swp);
  11940.     WinSetWindowPos(
  11941.         hwnd,                /* Window handle                  */
  11942.         NULL,                /* Not used for moving and sizing */
  11943.         0, 0,                /* Not used for sizing            */
  11944.         swp.cx,              /* Current width                  */
  11945.         swp.cy + 200,        /* New height                     */
  11946.         SWP_SIZE);           /* Change the size.               */
  11947.  
  11948. An application also can move and change the size of several windows at once by 
  11949. using the WinSetMultWindowPos function.  This function takes an array of SWP 
  11950. structures.  Each structure specifies the window to be moved or changed. 
  11951.  
  11952. An application can move and size a window even if it is not visible, although 
  11953. the user is not able to see the effects of the moving and sizing until the 
  11954. window is visible. 
  11955.  
  11956.  
  11957. ΓòÉΓòÉΓòÉ 17.2.10. Redrawing Windows ΓòÉΓòÉΓòÉ
  11958.  
  11959. When the system moves a window or changes its size, it can invalidate all or 
  11960. part of that window.  The system attempts to preserve the contents of the 
  11961. window and copy them to the new position; however, if the window's size is 
  11962. increased, the window must fill the area exposed by the size change.  If a 
  11963. window is moved from behind an overlapping window, any area formerly obscured 
  11964. by the other window must be drawn.  In these cases, the system invalidates the 
  11965. exposed areas and sends a WM_PAINT message to the window. 
  11966.  
  11967. An application can require that the system invalidate an entire window every 
  11968. time the window moves or changes size.  To do this, the application sets the 
  11969. CS_SIZEREDRAW class style in the corresponding window class.  Typically, this 
  11970. class style is selected for use in an application that uses a window's current 
  11971. size and position to determine how to draw the window.  For example, a clock 
  11972. application always would draw the face of the clock so that it filled the 
  11973. window exactly. 
  11974.  
  11975. An application also can explicitly specify which parts of the window to 
  11976. preserve during a move or size change.  Before any change is made, the system 
  11977. sends a WM_CALCVALIDRECTS message to windows that do not have the style 
  11978. CS_SIZEREDRAW.  This enables the window procedure to specify what part of the 
  11979. window to save and where to align it after the move or size change. 
  11980.  
  11981.  
  11982. ΓòÉΓòÉΓòÉ 17.2.11. Changing the Z-Order of Windows ΓòÉΓòÉΓòÉ
  11983.  
  11984. An application can move a window to the top or bottom of the z-order by passing 
  11985. the SWP_ZORDER constant to the WinSetWindowPos function. An application 
  11986. specifies where to move the window by specifying the HWND_TOP or HWND_BOTTOM 
  11987. constants. 
  11988.  
  11989. The code fragment in the following figure uses WinSetWindowPos to change the 
  11990. z-order of a window. 
  11991.  
  11992.     HWND hwndParent;
  11993.     HWND hwndNext;
  11994.     HENUM henum;
  11995.  
  11996.         WinSetWindowPos(
  11997.             hwndNext,       /* Next window to move  */
  11998.             HWND_TOP,       /* Put window on top    */
  11999.             0, 0, 0, 0,     /* Not used for z-order */
  12000.             SWP_ZORDER);    /* Change z-order       */
  12001.  
  12002. An application also can specify the window that the given window is to move 
  12003. behind.  In this case, the application specifies the window handle instead of 
  12004. the HWND_TOP or HWND_BOTTOM constant. 
  12005.  
  12006.     HWND hwndParent;
  12007.     HWND hwndNext;
  12008.     HWND hwndExchange;
  12009.     HENUM henum;
  12010.  
  12011.     henum = WinBeginEnumWindows(hwndParent);
  12012.  
  12013.     hwndExchange = WinGetNextWindow(henum);
  12014.  
  12015.                         /* hwndNext has top window;
  12016.             hwndExchange has window under the top. */
  12017.  
  12018.     WinSetWindowPos(
  12019.         hwndNext,       /* Next window to move     */
  12020.         hwndExchange,   /* Put lower window on top */
  12021.         0, 0, 0, 0,     /* Not used for z-order    */
  12022.         SWP_ZORDER);    /* Change z-order          */
  12023.  
  12024.     WinEndEnumWindows(henum);
  12025.  
  12026.  
  12027. ΓòÉΓòÉΓòÉ 17.2.12. Showing or Hiding a Window ΓòÉΓòÉΓòÉ
  12028.  
  12029. An application can show or hide a window by using the WinShowWindow function. 
  12030. This function changes the WS_VISIBLE style of a window to the specified 
  12031. setting.  An application can also use the WinIsWindowVisible function to check 
  12032. the visibility of a window.  This function returns TRUE if the window is 
  12033. visible. 
  12034.  
  12035.  
  12036. ΓòÉΓòÉΓòÉ 17.2.13. Maximizing, Minimizing, and Restoring a Frame Window ΓòÉΓòÉΓòÉ
  12037.  
  12038. An application can maximize, minimize, or restore a frame window by using the 
  12039. WinSetWindowPos function and specifying the constant SWP_MAXIMIZE, 
  12040. SWP_MINIMIZE, or SWP_RESTORE.  Only a frame window can maximize and minimize by 
  12041. default.  For any other window, an application must provide support for these 
  12042. actions in the corresponding window procedure. 
  12043.  
  12044. The following figure shows how to maximize a frame window. 
  12045.  
  12046.  
  12047.     SWP swpCurrent;
  12048.     HWND hwndFrame;
  12049.  
  12050.     WinQueryWindowPos(hwndFrame, &swpCurrent);
  12051.     WinSetWindowPos(
  12052.         hwndFrame,           /* Window handle               */
  12053.         NULL,                /* Not used to maximize        */
  12054.         swpCurrent.x,
  12055.         swpCurrent.y,        /* Stored for restoring window */
  12056.         swpCurrent.cx,
  12057.         swpCurrent.cy,       /* Stored for restoring window */
  12058.         SWP_MAXIMIZE | SWP_SIZE | SWP_MOVE);    /* Maximize */
  12059.  
  12060.  
  12061. ΓòÉΓòÉΓòÉ 17.2.14. Destroying a Window ΓòÉΓòÉΓòÉ
  12062.  
  12063. An application can destroy a window by using the WinDestroyWindow function. The 
  12064. following figure shows how to create and then destroy a control window: 
  12065.  
  12066.     HWND hwndCtrl;
  12067.     HWND hwndParent;
  12068.  
  12069.     hwndCtrl = WinCreateWindow(hwndParent, WC_BUTTON, ...);
  12070.  
  12071.     WinDestroyWindow(hwndCtrl);
  12072.  
  12073.  
  12074. ΓòÉΓòÉΓòÉ 18. Window Classes ΓòÉΓòÉΓòÉ
  12075.  
  12076. A window class determines which styles and which window procedure are given to 
  12077. a window when it is created.  This chapter explains how a PM application 
  12078. creates and uses window classes. 
  12079.  
  12080.  
  12081. ΓòÉΓòÉΓòÉ 18.1. About Window Classes ΓòÉΓòÉΓòÉ
  12082.  
  12083. Every window is a member of a window class.  An application must specify a 
  12084. window class when it creates a window.  Each window class has an associated 
  12085. window procedure that is used by all windows of the same class.  The window 
  12086. procedure handles messages for all windows of that class and, therefore, 
  12087. controls the behavior and appearance of the window. 
  12088.  
  12089. A window class must be registered before an application can create a window of 
  12090. that class.  Registering a window class associates a window procedure and class 
  12091. styles with a class name.  When an application specifies the class name in a 
  12092. window-creation function such as WinCreateWindow, the system creates a window 
  12093. that uses the window procedure and styles associated with the class name. 
  12094.  
  12095. An application can register private classes or use preregistered public window 
  12096. classes. 
  12097.  
  12098.  
  12099. ΓòÉΓòÉΓòÉ 18.1.1. Private Window Classes ΓòÉΓòÉΓòÉ
  12100.  
  12101. A private window class is any class registered within an application.  An 
  12102. application registers a private class by calling the WinRegisterClass function. 
  12103. A private class cannot be shared with other applications.  When an application 
  12104. terminates, the system removes any data associated with the application's 
  12105. private window classes. 
  12106.  
  12107. An application can register a private class anytime but, typically, does so as 
  12108. part of application initialization.  To register a private class during 
  12109. application initialization, the application also must call WinInitialize and, 
  12110. usually, WinCreateMsgQueue before class registration. 
  12111.  
  12112. An application cannot de-register a private window class; it remains registered 
  12113. and available until the application terminates. 
  12114.  
  12115. When an application registers a private window class, it must supply the 
  12116. following information: 
  12117.  
  12118.      Class name 
  12119.      Class styles 
  12120.      Window procedure 
  12121.      Window data size 
  12122.  
  12123.  
  12124. ΓòÉΓòÉΓòÉ 18.1.1.1. Class Name ΓòÉΓòÉΓòÉ
  12125.  
  12126. The class name identifies the window class.  The application uses this name in 
  12127. the window-creation functions to specify the class of the window being created. 
  12128. The class name can be a character string or an atom, and it must be unique 
  12129. within the application.  The system checks as to whether a public class or a 
  12130. class already registered by the application has the same name.  If the class 
  12131. name is not unique to that application, the system returns an error. 
  12132.  
  12133.  
  12134. ΓòÉΓòÉΓòÉ 18.1.1.2. Class Styles ΓòÉΓòÉΓòÉ
  12135.  
  12136. Each window class has one or more values, called class styles, that tell the 
  12137. system which initial window styles to give a window created with that class. 
  12138. An application sets the class styles for a private window class when it 
  12139. registers the class.  Once a class is registered, the application cannot change 
  12140. the styles. 
  12141.  
  12142. An application can specify one or more of the following class styles in the 
  12143. WinRegisterClass function, combining them as necessary by using the bitwise OR 
  12144. operator: 
  12145.  
  12146. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12147. ΓöéStyle Name     ΓöéDescription                                  Γöé
  12148. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12149. ΓöéCS_CLIPCHILDRENΓöéPrevents a window from painting over its     Γöé
  12150. Γöé               Γöéchild windows, but increases the time        Γöé
  12151. Γöé               Γöénecessary to calculate the visible region.   Γöé
  12152. Γöé               ΓöéThis style usually is not necessary, because Γöé
  12153. Γöé               Γöéif the parent and child windows overlap and  Γöé
  12154. Γöé               Γöéare both invalidated, the operating system   Γöé
  12155. Γöé               Γöédraws the parent window before drawing the   Γöé
  12156. Γöé               Γöéchild window. If the child window is         Γöé
  12157. Γöé               Γöéinvalidated independently of the parent      Γöé
  12158. Γöé               Γöéwindow, the system redraws only the child    Γöé
  12159. Γöé               Γöéwindow. If the update region of the parent   Γöé
  12160. Γöé               Γöéwindow does not intersect the child window,  Γöé
  12161. Γöé               Γöédrawing the parent window causes the child   Γöé
  12162. Γöé               Γöéwindow to be redrawn. This style is useful toΓöé
  12163. Γöé               Γöéprevent a child window containing a complex  Γöé
  12164. Γöé               Γöégraphic from being redrawn unnecessarily.    Γöé
  12165. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12166. ΓöéCS_CLIPSIBLINGSΓöéPrevents a window from painting over its     Γöé
  12167. Γöé               Γöésibling windows. This style protects sibling Γöé
  12168. Γöé               Γöéwindows but increases the time necessary to  Γöé
  12169. Γöé               Γöécalculate the visible region. This style is  Γöé
  12170. Γöé               Γöéappropriate for windows that overlap and haveΓöé
  12171. Γöé               Γöéthe same parent window.                      Γöé
  12172. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12173. ΓöéCS_FRAME       ΓöéIdentifies the window as a frame window.     Γöé
  12174. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12175. ΓöéCS_HITTEST     ΓöéDirects the operating system to send         Γöé
  12176. Γöé               ΓöéWM_HITTEST messages to the window whenever   Γöé
  12177. Γöé               Γöéthe mouse pointer moves in the window.       Γöé
  12178. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12179. ΓöéCS_MOVENOTIFY  ΓöéDirects the system to send WM_MOVE messages  Γöé
  12180. Γöé               Γöéto the window whenever the user moves the    Γöé
  12181. Γöé               Γöéwindow.                                      Γöé
  12182. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12183. ΓöéCS_PARENTCLIP  ΓöéExtends a window's visible region to include Γöé
  12184. Γöé               Γöéthat of its parent window. This style        Γöé
  12185. Γöé               Γöésimplifies the calculation of the child      Γöé
  12186. Γöé               Γöéwindow's visible region but, potentially, is Γöé
  12187. Γöé               Γöédangerous, because the parent window's       Γöé
  12188. Γöé               Γöévisible region is usually larger than the    Γöé
  12189. Γöé               Γöéchild window.                                Γöé
  12190. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12191. ΓöéCS_SAVEBITS    ΓöéSaves the screen area under a window as a bitΓöé
  12192. Γöé               Γöémap. When the user hides or moves the window,Γöé
  12193. Γöé               Γöéthe system restores the image by copying the Γöé
  12194. Γöé               Γöébits; there is no need to add the area to theΓöé
  12195. Γöé               Γöéuncovered window's update region. This style Γöé
  12196. Γöé               Γöécan improve system performance, but also can Γöé
  12197. Γöé               Γöéconsume a great deal of memory. It is        Γöé
  12198. Γöé               Γöérecommended only for transient windows such  Γöé
  12199. Γöé               Γöéas menus and dialog windows-not for main     Γöé
  12200. Γöé               Γöéapplication windows.                         Γöé
  12201. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12202. ΓöéCS_SIZEREDRAW  ΓöéCauses the window to receive a WM_PAINT      Γöé
  12203. Γöé               Γöémessage and be completely invalidated        Γöé
  12204. Γöé               Γöéwhenever the window is resized, even if it isΓöé
  12205. Γöé               Γöémade smaller. (Typically, only the uncovered Γöé
  12206. Γöé               Γöéarea of a window is invalidated when a windowΓöé
  12207. Γöé               Γöéis resized.) This class style is useful when Γöé
  12208. Γöé               Γöéan application scales graphics to fill the   Γöé
  12209. Γöé               Γöéwindow.                                      Γöé
  12210. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12211. ΓöéCS_SYNCPAINT   ΓöéCauses the window to receive WM_PAINT        Γöé
  12212. Γöé               Γöémessages immediately after a part of the     Γöé
  12213. Γöé               Γöéwindow becomes invalid. Without this style,  Γöé
  12214. Γöé               Γöéthe window receives WM_PAINT messages only ifΓöé
  12215. Γöé               Γöéno other message is waiting to be processed. Γöé
  12216. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12217.  
  12218.  
  12219. ΓòÉΓòÉΓòÉ 18.1.1.3. Window Procedure ΓòÉΓòÉΓòÉ
  12220.  
  12221. The window procedure for a window class processes all messages sent or posted 
  12222. to all windows of that class.  It is the chief component of the window class 
  12223. because it controls the appearance and behavior of each window created with the 
  12224. class.  Window procedures are shared by all windows of a class, so an 
  12225. application must ensure that no conflicts arise when two windows of the same 
  12226. class attempt to access the same global data.  In other words, the window 
  12227. procedure must protect global data and other shared resources. 
  12228.  
  12229.  
  12230. ΓòÉΓòÉΓòÉ 18.1.1.4. Window Data Size ΓòÉΓòÉΓòÉ
  12231.  
  12232. The system creates a window data structure for each window, which includes 
  12233. extra space that an application can use to store additional data about a 
  12234. window.  An application specifies the number of extra bytes to allocate in the 
  12235. WinRegisterClass function.  All windows of the same class have the same amount 
  12236. of window data space. 
  12237.  
  12238. An application can store window data in a window's data structure by using the 
  12239. WinSetWindowUShort and WinSetWindowULong functions.  It can retrieve data by 
  12240. using the WinQueryWindowUShort and WinQueryWindowULong functions. 
  12241.  
  12242.  
  12243. ΓòÉΓòÉΓòÉ 18.1.1.5. Custom Window Styles ΓòÉΓòÉΓòÉ
  12244.  
  12245. An application that registers a window class also can support its own set of 
  12246. styles for windows of that class.  Standard window styles-for example, 
  12247. WS_VISIBLE and WS_SYNCPAINT-still apply to these windows.  A window style is a 
  12248. 32-bit integer, and only the high 16 bits are used for the standard window 
  12249. styles; an application can use the low 16 bits for custom styles specific to a 
  12250. window class. 
  12251.  
  12252. The operating system has unique window styles for all preregistered window 
  12253. classes.  Styles such as FS_BORDER and BS_PUSHBUTTON are processed by the 
  12254. window procedure for the corresponding class.  This means that an application 
  12255. can build the support for its own window styles into the window procedure for 
  12256. its private class.  A window style designed for one window class will not work 
  12257. with another window class. 
  12258.  
  12259.  
  12260. ΓòÉΓòÉΓòÉ 18.1.2. Public Window Classes ΓòÉΓòÉΓòÉ
  12261.  
  12262. Public window classes are registered during system initialization.  Their 
  12263. window procedures are in dynamic link libraries.  Therefore, to use a public 
  12264. window class, an application need not register it.  Nor does the application 
  12265. need to import the window procedure for a public window class because the 
  12266. system resolves references to the window procedure. 
  12267.  
  12268. An application cannot use a public window class name when it registers a 
  12269. private window class. 
  12270.  
  12271.  
  12272. ΓòÉΓòÉΓòÉ 18.1.2.1. System-Defined Public Window Classes ΓòÉΓòÉΓòÉ
  12273.  
  12274. The system provides a number of public window classes that support menus, frame 
  12275. windows, control windows, and dialog windows.  An application can create a 
  12276. window of a system-defined public window class by specifying one of the 
  12277. following class name constants in a call to WinCreateWindow: 
  12278.  
  12279. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12280. ΓöéClass Name     ΓöéDescription                                  Γöé
  12281. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12282. ΓöéWC_BUTTON      ΓöéConsists of buttons and boxes the user can   Γöé
  12283. Γöé               Γöéselect by clicking the pointing device or    Γöé
  12284. Γöé               Γöéusing the keyboard.                          Γöé
  12285. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12286. ΓöéWC_COMBOBOX    ΓöéCreates a combination-box control, which     Γöé
  12287. Γöé               Γöécombines a list-box control and an           Γöé
  12288. Γöé               Γöéentry-field control. It enables the user to  Γöé
  12289. Γöé               Γöéenter data either by typing in the entry     Γöé
  12290. Γöé               Γöéfield or by choosing from the list in the    Γöé
  12291. Γöé               Γöélist box.                                    Γöé
  12292. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12293. ΓöéWC_CONTAINER   ΓöéCreates a control in which the user can groupΓöé
  12294. Γöé               Γöéobjects in a logical manner.  A container canΓöé
  12295. Γöé               Γöédisplay those objects in various formats or  Γöé
  12296. Γöé               Γöéviews.  The container control supports drag  Γöé
  12297. Γöé               Γöéand drop so the user can place information inΓöé
  12298. Γöé               Γöéa container by simply dragging and dropping. Γöé
  12299. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12300. ΓöéWC_ENTRYFIELD  ΓöéConsists of a single line of text that the   Γöé
  12301. Γöé               Γöéuser can edit.                               Γöé
  12302. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12303. ΓöéWC_FRAME       ΓöéA composite window class that can contain    Γöé
  12304. Γöé               Γöéchild windows of many of the other window    Γöé
  12305. Γöé               Γöéclasses.                                     Γöé
  12306. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12307. ΓöéWC_LISTBOX     ΓöéPresents a list of text items from which the Γöé
  12308. Γöé               Γöéuser can make selections.                    Γöé
  12309. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12310. ΓöéWC_MENU        ΓöéPresents a list of items that can be         Γöé
  12311. Γöé               Γöédisplayed horizontally as menu bars, or      Γöé
  12312. Γöé               Γöévertically as pull-down menus.  Usually menusΓöé
  12313. Γöé               Γöéare used to provide a command interface to   Γöé
  12314. Γöé               Γöéapplications.                                Γöé
  12315. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12316. ΓöéWC_NOTEBOOK    ΓöéCreates a control for the user that is       Γöé
  12317. Γöé               Γöédisplayed as a number of pages.  The top pageΓöé
  12318. Γöé               Γöéis visible, and the others are hidden, with  Γöé
  12319. Γöé               Γöétheir presence being indicated by a visible  Γöé
  12320. Γöé               Γöéedge on each of the back pages.              Γöé
  12321. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12322. ΓöéWC_SCROLLBAR   ΓöéConsists of window scroll bars that let the  Γöé
  12323. Γöé               Γöéuser scroll the contents of the associated   Γöé
  12324. Γöé               Γöéwindow.                                      Γöé
  12325. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12326. ΓöéWC_SLIDER      ΓöéCreates a control that is usable for         Γöé
  12327. Γöé               Γöéproducing approximate (analog) values or     Γöé
  12328. Γöé               Γöéproperties.  Scroll bars were used for this  Γöé
  12329. Γöé               Γöéfunction in the past, but the slider providesΓöé
  12330. Γöé               Γöéa more flexible method of achieving the same Γöé
  12331. Γöé               Γöéresult, with less programming effort.        Γöé
  12332. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12333. ΓöéWC_SPINBUTTON  ΓöéCreates a control that presents itself to theΓöé
  12334. Γöé               Γöéuser as a scrollable ring of choices, giving Γöé
  12335. Γöé               Γöéthe user quick access to the data.  The user Γöé
  12336. Γöé               Γöéis presented only one item at a time, so the Γöé
  12337. Γöé               Γöéspin button should be used with data that is Γöé
  12338. Γöé               Γöéintuitively related.                         Γöé
  12339. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12340. ΓöéWC_STATIC      ΓöéSimple display items that do not respond to  Γöé
  12341. Γöé               Γöékeyboard or pointing device events.          Γöé
  12342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12343. ΓöéWC_TITLEBAR    ΓöéDisplays the window title or caption and letsΓöé
  12344. Γöé               Γöéthe user move the window's owner.            Γöé
  12345. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12346. ΓöéWC_VALUESET    ΓöéCreates a control similar in function to     Γöé
  12347. Γöé               Γöéradio buttons but provides additional        Γöé
  12348. Γöé               Γöéflexibility to display graphical, textual,   Γöé
  12349. Γöé               Γöéand numeric formats.  The values set with    Γöé
  12350. Γöé               Γöéthis control are mutually exclusive.         Γöé
  12351. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12352.  
  12353. Each system-defined public window class has a corresponding set of window 
  12354. styles that an application can use to customize a window of that class.  For 
  12355. example, a window created with the WC_BUTTON class has styles that include 
  12356. BS_PUSHBUTTON and BS_CHECKBOX.  Window styles enable you to customize aspects 
  12357. of a window's behavior and appearance.  The application specifies the window 
  12358. styles in the WinCreateWindow function. 
  12359.  
  12360.  
  12361. ΓòÉΓòÉΓòÉ 18.1.2.2. Custom Public Window Classes ΓòÉΓòÉΓòÉ
  12362.  
  12363. An application can create a custom public window class, but it must do so 
  12364. during system initialization.  Only the shell can register a public window 
  12365. class, and it can do so only when the system starts.  Registering a public 
  12366. window class requires a special load entry in the os2.ini file.  That entry 
  12367. instructs the shell to load a dynamic link library whose initialization routine 
  12368. registers the window class.  Custom public window classes must be registered 
  12369. using WinRegisterClass and must have the class style CS_PUBLIC.  If a custom 
  12370. public window class registered this way has the same name as an existing public 
  12371. window class, the custom class replaces the original class. 
  12372.  
  12373. If a dynamic link library replaces an existing public window class, the library 
  12374. can save the address of the original window procedure and use the address to 
  12375. subclass the original window class.  The dynamic link library retrieves the 
  12376. original window procedure address using the WinQueryClassInfo function.  The 
  12377. custom window procedure then passes unprocessed messages to the original window 
  12378. procedure instead of calling WinDefWindowProc. 
  12379.  
  12380. When subclassing a public window class, the custom public window procedure must 
  12381. not make the window data size smaller than the original window data size, 
  12382. because all public window classes that the operating system defines use 4 extra 
  12383. bytes for storing a pointer to custom window data.  This size is guaranteed 
  12384. only for public window classes defined by the operating system dynamic link 
  12385. libraries. 
  12386.  
  12387.  
  12388. ΓòÉΓòÉΓòÉ 18.1.3. Class Data ΓòÉΓòÉΓòÉ
  12389.  
  12390. An application can examine public window class data by using the 
  12391. WinQueryClassInfo and WinQueryClassName functions.  An application retrieves 
  12392. the name of the class for a given window by using the WinQueryClassName 
  12393. function.  If the window is one of the preregistered public window classes, the 
  12394. name returned is in the form #nnnnn, where nnnnn is up to 5 digits, 
  12395. representing the value of the window class constant.  Using this window class 
  12396. name, the application can call WinQueryClassInfo to retrieve the window class 
  12397. data.  WinQueryClassInfo copies the class style, window procedure address, and 
  12398. window data size to a CLASSINFO data structure. 
  12399.  
  12400.  
  12401. ΓòÉΓòÉΓòÉ 18.2. Using Window Classes ΓòÉΓòÉΓòÉ
  12402.  
  12403. This section explains how to perform the following tasks: 
  12404.  
  12405.      Register a private window class 
  12406.      Register an imported window procedure 
  12407.  
  12408.  
  12409. ΓòÉΓòÉΓòÉ 18.2.1. Registering a Private Window Class ΓòÉΓòÉΓòÉ
  12410.  
  12411. An application can register a private window class at any time by using the 
  12412. WinRegisterClass function.  You must define the window procedure in the 
  12413. application, choose a unique name, and set the window styles for the class. The 
  12414. following code fragment shows how to register the window class name 
  12415. "MyPrivateClass": 
  12416.  
  12417.  
  12418.     MRESULT EXPENTRY ClientWndProc(HWND hwnd,ULONG msg,MPARAM mp1, MPARAM mp2);
  12419.  
  12420.     HAB hab;
  12421.  
  12422.     WinRegisterClass(hab,      /* Anchor block handle            */
  12423.         "MyPrivateClass",      /* Name of class being registered */
  12424.         ClientWndProc,         /* Window procedure for class     */
  12425.         CS_SIZEREDRAW |        /* Class style                    */
  12426.         CS_HITTEST,            /* Class style                    */
  12427.         0);                    /* Extra bytes to reserve         */
  12428.  
  12429.  
  12430. ΓòÉΓòÉΓòÉ 19. Window Procedures ΓòÉΓòÉΓòÉ
  12431.  
  12432. Windows have an associated window procedure-a function that processes all 
  12433. messages sent or posted to a window.  Every aspect of a window's appearance and 
  12434. behavior depends on the window procedure's response to the messages.  This 
  12435. chapter explains how window procedures function, in general, and describes the 
  12436. default window procedure. 
  12437.  
  12438.  
  12439. ΓòÉΓòÉΓòÉ 19.1. About Window Procedures ΓòÉΓòÉΓòÉ
  12440.  
  12441. Every window belongs to a window class that determines which window procedure a 
  12442. particular window uses to process its messages.  All windows of the same class 
  12443. use the same window procedure.  For example, the operating system defines a 
  12444. window procedure for the frame window class (WC_FRAME), and all frame windows 
  12445. use that window procedure. 
  12446.  
  12447. An application typically defines at least one new window class and an 
  12448. associated window procedure.  Then, the application can create many windows of 
  12449. that class, all of which use the same window procedure.  This means that the 
  12450. same piece of code can be called from several sources simultaneously; 
  12451. therefore, you must be careful when modifying shared resources from a window 
  12452. procedure. 
  12453.  
  12454. Dialog procedures have the same structure and function as window procedures. 
  12455. The primary difference between a dialog procedure and a window procedure is the 
  12456. absence of a client window in the dialog procedure; that is, the controls in a 
  12457. dialog procedure are the immediate child windows of the frame, whereas the 
  12458. controls in a normal window are the grandchildren of the frame.  This makes 
  12459. significant differences in the code between the two; for example, 
  12460. WinSendDlgItemMsg does not work from a client window if you pass the client 
  12461. window handle as the first parameter. 
  12462.  
  12463.  
  12464. ΓòÉΓòÉΓòÉ 19.1.1. Structure of a Window Procedure ΓòÉΓòÉΓòÉ
  12465.  
  12466. A window procedure is a function that takes 4 arguments and returns a 32-bit 
  12467. pointer.  The arguments of a window procedure consist of a window handle, a 
  12468. ULONG message identifier, and two arguments, called message parameters, that 
  12469. are declared with the MPARAM data type.  The system defines an MPARAM as a 
  12470. 32-bit pointer to a VOID data type (a generic pointer).  The message parameters 
  12471. actually might contain any of the standard data types.  The message parameters 
  12472. are interpreted differently,depending on the value of the message identifier. 
  12473. The operating system includes several macros that enable the application to 
  12474. cast the information from the MPARAM values into the actual data type. 
  12475. SHORT1FROMMP, for example, extracts a 16-bit value from a 32-bit MPARAM. The 
  12476. window-procedure arguments are described in the following table: 
  12477.  
  12478. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12479. ΓöéArgument       ΓöéDescription                                  Γöé
  12480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12481. Γöéhwnd           ΓöéHandle of the window receiving the message.  Γöé
  12482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12483. Γöémsg            ΓöéMessage identifier. The message will         Γöé
  12484. Γöé               Γöécorrespond to one of the predefined constantsΓöé
  12485. Γöé               Γöé(for example, WM_CREATE) defined in the      Γöé
  12486. Γöé               Γöésystem include files or be an                Γöé
  12487. Γöé               Γöéapplication-defined message identifier.  The Γöé
  12488. Γöé               Γöévalue of an application-defined message      Γöé
  12489. Γöé               Γöéidentifier must be greater than the value of Γöé
  12490. Γöé               ΓöéWM_USER, and less than or equal to 0xffff.   Γöé
  12491. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12492. Γöémp1,mp2        ΓöéMessage parameters. Their interpretation     Γöé
  12493. Γöé               Γöédepends on the particular message.           Γöé
  12494. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12495.  
  12496. The return value of a window procedure is defined as an MRESULT data type.  The 
  12497. interpretation of the return value depends on the particular message.  Consult 
  12498. the description of each message to determine the appropriate return value. 
  12499.  
  12500.  
  12501. ΓòÉΓòÉΓòÉ 19.1.2. Default Window Procedure ΓòÉΓòÉΓòÉ
  12502.  
  12503. All windows in the system share certain fundamental behavior, defined in the 
  12504. default window-procedure function, WinDefWindowProc.  The default window 
  12505. procedure provides the minimal functionality for a window.  An 
  12506. application-defined window procedure should pass any messages it does not 
  12507. process to WinDefWindowProc for default processing. 
  12508.  
  12509.  
  12510. ΓòÉΓòÉΓòÉ 19.1.3. Window-Procedure Subclassing ΓòÉΓòÉΓòÉ
  12511.  
  12512. Subclassing enables an application to intercept and process messages sent or 
  12513. posted to a window before that window has a chance to process them. 
  12514. Subclassing most often is used to add functionality to a particular window or 
  12515. to alter a window's default behavior. 
  12516.  
  12517. An application subclasses a window by using the WinSubclassWindow function to 
  12518. replace the window's original window procedure with an application-defined 
  12519. window procedure.  Thereafter, the new window procedure processes any messages 
  12520. that are sent or posted to the window.  If the new window procedure does not 
  12521. process a particular message, it must pass the message to the original window 
  12522. procedure, not to WinDefWindowProc, for default processing. 
  12523.  
  12524.  
  12525. ΓòÉΓòÉΓòÉ 19.2. Using Window Procedures ΓòÉΓòÉΓòÉ
  12526.  
  12527. This section explains how to: 
  12528.  
  12529.      Design a window procedure 
  12530.      Associate a window procedure with a window class 
  12531.      Subclass a window 
  12532.  
  12533.  
  12534. ΓòÉΓòÉΓòÉ 19.2.1. Designing a Window Procedure ΓòÉΓòÉΓòÉ
  12535.  
  12536. The following code fragment shows the structure of a typical window procedure 
  12537. and how to use the message argument in a switch statement, with individual 
  12538. messages handled by separate case statements.  Notice that each case returns a 
  12539. specific value for each message.  For messages that it does not handle itself, 
  12540. the window procedure calls WinDefWindowProc. 
  12541.  
  12542.     MRESULT ClientWndProc(
  12543.     HWND hwnd,
  12544.     ULONG msg,
  12545.     MPARAM mp1,
  12546.     MPARAM mp2)
  12547.     {
  12548.         /* Define local variables here, if required. */
  12549.         switch (msg) {
  12550.             case WM_CREATE:
  12551.  
  12552.         /* Initialize private window data.           */
  12553.             return (MRESULT) FALSE;
  12554.  
  12555.             case WM_PAINT:
  12556.  
  12557.         /* Paint the window.                         */
  12558.             return 0;
  12559.  
  12560.             case WM_DESTROY:
  12561.  
  12562.         /* Clean up private window data.             */
  12563.             return 0;
  12564.  
  12565.             default:
  12566.             break;
  12567.          }
  12568.          return WinDefWindowProc (hwnd, msg, mp1, mp2);
  12569.     }
  12570.  
  12571. A dialog window procedure does not receive the WM_CREATE message; however, it 
  12572. does receive a WM_INITDLG message when all of its control windows have been 
  12573. created. At the very least, a window procedure should handle the WM_PAINT 
  12574. message to draw itself.  Typically, it should handle mouse and keyboard 
  12575. messages as well.  Consult the descriptions of individual messages to determine 
  12576. whether your window procedure should handle them. 
  12577.  
  12578. An application can call WinDefWindowProc as part of the processing of a 
  12579. message.  In such a case, the application can modify the message parameters 
  12580. before passing the message to WinDefWindowProc or can continue with the default 
  12581. processing after performing its own operations. 
  12582.  
  12583.  
  12584. ΓòÉΓòÉΓòÉ 19.2.2. Associating a Window Procedure with a Window Class ΓòÉΓòÉΓòÉ
  12585.  
  12586. To associate a window procedure with a window class, an application must pass a 
  12587. pointer to that window procedure to the WinRegisterClass function.  Once an 
  12588. application has registered the window procedure, the procedure automatically is 
  12589. associated with each new window created with that class. 
  12590.  
  12591. The following code fragment shows how to associate the window procedure in the 
  12592. previous example with a window class: 
  12593.  
  12594.     HAB hab;
  12595.     CHAR szClientClass[] = "My Window Class";
  12596.  
  12597.     WinRegisterClass(hab,      /* Anchor-block handle  */
  12598.         szClientClass,         /* Class name           */
  12599.         ClientWndProc,         /* Pointer to procedure */
  12600.         CS_SIZEREDRAW,         /* Class style          */
  12601.         0);                    /* Window data          */
  12602.  
  12603.  
  12604. ΓòÉΓòÉΓòÉ 19.2.3. Subclassing a Window ΓòÉΓòÉΓòÉ
  12605.  
  12606. To subclass a window, an application calls the WinSubclassWindow function, 
  12607. specifying the handle of the window to subclass and a pointer to the new window 
  12608. procedure.  The WinSubclassWindow function returns a pointer to the original 
  12609. window procedure; the application can use this pointer to pass unprocessed 
  12610. messages to the original procedure. The following code fragment subclasses a 
  12611. push button control window.  The new window procedure generates a beep whenever 
  12612. the user clicks the push button. 
  12613.  
  12614.     PFNWP pfnPushBtn;
  12615.     CHAR szCancel[] = "Cancel";
  12616.     HWND hwndClient;
  12617.     HWND hwndPushBtn;
  12618.         .
  12619.         .
  12620.         .
  12621.  
  12622.     /* Create a push button control.                  */
  12623.     hwndPushBtn = WinCreateWindow(
  12624.         hwndClient,     /* Parent-window handle       */
  12625.         WC_BUTTON,      /* Window class               */
  12626.         szCancel,       /* Window text                */
  12627.         WS_VISIBLE   |  /* Window style               */
  12628.         WS_SYNCPAINT |  /* Window style               */
  12629.         BS_PUSHBUTTON,  /* Button style               */
  12630.         50, 50,         /* Physical position          */
  12631.         70, 30,         /* Width and height           */
  12632.         hwndClient,     /* Owner-window handle        */
  12633.         HWND_TOP,       /* Z-order position           */
  12634.         1,              /* Window identifier          */
  12635.         NULL,           /* No control data            */
  12636.         NULL);          /* No presentation parameters */
  12637.  
  12638.     /* Subclass the push button control.              */
  12639.     pfnPushBtn = WinSubclassWindow(hwndPushBtn,
  12640.         SubclassPushBtnProc);
  12641.         .
  12642.         .
  12643.         .
  12644. }
  12645.     /* This procedure subclasses the push button.     */
  12646.     MRESULT EXPENTRY SubclassPushBtnProc(HWND hwnd,ULONG msg,MPARAM mp1, MPARAM mp2)
  12647.     {
  12648.         switch (msg) {
  12649.  
  12650.     /* Beep when the user clicks the push button.     */
  12651.             case WM_BUTTON1DOWN:
  12652.                 DosBeep(1000, 250);
  12653.                 break;
  12654.  
  12655.             default:
  12656.                 break;
  12657.         }
  12658.  
  12659.     /* Pass all messages to the original window procedure. */
  12660.         return (MRESULT) pfnPushBtn(hwnd, msg, mp1, mp2);
  12661.     }
  12662.  
  12663.  
  12664. ΓòÉΓòÉΓòÉ 20. Window Timers ΓòÉΓòÉΓòÉ
  12665.  
  12666. A window timer enables an application to post timer messages at specified 
  12667. intervals.  This chapter describes how to use window timers in PM applications. 
  12668.  
  12669.  
  12670. ΓòÉΓòÉΓòÉ 20.1. About Window Timers ΓòÉΓòÉΓòÉ
  12671.  
  12672. A window timer causes the system to post WM_TIMER messages to a message queue 
  12673. at specified time intervals called timeout values.  A timeout value is 
  12674. expressed in milliseconds. 
  12675.  
  12676. An application starts the timer for a given window, specifying the timeout 
  12677. value.  The system counts down approximately that number of milliseconds and 
  12678. posts a WM_TIMER message to the message queue for the corresponding window. 
  12679. The system repeats the countdown-post cycle continuously until the application 
  12680. stops the timer. 
  12681.  
  12682. The timeout value can be any value in the range from 0 through 4,294,967,295 
  12683. (full magnitude of ULONG) for OS/2 Version 3; for previous versions, the 
  12684. maximum value is 65535. However, the operating system cannot guarantee that all 
  12685. values are accurate.  The actual timeout depends on how often the application 
  12686. retrieves messages from the queue and the system clock rate.  In many 
  12687. computers, the operating system clock ticks about every 50 milliseconds, but 
  12688. this can vary widely from computer to computer.  In general, a timer message 
  12689. cannot be posted more frequently than every system clock tick.  To make the 
  12690. system post a timer message as often as possible, an application can set the 
  12691. timeout value to 0. 
  12692.  
  12693. An application starts a timer by using the WinStartTimer function.  If a window 
  12694. handle is given, the timer is created for that window.  In such case, the 
  12695. WinDispatchMsg function dispatches the WM_TIMER message to the given window 
  12696. when the message is retrieved from the message queue.  If a NULL window handle 
  12697. is given, it is up to the application to check the message queue for WM_TIMER 
  12698. messages and dispatch them to the appropriate window. 
  12699.  
  12700. A new timer starts counting down as soon as it is created.  An application can 
  12701. reset or change a timer's timeout value in subsequent calls to the 
  12702. WinStartTimer function.  To stop a timer, an application can use the 
  12703. WinStopTimer function. 
  12704.  
  12705. The system contains a limited number of timers that must be shared among all PM 
  12706. applications; each application should use as few timers as possible.  An 
  12707. application can determine how many timers currently are available by checking 
  12708. the SV_CTIMERS system value. 
  12709.  
  12710. Every timer has a unique timer identifier.  An application can request that a 
  12711. timer be created with a particular identifier or have the system choose a 
  12712. unique value.  When a WM_TIMER message is received, the timer identifier is 
  12713. contained in the first message parameter.  Timer identifiers enable an 
  12714. application to determine the source of the WM_TIMER message. Three timer 
  12715. identifiers are reserved by and for the system and cannot be used by 
  12716. applications; these system timer identifiers and their symbolic constants are 
  12717. shown in the following table: 
  12718.  
  12719. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12720. ΓöéValue          ΓöéMeaning                                      Γöé
  12721. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12722. ΓöéTID_CURSOR     ΓöéIdentifies the timer that controls cursor    Γöé
  12723. Γöé               Γöéblinking. Its timeout value is stored in the Γöé
  12724. Γöé               Γöéos2.ini file under the CursorBlinkRate       Γöé
  12725. Γöé               Γöékeyname in the PM_ControlPanel section.      Γöé
  12726. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12727. ΓöéTID_FLASHWINDOWΓöéIdentifies the window-flashing timer.        Γöé
  12728. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12729. ΓöéTID_SCROLL     ΓöéIdentifies the scroll-bar repetition timer   Γöé
  12730. Γöé               Γöéthat controls scroll-bar response when the   Γöé
  12731. Γöé               Γöémouse button or a key is held down.  Its     Γöé
  12732. Γöé               Γöétimeout value is specified by the system     Γöé
  12733. Γöé               Γöévalue SV_SCROLLRATE.                         Γöé
  12734. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12735.  
  12736. WM_TIMER messages, like WM_PAINT and semaphore messages, are not actually 
  12737. posted to a message queue.  Instead, when the time elapses, the system sets a 
  12738. record in the queue indicating which timer message was posted.  The system 
  12739. builds the WM_TIMER message when the application retrieves the message from the 
  12740. queue. 
  12741.  
  12742. Although a timer message may be in the queue, if there are any messages with 
  12743. higher priority in the queue, the application retrieves those messages first. 
  12744. If the time elapses again before the message is retrieved, the system does not 
  12745. create a separate record for this timer, meaning that the application should 
  12746. not depend on the timer messages being processed at precise intervals.  To 
  12747. check the accuracy of the message, an application can retrieve the actual 
  12748. system time by using the WinGetCurrentTime function.  Comparing the actual time 
  12749. with the time of the previous timer message is useful in determining what 
  12750. action to take for the timer. 
  12751.  
  12752.  
  12753. ΓòÉΓòÉΓòÉ 20.2. Using Window Timers ΓòÉΓòÉΓòÉ
  12754.  
  12755. There are two methods of using window timers.  In the first method, you start 
  12756. the timer by using the WinStartTimer function, supplying the window handle and 
  12757. timer identifier.  The function associates the timer with the specified window. 
  12758. The following code fragment starts two timers:  the first timer is set for 
  12759. every half second (500 milliseconds); the second, for every two seconds (2000 
  12760. milliseconds). 
  12761.  
  12762.  
  12763.     WinStartTimer(hab, /* Anchor-block handle */
  12764.         hwnd,          /* Window handle       */
  12765.         ID_TIMER1,     /* Timer identifier    */
  12766.         500);          /* 500 milliseconds    */
  12767.  
  12768.     WinStartTimer(hab, /* Anchor-block handle */
  12769.         hwnd,          /* Window handle       */
  12770.         ID_TIMER2,     /* Timer identifier    */
  12771.         2000);         /* 2000 milliseconds   */
  12772.  
  12773. Once these timers are started, the WinDispatchMsg function dispatches WM_TIMER 
  12774. messages to the appropriate window.  To process these messages, add a WM_TIMER 
  12775. case to the window procedure for the given window.  By checking the first 
  12776. parameter of the WM_TIMER message, you can identify a particular timer, then 
  12777. carry out the actions related to it.  The following code fragment shows how to 
  12778. process WM_TIMER messages: 
  12779.  
  12780.  
  12781.     case WM_TIMER:
  12782.         switch (SHORT1FROMMP(mp1)) { /* Obtains timer identifier */
  12783.             case ID_TIMER1:
  12784.                 .
  12785.                 . /* Carry out timer-related tasks.              */
  12786.                 .
  12787.                 return 0;
  12788.  
  12789.             case ID_TIMER2:
  12790.                 .
  12791.                 . /* Carry out timer-related tasks.              */
  12792.                 .
  12793.                 return 0;
  12794.         }
  12795.  
  12796. In the second method of using a timer, you specify NULL as the hwnd parameter 
  12797. of the WinStartTimer call.  The system starts a timer that has no associated 
  12798. window and assigns an arbitrary timer identifier.  The following code fragment 
  12799. starts two window timers using this method: 
  12800.  
  12801.     ULONG idTimer1, idTimer2;
  12802.  
  12803.     idTimer1 = WinStartTimer(hab, (HWND) NULL, 0, 500);
  12804.     idTimer2 = WinStartTimer(hab, (HWND) NULL, 0, 2000);
  12805.  
  12806. These timers have no associated window, so the application must check the 
  12807. message queue for WM_TIMER messages and dispatch them to the appropriate window 
  12808. procedure.  The following code fragment shows a message loop that handles the 
  12809. window timers: 
  12810.  
  12811.     HWND hwndTimerHandler; /* Handle of window for timer messages */
  12812.     QMSG qmsg;             /* Queue-message structure             */
  12813.  
  12814.     while (WinGetMsg(hab, &qmsg, (HWND) NULL, 0, 0)) {
  12815.         if (qmsg.msg == WM_TIMER)
  12816.             qmsg.hwnd = hwndTimerHandler;
  12817.         WinDispatchMsg(hab, &qmsg);
  12818.     }
  12819.  
  12820. You can use the WinStopTimer function at any time to stop a timer.  The 
  12821. following code fragment demonstrates how to stop a timer: 
  12822.  
  12823.  
  12824.     WinStopTimer(hab, hwnd, ID_TIMER1);      /* Stops first timer */
  12825.  
  12826.  
  12827. ΓòÉΓòÉΓòÉ 21. Appendices ΓòÉΓòÉΓòÉ
  12828.  
  12829. This section contains several topics related to Presentation Manager 
  12830. programming. 
  12831.  
  12832.  
  12833. ΓòÉΓòÉΓòÉ 21.1. Bit-Map Formats ΓòÉΓòÉΓòÉ
  12834.  
  12835. There are four standard bit-map formats. All device drivers must be able to 
  12836. translate between any of these formats and their own internal formats. The 
  12837. standard formats are: 
  12838.  
  12839.  Bitcount        Planes 
  12840.  1               1 
  12841.  4               1 
  12842.  8               1 
  12843.  24              1 
  12844.  
  12845.  These formats are chosen because they are identical or similar to all formats 
  12846.  commonly used by raster devices. Only single-plane formats are standard, but 
  12847.  it is very easy to convert these to any multiple-plane format used internally 
  12848.  by a device. 
  12849.  
  12850.  
  12851. ΓòÉΓòÉΓòÉ 21.1.1. Bit-Map Data ΓòÉΓòÉΓòÉ
  12852.  
  12853. The pel data is stored in the bit map in the order that the coordinates appear 
  12854. on a display screen. That is, the pel in the lower-left corner is the first in 
  12855. the bit map. Pels are scanned to the right, and upward, from that position. The 
  12856. bits of the first pel are stored, beginning with the most significant bits of 
  12857. the first byte. The data for pels in each scan line is packed together tightly, 
  12858. but all scan lines are padded at the end, so that each one begins on a ULONG 
  12859. boundary. 
  12860.  
  12861.  
  12862. ΓòÉΓòÉΓòÉ 21.1.2. Bit-Map Information Tables ΓòÉΓòÉΓòÉ
  12863.  
  12864. Each standard-format bit map must be accompanied by a bit-map information 
  12865. table. Because the standard-format bit maps are intended to be traded between 
  12866. devices, the color indexes in the bit map are meaningless without more 
  12867. information; for a description of this structure, see BITMAPINFO2. 
  12868.  
  12869. Some functions use a structure that is similar to BITMAPINFO2 but does not have 
  12870. the color table array; for a description of this structure, see 
  12871. BITMAPINFOHEADER2. Wherever BITMAPINFO2 is shown, BITMAPINFO is also allowed. 
  12872. Similarly, wherever BITMAPINFOHEADER2 is shown, BITMAPINFOHEADER is also 
  12873. allowed. 
  12874.  
  12875.  
  12876. ΓòÉΓòÉΓòÉ 21.1.3. Bit-Map Example ΓòÉΓòÉΓòÉ
  12877.  
  12878. To make the ordering of all the bytes clear, consider this simple example of a 
  12879. 5-by-3 array of colored pels: 
  12880.  
  12881.  
  12882. Red   Green Blue  Red   Green
  12883. Blue  Red   Green Blue  Red
  12884. Green Blue  Red   Green Blue
  12885.  
  12886. ULONG ExampleBitmap[]  {
  12887.     0x23,0x12,0x30,0x00                 /* bottom line */
  12888.     0x31,0x23,0x10,0x00                 /* middle line */
  12889.     0x12,0x31,0x20,0x00                 /* top line    */
  12890. };
  12891.  
  12892. #define BLACK  0x00000000L
  12893. #define RED    0x00FF0000L
  12894. #define GREEN  0x0000FF00L
  12895. #define BLUE   0x000000FFL
  12896.  
  12897. struct BitmapInfoTable ExampleInfo = {
  12898.        5,                               /* width       */
  12899.        3,                               /* height      */
  12900.        1,                               /* planes      */
  12901.        4,                               /* bitcount    */
  12902.        BLACK,RED,GREEN,BLUE,            /* color table */
  12903.        BLACK,BLACK,BLACK,BLACK,
  12904.        BLACK,BLACK,BLACK,BLACK,
  12905.        BLACK,BLACK,BLACK,BLACK
  12906. };
  12907.  
  12908.  
  12909. ΓòÉΓòÉΓòÉ 21.1.4. Bit-Map File Format ΓòÉΓòÉΓòÉ
  12910.  
  12911. The operating system uses the same file format for bit maps, icons, and 
  12912. pointers in resource files. In the following description, "bit map" refers to 
  12913. bit maps, icons, and pointers unless otherwise specified. 
  12914.  
  12915. Two formats are supported. In the first, a single-size version of the bit map 
  12916. is defined. This is used whatever the target device. 
  12917.  
  12918. The second format allows multiple versions of the bit map to be defined, 
  12919. including one or more device-independent versions, and a number of 
  12920. device-dependent versions, each intended for use with a particular device. 
  12921.  
  12922. In the case of icons and pointers, when more than one version of the bit map 
  12923. exists, the preferred version is one that matches the device size of the icon 
  12924. or pointer; otherwise, the device-independent version is used to scale a bit 
  12925. map to the required size. 
  12926.  
  12927. The operating system provides pointers that match the requirements of the 
  12928. display device in use, typically pointers are 32x32 pels, one bit per plane. 
  12929.  
  12930. Icons provided with the operating system are designed to match the requirements 
  12931. of the most common display devices.  The following versions of each icon are 
  12932. included in each file: 
  12933.  
  12934.       32x32 4 bpp (16 color) 
  12935.       40x40 4 bpp (16 color) 
  12936.       32x32 1 bpp (black and white) 
  12937.       20x20 1 bpp (black and white) 
  12938.       16x16 1 bpp (black and white) 
  12939.  
  12940.  The 32x32 versions are designed for VGA displays and for device-independent 
  12941.  use. 
  12942.  
  12943.  The 40x40 version is for 8514/A and XGA displays. 
  12944.  
  12945.  The 20x20 and 16x16 are half-size icons designed for use as mini-icons. 
  12946.  
  12947.  For general bit maps, which may be of arbitrary size, the preferred version is 
  12948.  one matching the requested bit map size; otherwise one matching the display 
  12949.  size is selected. If neither is available, the device-independent version is 
  12950.  used from which to scale a bit map. 
  12951.  
  12952.  For both formats, the definition consists of two sections. The first section 
  12953.  contains general information about the type, dimensions, and other attributes 
  12954.  of the resource. The second section contains data describing the pels that 
  12955.  make up the bit map(s), and is in the format specified in Bit-Map Data. 
  12956.  
  12957.  In the multiple-version format, the first section contains an array of 
  12958.  BITMAPARRAYFILEHEADER or BITMAPARRAYFILEHEADER2 structures. 
  12959.  
  12960.  The device-independent version must be the first BITMAPARRAYFILEHEADER or 
  12961.  BITMAPARRAYFILEHEADER2 defined. 
  12962.  
  12963.  In the single-size format, the BITMAPARRAYFILEHEADER or BITMAPARRAYFILEHEADER2 
  12964.  structure is not present. The definition consists of one or two 
  12965.  BITMAPFILEHEADER or BITMAPFILEHEADER2 structures. 
  12966.  
  12967.  For icons and pointers, the cy field in bmp is actually twice the pel height 
  12968.  of the image that appears on the screen.  This is because these types actually 
  12969.  contain two full bit-map pel definitions. The first bit-map definition is the 
  12970.  XOR mask, which contains invert information (0 = no invert, 1 = invert) for 
  12971.  the pointer or icon. The second is the AND mask, which determines whether the 
  12972.  pointer or the screen is shown (0 = black/white, 1 = screen/inverse screen). 
  12973.  
  12974.  For color icons or pointers, there are two bit-maps involved: one that is 
  12975.  black and white and consists of an AND and an XOR mask, and one that is color 
  12976.  that defines the color content. 
  12977.  
  12978.  The cy field in the BITMAPINFOHEADER2 structure for the color bit-map must be 
  12979.  the real height, that is, half the value specified for the black and white 
  12980.  bit-map. The cx must be the same. 
  12981.  
  12982.  The following table shows how these two bit-maps are used for a color icon or 
  12983.  pointer: 
  12984.  
  12985.  
  12986.      XOR     AND     COLOR
  12987.       1       1        x       Invert screen
  12988.       0       0        x       Use color x
  12989.       0       1        x       Transparency
  12990.       1       0        x       Use color x
  12991.  
  12992.  For color icons or pointers, two BITMAPFILEHEADER or BITMAPFILEHEADER2 
  12993.  structures are therefore required: 
  12994.  
  12995.  
  12996.   BITMAPFILEHEADER2    with usType BFT_COLORICON or BFT_COLORPOINTER
  12997.      BITMAPINFOHEADER2 (part of BITMAPFILEHEADER2)
  12998.      Color table
  12999.   BITMAPFILEHEADER2    with same usType
  13000.      BITMAPINFOHEADER2 (part of BITMAPFILEHEADER2)
  13001.      Color table
  13002.   **
  13003.   bits for one bit-map
  13004.   **
  13005.   **
  13006.   bits for other bit-map
  13007.   **
  13008.  
  13009.  The usType for the first BITMAPFILEHEADER2 is either BFT_COLORICON or 
  13010.  BFT_COLORPOINTER. This means that a second BITMAPFILEHEADER2 is present as 
  13011.  part of the definition of a color icon or pointer. The first The first 
  13012.  BITMAPFILEHEADER2 structure contains the information for the black and white 
  13013.  AND and XOR masks, while the second BITMAPFILEHEADER2 structure contains the 
  13014.  information for the color part of the pointer or icon. 
  13015.  
  13016.  BITMAPFILEHEADER and BITMAPINFOHEADER can occur in place of BITMAPFILEHEADER2 
  13017.  and BITMAPINFOHEADER2 in this example. 
  13018.  
  13019.  For the multiple version format, the file is as follows: 
  13020.  
  13021.  
  13022.   BITMAPARRAYFILEHEADER2   for device-independent version
  13023.      BITMAPFILEHEADER2     (part of BITMAPARRAYFILEHEADER2)
  13024.         BITMAPINFOHEADER2  (part of BITMAPFILEHEADER2)
  13025.         Color table
  13026.  
  13027.      BITMAPFILEHEADER2     )
  13028.         BITMAPINFOHEADER2  )  only if this is a color icon or pointer
  13029.         Color table        )
  13030.  
  13031.   BITMAPARRAYFILEHEADER2   for first device-dependent version
  13032.      BITMAPFILEHEADER2     (part of BITMAPARRAYFILEHEADER2)
  13033.         BITMAPINFOHEADER2  (part of BITMAPFILEHEADER2)
  13034.         Color table
  13035.  
  13036.      BITMAPFILEHEADER2     )
  13037.         BITMAPINFOHEADER2  )  only if this is a color icon or pointer
  13038.         Color table        )
  13039.  
  13040.   Further BITMAPARRAYFILEHEADER2 groups occur here as required
  13041.   for additional device-dependent versions
  13042.  
  13043.   **
  13044.   bits for one bit-map
  13045.   **
  13046.   **
  13047.   bits for next bit-map
  13048.   **
  13049.  
  13050.   And so on for as many bit-maps as necessary.
  13051.  
  13052.  As before, BITMAPARRAYFILEHEADER, BITMAPFILEHEADER, and BITMAPINFOHEADER, can 
  13053.  occur in place of BITMAPARRAYFILEHEADER2, BITMAPFILEHEADER2, and 
  13054.  BITMAPINFOHEADER2 
  13055.  
  13056.  
  13057. ΓòÉΓòÉΓòÉ 21.2. Code Pages ΓòÉΓòÉΓòÉ
  13058.  
  13059. The initialization file contains country information relating to date, time, 
  13060. and numeric formats.  It does not contain code-page information; this is 
  13061. obtained from the CONFIG.SYS file. 
  13062.  
  13063. Applications start with the default code page. The default code page is set 
  13064. when the operating system is installed. It can be changed subsequently either 
  13065. by reinstalling the operating system or by editing the COUNTRY statement in the 
  13066. CONFIG.SYS file. 
  13067.  
  13068. A GPI presentation space inherits the code page of the process that created it. 
  13069. The code page changes only when the process calls GpiSetCp 
  13070.  
  13071. See the printed version of the Presentation Manager Programming Reference for 
  13072. the ASCII and EBCDIC versions of the code pages. 
  13073.  
  13074.  
  13075. ΓòÉΓòÉΓòÉ 21.2.1. Windowed PM Applications ΓòÉΓòÉΓòÉ
  13076.  
  13077. Windowed PM applications allow the code-page calls to use any of the supported 
  13078. ASCII code pages. These are: 
  13079.  
  13080. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13081. Γöé                      ΓöéChar. Set  ΓöéCode Page  Γöé
  13082. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13083. ΓöéCanadian-French       Γöé993        Γöé863        Γöé
  13084. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13085. ΓöéDesktop Publishing    Γöé1146       Γöé1004       Γöé
  13086. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13087. ΓöéIceland               Γöé991        Γöé861        Γöé
  13088. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13089. ΓöéLatin 1 Multilingual  Γöé980        Γöé850        Γöé
  13090. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13091. ΓöéLatin 2 Multilingual  Γöé982        Γöé852        Γöé
  13092. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13093. ΓöéNordic                Γöé995        Γöé865        Γöé
  13094. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13095. ΓöéPortuguese            Γöé990        Γöé860        Γöé
  13096. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13097. ΓöéTurkey                Γöé987        Γöé857        Γöé
  13098. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13099. ΓöéU.S. (IBM PC)         Γöé919        Γöé437        Γöé
  13100. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13101.  
  13102. Code page 1004 is compatible with Microsoft** Windows**. 
  13103.  
  13104. The following EBCDIC code pages, based on character set 697, are also available 
  13105. for output: 
  13106.  
  13107. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13108. Γöé                      ΓöéChar. Set  ΓöéCode Page  Γöé
  13109. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13110. ΓöéAustrian/German       Γöé697        Γöé273        Γöé
  13111. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13112. ΓöéBelgian               Γöé697        Γöé500        Γöé
  13113. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13114. ΓöéBrazil                Γöé697        Γöé037        Γöé
  13115. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13116. ΓöéCzechoslovakia        Γöé959        Γöé870        Γöé
  13117. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13118. ΓöéDanish/Norwegian      Γöé697        Γöé277        Γöé
  13119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13120. ΓöéFinnish/Swedish       Γöé697        Γöé278        Γöé
  13121. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13122. ΓöéFrench                Γöé697        Γöé297        Γöé
  13123. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13124. ΓöéHungary               Γöé959        Γöé870        Γöé
  13125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13126. ΓöéIceland               Γöé697        Γöé871        Γöé
  13127. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13128. ΓöéInternational         Γöé697        Γöé500        Γöé
  13129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13130. ΓöéItalian               Γöé697        Γöé280        Γöé
  13131. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13132. ΓöéPoland                Γöé959        Γöé870        Γöé
  13133. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13134. ΓöéPortuguese            Γöé697        Γöé037        Γöé
  13135. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13136. ΓöéSpanish               Γöé697        Γöé284        Γöé
  13137. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13138. ΓöéTurkey                Γöé1152       Γöé1026       Γöé
  13139. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13140. ΓöéU.K.-English          Γöé697        Γöé285        Γöé
  13141. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13142. ΓöéU.S.-English          Γöé697        Γöé037        Γöé
  13143. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13144. ΓöéYugoslavia            Γöé959        Γöé870        Γöé
  13145. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13146.  
  13147. Note:  Code pages 274 (Belgian) and 282 (Portuguese) can be used to provide 
  13148.        access to old data. 
  13149.  
  13150.  The operating system provides the following additional code-page setting and 
  13151.  query calls for the supported ASCII and EBCDIC code pages. These calls work 
  13152.  independently of the CONFIG.SYS file. 
  13153.  
  13154.  GpiSetCp                  Sets the code page for GPI. 
  13155.  GpiQueryCp                Queries the code page for GPI. 
  13156.  GpiCreateLogFont          Creates fonts in a code page. 
  13157.  WinSetCp                  Sets the code page for a message queue. 
  13158.  WinQueryCp                Queries the code page for a message queue. 
  13159.  
  13160.  WinQueryCpList creates a list of code pages supported by the operating system. 
  13161.  
  13162.  Text entered in a dialog box is supplied to the application in the code page 
  13163.  of the queue ("queue code page"). If possible, the code page of a resource 
  13164.  (for example, a menu or dialog box) should match the code page of the queue. 
  13165.  In general, code page 850 is the best choice for both an application and its 
  13166.  resources. 
  13167.  
  13168.  Applications should be able to process data from a variety of sources. Because 
  13169.  code page 850 contains most of the characters in other supported code pages, 
  13170.  this is usually the best choice for the queue code page. 
  13171.  
  13172.  
  13173. ΓòÉΓòÉΓòÉ 21.2.2. OS/2 Code Page Options for PM Applications ΓòÉΓòÉΓòÉ
  13174.  
  13175.  
  13176. ΓöîΓöÇΓöÇΓöÇApplicationΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13177. Γöé                                         ΓöéΓöÇΓöÇΓöÇΓöñ CONFIG.SYS   Γöé
  13178. Γöé ΓöîΓöÇDosSetProcessCp (see note 1)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé    Γöé contains the Γöé
  13179. Γöé Γöé Set code page for this process      Γöé Γöé    Γöé default code Γöé
  13180. Γöé Γöé (keyboard/display not changed).     Γöé Γöé    Γöé page set by  Γöé
  13181. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé    Γöé CODEPAGE=    Γöé
  13182. Γöé                                         Γöé    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13183. Γöé ΓöîΓöÇWinQueryCpList (see note 2)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  13184. Γöé Γöé Query list of supported code pages. Γöé Γöé
  13185. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  13186. Γöé                                         Γöé
  13187. Γöé ΓöîΓöÇWinSetCp, WinQueryCp (see note 1)ΓöÇΓöÇΓöÇΓöÉ Γöé
  13188. Γöé Γöé Set or query code page for          ΓöéΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇKeyboard
  13189. Γöé Γöé translating incoming messages       Γöé Γöé    Γöé   Γöé
  13190. Γöé Γöé (keystrokes).                       Γöé Γöé    ΓöéΓöÇΓöÇΓöÇΓöÇΓöÇΓöé
  13191. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé    ΓöéΓöÇΓöÇΓöÇΓöÇΓöÇΓöé  Message
  13192. Γöé                                         Γöé    ΓöéΓöÇΓöÇΓöÇΓöÇΓöÇΓöé  queue
  13193. Γöé ΓöîΓöÇGpiSetCp, GpiQueryCp (see note 2)ΓöÇΓöÇΓöÇΓöÉ Γöé    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13194. Γöé Γöé Set or query default GPI code page. Γöé Γöé
  13195. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  13196. Γöé                                         Γöé
  13197. Γöé ΓöîΓöÇGpiCreateLogFont (see note 2)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  13198. Γöé Γöé Create font in a code page.         ΓöéΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇDisplay
  13199. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  13200. Γöé                                         Γöé
  13201. Γöé ΓöîΓöÇWinCpTranslateChar (see note 2)ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  13202. Γöé Γö£ΓöÇWinCpTranslateString (see note 2)ΓöÇΓöÇΓöÇΓöñ Γöé
  13203. Γöé Γöé Convert character or string from    ΓöéΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇDisk
  13204. Γöé Γöé one code page to another.           Γöé Γöé
  13205. Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
  13206. Γöé                                        Γöé
  13207. Γöé                    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇLAN or host
  13208. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13209.  
  13210. Note 1:  Either of the two ASCII code pages specified in CONFIG.SYS.
  13211.          Code page 1004 is also supported.
  13212. Note 2:  Any supported ASCII or EBCDIC code page as reported by
  13213.          WinQueryCpList.
  13214.          Code page 1004 is also supported.
  13215.  
  13216.  
  13217. ΓòÉΓòÉΓòÉ 21.2.3. OS/2 Font Support for Multiple Code Pages ΓòÉΓòÉΓòÉ
  13218.  
  13219. The operating system supports multiple code pages for text input and output. A 
  13220. single font resource is used to support all the code pages. This section 
  13221. describes the font resource format. 
  13222.  
  13223.  
  13224. ΓòÉΓòÉΓòÉ 21.2.3.1. Font Code-Page Functions ΓòÉΓòÉΓòÉ
  13225.  
  13226. Many of the characters required by each code page are common; for example, the 
  13227. first 128 characters of all the ASCII code pages are identical. This set of 
  13228. characters is called the Universal Glyph List (UGL). A code page is simply a 
  13229. set of pointers into the UGL. 
  13230.  
  13231. As the characters in every font are in the same order, only one set of 
  13232. code-page translation tables is necessary. 
  13233.  
  13234. Note:  The fonts of Microsoft Windows support only code page 1004. 
  13235.  
  13236.  
  13237. ΓòÉΓòÉΓòÉ 21.2.3.2. Font Layout ΓòÉΓòÉΓòÉ
  13238.  
  13239. The following table lists the full character set in the order in which the 
  13240. characters occur in the multi-code-page font. Characters are listed in order of 
  13241. their universal glyph list (UGL) number; the graphic character global 
  13242. identifier (GCGID) and a description of each character are also given. 
  13243.  
  13244. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13245. ΓöéUGL  ΓöéGCGID     ΓöéDescription                             Γöé
  13246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13247. Γöé1    ΓöéSS000000  ΓöéSmiling face                            Γöé
  13248. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13249. Γöé2    ΓöéSS010000  ΓöéSmiling face, reverse image             Γöé
  13250. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13251. Γöé3    ΓöéSS020000  ΓöéHeart suit symbol                       Γöé
  13252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13253. Γöé4    ΓöéSS030000  ΓöéDiamond suit symbol                     Γöé
  13254. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13255. Γöé5    ΓöéSS040000  ΓöéClub suit symbol                        Γöé
  13256. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13257. Γöé6    ΓöéSS050000  ΓöéSpade suit symbol                       Γöé
  13258. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13259. Γöé7    ΓöéSM570000  ΓöéBullet                                  Γöé
  13260. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13261. Γöé8    ΓöéSM570001  ΓöéBullet, reverse image                   Γöé
  13262. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13263. Γöé9    ΓöéSM750000  ΓöéOpen circle                             Γöé
  13264. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13265. Γöé10   ΓöéSM750002  ΓöéOpen circle, reverse image              Γöé
  13266. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13267. Γöé11   ΓöéSM280000  ΓöéMale symbol                             Γöé
  13268. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13269. Γöé12   ΓöéSM290000  ΓöéFemale symbol                           Γöé
  13270. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13271. Γöé13   ΓöéSM930000  ΓöéMusical note                            Γöé
  13272. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13273. Γöé14   ΓöéSM910000  ΓöéTwo musical notes                       Γöé
  13274. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13275. Γöé15   ΓöéSM690000  ΓöéSun symbol                              Γöé
  13276. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13277. Γöé16   ΓöéSM590000  ΓöéForward arrow indicator                 Γöé
  13278. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13279. Γöé17   ΓöéSM630000  ΓöéBack arrow indicator                    Γöé
  13280. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13281. Γöé18   ΓöéSM760000  ΓöéUp-down arrow                           Γöé
  13282. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13283. Γöé19   ΓöéSP330000  ΓöéDouble exclamation point                Γöé
  13284. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13285. Γöé20   ΓöéSM250000  ΓöéParagraph symbol (USA)                  Γöé
  13286. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13287. Γöé21   ΓöéSM240000  ΓöéSection symbol (USA), paragraph (Europe)Γöé
  13288. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13289. Γöé22   ΓöéSM700000  ΓöéSolid horizontal rectangle              Γöé
  13290. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13291. Γöé23   ΓöéSM770000  ΓöéUp-down arrow, perpendicular            Γöé
  13292. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13293. Γöé24   ΓöéSM320000  ΓöéUp arrow                                Γöé
  13294. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13295. Γöé25   ΓöéSM330000  ΓöéDown arrow                              Γöé
  13296. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13297. Γöé26   ΓöéSM310000  ΓöéRight arrow                             Γöé
  13298. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13299. Γöé27   ΓöéSM300000  ΓöéLeft arrow                              Γöé
  13300. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13301. Γöé28   ΓöéSA420000  ΓöéRight angle symbol                      Γöé
  13302. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13303. Γöé29   ΓöéSM780000  ΓöéLeft-right arrow                        Γöé
  13304. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13305. Γöé30   ΓöéSM600000  ΓöéSolid triangle                          Γöé
  13306. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13307. Γöé31   ΓöéSV040000  ΓöéSolid triangle, inverted                Γöé
  13308. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13309. Γöé32   ΓöéSP010000  ΓöéSpace                                   Γöé
  13310. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13311. Γöé33   ΓöéSP020000  ΓöéExclamation point                       Γöé
  13312. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13313. Γöé34   ΓöéSP040000  ΓöéQuotation marks                         Γöé
  13314. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13315. Γöé35   ΓöéSM010000  ΓöéNumber sign                             Γöé
  13316. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13317. Γöé36   ΓöéSC030000  ΓöéDollar sign                             Γöé
  13318. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13319. Γöé37   ΓöéSM020000  ΓöéPercent sign                            Γöé
  13320. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13321. Γöé38   ΓöéSM030000  ΓöéAmpersand                               Γöé
  13322. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13323. Γöé39   ΓöéSP050000  ΓöéApostrophe                              Γöé
  13324. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13325. Γöé40   ΓöéSP060000  ΓöéLeft parenthesis                        Γöé
  13326. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13327. Γöé41   ΓöéSP070000  ΓöéRight parenthesis                       Γöé
  13328. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13329. Γöé42   ΓöéSM040000  ΓöéAsterisk                                Γöé
  13330. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13331. Γöé43   ΓöéSA010000  ΓöéPlus sign                               Γöé
  13332. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13333. Γöé44   ΓöéSP080000  ΓöéComma                                   Γöé
  13334. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13335. Γöé45   ΓöéSP100000  ΓöéHyphen/minus sign                       Γöé
  13336. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13337. Γöé46   ΓöéSP110000  ΓöéPeriod/full stop                        Γöé
  13338. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13339. Γöé47   ΓöéSP120000  ΓöéSlash                                   Γöé
  13340. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13341. Γöé48   ΓöéND100000  ΓöéZero                                    Γöé
  13342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13343. Γöé49   ΓöéND010000  ΓöéOne                                     Γöé
  13344. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13345. Γöé50   ΓöéND020000  ΓöéTwo                                     Γöé
  13346. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13347. Γöé51   ΓöéND030000  ΓöéThree                                   Γöé
  13348. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13349. Γöé52   ΓöéND040000  ΓöéFour                                    Γöé
  13350. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13351. Γöé53   ΓöéND050000  ΓöéFive                                    Γöé
  13352. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13353. Γöé54   ΓöéND060000  ΓöéSix                                     Γöé
  13354. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13355. Γöé55   ΓöéND070000  ΓöéSeven                                   Γöé
  13356. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13357. Γöé56   ΓöéND080000  ΓöéEight                                   Γöé
  13358. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13359. Γöé57   ΓöéND090000  ΓöéNine                                    Γöé
  13360. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13361. Γöé58   ΓöéSP130000  ΓöéColon                                   Γöé
  13362. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13363. Γöé59   ΓöéSP140000  ΓöéSemicolon                               Γöé
  13364. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13365. Γöé60   ΓöéSA030000  ΓöéLess than sign/greater than (arabic)    Γöé
  13366. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13367. Γöé61   ΓöéSA040000  ΓöéEqual Sign                              Γöé
  13368. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13369. Γöé62   ΓöéSA050000  ΓöéGreater than sign/less than (arabic)    Γöé
  13370. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13371. Γöé63   ΓöéSP150000  ΓöéQuestion mark                           Γöé
  13372. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13373. Γöé64   ΓöéSM050000  ΓöéAt sign                                 Γöé
  13374. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13375. Γöé65   ΓöéLA020000  ΓöéA capital                               Γöé
  13376. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13377. Γöé66   ΓöéLB020000  ΓöéB capital                               Γöé
  13378. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13379. Γöé67   ΓöéLC020000  ΓöéC capital                               Γöé
  13380. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13381. Γöé68   ΓöéLD020000  ΓöéD capital                               Γöé
  13382. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13383. Γöé69   ΓöéLE020000  ΓöéE capital                               Γöé
  13384. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13385. Γöé70   ΓöéLF020000  ΓöéF capital                               Γöé
  13386. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13387. Γöé71   ΓöéLG020000  ΓöéG capital                               Γöé
  13388. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13389. Γöé72   ΓöéLH020000  ΓöéH capital                               Γöé
  13390. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13391. Γöé73   ΓöéLI020000  ΓöéI capital                               Γöé
  13392. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13393. Γöé74   ΓöéLJ020000  ΓöéJ capital                               Γöé
  13394. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13395. Γöé75   ΓöéLK020000  ΓöéK capital                               Γöé
  13396. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13397. Γöé76   ΓöéLL020000  ΓöéL capital                               Γöé
  13398. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13399. Γöé77   ΓöéLM020000  ΓöéM capital                               Γöé
  13400. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13401. Γöé78   ΓöéLN020000  ΓöéN capital                               Γöé
  13402. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13403. Γöé79   ΓöéLO020000  ΓöéO capital                               Γöé
  13404. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13405. Γöé80   ΓöéLP020000  ΓöéP capital                               Γöé
  13406. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13407. Γöé81   ΓöéLQ020000  ΓöéQ capital                               Γöé
  13408. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13409. Γöé82   ΓöéLR020000  ΓöéR capital                               Γöé
  13410. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13411. Γöé83   ΓöéLS020000  ΓöéS capital                               Γöé
  13412. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13413. Γöé84   ΓöéLT020000  ΓöéT capital                               Γöé
  13414. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13415. Γöé85   ΓöéLU020000  ΓöéU capital                               Γöé
  13416. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13417. Γöé86   ΓöéLV020000  ΓöéV capital                               Γöé
  13418. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13419. Γöé87   ΓöéLW020000  ΓöéW capital                               Γöé
  13420. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13421. Γöé88   ΓöéLX020000  ΓöéX capital                               Γöé
  13422. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13423. Γöé89   ΓöéLY020000  ΓöéY capital                               Γöé
  13424. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13425. Γöé90   ΓöéLZ020000  ΓöéZ capital                               Γöé
  13426. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13427. Γöé91   ΓöéSM060000  ΓöéLeft bracket                            Γöé
  13428. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13429. Γöé92   ΓöéSM070000  ΓöéBackslash                               Γöé
  13430. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13431. Γöé93   ΓöéSM080000  ΓöéRight bracket                           Γöé
  13432. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13433. Γöé94   ΓöéSD150000  ΓöéCircumflex Accent                       Γöé
  13434. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13435. Γöé95   ΓöéSP090000  ΓöéUnderline, continuous underscore        Γöé
  13436. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13437. Γöé96   ΓöéSD130000  ΓöéGrave accent                            Γöé
  13438. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13439. Γöé97   ΓöéLA010000  Γöéa small                                 Γöé
  13440. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13441. Γöé98   ΓöéLB010000  Γöéb small                                 Γöé
  13442. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13443. Γöé99   ΓöéLC010000  Γöéc small                                 Γöé
  13444. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13445. Γöé100  ΓöéLD010000  Γöéd small                                 Γöé
  13446. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13447. Γöé101  ΓöéLE010000  Γöée small                                 Γöé
  13448. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13449. Γöé102  ΓöéLF010000  Γöéf small                                 Γöé
  13450. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13451. Γöé103  ΓöéLG010000  Γöég small                                 Γöé
  13452. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13453. Γöé104  ΓöéLH010000  Γöéh small                                 Γöé
  13454. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13455. Γöé105  ΓöéLI010000  Γöéi small                                 Γöé
  13456. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13457. Γöé106  ΓöéLJ010000  Γöéj small                                 Γöé
  13458. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13459. Γöé107  ΓöéLK010000  Γöék small                                 Γöé
  13460. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13461. Γöé108  ΓöéLL010000  Γöél small                                 Γöé
  13462. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13463. Γöé109  ΓöéLM010000  Γöém small                                 Γöé
  13464. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13465. Γöé110  ΓöéLN010000  Γöén small                                 Γöé
  13466. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13467. Γöé111  ΓöéLO010000  Γöéo small                                 Γöé
  13468. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13469. Γöé112  ΓöéLP010000  Γöép small                                 Γöé
  13470. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13471. Γöé113  ΓöéLQ010000  Γöéq small                                 Γöé
  13472. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13473. Γöé114  ΓöéLR010000  Γöér small                                 Γöé
  13474. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13475. Γöé115  ΓöéLS010000  Γöés small                                 Γöé
  13476. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13477. Γöé116  ΓöéLT010000  Γöét small                                 Γöé
  13478. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13479. Γöé117  ΓöéLU010000  Γöéu small                                 Γöé
  13480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13481. Γöé118  ΓöéLV010000  Γöév small                                 Γöé
  13482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13483. Γöé119  ΓöéLW010000  Γöéw small                                 Γöé
  13484. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13485. Γöé120  ΓöéLX010000  Γöéx small                                 Γöé
  13486. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13487. Γöé121  ΓöéLY010000  Γöéy small                                 Γöé
  13488. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13489. Γöé122  ΓöéLZ010000  Γöéz small                                 Γöé
  13490. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13491. Γöé123  ΓöéSM110000  ΓöéLeft brace                              Γöé
  13492. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13493. Γöé124  ΓöéSM130000  ΓöéVertical line, logical OR               Γöé
  13494. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13495. Γöé125  ΓöéSM140000  ΓöéRight brace                             Γöé
  13496. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13497. Γöé126  ΓöéSD190000  ΓöéTilde                                   Γöé
  13498. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13499. Γöé127  ΓöéSM790000  ΓöéHouse                                   Γöé
  13500. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13501. Γöé128  ΓöéLC420000  ΓöéC cedilla capital                       Γöé
  13502. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13503. Γöé129  ΓöéLU170000  ΓöéU diaeresis small                       Γöé
  13504. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13505. Γöé130  ΓöéLE110000  ΓöéE acute small                           Γöé
  13506. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13507. Γöé131  ΓöéLA150000  ΓöéA circumflex small                      Γöé
  13508. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13509. Γöé132  ΓöéLA170000  ΓöéA diaeresis small                       Γöé
  13510. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13511. Γöé133  ΓöéLA130000  ΓöéA grave small                           Γöé
  13512. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13513. Γöé134  ΓöéLA270000  ΓöéA overcircle small                      Γöé
  13514. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13515. Γöé135  ΓöéLC410000  ΓöéC cedilla small                         Γöé
  13516. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13517. Γöé136  ΓöéLE150000  ΓöéE circumflex small                      Γöé
  13518. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13519. Γöé137  ΓöéLE170000  ΓöéE diaeresis small                       Γöé
  13520. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13521. Γöé138  ΓöéLE130000  ΓöéE grave small                           Γöé
  13522. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13523. Γöé139  ΓöéLI170000  ΓöéI diaeresis small                       Γöé
  13524. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13525. Γöé140  ΓöéLI150000  ΓöéI circumflex small                      Γöé
  13526. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13527. Γöé141  ΓöéLI130000  ΓöéI grave small                           Γöé
  13528. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13529. Γöé142  ΓöéLA180000  ΓöéA diaeresis capital                     Γöé
  13530. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13531. Γöé143  ΓöéLA280000  ΓöéA overcircle capital                    Γöé
  13532. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13533. Γöé144  ΓöéLE120000  ΓöéE acute capital                         Γöé
  13534. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13535. Γöé145  ΓöéLA510000  ΓöéAE diphthong small                      Γöé
  13536. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13537. Γöé146  ΓöéLA520000  ΓöéAE diphthong capital                    Γöé
  13538. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13539. Γöé147  ΓöéLO150000  ΓöéO circumflex small                      Γöé
  13540. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13541. Γöé148  ΓöéLO170000  ΓöéO diaeresis small                       Γöé
  13542. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13543. Γöé149  ΓöéLO130000  ΓöéO grave small                           Γöé
  13544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13545. Γöé150  ΓöéLU150000  ΓöéU circumflex small                      Γöé
  13546. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13547. Γöé151  ΓöéLU130000  ΓöéU grave small                           Γöé
  13548. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13549. Γöé152  ΓöéLY170000  ΓöéY diaeresis small                       Γöé
  13550. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13551. Γöé153  ΓöéLO180000  ΓöéO diaeresis capital                     Γöé
  13552. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13553. Γöé154  ΓöéLU180000  ΓöéU diaeresis capital                     Γöé
  13554. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13555. Γöé155  ΓöéLO610000  ΓöéO slash small                           Γöé
  13556. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13557. Γöé156  ΓöéSC020000  ΓöéPound sterling sign                     Γöé
  13558. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13559. Γöé157  ΓöéLO620000  ΓöéO slash capital                         Γöé
  13560. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13561. Γöé158  ΓöéSA070000  ΓöéMultiply sign                           Γöé
  13562. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13563. Γöé159  ΓöéSC070000  ΓöéFlorin sign                             Γöé
  13564. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13565. Γöé160  ΓöéLA110000  ΓöéA acute small                           Γöé
  13566. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13567. Γöé161  ΓöéLI110000  ΓöéI acute small                           Γöé
  13568. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13569. Γöé162  ΓöéLO110000  ΓöéO acute small                           Γöé
  13570. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13571. Γöé163  ΓöéLU110000  ΓöéU acute small                           Γöé
  13572. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13573. Γöé164  ΓöéLN190000  ΓöéN tilde small                           Γöé
  13574. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13575. Γöé165  ΓöéLN200000  ΓöéN tilde capital                         Γöé
  13576. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13577. Γöé166  ΓöéSM210000  ΓöéOrdinal indicator, feminine             Γöé
  13578. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13579. Γöé167  ΓöéSM200000  ΓöéOrdinal indicator, masculine            Γöé
  13580. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13581. Γöé168  ΓöéSP160000  ΓöéQuestion mark, inverted                 Γöé
  13582. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13583. Γöé169  ΓöéSM530000  ΓöéRegistered trademark symbol             Γöé
  13584. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13585. Γöé170  ΓöéSM660000  ΓöéLogical NOT, end of line symbol         Γöé
  13586. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13587. Γöé171  ΓöéNF010000  ΓöéOne-half                                Γöé
  13588. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13589. Γöé172  ΓöéNF040000  ΓöéOne-quarter                             Γöé
  13590. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13591. Γöé173  ΓöéSP030000  ΓöéExclamation point, inverted             Γöé
  13592. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13593. Γöé174  ΓöéSP170000  ΓöéLeft angled quotes                      Γöé
  13594. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13595. Γöé175  ΓöéSP180000  ΓöéRight angled quotes                     Γöé
  13596. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13597. Γöé176  ΓöéSF140000  ΓöéFill character, light                   Γöé
  13598. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13599. Γöé177  ΓöéSF150000  ΓöéFill character, medium                  Γöé
  13600. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13601. Γöé178  ΓöéSF160000  ΓöéFill character, heavy                   Γöé
  13602. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13603. Γöé179  ΓöéSF110000  ΓöéCenter box bar vertical                 Γöé
  13604. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13605. Γöé180  ΓöéSF090000  ΓöéRight middle box side                   Γöé
  13606. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13607. Γöé181  ΓöéLA120000  ΓöéA acute capital                         Γöé
  13608. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13609. Γöé182  ΓöéLA160000  ΓöéA circumflex capital                    Γöé
  13610. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13611. Γöé183  ΓöéLA140000  ΓöéA grave capital                         Γöé
  13612. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13613. Γöé184  ΓöéSM520000  ΓöéCopyright symbol                        Γöé
  13614. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13615. Γöé185  ΓöéSF230000  ΓöéRight box side double                   Γöé
  13616. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13617. Γöé186  ΓöéSF240000  ΓöéCenter box bar vertical double          Γöé
  13618. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13619. Γöé187  ΓöéSF250000  ΓöéUpper right box corner double           Γöé
  13620. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13621. Γöé188  ΓöéSF260000  ΓöéLower right box corner double           Γöé
  13622. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13623. Γöé189  ΓöéSC040000  ΓöéCent sign                               Γöé
  13624. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13625. Γöé190  ΓöéSC050000  ΓöéYen sign                                Γöé
  13626. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13627. Γöé191  ΓöéSF030000  ΓöéUpper right box corner                  Γöé
  13628. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13629. Γöé192  ΓöéSF020000  ΓöéLower left box corner                   Γöé
  13630. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13631. Γöé193  ΓöéSF070000  ΓöéMiddle box bottom                       Γöé
  13632. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13633. Γöé194  ΓöéSF060000  ΓöéMiddle box top                          Γöé
  13634. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13635. Γöé195  ΓöéSF080000  ΓöéLeft middle box side                    Γöé
  13636. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13637. Γöé196  ΓöéSF100000  ΓöéCenter box bar horizontal               Γöé
  13638. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13639. Γöé197  ΓöéSF050000  ΓöéBox intersection                        Γöé
  13640. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13641. Γöé198  ΓöéLA190000  ΓöéA tilde small                           Γöé
  13642. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13643. Γöé199  ΓöéLA200000  ΓöéA tilde capital                         Γöé
  13644. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13645. Γöé200  ΓöéSF380000  ΓöéLower left box corner double            Γöé
  13646. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13647. Γöé201  ΓöéSF390000  ΓöéUpper left box corner double            Γöé
  13648. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13649. Γöé202  ΓöéSF400000  ΓöéMiddle box bottom double                Γöé
  13650. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13651. Γöé203  ΓöéSF410000  ΓöéMiddle box top double                   Γöé
  13652. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13653. Γöé204  ΓöéSF420000  ΓöéLeft box side double                    Γöé
  13654. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13655. Γöé205  ΓöéSF430000  ΓöéCenter box bar horizontal double        Γöé
  13656. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13657. Γöé206  ΓöéSF440000  ΓöéBox intersection double                 Γöé
  13658. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13659. Γöé207  ΓöéSC010000  ΓöéInternational currency symbol           Γöé
  13660. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13661. Γöé208  ΓöéLD630000  Γöéeth Icelandic small                     Γöé
  13662. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13663. Γöé209  ΓöéLD620000  ΓöéD stroke capital, Eth Icelandic capital Γöé
  13664. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13665. Γöé210  ΓöéLE160000  ΓöéE circumflex capital                    Γöé
  13666. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13667. Γöé211  ΓöéLE180000  ΓöéE diaeresis capital                     Γöé
  13668. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13669. Γöé212  ΓöéLE140000  ΓöéE grave capital                         Γöé
  13670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13671. Γöé213  ΓöéLI610000  ΓöéI dotless small                         Γöé
  13672. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13673. Γöé214  ΓöéLI120000  ΓöéI acute capital                         Γöé
  13674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13675. Γöé215  ΓöéLI160000  ΓöéI circumflex capital                    Γöé
  13676. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13677. Γöé216  ΓöéLI180000  ΓöéI diaeresis capital                     Γöé
  13678. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13679. Γöé217  ΓöéSF040000  ΓöéLower right box corner                  Γöé
  13680. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13681. Γöé218  ΓöéSF010000  ΓöéUpper left box corner                   Γöé
  13682. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13683. Γöé219  ΓöéSF610000  ΓöéSolid fill character                    Γöé
  13684. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13685. Γöé220  ΓöéSF570000  ΓöéSolid fill character, bottom half       Γöé
  13686. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13687. Γöé221  ΓöéSM650000  ΓöéVertical line, broken                   Γöé
  13688. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13689. Γöé222  ΓöéLI140000  ΓöéI grave capital                         Γöé
  13690. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13691. Γöé223  ΓöéSF600000  ΓöéSolid fill character, top half          Γöé
  13692. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13693. Γöé224  ΓöéLO120000  ΓöéO acute capital                         Γöé
  13694. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13695. Γöé225  ΓöéLS610000  ΓöéSharp s small                           Γöé
  13696. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13697. Γöé226  ΓöéLO160000  ΓöéO circumflex capital                    Γöé
  13698. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13699. Γöé227  ΓöéLO140000  ΓöéO grave capital                         Γöé
  13700. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13701. Γöé228  ΓöéLO190000  ΓöéO tilde small                           Γöé
  13702. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13703. Γöé229  ΓöéLO200000  ΓöéO tilde capital                         Γöé
  13704. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13705. Γöé230  ΓöéSM170000  ΓöéMicro symbol                            Γöé
  13706. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13707. Γöé231  ΓöéLT630000  ΓöéThorn Icelandic small                   Γöé
  13708. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13709. Γöé232  ΓöéLT640000  ΓöéThorn Icelandic capital                 Γöé
  13710. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13711. Γöé233  ΓöéLU120000  ΓöéU acute capital                         Γöé
  13712. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13713. Γöé234  ΓöéLU160000  ΓöéU circumflex capital                    Γöé
  13714. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13715. Γöé235  ΓöéLU140000  ΓöéU grave capital                         Γöé
  13716. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13717. Γöé236  ΓöéLY110000  Γöéy acute small                           Γöé
  13718. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13719. Γöé237  ΓöéLY120000  ΓöéY acute capital                         Γöé
  13720. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13721. Γöé238  ΓöéSM150000  ΓöéOverline                                Γöé
  13722. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13723. Γöé239  ΓöéSD110000  ΓöéAcute accent                            Γöé
  13724. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13725. Γöé240  ΓöéSP320000  ΓöéSyllable hyphen                         Γöé
  13726. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13727. Γöé241  ΓöéSA020000  ΓöéPlus or minus sign                      Γöé
  13728. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13729. Γöé242  ΓöéSM100000  ΓöéDouble underscore                       Γöé
  13730. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13731. Γöé243  ΓöéNF050000  ΓöéThree-quarters                          Γöé
  13732. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13733. Γöé244  ΓöéSM250000  ΓöéParagraph symbol (USA)                  Γöé
  13734. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13735. Γöé245  ΓöéSM240000  ΓöéSection symbol (USA), paragraph (Europe)Γöé
  13736. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13737. Γöé246  ΓöéSA060000  ΓöéDivide sign                             Γöé
  13738. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13739. Γöé247  ΓöéSD410000  ΓöéCedilla (or sedila) accent              Γöé
  13740. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13741. Γöé248  ΓöéSM190000  ΓöéDegree symbol                           Γöé
  13742. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13743. Γöé249  ΓöéSD170000  ΓöéDiaeresis, umlaut accent                Γöé
  13744. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13745. Γöé250  ΓöéSD630000  ΓöéMiddle dot                              Γöé
  13746. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13747. Γöé251  ΓöéND011000  ΓöéOne superscript                         Γöé
  13748. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13749. Γöé252  ΓöéND031000  ΓöéThree superscript                       Γöé
  13750. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13751. Γöé253  ΓöéND021000  ΓöéTwo superscript                         Γöé
  13752. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13753. Γöé254  ΓöéSM470000  ΓöéSolid square, histogram, square bullet  Γöé
  13754. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13755. Γöé255  ΓöéSP300000  ΓöéRequired space                          Γöé
  13756. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13757. Γöé256  ΓöéSC060000  ΓöéPeseta sign                             Γöé
  13758. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13759. Γöé257  ΓöéSM680000  ΓöéStart of line symbol                    Γöé
  13760. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13761. Γöé258  ΓöéSF190000  ΓöéRight box side double to single         Γöé
  13762. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13763. Γöé259  ΓöéSF200000  ΓöéRight box side single to double         Γöé
  13764. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13765. Γöé260  ΓöéSF210000  ΓöéUpper right box corner single to double Γöé
  13766. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13767. Γöé261  ΓöéSF220000  ΓöéUpper right box corner double to single Γöé
  13768. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13769. Γöé262  ΓöéSF270000  ΓöéLower right box corner single to double Γöé
  13770. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13771. Γöé263  ΓöéSF280000  ΓöéLower right box corner double to single Γöé
  13772. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13773. Γöé264  ΓöéSF360000  ΓöéLeft box side single to double          Γöé
  13774. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13775. Γöé265  ΓöéSF370000  ΓöéLeft box side double to single          Γöé
  13776. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13777. Γöé266  ΓöéSF450000  ΓöéMiddle box bottom single to double      Γöé
  13778. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13779. Γöé267  ΓöéSF460000  ΓöéMiddle box bottom double to single      Γöé
  13780. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13781. Γöé268  ΓöéSF470000  ΓöéMiddle box top double to single         Γöé
  13782. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13783. Γöé269  ΓöéSF480000  ΓöéMiddle box top single to double         Γöé
  13784. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13785. Γöé270  ΓöéSF490000  ΓöéLower left box corner double to single  Γöé
  13786. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13787. Γöé271  ΓöéSF500000  ΓöéLower left box corner single to double  Γöé
  13788. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13789. Γöé272  ΓöéSF510000  ΓöéUpper left box corner single to double  Γöé
  13790. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13791. Γöé273  ΓöéSF520000  ΓöéUpper left box corner double to single  Γöé
  13792. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13793. Γöé274  ΓöéSF530000  ΓöéBox intersection single to double       Γöé
  13794. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13795. Γöé275  ΓöéSF540000  ΓöéBox intersection double to single       Γöé
  13796. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13797. Γöé276  ΓöéSF580000  ΓöéSolid fill character, left half         Γöé
  13798. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13799. Γöé277  ΓöéSF590000  ΓöéSolid fill character, right half        Γöé
  13800. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13801. Γöé278  ΓöéGA010000  ΓöéAlpha small                             Γöé
  13802. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13803. Γöé279  ΓöéGG020000  ΓöéGamma capital                           Γöé
  13804. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13805. Γöé280  ΓöéGP010000  ΓöéPi small                                Γöé
  13806. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13807. Γöé281  ΓöéGS020000  ΓöéSigma capital                           Γöé
  13808. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13809. Γöé282  ΓöéGS010000  ΓöéSigma small                             Γöé
  13810. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13811. Γöé283  ΓöéGT010000  ΓöéTau small                               Γöé
  13812. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13813. Γöé284  ΓöéGF020000  ΓöéPhi capital                             Γöé
  13814. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13815. Γöé285  ΓöéGT620000  ΓöéTheta capital                           Γöé
  13816. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13817. Γöé286  ΓöéGO320000  ΓöéOmega capital                           Γöé
  13818. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13819. Γöé287  ΓöéGD010000  ΓöéDelta small                             Γöé
  13820. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13821. Γöé288  ΓöéSA450000  ΓöéInfinity symbol                         Γöé
  13822. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13823. Γöé289  ΓöéGF010000  ΓöéPhi small                               Γöé
  13824. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13825. Γöé290  ΓöéGE010000  ΓöéEpsilon small                           Γöé
  13826. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13827. Γöé291  ΓöéSA380000  ΓöéIntersection, logical product           Γöé
  13828. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13829. Γöé292  ΓöéSA480000  ΓöéIndentity symbol, almost equal          Γöé
  13830. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13831. Γöé293  ΓöéSA530000  ΓöéGreater than or equal sign              Γöé
  13832. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13833. Γöé294  ΓöéSA520000  ΓöéLess than or equal sign                 Γöé
  13834. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13835. Γöé295  ΓöéSS260000  ΓöéUpper integral symbol section           Γöé
  13836. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13837. Γöé296  ΓöéSS270000  ΓöéLower integral symbol section           Γöé
  13838. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13839. Γöé297  ΓöéSA700000  ΓöéNearly equals symbol                    Γöé
  13840. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13841. Γöé298  ΓöéSA790000  ΓöéProduct dot                             Γöé
  13842. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13843. Γöé299  ΓöéSA800000  ΓöéRadical symbol                          Γöé
  13844. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13845. Γöé300  ΓöéLN011000  ΓöéN small superscript                     Γöé
  13846. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13847. Γöé301  ΓöéSD310000  ΓöéMacron accent                           Γöé
  13848. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13849. Γöé302  ΓöéSD230000  ΓöéBreve accent                            Γöé
  13850. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13851. Γöé303  ΓöéSD290000  ΓöéOverdot accent (over small Alpha)       Γöé
  13852. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13853. Γöé304  ΓöéSD270000  ΓöéOvercircle accent                       Γöé
  13854. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13855. Γöé305  ΓöéSD250000  ΓöéDouble acute accent                     Γöé
  13856. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13857. Γöé306  ΓöéSD430000  ΓöéOgonek accent                           Γöé
  13858. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13859. Γöé307  ΓöéSD210000  ΓöéCaron accent                            Γöé
  13860. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13861. Γöé308  ΓöéSP190000  ΓöéLeft single quote                       Γöé
  13862. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13863. Γöé309  ΓöéSP200000  ΓöéRight single quote                      Γöé
  13864. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13865. Γöé310  ΓöéSP210000  ΓöéLeft double quotes                      Γöé
  13866. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13867. Γöé311  ΓöéSP220000  ΓöéRight double quotes                     Γöé
  13868. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13869. Γöé312  ΓöéSS680000  ΓöéEndash                                  Γöé
  13870. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13871. Γöé313  ΓöéSM900000  ΓöéEmdash                                  Γöé
  13872. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13873. Γöé314  ΓöéSD150000  ΓöéCircumflex accent                       Γöé
  13874. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13875. Γöé315  ΓöéSD190000  ΓöéTilde accent                            Γöé
  13876. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13877. Γöé316  ΓöéSP260000  ΓöéSingle quote on baseline (German lower) Γöé
  13878. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13879. Γöé317  ΓöéSP230000  ΓöéLeft lower double quotes                Γöé
  13880. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13881. Γöé318  ΓöéSV520000  ΓöéEllipsis                                Γöé
  13882. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13883. Γöé319  ΓöéSM340000  ΓöéDagger footnote indicator               Γöé
  13884. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13885. Γöé320  ΓöéSM350000  ΓöéDouble dagger footnote indicator        Γöé
  13886. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13887. Γöé321  ΓöéSD150100  ΓöéCircumflex accent (over small alpha)    Γöé
  13888. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13889. Γöé322  ΓöéSM560000  ΓöéPermille symbol                         Γöé
  13890. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13891. Γöé323  ΓöéLS220000  ΓöéS caron capital                         Γöé
  13892. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13893. Γöé324  ΓöéSP270000  ΓöéFrench single open quote                Γöé
  13894. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13895. Γöé325  ΓöéLO520000  ΓöéOE ligature capital                     Γöé
  13896. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13897. Γöé326  ΓöéSD190100  ΓöéTilde accent (over small alpha)         Γöé
  13898. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13899. Γöé327  ΓöéSM540000  ΓöéTrademark symbol                        Γöé
  13900. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13901. Γöé328  ΓöéLS210000  Γöés caron small                           Γöé
  13902. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13903. Γöé329  ΓöéSP280000  ΓöéFrench single close quote               Γöé
  13904. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13905. Γöé330  ΓöéLO510000  Γöéoe ligature small                       Γöé
  13906. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13907. Γöé331  ΓöéLY180000  ΓöéY diaeresis capital                     Γöé
  13908. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13909. Γöé332  ΓöéLG230000  Γöég Breve Small                           Γöé
  13910. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13911. Γöé333  ΓöéLG240000  ΓöéG Breve Capital                         Γöé
  13912. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13913. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13914. Γöé334  ΓöéLI300000  ΓöéI Overdot Capital                       Γöé
  13915. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13916. Γöé335  ΓöéLS410000  Γöés Cedilla Small                         Γöé
  13917. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13918. Γöé336  ΓöéLS420000  ΓöéS Cedilla Capital                       Γöé
  13919. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13920. Γöé337  ΓöéLA230000  Γöéa Breve Small                           Γöé
  13921. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13922. Γöé338  ΓöéLA240000  ΓöéA Breve Capital                         Γöé
  13923. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13924. Γöé339  ΓöéLA430000  Γöéa Ogonek Small                          Γöé
  13925. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13926. Γöé340  ΓöéLA440000  ΓöéA Ogonek Capital                        Γöé
  13927. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13928. Γöé341  ΓöéLC110000  Γöéc Acute Small                           Γöé
  13929. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13930. Γöé342  ΓöéLC120000  ΓöéC Acute Capital                         Γöé
  13931. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13932. Γöé343  ΓöéLC210000  Γöéc Caron Small                           Γöé
  13933. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13934. Γöé344  ΓöéLC220000  ΓöéC Caron Capital                         Γöé
  13935. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13936. Γöé345  ΓöéLD210000  Γöéd Caron Small                           Γöé
  13937. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13938. Γöé346  ΓöéLD220000  ΓöéD Caron Capital                         Γöé
  13939. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13940. Γöé347  ΓöéLD610000  Γöéd Stroke Small                          Γöé
  13941. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13942. Γöé348  ΓöéLE210000  Γöée Caron Small                           Γöé
  13943. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13944. Γöé349  ΓöéLE220000  ΓöéE Caron Capital                         Γöé
  13945. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13946. Γöé350  ΓöéLE430000  Γöée Ogenek Small                          Γöé
  13947. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13948. Γöé351  ΓöéLE440000  ΓöéE Ogonek Capital                        Γöé
  13949. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13950. Γöé352  ΓöéLL110000  Γöél Acute Small                           Γöé
  13951. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13952. Γöé353  ΓöéLL120000  ΓöéL Acute Capital                         Γöé
  13953. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13954. Γöé354  ΓöéLL210000  Γöél Caron Small                           Γöé
  13955. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13956. Γöé355  ΓöéLL220000  ΓöéL Caron Capital                         Γöé
  13957. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13958. Γöé356  ΓöéLL610000  Γöél Stroke Small                          Γöé
  13959. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13960. Γöé357  ΓöéLL620000  ΓöéL Stroke Capital                        Γöé
  13961. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13962. Γöé358  ΓöéLN110000  Γöén Acute Small                           Γöé
  13963. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13964. Γöé359  ΓöéLN120000  ΓöéN Acute Capital                         Γöé
  13965. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13966. Γöé360  ΓöéLN210000  Γöén Caron Small                           Γöé
  13967. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13968. Γöé361  ΓöéLN220000  ΓöéN Caron Capital                         Γöé
  13969. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13970. Γöé362  ΓöéLO250000  Γöéo Double Acute Small                    Γöé
  13971. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13972. Γöé363  ΓöéLO260000  ΓöéO Double Acute Capital                  Γöé
  13973. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13974. Γöé364  ΓöéLR110000  Γöér Acute Small                           Γöé
  13975. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13976. Γöé365  ΓöéLR120000  ΓöéR Acute Capital                         Γöé
  13977. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13978. Γöé366  ΓöéLR210000  Γöér Caron Small                           Γöé
  13979. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13980. Γöé367  ΓöéLR220000  ΓöéR Caron Capital                         Γöé
  13981. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13982. Γöé368  ΓöéLS110000  Γöés Acute Small                           Γöé
  13983. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13984. Γöé369  ΓöéLS120000  ΓöéS Acute Capital                         Γöé
  13985. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13986. Γöé370  ΓöéLT210000  Γöét Caron Small                           Γöé
  13987. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13988. Γöé371  ΓöéLT220000  ΓöéT Caron Capital                         Γöé
  13989. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13990. Γöé372  ΓöéLT410000  Γöét Cedilla Small                         Γöé
  13991. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13992. Γöé373  ΓöéLT420000  ΓöéT Cedilla Capital                       Γöé
  13993. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13994. Γöé374  ΓöéLU250000  Γöéu Double Acute Small                    Γöé
  13995. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13996. Γöé375  ΓöéLU260000  ΓöéU Double Acute Capital                  Γöé
  13997. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13998. Γöé376  ΓöéLU270000  Γöéu Overcircle Small                      Γöé
  13999. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14000. Γöé377  ΓöéLU280000  Γöéu Overcircle Capital                    Γöé
  14001. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14002. Γöé378  ΓöéLZ110000  Γöéz Acute Small                           Γöé
  14003. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14004. Γöé379  ΓöéLZ120000  ΓöéZ Acute Capital                         Γöé
  14005. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14006. Γöé380  ΓöéLZ210000  Γöéz Caron Small                           Γöé
  14007. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14008. Γöé381  ΓöéLZ220000  ΓöéZ Caron Capital                         Γöé
  14009. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14010. Γöé382  ΓöéLZ290000  Γöéz Overdot Small                         Γöé
  14011. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14012. Γöé383  ΓöéLZ300000  ΓöéZ Overdot Capital                       Γöé
  14013. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14014.  
  14015.  
  14016. ΓòÉΓòÉΓòÉ 21.3. Fonts Supplied with the OS/2 Operating System ΓòÉΓòÉΓòÉ
  14017.  
  14018. OS/2* outline fonts and Presentation Manager* bit map fonts are supplied by the 
  14019. operating system. 
  14020.  
  14021. OS/2 Outline Fonts 
  14022.  
  14023. The following Adobe** Type 1 fonts are supplied with OS/2: 
  14024.  
  14025. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14026. ΓöéFamily Name                   ΓöéFace Name                     Γöé
  14027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14028. ΓöéTimes New Roman*              ΓöéTimes New Roman               Γöé
  14029. Γöé                              ΓöéTimes New Roman Bold          Γöé
  14030. Γöé                              ΓöéTimes New Roman Bold Italic   Γöé
  14031. Γöé                              ΓöéTimes New Roman Italic        Γöé
  14032. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14033. ΓöéHelvetica*                    ΓöéHelvetica                     Γöé
  14034. Γöé                              ΓöéHelvetica Bold                Γöé
  14035. Γöé                              ΓöéHelvetica Bold Italic         Γöé
  14036. Γöé                              ΓöéHelvetica Italic              Γöé
  14037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14038. ΓöéCourier                       ΓöéCourier                       Γöé
  14039. Γöé                              ΓöéCourier Bold                  Γöé
  14040. Γöé                              ΓöéCourier Bold Italic           Γöé
  14041. Γöé                              ΓöéCourier Italic                Γöé
  14042. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14043. ΓöéSymbol                        ΓöéSymbol                        Γöé
  14044. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14045.  
  14046. The Courier, Tms Rmn, and Swiss family fonts that were supplied with OS/2 
  14047. release 1.1 and 1.2 are no longer supplied.  Using one of the old names results 
  14048. in one of the new fonts listed above being used, as follows: 
  14049.  
  14050.  Old Family/Face Name     Font Used. 
  14051.  Roman/Tms Rmn            Times New Roman 
  14052.  Swiss/Helv               Helvetica 
  14053.  
  14054.  These fonts are provided in an efficient binary format for use by the OS/2 
  14055.  Adobe Type Manager. They are also provided in standard Type 1 format (PFB and 
  14056.  AFM) for use with the OS/2 PostScript* printer device driver. 
  14057.  
  14058.  Presentation Manager Bit Map Fonts 
  14059.  
  14060.  The following tables list all system bit map fonts available using the 
  14061.  Graphics Programming Interface. The first table applies to hardware that does 
  14062.  not conform to the International Standards Organization (ISO) 9241. (See 
  14063.  International Standards Organization (ISO) 9241 for more information on ISO 
  14064.  9241.) The second table lists the fonts supplied with OS/2 for IBM hardware 
  14065.  that does conform to ISO 9241. 
  14066.  
  14067.  During system installation, the operating system determines the type of 
  14068.  display adapter available on your computer and installs only the fonts which 
  14069.  match the device resolution. Since additional device bit map fonts may be 
  14070.  available on specific devices, you may have to install the correct bit map 
  14071.  fonts if you change your display device after the operating system is 
  14072.  installed. 
  14073.  
  14074.  Fonts Supplied for ISO 9241 Non-Conforming Hardware 
  14075.  
  14076.  The following information for each font is included in the table: 
  14077.  
  14078.  Points   This is the point size of the font, on a device whose resolution 
  14079.           matches that of the font, (see "Device" below). 
  14080.  
  14081.  Ave Wid  This is the average width in pels of alphabetic characters weighted 
  14082.           according to US English letter frequencies. 
  14083.  
  14084.  Max Wid  This is the maximum width in pels of all characters in the font. This 
  14085.           field is not necessarily the maximum width of any character in the 
  14086.           code page. It could be used to ensure that the horizontal space 
  14087.           allocated on a display or printer is big enough to handle any 
  14088.           character. 
  14089.  
  14090.  Height   This is the height in pels of the font.  This is the minimum number 
  14091.           of rows of pels needed to output any character of the font on a given 
  14092.           baseline. This field may be larger than necessary for a given code 
  14093.           page. It could be used to ensure that the vertical space allocated on 
  14094.           a display or printer is big enough to handle any character. 
  14095.  
  14096.  Device   This is the X and Y resolution in pels per inch at which the font is 
  14097.           intended to be used. Only those fonts which match the device 
  14098.           resolution of the installed display driver are available on the 
  14099.           system. If the installed display is changed, the install process will 
  14100.           reinstall the proper font sets for the new adapter. The IBM devices 
  14101.           whose device drivers report these resolutions are: 
  14102.  
  14103.           96 x 48              CGA 
  14104.           96 x 72              EGA 
  14105.           96 x 96              VGA and XGA (in 640 x 480 mode) 
  14106.           120 x 120            8514/A and XGA (in 1024 x 768 mode) 
  14107.  
  14108.           Note:  These values are approximate representations of the actual 
  14109.                  resolution, which in the case of displays depends on which 
  14110.                  monitor is attached. Consequently the point size of characters 
  14111.                  on the screen is also approximate. 
  14112.  The following table applies to hardware that does not conform to ISO 9241. 
  14113.  
  14114.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14115.   ΓöéFamily ΓöéFace Name      ΓöéPoints ΓöéAve WidΓöéMax WidΓöéHeightΓöéDevice Γöé
  14116.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14117.   ΓöéCourierΓöéCourier        Γöé8      Γöé8      Γöé8      Γöé7     Γöé96x48  Γöé
  14118.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14119.   Γöé       Γöé               Γöé       Γöé8      Γöé8      Γöé10    Γöé96x72  Γöé
  14120.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14121.   Γöé       Γöé               Γöé       Γöé8      Γöé8      Γöé13    Γöé96x96  Γöé
  14122.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14123.   Γöé       Γöé               Γöé       Γöé9      Γöé9      Γöé16    Γöé120x120Γöé
  14124.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14125.   Γöé       Γöé               Γöé10     Γöé9      Γöé9      Γöé8     Γöé96x48  Γöé
  14126.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14127.   Γöé       Γöé               Γöé       Γöé9      Γöé9      Γöé12    Γöé96x72  Γöé
  14128.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14129.   Γöé       Γöé               Γöé       Γöé9      Γöé9      Γöé16    Γöé96x96  Γöé
  14130.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14131.   Γöé       Γöé               Γöé       Γöé12     Γöé12     Γöé20    Γöé120x120Γöé
  14132.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14133.   Γöé       Γöé               Γöé12     Γöé12     Γöé12     Γöé10    Γöé96x48  Γöé
  14134.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14135.   Γöé       Γöé               Γöé       Γöé12     Γöé12     Γöé15    Γöé96x72  Γöé
  14136.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14137.   Γöé       Γöé               Γöé       Γöé12     Γöé12     Γöé20    Γöé96x96  Γöé
  14138.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14139.   Γöé       Γöé               Γöé       Γöé15     Γöé15     Γöé25    Γöé120x120Γöé
  14140.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14141.   ΓöéSystem ΓöéSystem         Γöé8      Γöé6      Γöé20     Γöé8     Γöé96x48  Γöé
  14142.   ΓöéPro-   ΓöéProportional   Γöé       Γöé       Γöé       Γöé      Γöé       Γöé
  14143.   ΓöéportionΓöé               Γöé       Γöé       Γöé       Γöé      Γöé       Γöé
  14144.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14145.   Γöé       Γöé               Γöé10     Γöé6      Γöé20     Γöé12    Γöé96x96  Γöé
  14146.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14147.   Γöé       Γöé               Γöé10     Γöé6      Γöé20     Γöé16    Γöé96x96  Γöé
  14148.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14149.   Γöé       Γöé               Γöé10     Γöé8      Γöé23     Γöé20    Γöé120x120Γöé
  14150.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14151.   Γöé       Γöé               Γöé11     Γöé10     Γöé23     Γöé23    Γöé120x120Γöé
  14152.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14153.   ΓöéSystem ΓöéSystem         Γöé8      Γöé8      Γöé8      Γöé8     Γöé96x48  Γöé
  14154.   ΓöéMono-  ΓöéMonospaced     Γöé       Γöé       Γöé       Γöé      Γöé       Γöé
  14155.   Γöéspaced Γöé               Γöé       Γöé       Γöé       Γöé      Γöé       Γöé
  14156.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14157.   Γöé       Γöé               Γöé10     Γöé8      Γöé8      Γöé12    Γöé96x72  Γöé
  14158.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14159.   Γöé       Γöé               Γöé10     Γöé8      Γöé8      Γöé16    Γöé96x96  Γöé
  14160.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14161.   Γöé       Γöé               Γöé10     Γöé9      Γöé9      Γöé20    Γöé120x120Γöé
  14162.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14163.   ΓöéHelv   ΓöéHelv           Γöé8      Γöé5      Γöé13     Γöé6     Γöé96x48  Γöé
  14164.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14165.   Γöé       Γöé               Γöé       Γöé5      Γöé13     Γöé10    Γöé96x72  Γöé
  14166.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14167.   Γöé       Γöé               Γöé       Γöé5      Γöé13     Γöé13    Γöé96x96  Γöé
  14168.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14169.   Γöé       Γöé               Γöé       Γöé6      Γöé14     Γöé16    Γöé120x120Γöé
  14170.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14171.   Γöé       Γöé               Γöé10     Γöé6      Γöé15     Γöé8     Γöé96x48  Γöé
  14172.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14173.   Γöé       Γöé               Γöé       Γöé6      Γöé14     Γöé12    Γöé96x72  Γöé
  14174.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14175.   Γöé       Γöé               Γöé       Γöé6      Γöé14     Γöé16    Γöé96x96  Γöé
  14176.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14177.   Γöé       Γöé               Γöé       Γöé7      Γöé20     Γöé20    Γöé120x120Γöé
  14178.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14179.   Γöé       Γöé               Γöé12     Γöé7      Γöé17     Γöé10    Γöé96x48  Γöé
  14180.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14181.   Γöé       Γöé               Γöé       Γöé7      Γöé17     Γöé15    Γöé96x72  Γöé
  14182.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14183.   Γöé       Γöé               Γöé       Γöé7      Γöé17     Γöé20    Γöé96x96  Γöé
  14184.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14185.   Γöé       Γöé               Γöé       Γöé9      Γöé21     Γöé25    Γöé120x120Γöé
  14186.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14187.   Γöé       Γöé               Γöé14     Γöé8      Γöé21     Γöé12    Γöé96x48  Γöé
  14188.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14189.   Γöé       Γöé               Γöé       Γöé8      Γöé21     Γöé18    Γöé96x72  Γöé
  14190.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14191.   Γöé       Γöé               Γöé       Γöé8      Γöé21     Γöé24    Γöé96x96  Γöé
  14192.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14193.   Γöé       Γöé               Γöé       Γöé11     Γöé26     Γöé29    Γöé120x120Γöé
  14194.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14195.   Γöé       Γöé               Γöé18     Γöé11     Γöé26     Γöé15    Γöé96x48  Γöé
  14196.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14197.   Γöé       Γöé               Γöé       Γöé10     Γöé26     Γöé22    Γöé96x72  Γöé
  14198.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14199.   Γöé       Γöé               Γöé       Γöé11     Γöé26     Γöé29    Γöé96x96  Γöé
  14200.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14201.   Γöé       Γöé               Γöé       Γöé13     Γöé34     Γöé36    Γöé120x120Γöé
  14202.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14203.   Γöé       Γöé               Γöé24     Γöé14     Γöé35     Γöé19    Γöé96x48  Γöé
  14204.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14205.   Γöé       Γöé               Γöé       Γöé14     Γöé35     Γöé28    Γöé96x72  Γöé
  14206.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14207.   Γöé       Γöé               Γöé       Γöé14     Γöé35     Γöé37    Γöé96x96  Γöé
  14208.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14209.   Γöé       Γöé               Γöé       Γöé18     Γöé45     Γöé46    Γöé120x120Γöé
  14210.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14211.   ΓöéTms RmnΓöéTms Rmn        Γöé8      Γöé4      Γöé12     Γöé6     Γöé96x48  Γöé
  14212.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14213.   Γöé       Γöé               Γöé       Γöé4      Γöé13     Γöé10    Γöé96x72  Γöé
  14214.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14215.   Γöé       Γöé               Γöé       Γöé4      Γöé12     Γöé13    Γöé96x96  Γöé
  14216.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14217.   Γöé       Γöé               Γöé       Γöé5      Γöé14     Γöé16    Γöé120x120Γöé
  14218.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14219.   Γöé       Γöé               Γöé10     Γöé6      Γöé15     Γöé8     Γöé96x48  Γöé
  14220.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14221.   Γöé       Γöé               Γöé       Γöé5      Γöé14     Γöé12    Γöé96x72  Γöé
  14222.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14223.   Γöé       Γöé               Γöé       Γöé5      Γöé14     Γöé16    Γöé96x96  Γöé
  14224.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14225.   Γöé       Γöé               Γöé       Γöé7      Γöé19     Γöé20    Γöé120x120Γöé
  14226.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14227.   Γöé       Γöé               Γöé12     Γöé7      Γöé18     Γöé10    Γöé96x48  Γöé
  14228.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14229.   Γöé       Γöé               Γöé       Γöé6      Γöé18     Γöé15    Γöé96x72  Γöé
  14230.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14231.   Γöé       Γöé               Γöé       Γöé6      Γöé16     Γöé19    Γöé96x96  Γöé
  14232.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14233.   Γöé       Γöé               Γöé       Γöé8      Γöé23     Γöé23    Γöé120x120Γöé
  14234.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14235.   Γöé       Γöé               Γöé14     Γöé7      Γöé21     Γöé11    Γöé96x48  Γöé
  14236.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14237.   Γöé       Γöé               Γöé       Γöé7      Γöé21     Γöé16    Γöé96x72  Γöé
  14238.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14239.   Γöé       Γöé               Γöé       Γöé7      Γöé20     Γöé21    Γöé96x96  Γöé
  14240.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14241.   Γöé       Γöé               Γöé       Γöé10     Γöé26     Γöé27    Γöé120x120Γöé
  14242.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14243.   Γöé       Γöé               Γöé18     Γöé10     Γöé26     Γöé14    Γöé96x48  Γöé
  14244.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14245.   Γöé       Γöé               Γöé       Γöé10     Γöé26     Γöé20    Γöé96x72  Γöé
  14246.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14247.   Γöé       Γöé               Γöé       Γöé10     Γöé26     Γöé27    Γöé96x96  Γöé
  14248.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14249.   Γöé       Γöé               Γöé       Γöé12     Γöé34     Γöé33    Γöé120x120Γöé
  14250.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14251.   Γöé       Γöé               Γöé24     Γöé14     Γöé35     Γöé18    Γöé96x48  Γöé
  14252.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14253.   Γöé       Γöé               Γöé       Γöé13     Γöé35     Γöé26    Γöé96x72  Γöé
  14254.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14255.   Γöé       Γöé               Γöé       Γöé13     Γöé35     Γöé35    Γöé96x96  Γöé
  14256.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14257.   Γöé       Γöé               Γöé       Γöé16     Γöé46     Γöé43    Γöé120x120Γöé
  14258.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14259.  
  14260.  Fonts Supplied for ISO 9241 Conforming Hardware 
  14261.  
  14262.  The following table lists the fonts and sizes that have been tested and 
  14263.  certified as passing the ISO 9241 black text on white background criteria for 
  14264.  the three IBM displays that conform to the standard. These displays are: 
  14265.  
  14266.      9515 - A 14 inch XGA display. 
  14267.      9517 - A 17 inch XGA display. 
  14268.      9518 - A 14 inch VGA display. 
  14269.  
  14270.  See International Standards Organization (ISO) 9241 for information on ISO 
  14271.  9241. 
  14272.  
  14273.  The following information about each font is also included in the table: 
  14274.  
  14275.  P        The point size of the font. 
  14276.  AW       The average character width in pels in the font. 
  14277.  MW       The maximum character width in pels in the font. 
  14278.  HE       The height in pels of the font (maximum baseline extent). 
  14279.  Device   The X and Y resolution in pels per inch on the device the font is 
  14280.           intended to be used. The IBM devices whose device drivers report 
  14281.           these resolutions are: 
  14282.           96 x 96              VGA and XGA (in 640 x 480 mode) 
  14283.           120 x 120            XGA (in 1024 x 768 mode) 
  14284.  
  14285.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  14286.   ΓöéFamily  ΓöéFace NamΓöéP   AW  MW  HE  ΓöéDevice   Γöé9515  9517  9518 Γöé
  14287.   ΓöéName    Γöé        Γöé                Γöé         Γöé                 Γöé
  14288.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14289.   ΓöéCourier ΓöéCourier Γöé 8   8   8  13  Γöé 96   96 ΓöéNo    No    No   Γöé
  14290.   Γöé        ΓöéISO     Γöé 8  10  10  16  Γöé120  120 ΓöéNo    No    n/a  Γöé
  14291.   Γöé        Γöé        Γöé 9   8   8  15  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14292.   Γöé        Γöé        Γöé10  10  10  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14293.   Γöé        Γöé        Γöé10  12  12  20  Γöé120  120 ΓöéNo    No    n/a  Γöé
  14294.   Γöé        Γöé        Γöé12  12  12  20  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14295.   Γöé        Γöé        Γöé12  15  15  25  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14296.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14297.   ΓöéHelv    ΓöéHelv ISOΓöé 8   5  13  13  Γöé 96   96 ΓöéNo    No    No   Γöé
  14298.   Γöé        Γöé        Γöé 8   7  14  16  Γöé120  120 ΓöéNo    No    n/a  Γöé
  14299.   Γöé        Γöé        Γöé 9   6  13  15  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14300.   Γöé        Γöé        Γöé 9   8  20  21  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14301.   Γöé        Γöé        Γöé10   7  14  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14302.   Γöé        Γöé        Γöé10   9  20  21  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14303.   Γöé        Γöé        Γöé12   9  17  20  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14304.   Γöé        Γöé        Γöé12  10  21  25  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14305.   Γöé        Γöé        Γöé14  10  21  24  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14306.   Γöé        Γöé        Γöé14  12  26  29  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14307.   Γöé        Γöé        Γöé18  12  26  29  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14308.   Γöé        Γöé        Γöé18  15  34  36  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14309.   Γöé        Γöé        Γöé24  14  34  36  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14310.   Γöé        Γöé        Γöé24  19  45  46  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14311.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14312.   ΓöéTms Rmn ΓöéTms Rmn Γöé 8   5  12  13  Γöé 96   96 ΓöéNo    No    No   Γöé
  14313.   Γöé        ΓöéISO     Γöé 8   7  15  16  Γöé120  120 ΓöéNo    No    n/a  Γöé
  14314.   Γöé        Γöé        Γöé 9   6  12  15  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14315.   Γöé        Γöé        Γöé10   7  14  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14316.   Γöé        Γöé        Γöé10   8  17  19  Γöé120  120 ΓöéNo    Yes   n/a  Γöé
  14317.   Γöé        Γöé        Γöé12   8  16  19  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14318.   Γöé        Γöé        Γöé12  10  23  22  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14319.   Γöé        Γöé        Γöé14   9  23  22  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14320.   Γöé        Γöé        Γöé14  11  26  27  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14321.   Γöé        Γöé        Γöé18  11  26  27  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14322.   Γöé        Γöé        Γöé18  14  34  34  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14323.   Γöé        Γöé        Γöé24  14  34  34  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14324.   Γöé        Γöé        Γöé24  17  46  43  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14325.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14326.   ΓöéSystem  ΓöéSystem  Γöé 9   6  13  15  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14327.   ΓöéPropor- ΓöéPropor- Γöé10   6  20  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14328.   Γöétional  Γöétional  Γöé10   8  23  20  Γöé120  120 ΓöéNo    Yes   n/a  Γöé
  14329.   Γöé        Γöé        Γöé12  10  23  22  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14330.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  14331.   ΓöéSystem  ΓöéSystem  Γöé10   8   8  16  Γöé 96   96 ΓöéYes   Yes   Yes  Γöé
  14332.   ΓöéMono-   ΓöéMono-   Γöé10  10  10  21  Γöé120  120 ΓöéYes   Yes   n/a  Γöé
  14333.   Γöéspaced  Γöéspaced  Γöé                Γöé         Γöé                 Γöé
  14334.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  14335.  
  14336.  See International Standards Organization (ISO) 9241 for more information on 
  14337.  ISO 9241. 
  14338.  
  14339.  
  14340. ΓòÉΓòÉΓòÉ 21.3.1. International Standards Organization (ISO) 9241 ΓòÉΓòÉΓòÉ
  14341.  
  14342. ISO 9241 is an international standard covering health and safety in the work 
  14343. place for users of visual display terminals. Part 3 of this standard covers 
  14344. clarity and legibility of text displayed on computer screens; it places 
  14345. requirements on minimum sizes and luminance contrast. The presence of the 
  14346. FM_SEL_ISO9241_TESTED flag in the FONTMETRICS structure indicates that the font 
  14347. has been tested for ISO compliance. 
  14348.  
  14349. Note:  While the fonts were primarily tested for meeting the ISO standard, they 
  14350.        have also been designed to meet the German standard DIN 66 234. Where 
  14351.        the two standards differ, the fonts have been designed to meet the 
  14352.        stricter requirement. 
  14353.  
  14354.  The FM_ISO_xxx flags indicate the results of the test on the three IBM* 
  14355.  displays that conform to the standard. These are the IBM 9515, 9517, and 9518 
  14356.  color displays at the supported resolutions of 640 x 480 and 1024 x 768. To 
  14357.  determine whether a non-IBM display complies with ISO 9241, contact the 
  14358.  manufacturer. The current display type can be established using VioGetConfig. 
  14359.  
  14360.  In order for applications to meet the standard, they have to ensure that they 
  14361.  use only fonts that have been tested and passed. You can determine this by 
  14362.  examining the new FM_SEL_ISO9241_TESTED flag in the fsSelection parameter in 
  14363.  the FONTMETRICS structure, the FM_ISO_xxx flags and the sXDeviceRes and 
  14364.  sYDeviceRes fields in the structure. 
  14365.  
  14366.  See Fonts Supplied with the OS/2 Operating System for the table describing ISO 
  14367.  9241 compliant fonts. 
  14368.  
  14369.  
  14370. ΓòÉΓòÉΓòÉ 21.4. Initialization File Information ΓòÉΓòÉΓòÉ
  14371.  
  14372. Initialization files include information about printers, queues, and system 
  14373. preferences set by the user from the control panel.  Applications can query 
  14374. this information by using the PrfQueryProfileData, PrfQueryProfileInt, 
  14375. PrfQueryProfileSize, and PrfQueryProfileString functions. 
  14376.  
  14377. All data in initialization files is accessed by a two-level hierarchy of 
  14378. application name, and key name within an application.  Presentation Manager 
  14379. system data is keyed off "applications" that have names starting with PM_. 
  14380.  
  14381. The application name/key name combinations that applications may need to use 
  14382. are listed below, together with the definition of the corresponding data. 
  14383.  
  14384. Note:  Information that is prefixed with PM_SPOOLERxxxx can not always be 
  14385.        modified directly:  The spooler validates all attempts to write 
  14386.        information to the INI file that it depends on. 
  14387.  
  14388.  Application name      "PM_ControlPanel" 
  14389.  Key name              "Beep" 
  14390.  Type                  integer 
  14391.  Content/value         1 or 0. 
  14392.  
  14393.  Application name      "PM_ControlPanel" 
  14394.  Key name              "LogoDisplayTime" 
  14395.  Type                  integer 
  14396.  Content/value         -1 <= time <= 32767 milliseconds. 
  14397.                           Indefinite display       -1 
  14398.                           No display                0 
  14399.                           Timed display            >0 
  14400.  
  14401.  Application name      "PM_ControlPanel" 
  14402.  Key name              "cxDoubleClick" 
  14403.  Type                  integer 
  14404.  Content/value         SV_CXDBLCLK size in pels. 
  14405.  
  14406.  Application name      "PM_ControlPanel" 
  14407.  Key name              "cyDoubleClick" 
  14408.  Type                  integer 
  14409.  Content/value         SV_CYDBLCLK size in pels. 
  14410.  
  14411.  Application name      "PM_ControlPanel" 
  14412.  Key name              "cxMotionStart" 
  14413.  Type                  integer 
  14414.  Content/value         SV_CXMOTIONSTART size in pels. 
  14415.  
  14416.  Application name      "PM_ControlPanel" 
  14417.  Key name              "cyMotionStart" 
  14418.  Type                  integer 
  14419.  Content/value         SV_CYMOTIONSTART size in pels. 
  14420.  
  14421.  Application name      "PM_National" 
  14422.  Key name              "iCountry" 
  14423.  Type                  integer 
  14424.  Content/value         country code: 
  14425.                           Arabic                  785 
  14426.                           Australian               61 
  14427.                           Belgian                  32 
  14428.                           Canadian-French           2 
  14429.                           Danish                   45 
  14430.                           Finnish                 358 
  14431.                           French                   33 
  14432.                           German                   49 
  14433.                           Hebrew                  972 
  14434.                           Italian                  39 
  14435.                           Japanese                 81 
  14436.                           Korean                   82 
  14437.                           Latin-American            3 
  14438.                           Netherlands              31 
  14439.                           Norwegian                47 
  14440.                           Portuguese              351 
  14441.                           Simpl. Chinese           86 
  14442.                           Spanish                  34 
  14443.                           Swedish                  46 
  14444.                           Swiss                    41 
  14445.                           Trad. Chinese            88 
  14446.                           UK-English               44 
  14447.                           US-English                1 
  14448.                           Other country             0. 
  14449.  
  14450.  Application name      "PM_National" 
  14451.  Key name              "iDate" 
  14452.  Type                  integer 
  14453.  Content/value         0=MDY; 1=DMY; 2=YMD. 
  14454.  
  14455.  Application name      "PM_National" 
  14456.  Key name              "iCurrency" 
  14457.  Type                  integer 
  14458.  Content/value         Values have the following meanings: 
  14459.                           0        Prefix, no separator 
  14460.                           1        Suffix, no separator 
  14461.                           2        Prefix, 1 character separator 
  14462.                           3        Suffix, 1 character separator. 
  14463.  
  14464.  Application name      "PM_National" 
  14465.  Key name              "iDigits" 
  14466.  Type                  integer 
  14467.  Content/value         n = number of decimal digits. 
  14468.  
  14469.  Application name      "PM_National" 
  14470.  Key name              "iTime" 
  14471.  Type                  integer 
  14472.  Content/value         0 = 12-hour clock; 1 = 24-hour clock. 
  14473.  
  14474.  Application name      "PM_National" 
  14475.  Key name              "iLzero" 
  14476.  Type                  integer 
  14477.  Content/value         0 = no leading zero; 1 = leading zero. 
  14478.  
  14479.  Application name      "PM_National" 
  14480.  Key name              "s1159" 
  14481.  Type                  string 
  14482.  Content/value         "am" for example. 3 chars max. 
  14483.  
  14484.  Application name      "PM_National" 
  14485.  Key name              "s2359" 
  14486.  Type                  string 
  14487.  Content/value         "pm" for example. 3 chars max. 
  14488.  
  14489.  Application name      "PM_National" 
  14490.  Key name              "sCurrency" 
  14491.  Type                  string 
  14492.  Content/value         "$" for example. 3 chars max. 
  14493.  
  14494.  Application name      "PM_National" 
  14495.  Key name              "sThousand" 
  14496.  Type                  string 
  14497.  Content/value         "," for example. 1 char max. 
  14498.  
  14499.  Application name      "PM_National" 
  14500.  Key name              "sDecimal" 
  14501.  Type                  string 
  14502.  Content/value         "." for example. 1 char max. 
  14503.  
  14504.  Application name      "PM_National" 
  14505.  Key name              "sDate" 
  14506.  Type                  string 
  14507.  Content/value         "/" for example. 1 char max. 
  14508.  
  14509.  Application name      "PM_National" 
  14510.  Key name              "sTime" 
  14511.  Type                  string 
  14512.  Content/value         ":" for example. 1 char max. 
  14513.  
  14514.  Application name      "PM_National" 
  14515.  Key name              "sList" 
  14516.  Type                  string 
  14517.  Content/value         "," for example. 1 char max. 
  14518.  
  14519.  Application name      PM_Fonts 
  14520.  Key name              <Font module name> 
  14521.  Type                  string 
  14522.  Content/value         fully-qualified drive:\path\filename.ext. 
  14523.  
  14524.  Application name      "PM_SPOOLER" 
  14525.  Key name              "QUEUE" 
  14526.  Type                  string 
  14527.  Content/value         <Queue name>; 
  14528.  
  14529.                        where: <Queue name> is the name of the default queue 
  14530.                        (might be NULL). This must be a key name for the 
  14531.                        PM_SPOOLER_QUEUE application. 
  14532.  
  14533.  Application name      "PM_SPOOLER" 
  14534.  Key name              " PRINTER" 
  14535.  Type                  string 
  14536.  Content/value         <Printer name>; 
  14537.  
  14538.                        where: <Printer name> is the name of the default printer 
  14539.                        (might be NULL). 
  14540.  
  14541.  Note:  Use the SplQueryDevice and SplQueryQueue functions to retrieve the 
  14542.         spooler configuration data. 
  14543.  
  14544.  
  14545. ΓòÉΓòÉΓòÉ 21.5. Interchange File Format ΓòÉΓòÉΓòÉ
  14546.  
  14547. A metafile is a file in which graphics are stored. The file is 
  14548. application-created, and it contains the graphics orders generated from those 
  14549. GPI calls that are valid in a metafile. Metafiled graphics can be reused by the 
  14550. application that created them. They can also be made available to other 
  14551. applications at the same, or at a different, workstation. 
  14552.  
  14553. This section describes the restrictions which apply when generating the 
  14554. metafile and gives detail of the overall structure. For the graphics orders 
  14555. descriptions, see "Graphics Orders" in the Graphics Programming Interface 
  14556. Programming Reference. 
  14557.  
  14558.  
  14559. ΓòÉΓòÉΓòÉ 21.5.1. Metafile Restrictions ΓòÉΓòÉΓòÉ
  14560.  
  14561. The following restrictions apply to the generation of all metafiles, and also 
  14562. to the generation of a PM_Q_STD print file to a OD_QUEUED device: 
  14563.  
  14564.      If GpiWCBitBlt or GpiBitBlt is used to copy a bit map to a device context 
  14565.       in an application, the application should not delete that bit map handle 
  14566.       with GpiDeleteBitmap before the device context is closed (metafile is 
  14567.       closed). 
  14568.  
  14569.      GpiSetPS must not be used. 
  14570.  
  14571.      GpiSetPageViewport is ignored. 
  14572.  
  14573.  The following section lists some general rules that must be followed when 
  14574.  creating a metafile that is to be acceptable to SAA-conforming 
  14575.  implementations, or replayed into a presentation space that is in 
  14576.  draw-and-retain or retain mode (see "GpiSetDrawingMode" in Graphics 
  14577.  Programming Interface Programming Reference). 
  14578.  
  14579.      These items must be established or defaulted before any drawing occurs to 
  14580.       the graphics presentation space, and not changed subsequently: 
  14581.  
  14582.         -  The graphics field (GpiSetGraphicsField). For an SAA-conforming 
  14583.            metafile, the graphics field must be defaulted or set to no 
  14584.            clipping. 
  14585.         -  The code page for the default character set (GpiSetCp). 
  14586.         -  The color table or palette (GpiCreateLogColorTable or 
  14587.            GpiCreatePalette). The size of the color table must not exceed 31KB 
  14588.            (KB equals 1024 bytes). 
  14589.         -  The default viewing transform (GpiSetDefaultViewMatrix). 
  14590.         -  The setting of the draw controls (GpiSetDrawControl). DCTL_DISPLAY 
  14591.            must be defaulted or set ON. 
  14592.         -  The default values of attributes (see "GpiSetDefAttrs" in the 
  14593.            Graphics Programming Interface Programming Reference), viewing 
  14594.            limits (see "GpiSetDefViewingLimits" in the Graphics Programming 
  14595.            Interface Programming Reference), primitive tag (see "GpiSetDefTag" 
  14596.            in the Graphics Programming Interface Programming Reference) and arc 
  14597.            parameters (see "GpiSetDefArcParams" in the Graphics Programming 
  14598.            Interface Programming Reference). 
  14599.  
  14600.      These calls should not be used: 
  14601.  
  14602.         -  GpiBitBlt 
  14603.         -  GpiDeleteSetId (note that this means that local identifiers cannot 
  14604.            be used again within the picture) 
  14605.         -  GpiErase 
  14606.         -  GpiExcludeClipRectangle 
  14607.         -  GpiIntersectClipRectangle 
  14608.         -  GpiOffsetClipRegion 
  14609.         -  GpiPaintRegion 
  14610.         -  GpiResetPS 
  14611.         -  GpiSetClipRegion 
  14612.         -  GpiSetPel 
  14613.         -  GpiSetPS 
  14614.         -  DevEscape (for an escape which is metafiled). 
  14615.  
  14616.      GpiCreateLogFont must not redefine a local identifier that has previously 
  14617.       been used within the picture. 
  14618.  
  14619.      The metafile context must not be reassociated. 
  14620.  
  14621.      If a bit map is used as the source of a GpiWCBitBlt operation, or as an 
  14622.       area-fill pattern, it must not be modified or deleted (GpiDeleteBitmap) 
  14623.       before the metafile is closed. 
  14624.  
  14625.      Only these foreground mixes must be used (see "GpiSetMix" in the Graphics 
  14626.       Programming Interface Programming Reference): 
  14627.  
  14628.         -  FM_DEFAULT 
  14629.         -  FM_OR 
  14630.         -  FM_OVERPAINT 
  14631.         -  FM_LEAVEALONE 
  14632.  
  14633.      Only these background mixes must be used (see "GpiSetBackMix" in the 
  14634.       Graphics Programming Interface Programming Reference): 
  14635.  
  14636.         -  BM_DEFAULT 
  14637.         -  BM_OVERPAINT 
  14638.         -  BM_LEAVEALONE 
  14639.  
  14640.      If palettes are used (see "GpiCreatePalette" in the Graphics Programming 
  14641.       Interface Programming Reference): the palette that is metafiled is the 
  14642.       one in force when the metafile device context is dissociated from the 
  14643.       (final) presentation space. If the palette is changed during the course 
  14644.       of the picture (using GpiSetPaletteEntries), it must therefore only be 
  14645.       with incremental additions. 
  14646.  
  14647.  Note:  There is no restriction concerning the use of primitives outside 
  14648.         segments. These are metafiled in segment(s) with zero identifier. 
  14649.  
  14650.  
  14651. ΓòÉΓòÉΓòÉ 21.5.2. Metafile Data Format ΓòÉΓòÉΓòÉ
  14652.  
  14653. This section describes the format of the data in a metafile, as it would be 
  14654. stored in an OS/2* disk file. 
  14655.  
  14656. Metafile data is stored as a sequence of structured fields. Each structured 
  14657. field starts with an eight-byte header consisting of a two-byte length field 
  14658. and a three-byte identifier field. These are followed by a one-byte flags field 
  14659. and a two-byte segment sequence number field. 
  14660.  
  14661. The length field contains a count of the total number of bytes in the 
  14662. structured field, including the length field. The identifier field uniquely 
  14663. identifies the type of the structured field. 
  14664.  
  14665. The flags and segment sequence number fields are always zero. 
  14666.  
  14667. Following the header are positional parameters that are optional and dependent 
  14668. on the particular structured field. 
  14669.  
  14670. Following the positional parameters are non-positional parameters called 
  14671. triplets. These are self-defining parameters and consist of a one-byte length 
  14672. field, followed by a one-byte identifier field, followed by the data of the 
  14673. parameter. 
  14674.  
  14675. The length field contains a count of the total number of bytes in the triplet, 
  14676. including the length and identifier fields. The identifier field identifies 
  14677. uniquely the type of the triplet. 
  14678.  
  14679. A metafile is structured into a number of different functional components; for 
  14680. example, document and graphics object. Each component comprises a number of 
  14681. structured fields, and is delimited by "begin-component" and "end-component" 
  14682. structured fields. Structured fields marked as required, inside an optional 
  14683. structured field bracket, are required if the containing bracket is present. 
  14684.  
  14685. The graphics orders that describe a picture occur in the graphics data 
  14686. structured field. See Structured Field Formats for more information. 
  14687.  
  14688.  
  14689. ΓòÉΓòÉΓòÉ 21.5.3. Structured Field Formats ΓòÉΓòÉΓòÉ
  14690.  
  14691. Following is the format of the various structured fields: 
  14692.  
  14693. Begin Document 
  14694.  
  14695. Structured Field Introducer (BDT): required 
  14696.  
  14697.  0-1       Length 0xn+1E 
  14698.  2-4       BDT 0xD3A8A8 
  14699.  5         Flags 0x00 
  14700.  6-7       Segment sequence number 0x0000 
  14701.  
  14702.  Parameters 
  14703.  
  14704.  0-7       Document name C'0000 0001' 
  14705.  8         Architecture version 0x00 
  14706.  9         Document security 0x00 
  14707.  
  14708.  Triplets (all required) 
  14709.  
  14710.  0         Length 0x05 
  14711.  1         Triplet Id 0x18 
  14712.  2         Interchange set type 0x03 (resource document) 
  14713.  3-4       Base set definition 0x0C00 (level 12, version 0) 
  14714.  
  14715.  0         Length 0x06 
  14716.  1         Triplet Id 0x01 
  14717.  2-5       GCID 
  14718.  
  14719.  0         Length 0xn+1 
  14720.  1         Triplet Id 0x65 
  14721.  2-n       Comment, used for metafile description of up to 252 bytes. 
  14722.  
  14723.  Begin Resource Group (BRG): required 
  14724.  
  14725.  Structured Field Introducer 
  14726.  
  14727.  0-1       Length 0x0010 
  14728.  2-4       BRG 0xD3A8C6 
  14729.  5         Flags 0x00 
  14730.  6-7       Segment sequence number 0x0000 
  14731.  
  14732.  Parameters 
  14733.  
  14734.  0-7       Resource group name  C'0000 0002' 
  14735.  
  14736.  Begin Color Attribute (BCA) Table: required 
  14737.  
  14738.  Structured Field Introducer 
  14739.  
  14740.  0-1       Length 0x0010 
  14741.  2-4       BCA 0xD3A877 
  14742.  5         Flags 0x00 
  14743.  6-7       Segment sequence number 0x0000 
  14744.  
  14745.  Parameters 
  14746.  
  14747.  0-7       Color table name C'0000 0004' 
  14748.  
  14749.  Color Attribute Table (CAT): required 
  14750.  
  14751.  Structured Field Introducer 
  14752.  
  14753.  0-1       Length 0xn+8 
  14754.  2-4       CAT 0xD3B077 
  14755.  5         Flags 0x00 
  14756.  6-7       Segment sequence number 0x0000 
  14757.  
  14758.  Parameters 
  14759.  
  14760.  Base Part (required) 
  14761.  
  14762.  0         Flags 
  14763.            0         Reserved B'0' 
  14764.            1         Reset 
  14765.                      B'0'       Do not reset to default 
  14766.                      B'1'       Do reset to default 
  14767.            2-7       Reserved B'000000' 
  14768.  1         Reserved 0x00 
  14769.  2         LCTID 0x00 
  14770.  
  14771.  Element list(s) (triple generating) are mutually-exclusive.  One or other is 
  14772.  required. 
  14773.  
  14774.  Element List (repeating) 
  14775.  
  14776.  0         Length of this parameter 
  14777.  1         Type 0x01: element list 
  14778.  2         Flags 0x00: reserved 
  14779.  3         Format 
  14780.            0x01       RGB 
  14781.  4-6       Starting Index 
  14782.            (Top Byte Truncated) 
  14783.  7         Size of RGB component1 0x08 
  14784.  8         Size of RGB component2 0x08 
  14785.  9         Size of RGB component3 0x08 
  14786.  10        Number of bytes in each following color triple 0x04 
  14787.  11-m      Color triples 
  14788.  
  14789.  Triple Generating 
  14790.  
  14791.  0         Length of this parameter 0x0A 
  14792.  1         Type 0x02: bit generator 
  14793.  2         Flags 
  14794.            0         ABFlag 
  14795.                      B'0'       Normal 
  14796.            1-7       Reserved B'0000000' 
  14797.  3         Format 
  14798.            0x01           RGB 
  14799.            4-6            Starting index (top byte truncated) 
  14800.  7         Size of RGB component1 0x08 
  14801.  8         Size of RGB component2 0x08 
  14802.  9         Size of RGB component3 0x08 
  14803.  End Color Attribute (ECA) Table: required 
  14804.  
  14805.  Structured Field Introducer 
  14806.  
  14807.  0-1       Length 0x0010 
  14808.  2-4       ECA 0xD3A977 
  14809.  5         Flags 0x00 
  14810.  6-7       Segment sequence number 0x0000 
  14811.  
  14812.  Parameters 
  14813.  
  14814.  0-7       Color table name C'0000 0004' 
  14815.  
  14816.  Begin Image Object (BIM): optional, repeating 
  14817.  
  14818.  Structured Field Introducer 
  14819.  
  14820.  0-1       Length 0x0010 
  14821.  2-4       BIM 0xD3A8FB 
  14822.  5         Flags 0x00 
  14823.  6-7       Segment sequence number 0x0000 
  14824.  
  14825.  Parameters 
  14826.  
  14827.  0-7       Image name C'xxxx xxxx' 
  14828.  
  14829.  Begin Resource Group (BRG): optional 
  14830.  
  14831.  Structured Field Introducer 
  14832.  
  14833.  0-1       Length 0x0010 
  14834.  2-4       BRG 0xD3A8C6 
  14835.  5         Flags 0x00 
  14836.  6-7       Segment sequence number 0x0000 
  14837.  
  14838.  Parameters 
  14839.  
  14840.  0-7       Resource group name C'xxxx xxxx' 
  14841.  
  14842.  Color Attribute Table (BCA): optional 
  14843.  
  14844.  Structured Field Introducer 
  14845.  
  14846.  0-1       Length 0x0010 
  14847.  2-4       BCA 0xD3A877 
  14848.  5         Flags 0x00 
  14849.  6-7       Segment sequence number 0x0000 
  14850.  
  14851.  Parameters 
  14852.  
  14853.  0-7       Color table name C'xxxx xxxx' 
  14854.  
  14855.  Color Attribute Table (CAT): required 
  14856.  
  14857.  Structured Field Introducer 
  14858.  
  14859.  0-1       Length 
  14860.  2-4       CAT 0xD3B077 
  14861.  5         Flags 0x00 
  14862.  6-7       Segment sequence number 0x0000 
  14863.  
  14864.  Parameters 
  14865.  
  14866.  Base Part 
  14867.  
  14868.  0         Flags 0x00 
  14869.  1         Reserved 0x00 
  14870.  2         LUTID 
  14871.  
  14872.  Element List (repeating) 
  14873.  
  14874.  0         Length of this parameter 
  14875.  1         Type 0x01: element list 
  14876.  2         Flags 0x00: reserved 
  14877.  3         Format 0x01: RGB 
  14878.  4-6       Starting index 
  14879.            (top byte truncated) 
  14880.  7         Size of RGB component1 0x08 
  14881.  8         Size of RGB component2 0x08 
  14882.  9         Size of RGB component3 0x08 
  14883.  10        Number of bytes in each following color triple 0x03 
  14884.  11-n      Color triples 
  14885.  
  14886.  End Color Attribute Table (ECA): required if BCA present 
  14887.  
  14888.  Structured Field Introducer 
  14889.  
  14890.  0-1       Length 0x0010 
  14891.  2-4       ECA 0xD3A977 
  14892.  5         Flags 0x00 
  14893.  6-7       Segment sequence number 0x0000 
  14894.  
  14895.  Parameters 
  14896.  
  14897.  0-7       Color Table name C'xxxx xxxx' 
  14898.  
  14899.  End Resource Group (ERG): required if BRG present 
  14900.  
  14901.  Structured Field Introducer 
  14902.  
  14903.  0-1       Length 0x0010 
  14904.  2-4       ERG 0xD3A9C6 
  14905.  5         Flags 0x00 
  14906.  6-7       Segment sequence number 0x0000 
  14907.  
  14908.  Parameters 
  14909.  
  14910.  0-7       Resource Group name C'xxxx xxxx' 
  14911.  
  14912.  Begin Object Environment Group (BOG): optional 
  14913.  
  14914.  Structured Field Introducer 
  14915.  
  14916.  0-1       Length 0x0010 
  14917.  2-4       BOG 0xD3A8C7 
  14918.  5         Flags 0x00 
  14919.  6-7       Segment sequence number 0x0000 
  14920.  
  14921.  Parameters 
  14922.  
  14923.  0-7       Object environment group name C'xxxx xxxx' 
  14924.  
  14925.  Map Color Attribute (MCA) Table: required 
  14926.  
  14927.  Structured Field Introducer 
  14928.  
  14929.  0-1       Length 0x001A 
  14930.  2-4       MCA 0xD3AB77 
  14931.  5         Flags 0x00 
  14932.  6-7       Segment sequence number 0x0000 
  14933.  
  14934.  Parameters 
  14935.  
  14936.  0-1       Length 
  14937.  
  14938.  Triplet (required) 
  14939.  
  14940.  0         Length 0x0C 
  14941.  1         Triplet type: fully qualified name 0x02 
  14942.  2         Type: ref to Begin Resource Object 0x84 
  14943.  3         ID 0x00 
  14944.  4-11      Color table name C'xxxx xxxx' 
  14945.  
  14946.  lcid (required) 
  14947.  
  14948.  0         Length 0x04 
  14949.  1         Triplet type: resource local ID 0x24 
  14950.  2         Type color table resource 0x07 
  14951.  3         Local identifier (LUT-ID) 0x01 
  14952.  
  14953.  End Object Environment Group (EOG): required if BOG present 
  14954.  
  14955.  Structured Field Introducer 
  14956.  
  14957.  0-1       Length 0x0010 
  14958.  2-4       EOG 0xD3A9C7 
  14959.  5         Flags 0x00 
  14960.  6-7       Segment sequence number 0x0000 
  14961.  
  14962.  Parameters 
  14963.  
  14964.  0-7       Object Environment Group name C'xxxx xxxx' 
  14965.  
  14966.  Image Data Descriptor (IDD): required 
  14967.  
  14968.  Structured Field Introducer 
  14969.  
  14970.  0-1       Length 0x0011 
  14971.  2-4       IDD 0xD3A6FB 
  14972.  5         Flags 0x00 
  14973.  6-7       Segment sequence number 0x0000 
  14974.  
  14975.  Parameters 
  14976.  
  14977.  0         Unit of measure: 
  14978.            0x00       tens of inches 
  14979.            0x01       tens of centimeters 
  14980.  1-2       X resolution image points / UOM 
  14981.  3-4       Y resolution image points / UOM 
  14982.  5-6       X extent of image PS 
  14983.  7-8       Y extent of image PS 
  14984.  
  14985.  Image Picture Data (IPD): required 
  14986.  
  14987.  Structured Field Introducer 
  14988.  
  14989.  0-1       Length 
  14990.  2-4       IPD 0xD3EEFB 
  14991.  5         Flags 0x00 
  14992.  6-7       Segment sequence number 0x0000 
  14993.  
  14994.  Parameters (all required and in this order, except that only one of Image 
  14995.  LUT-ID and IDE structure is present) 
  14996.  
  14997.  Begin Segment 
  14998.  
  14999.  0         Type 0x70: begin segment 
  15000.  1         Length of following 0x00 
  15001.  
  15002.  Begin Image Content 
  15003.  
  15004.  0         Type 0x91: Begin Image Content 
  15005.  1         Length of following 0x01 
  15006.  2         Format 0xFF 
  15007.  
  15008.  Image Size 
  15009.  
  15010.  0         Type 0x94: image size 
  15011.  1         Length of following 0x09 
  15012.  2         Units of measure 0x02: logical 
  15013.  3-4       Horizontal resolution 
  15014.  5-6       Vertical resolution 
  15015.  7-8       Height in pels 
  15016.  9-10      Width in pels 
  15017.  
  15018.  Image Encoding 
  15019.  
  15020.  0         Type 0x95: image encoding 
  15021.  1         Length of following 0x02 
  15022.  2         Compression algorithm 0x03: none 
  15023.  3         Recording algorithm 0x03: bottom-to-top 
  15024.  
  15025.  Image IDE-Size 
  15026.  
  15027.  0         Type 0x96: image IDE-Size 
  15028.  1         Length of following 0x01 
  15029.  2         Number of bits per element 
  15030.  
  15031.  Image LUT-ID (For bit maps with other than 24 bits per pel) 
  15032.  
  15033.  0         Type 0x97 Image LUT-ID 
  15034.  1         Length of following 0x01 
  15035.  2         LUT-ID 
  15036.  
  15037.  IDE Structure (For bit maps with 24 bits per pel) 
  15038.  
  15039.  0         Type 0x9B: IDE structure 
  15040.  1         Length of following 0x08 
  15041.  2         Flags: 
  15042.            0         ABFlag 
  15043.                      B'0'       Normal (Additive) 
  15044.            1-7       Reserved B'0000000' 
  15045.  3         Format 
  15046.            0x01       RGB 
  15047.  4-6       Reserved 0x000000 
  15048.  7         Size of element 1 
  15049.  8         Size of element 2 
  15050.  9         Size of element 3 
  15051.  
  15052.  Image Picture Data (IPD): required, repeating 
  15053.  
  15054.  Structured Field Introducer 
  15055.  
  15056.  0-1       Length 
  15057.  2-4       IPD 0xD3EEFB 
  15058.  5         Flags 0x00 
  15059.  6-7       Segment sequence number 0x0000 
  15060.  
  15061.  Parameters 
  15062.  
  15063.  Image Data 
  15064.  
  15065.  0-1       Type 0xFE92: image data 
  15066.  2-3       Length of following 
  15067.  4-n       Image data (scan lines of bit maps) 
  15068.  
  15069.  End Image Content (required, only present in last Image Picture Data) 
  15070.  
  15071.  0         Type 0x93: End Image Content 
  15072.  1         Length of following 0x00 
  15073.  
  15074.  End Segment (required, only present in last Image Picture Data) 
  15075.  
  15076.  0         Type 0x71: end segment 
  15077.  1         Length of following 0x00 
  15078.  
  15079.  End Image Object (EIM): required if BIM present 
  15080.  
  15081.  Structured Field Introducer 
  15082.  
  15083.  0-1       Length 0x0010 
  15084.  2-4       EIM 0xD3A9FB 
  15085.  5         Flags 0x00 
  15086.  6-7       Segment sequence number 0x0000 
  15087.  
  15088.  Parameters 
  15089.  
  15090.  0-7       Image name C'xxxx xxxx' 
  15091.  
  15092.  Begin Graphics Object (BGR): required 
  15093.  
  15094.  Structured Field Introducer 
  15095.  
  15096.  0-1       Length 0x0010 
  15097.  2-4       BGR 0xD3A8BB 
  15098.  5         Flags 0x00 
  15099.  6-7       Segment sequence number 0x0000 
  15100.  
  15101.  Parameters 
  15102.  
  15103.  0-7       Graphics object name C'0000 0007' 
  15104.  
  15105.  Begin Object Environment Group (BOG): optional 
  15106.  
  15107.  Structured Field Introducer 
  15108.  
  15109.  0-1       Length 0x0010 
  15110.  2-4       LOG 0xD3A8C7 
  15111.  5         Flags 0x00 
  15112.  6-7       Segment sequence number 0x0000 
  15113.  
  15114.  Parameters 
  15115.  
  15116.  0-7       Object Environment Group name C'0000 0007' 
  15117.  
  15118.  Map Color Attribute Table (MCA): required 
  15119.  
  15120.  Structured Field Introducer 
  15121.  
  15122.  0-1       Length 0x0016 
  15123.  2-4       MCA 0xD3AB77 
  15124.  5         Flags 0x00 
  15125.  6-7       Segment sequence number 0x0000 
  15126.  
  15127.  Parameters 
  15128.  
  15129.  0-1       Length 
  15130.  
  15131.  Triplet (required) 
  15132.  
  15133.  0         Length 0x0C 
  15134.  1         Triplet type: fully qualified name 0x02 
  15135.  2         Type: ref to Begin Resource Object 0x84 
  15136.  3         ID 0x00 
  15137.  4-11      Color table name C'0000 0004' 
  15138.  
  15139.  Map Coded Font (MCF): required, for default font 
  15140.  
  15141.  Structured Field Introducer 
  15142.  
  15143.  0-1       Length 0x20 
  15144.  2-4       MCF 0xD3AB8A 
  15145.  5         Flags 0x00 
  15146.  6-7       Segment sequence number 0x0000 
  15147.  
  15148.  Parameters 
  15149.  
  15150.  0-1       Length 
  15151.  
  15152.  Triplets (required) 
  15153.  
  15154.  Font name 
  15155.  
  15156.  0         Length 0x0C 
  15157.  1         Triplet type: fully qualified name 0x02 
  15158.  2         Type: ref to coded font 0x84 
  15159.  3         ID 0x00 
  15160.  4-11      Coded font name: C'nnxx xxxx' 
  15161.            where n is 0xFF 
  15162.  
  15163.  lcid 
  15164.  
  15165.  0         Length 0x04 
  15166.  1         Triplet type: Resource Local ID 0x24 
  15167.  2         Type: Coded Font Resource 0x05 
  15168.  3         Local identifier (LCID) 0x00 
  15169.  
  15170.  Font Binary GCID 
  15171.  
  15172.  0         Length 0x06 
  15173.  1         Triplet type: Font Binary GCID 0x20 
  15174.  2-5       GCID 
  15175.  
  15176.  Map Coded Font (MCF): optional, repeating, for loaded fonts 
  15177.  
  15178.  Structured Field Introducer 
  15179.  
  15180.  0-1       Length 0x58 
  15181.  2-4       MCF 0xD3AB8A 
  15182.  5         Flags 0x00 
  15183.  6-7       Segment sequence number 0x0000 
  15184.  
  15185.  Parameters 
  15186.  
  15187.  0-1       Length 
  15188.  
  15189.  Triplets (required) 
  15190.  
  15191.  Font name 
  15192.  
  15193.  0         Length 0x0C 
  15194.  1         Triplet type: fully qualified name 0x02 
  15195.  2         Type: ref to coded font 0x84 
  15196.  3         ID 0x00 
  15197.  4-11      Coded font name 
  15198.  
  15199.  lcid 
  15200.  
  15201.  0         Length 0x04 
  15202.  1         Triplet type: Resource Local ID 0x24 
  15203.  2         Type: coded font resource 0x05 
  15204.  3         Local identifier (LCID) 
  15205.  
  15206.  Font Attributes 
  15207.  
  15208.  0         Length 0x14 
  15209.  1         Triplet type: Font Descriptor 0x1F 
  15210.  2         Weight Class 
  15211.  3         Width Class 
  15212.  4-5       Font Height 
  15213.  6-7       Char Width 
  15214.  8         Descript Flags 
  15215.  9         Usage Codes 
  15216.  10        Family 
  15217.  11        Activity Class 
  15218.  12        Font Quality 
  15219.  13-14     CAP Height 
  15220.  15-16     X Height 
  15221.  17-18     Line Density 
  15222.  19        Use Flags 
  15223.  
  15224.  Font Binary GCID 
  15225.  
  15226.  0         Length 0x06 
  15227.  1         Triplet type: Font Binary GCID 0x20 
  15228.  2-5       GCID 
  15229.  
  15230.  Font Typeface 
  15231.  
  15232.  0         Length 0x24 
  15233.  1         Triplet type: fully qualified name 0x02 
  15234.  2         Type: ref to font typeface 0x08 
  15235.  3         ID 0x00 
  15236.  4-35      Font typeface C'xxx..xxx' 
  15237.  
  15238.  Map Data Resource (MDR): optional, repeating 
  15239.  
  15240.  Structured Field Introducer 
  15241.  
  15242.  0-1       Length 0x1D 
  15243.  2-4       MDR 0xD3ABC3 
  15244.  5         Flags 0x00 
  15245.  6-7       Segment sequence number 0x0000 
  15246.  
  15247.  Parameters 
  15248.  
  15249.  0-1       Length 
  15250.  
  15251.  Triplets (required) 
  15252.  
  15253.  Bit-map Name 
  15254.  
  15255.  0         Length 0x0C 
  15256.  1         Triplet type: fully qualified name 0x02 
  15257.  2         Type: ref to Image Object 0x84 
  15258.  3         ID 0x00 
  15259.  4-11      Image name C'xxxx xxxx' 
  15260.  
  15261.  Extended Resource lcid 
  15262.  
  15263.  0         Length 0x07 
  15264.  1         Triplet type: Extended Resource Local ID 0x22 
  15265.  2         Type: Image Resource 0x10 
  15266.  3-6       Bit-map handle 
  15267.  
  15268.  End Object Environment Group (EOG): required if BOG present 
  15269.  
  15270.  Structured Field Introducer 
  15271.  
  15272.  0-1       Length 0x0010 
  15273.  2-4       EOG 0xD3A9C7 
  15274.  5         Flags 0x00 
  15275.  6-7       Segment sequence number 0x0000 
  15276.  
  15277.  Parameters 
  15278.  
  15279.  0-7       Object Environment Group name C'0000 0007' 
  15280.  
  15281.  Graphics Data Descriptor (GDD): required 
  15282.  
  15283.  Structured Field Introducer 
  15284.  
  15285.  0-1       Length 0xnnnn 
  15286.  2-4       GDD 0xD3A6BB 
  15287.  5         Flags 0x00 
  15288.  6-7       Segment sequence number 0x0000 
  15289.  
  15290.  Parameters (all required and in this order) 
  15291.  
  15292.  0         0xF7 Specify GVM Subset 
  15293.  1         Length of following data 0x07 
  15294.  2         0xB0 drawing order subset 
  15295.  3-4       0x0000 
  15296.  5         0x23 Level 3.2 
  15297.  6         0x01 Version 1 
  15298.  7         Length of following field 0x01 
  15299.  8         Coordinate types in data 
  15300.            0x04      Intel16 
  15301.            0x05      Intel32 
  15302.  
  15303.  0         0xF6 Set Picture Descriptor 
  15304.  1         Length of following data 
  15305.  2         Flags 
  15306.            0         B'0' Picture in 2D 
  15307.            1         Picture Dimensions 
  15308.                      B'0'       Not absolute (PU_ARBITRARY PS) 
  15309.                      B'1'       Absolute (example: PU_TWIPS PS) 
  15310.            2         Picture Elements 
  15311.                      B'0'       Not pels 
  15312.                      B'1'       Pels (PU_PELS PS) 
  15313.                                 (Bit 1 must also be set) 
  15314.            3-7       B'00000' 
  15315.  3         0x00 Reserved 
  15316.  4         Picture frame size coordinate type 
  15317.            0x04       Intel16 
  15318.            0x05       Intel32 
  15319.  5         UnitsOfMeasure 
  15320.            0x00       Ten inches 
  15321.            0x01       Decimeter 
  15322.  6-11 or 6-17(2 or 4 bytes) Resolution. 
  15323.                 GPS Units / UOM on x axis 
  15324.                 GPS Units / UOM on y axis 
  15325.                 GPS Units / UOM on z axis 
  15326.  12-23 or 18-41(2 or 4 bytes) Window Size. 
  15327.                 GPS X left, X right 
  15328.                 GPS Y bottom, Y top 
  15329.                 GPS Z near, Z far 
  15330.  
  15331.  0         0x21 Set Current Defaults 
  15332.  1         Length of following data 
  15333.  2         Set Default Parameter Format 0x08 
  15334.  3-4       Mask 0xE000 
  15335.  5         Names 0x8F 
  15336.  6         Coordinates 
  15337.            0x00       Picture in 2D 
  15338.  7         Transforms 
  15339.            0x04       Intel16 
  15340.            0x05       Intel32 
  15341.  8         Geometrics 
  15342.            0x04       Intel16 
  15343.            0x05       Intel32 
  15344.  
  15345.  0         0x21 Set Current Defaults 
  15346.  1         Length of following data 
  15347.  2         Set default viewing transform 0x07 
  15348.  3-4       Mask 0xCC0C 
  15349.  5         Names 0x8F 
  15350.  6-n       M11, M12, M21, M22, M41, M42  Matrix elements 
  15351.  
  15352.  0         0x21 Set Current Defaults 
  15353.  1         Length of following data 
  15354.  2         Set default line attributes 0x01 
  15355.  3-4       Mask - OR of as many of the following bits as are required: 
  15356.            0x8000       Line type 
  15357.            0x4000       Line width 
  15358.            0x2000       Line end 
  15359.            0x1000       Line join 
  15360.            0x0800       Stroke width 
  15361.            0x0008       Line color 
  15362.            0x0002       Line mix 
  15363.  5         Flags 
  15364.            0x0F       Set indicated default attributes to initial values. (Data 
  15365.                       field is not present in this instance). 
  15366.            0x8F       Set indicated default attributes to specified values. 
  15367.  6-n       Data - data values as required, in the following order if present. 
  15368.            No space is reserved for attributes for which the corresponding mask 
  15369.            flag was not set. 
  15370.            (1 byte)       - Line type 
  15371.            (1 byte)       - Line width 
  15372.            (1 byte)       - Line end 
  15373.            (1 byte)       - Line join 
  15374.            (G bytes)      - Stroke width 
  15375.            (4 bytes)      - Line color 
  15376.            (1 byte)       - Line mix (G=2 or 4 depending on the Geometrics 
  15377.            parameter of Set Default Parameter Format) 
  15378.  
  15379.  0         0x21 Set Current Defaults 
  15380.  1         Length of following data 
  15381.  2         Set Default Character Attributes 0x02 
  15382.  3-4       Mask - OR of as many of the following bits as are required: 
  15383.            0x8000       Character angle 
  15384.            0x4000       Character box 
  15385.            0x2000       Character direction 
  15386.            0x1000       Character precision 
  15387.            0x0800       Character set 
  15388.            0x0400       Character shear 
  15389.            0x0040       Character break extra 
  15390.            0x0020       Character extra 
  15391.            0x0008       Character color 
  15392.            0x0004       Character background color 
  15393.            0x0002       Character mix 
  15394.            0x0001       Character background mix 
  15395.  5         Flags 
  15396.            0x0F      Set indicated default attributes to initial values.  (Data 
  15397.                      field is not present in this case). 
  15398.            0x8F      Set indicated default attributes to specified values. 
  15399.  6-n       Data - data values as required, in the following order if present. 
  15400.            No space is reserved for attributes for which the corresponding Mask 
  15401.            flag was not set. 
  15402.            (2*G bytes)          - Character angle 
  15403.            (2*G + 4 bytes)      - Character box 
  15404.            (1 byte)             - Character direction 
  15405.            (1 byte)             - Character precision 
  15406.            (1 byte)             - Character set 
  15407.            (2*G bytes)          - Character shear 
  15408.            (4 bytes)            - Character break extra 
  15409.            (4 bytes)            - Character extra 
  15410.            (4 bytes)            - Character color 
  15411.            (4 bytes)            - Character background color 
  15412.            (1 byte)             - Character mix 
  15413.            (1 byte)             - Character background mix (G=2 or 4 depending 
  15414.            on the Geometrics parameter of Set Default Parameter Format) 
  15415.  
  15416.  0         0x21 Set Current Defaults 
  15417.  1         Length of following data 
  15418.  2         Set Default Marker Attributes 0x03 
  15419.  3-4       Mask - OR of as many of the following bits as are required: 
  15420.            0x4000       Marker box 
  15421.            0x1000       Marker precision 
  15422.            0x0800       Marker set 
  15423.            0x0100       Marker symbol 
  15424.            0x0008       Marker color 
  15425.            0x0004       Marker background color 
  15426.            0x0002       Marker mix 
  15427.            0x0001       Marker background mix 
  15428.  5         Flags 
  15429.            0x0F       Set indicated default attributes to initial values. 
  15430.                       (Data field is not present in this instance) 
  15431.            0x8F       Set indicated default attributes to specified values. 
  15432.  6-n       Data - data values as required, in this order if present. 
  15433.            No space is reserved for attributes for which the corresponding Mask 
  15434.            flag was not set. 
  15435.            (2*G bytes)         - Marker box 
  15436.            (1 byte)            - Marker precision 
  15437.            (1 byte)            - Marker set 
  15438.            (1 byte)            - Marker symbol 
  15439.            (4 bytes)           - Marker color 
  15440.            (4 bytes)           - Marker background color 
  15441.            (1 byte)            - Marker mix 
  15442.            (1 byte)            - Marker background mix (G=2 or 4 depending on 
  15443.            the Geometrics parameter of Set Default Parameter Format) 
  15444.  
  15445.  0         0x21 Set Current Defaults 
  15446.  1         Length of following data 
  15447.  2         Set Default Pattern Attributes 0x04 
  15448.  3-4       Mask - OR of as many of the following bits as are required: 
  15449.            0x0800       Pattern set 
  15450.            0x0100       Pattern symbol 
  15451.            0x0080       Pattern reference point 
  15452.            0x0008       Pattern color 
  15453.            0x0004       Pattern background color 
  15454.            0x0002       Pattern mix 
  15455.            0x0001       Pattern background mix 
  15456.            5            Flags 
  15457.                         0x0F       Set indicated default attributes to initial 
  15458.                                    values. 
  15459.                                    (Data field is not present in this instance) 
  15460.                         0x8F       Set indicated default attributes to 
  15461.                                    specified values. 
  15462.            6-n          Data - data values as required, in this order if 
  15463.                         present. 
  15464.                         No space is reserved for attributes for which the 
  15465.                         corresponding Mask flag was not set. 
  15466.                         (1 byte)          - Pattern set 
  15467.                         (1 byte)          - Pattern symbol 
  15468.                         (2*G bytes)       - Pattern reference point 
  15469.                         (4 bytes)         - Pattern color 
  15470.                         (4 bytes)         - Pattern background color 
  15471.                         (1 byte)          - Pattern mix 
  15472.                         (1 byte)          - Pattern background mix (G=2 or 4 
  15473.                         depending on the Geometrics parameter of Set Default 
  15474.                         Parameter Format) 
  15475.  
  15476.            0            0x21 Set Current Defaults 
  15477.            1            Length of following data 
  15478.            2            Set Default Image Attributes 0x06 
  15479.            3-4          Mask - OR of as many of these bits as are required: 
  15480.                         0x0008       Image color 
  15481.                         0x0004       Image background color 
  15482.                         0x0002       Image mix 
  15483.                         0x0001       Image background mix 
  15484.            5            Flags 
  15485.                         0x0F       Set indicated default attributes to initial 
  15486.                                    values. (Data field is not present in this 
  15487.                                    instance) 
  15488.                         0x8F       Set indicated default attributes to 
  15489.                                    specified values. 
  15490.            6-n          Data - data values as required, in this order if 
  15491.                         present. 
  15492.                         No space is reserved for attributes for which the 
  15493.                         corresponding Mask flag was not set. 
  15494.                         (4 bytes)       - Image color 
  15495.                         (4 bytes)       - Image background color 
  15496.                         (1 byte)        - Image mix 
  15497.                         (1 byte)        - Image background mix 
  15498.  
  15499.            0            0x21 Set Current Defaults 
  15500.            1            Length of following data 
  15501.            2            Set Default Viewing Window 0x05 
  15502.            3-4          Mask - OR of as many of the following bits as are 
  15503.                         required: 
  15504.                         0x8000       x left limit 
  15505.                         0x4000       x right limit 
  15506.                         0x2000       y bottom limit 
  15507.                         0x1000       y top limit 
  15508.            5            Flags 
  15509.                         0x0F       Set indicated default attributes to initial 
  15510.                                    values. 
  15511.                                    (Data field is not present in this case). 
  15512.                         0x8F       Set indicated default attributes to 
  15513.                                    specified values. 
  15514.            6-n          Data - data values as required, in the following order 
  15515.                         if present. 
  15516.                         No space is reserved for attributes for which the 
  15517.                         corresponding Mask flag was not set. 
  15518.                         (2*G bytes)       - x left limit 
  15519.                         (2*G bytes)       - x right limit 
  15520.                         (2*G bytes)       - y bottom limit 
  15521.                         (2*G bytes)       - y top limit (G=2 or 4 depending on 
  15522.                         the Geometrics parameter of Set Default Parameter 
  15523.                         Format) 
  15524.  
  15525.            0            0x21 Set Current Defaults 
  15526.            1            Length of following data 
  15527.            2            Set Default Arc Parameters 0x0B 
  15528.            3-4          Mask - OR of as many of the following bits as are 
  15529.                         required: 
  15530.                         0x8000       P value 
  15531.                         0x4000       Q value 
  15532.                         0x2000       R value 
  15533.                         0x1000       S value 
  15534.            5            Flags 
  15535.                         0x0F       Set indicated default attributes to initial 
  15536.                                    values. 
  15537.                                    (Data field is not present in this case). 
  15538.                         0x8F       Set indicated default attributes to 
  15539.                                    specified values. 
  15540.            6-n          Data - data values as required, in the following order 
  15541.                         if present. 
  15542.                         No space is reserved for attributes for which the 
  15543.                         corresponding Mask flag was not set. 
  15544.                         (G bytes)       - P value 
  15545.                         (G bytes)       - Q value 
  15546.                         (G bytes)       - R value 
  15547.                         (G bytes)       - S value (G=2 or 4 depending on the 
  15548.                         Geometrics parameter of Set Default Parameter Format) 
  15549.  
  15550.            0            0x21 Set Current Defaults 
  15551.            1            Length of following data 
  15552.            2            Set Default Pick Identifier 0x0C 
  15553.            3-4          Mask - OR of as many of the following bits as are 
  15554.                         required: 
  15555.                         0x8000       Pick identifier 
  15556.            5            Flags 
  15557.                         0x0F       Set indicated default attributes to initial 
  15558.                                    values. 
  15559.                                    (Data field is not present in this case). 
  15560.                         0x8F       Set indicated default attributes to 
  15561.                                    specified values. 
  15562.            6-n          Data - data values as required, in the following order 
  15563.                         if present. 
  15564.                         No space is reserved for attributes for which the 
  15565.                         corresponding Mask flag was not set. 
  15566.                         (4 bytes)       - Pick identifier 
  15567.  
  15568.            0            0xE7 Set Bit-map Identifier 
  15569.            1            Length of following data 0x07 
  15570.            2-3          Usage Flags 0x8000 
  15571.            4-7          Bit-map handle 
  15572.            8            Lcid 
  15573.  
  15574.  Graphics Data (GAD): optional, repeating 
  15575.  
  15576.  Structured Field Introducer 
  15577.  
  15578.  0-1       Length 0xn+9 
  15579.  2-4       GAD 0xD3EEBB 
  15580.  5         Flags 0x00 
  15581.  6-7       Segment sequence number 0x0000 
  15582.  Parameters (maximum length in one structured field is 32759) 
  15583.  
  15584.  Graphics Segment (optional, repeating) 
  15585.  
  15586.  Segment data (including the Begin Segment parameter) can be split at any point 
  15587.  between successive Graphics Data structured fields. 
  15588.  
  15589.  0         0x70 Begin Segment 
  15590.  1         Length of following data 0x0E 
  15591.  2-5       Segment identifier 
  15592.  6         Segment attributes (1) 
  15593.            0 B'1'       Invisible 
  15594.            1 B'1'       Propagate invisibility 
  15595.            2 B'1'       Detectable 
  15596.            3 B'1'       Propagate detectability 
  15597.            6 B'1'       Dynamic 
  15598.            7 B'1'       Fast chaining 
  15599.  7         Segment attributes (2) 
  15600.            0 B'1'       Non-chained 
  15601.            3 B'1'       Prolog 
  15602.  8-9       Segment data length (low-order 2 bytes) 
  15603.  10-13     Reserved 
  15604.  14-15     Segment data length (high-order 2 bytes) 
  15605.  16-n      Graphics orders (see the Graphics Programming Interface Programming 
  15606.            Reference) 
  15607.  
  15608.  End Graphics Object (EGR) 
  15609.  
  15610.  Structured Field Introducer 
  15611.  
  15612.  0-1       Length 0x0010 
  15613.  2-4       EGR 0xD3A9BB 
  15614.  5         Flags 0x00 
  15615.  6-7       Segment sequence number 0x0000 
  15616.  
  15617.  Parameters 
  15618.  
  15619.  0-7       Graphics object name C'0000 0007' 
  15620.  
  15621.  End Resource Group (ERG): required 
  15622.  
  15623.  Structured Field Introducer 
  15624.  
  15625.  0-1       Length 0x0010 
  15626.  2-4       ERG 0xD3A9C6 
  15627.  5         Flags 0x00 
  15628.  6-7       Segment sequence number 0x0000 
  15629.  
  15630.  Parameters 
  15631.  
  15632.  0-7       Resource Group name  C'0000 0002' 
  15633.  
  15634.  End Document (EDT): required 
  15635.  
  15636.  Structured Field Introducer 
  15637.  
  15638.  0-1       Length 0x0010 
  15639.  2-4       EDT 0xD3A9A8 
  15640.  5         Flags 0x00 
  15641.  6-7       Segment sequence number 0x0000 
  15642.  
  15643.  Parameters 
  15644.  
  15645.  0-7       Document name  C'0000 0001' 
  15646.  
  15647.  
  15648. ΓòÉΓòÉΓòÉ 21.6. Resource Files ΓòÉΓòÉΓòÉ
  15649.  
  15650. This section describes the syntax for the resource language using railroad 
  15651. syntax, and describes the formats used. 
  15652.  
  15653. Resource files are used to build dialog templates, menu templates, accelerator 
  15654. tables, extended attribute association tables, keyboard scancode mapping 
  15655. tables, keyboard names and fonts. The files must be compiled before they can be 
  15656. used by application programs. 
  15657.  
  15658. How to Read the Syntax Definitions 
  15659.  
  15660. Throughout this reference, syntax is described using the following structure. 
  15661.  
  15662.      Read the syntax diagrams from left to right, from top to bottom, 
  15663.       following the path of the line. 
  15664.  
  15665.       The ΓöÇΓöÇΓöÇ symbol indicates the beginning of a statement. 
  15666.  
  15667.       The ΓöÇΓöÇΓöÇ symbol indicates that the statement syntax is continued on the 
  15668.       next line. 
  15669.  
  15670.       The ΓöÇΓöÇΓöÇ symbol indicates that a statement is continued from the previous 
  15671.       line. 
  15672.  
  15673.       The ΓöÇΓöÇΓöÇ symbol indicates the end of a statement. 
  15674.  
  15675.       Diagrams of syntactical units other than complete statements start with 
  15676.       the ΓöÇΓöÇΓöÇ symbol and end with the ΓöÇΓöÇΓöÇ symbol. 
  15677.  
  15678.      Required items appear on the horizontal line (the main path). 
  15679.  
  15680.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇrequired_itemΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  15681.  
  15682.      Optional items appear below the main path. 
  15683.  
  15684.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  15685.                                ΓööΓöÇoptional_itemΓöÇΓöÿ
  15686.  
  15687.      If a choice can be made from two or more items, they appear vertically, 
  15688.       in a stack. 
  15689.  
  15690.       If one of the items must be chosen, one item of the stack appears on the 
  15691.       main path. 
  15692.  
  15693.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇrequired_choice1ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  15694.                              ΓööΓöÇΓöÇrequired_choice2ΓöÇΓöÇΓöÿ
  15695.  
  15696.       If choosing one of the items is optional, the entire stack appears below 
  15697.       the main path. 
  15698.  
  15699.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  15700.                              Γö£ΓöÇΓöÇoptional_choice1ΓöÇΓöÇΓöñ
  15701.                              ΓööΓöÇΓöÇoptional_choice2ΓöÇΓöÇΓöÿ
  15702.  
  15703.      An arrow returning to the left above the main path indicates an item that 
  15704.       can be repeated. 
  15705.  
  15706.                              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15707.                                                Γöé
  15708.             ΓöÇΓöÇΓöÇSTATEMENTΓöÇΓöÇΓöÇΓöÇΓöÇrepeatable_itemΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  15709.  
  15710.       A repeat arrow above a stack indicates that a choice can be made from the 
  15711.       stacked items, or a single choice can be repeated. 
  15712.  
  15713.      Keywords appear in uppercase, for example: 
  15714.  
  15715.  
  15716.             PARM1
  15717.  
  15718.       They must be spelled exactly as shown. Variables appear in all lowercase 
  15719.       letters, for example: 
  15720.  
  15721.  
  15722.             parmx
  15723.  
  15724.       They represent user-supplied names or values. 
  15725.  
  15726.      If punctuation marks, parentheses, arithmetic operators, or such symbols 
  15727.       are shown, they must be entered as part of the syntax. 
  15728.  
  15729.  
  15730. ΓòÉΓòÉΓòÉ 21.6.1. Definitions Used in all Resources ΓòÉΓòÉΓòÉ
  15731.  
  15732. The definitions used in all resources are defined in Specification of Values 
  15733. and Resource Load and Memory Options. 
  15734.  
  15735.  
  15736. ΓòÉΓòÉΓòÉ 21.6.1.1. Specification of Values ΓòÉΓòÉΓòÉ
  15737.  
  15738. These rules apply to values specified in resources: 
  15739.  
  15740.      Coordinates must be integers. There must be no space between the sign of 
  15741.       the value and the value itself. For example, "-1" is allowed but "- 1" is 
  15742.       not. 
  15743.  
  15744.      Resource identifiers must be positive integers or names that resolve to 
  15745.       positive integers. 
  15746.  
  15747.      Real values, containing a decimal point, cannot be used. 
  15748.  
  15749.  
  15750. ΓòÉΓòÉΓòÉ 21.6.1.2. Resource Load and Memory Options ΓòÉΓòÉΓòÉ
  15751.  
  15752. The following options define when each resource is loaded and how memory is 
  15753. allocated for each resource. 
  15754.  
  15755.  LOADOPTION     Resource loading options. 
  15756.  
  15757.                 PRELOAD               Resource is loaded immediately. 
  15758.                 LOADONCALL            Resource is loaded when called. 
  15759.  
  15760.  MEMOPTION      Resource memory options. 
  15761.  
  15762.                 FIXED                     Resource remains at a fixed memory 
  15763.                                           location. 
  15764.                 MOVEABLE                  Resource can be moved if necessary to 
  15765.                                           compact. 
  15766.                 DISCARDABLE               Resource can be discarded if no 
  15767.                                           longer needed. 
  15768.                 SEGALIGN                  Resources are aligned on 64K byte 
  15769.                                           boundaries. 
  15770.  
  15771.  
  15772. ΓòÉΓòÉΓòÉ 21.6.2. Resource Script File Specification ΓòÉΓòÉΓòÉ
  15773.  
  15774. The resource script file defines the names and attributes of the resources to 
  15775. be added to the executable file of the application. The file consists of one or 
  15776. more resource statements that define the resource type and original file, if 
  15777. any. See the following for a description of the resource statements: 
  15778.  
  15779.      Single-Line Statements 
  15780.      User-Defined Resources 
  15781.      Directives 
  15782.      Multiple-Line Statements. 
  15783.  
  15784.  
  15785. ΓòÉΓòÉΓòÉ 21.6.2.1. Single-Line Statements ΓòÉΓòÉΓòÉ
  15786.  
  15787. The general form for all single-line statements is: 
  15788.  
  15789.  ΓöÇΓöÇresourcetypeΓöÇΓöÇnameidΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇ
  15790.                            ΓööΓöÇloadoptionΓöÇΓöÿ
  15791.  
  15792.  ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇfilenameΓöÇΓöÇ
  15793.     ΓööΓöÇmemoptionΓöÇΓöÿ
  15794.  
  15795.  resourcetype (USHORT) 
  15796.     One of the following keywords, specifying the type of resource to be 
  15797.     loaded: 
  15798.  
  15799.          Keyword        Resource type 
  15800.  
  15801.     BITMAP              A bit-map resource is a custom bit map that an 
  15802.                         application intends to use in its screen display or as 
  15803.                         an item in a menu. 
  15804.  
  15805.     DEFAULTICON         This keyword installs the filename.ico icon definition 
  15806.                         under the ICON EA of the program file. 
  15807.  
  15808.                         Example: 
  15809.  
  15810.  
  15811.                                                 DEFAULTICON <filename.ico>
  15812.  
  15813.     DLGINCLUDE          This statement tells the dialog editor which file to 
  15814.                         use as an include file for the dialogs in the resource 
  15815.                         file. The nameid is not applicable. 
  15816.  
  15817.     FONT                A font resource is a file containing a font. 
  15818.  
  15819.     ICON                An icon resource is a bit map defining the shape of the 
  15820.                         icon to be used for a given application. 
  15821.  
  15822.     POINTER             A pointer resource is a bit map defining the shape of 
  15823.                         the pointing device pointer on the display screen. 
  15824.  
  15825.  nameid (USHORT) 
  15826.     is either a unique name or an integer number identifying the resource. For 
  15827.     a FONT resource, the nameid must be a number; it cannot be a name. 
  15828.  
  15829.  loadoption (LOADOPTION) 
  15830.     The default is LOADONCALL. 
  15831.  
  15832.     See Resource Load and Memory Options for a description of LOADOPTION. 
  15833.  
  15834.  memoption (MEMOPTION) 
  15835.     The default is MOVEABLE and DISCARDABLE for POINTER, ICON, and FONT 
  15836.     resources. The default for BITMAP resources is MOVEABLE. The FIXED option 
  15837.     overrides both MOVEABLE and DISCARDABLE. The SEGALIGN option can be 
  15838.     specified independently of other options, if it is not present the default 
  15839.     (for all resources) is that the resource is not aligned on a 64KB boundary. 
  15840.  
  15841.     See Resource Load and Memory Options for a description of MEMOPTION. 
  15842.  
  15843.  filename (PCH) 
  15844.     An ASCII string specifying the OS/2* name of the file containing the 
  15845.     resource. A full path must be given if the file is not in the current 
  15846.     working directory. 
  15847.  
  15848.  Example 
  15849.  
  15850.   POINTER pointer point.cur
  15851.   POINTER pointer DISCARDABLE point.cur
  15852.   POINTER 10 custom.cur
  15853.  
  15854.   ICON desk desk.ico
  15855.   ICON desk DISCARDABLE desk.ico
  15856.   ICON 11 custom.ico
  15857.  
  15858.   BITMAP disk disk.bmp
  15859.   BITMAP disk DISCARDABLE disk.bmp
  15860.   BITMAP 12 custom.bmp
  15861.  
  15862.   FONT 5 CMROMAN.FNT
  15863.  
  15864.  
  15865. ΓòÉΓòÉΓòÉ 21.6.2.2. User-Defined Resources ΓòÉΓòÉΓòÉ
  15866.  
  15867. An application can also define its own resource. The resource can be any data 
  15868. that the application intends to use. A user-defined resource statement has the 
  15869. form: 
  15870.  
  15871.  ΓöÇΓöÇΓöÇresource-typeΓöÇΓöÇΓöÇtypeIDΓöÇΓöÇΓöÇnameIDΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  15872.  
  15873.  ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇfilenameΓöÇΓöÇΓöÇΓöÇ
  15874.       ΓööΓöÇΓöÇloadoptionΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇmemoptionΓöÇΓöÇΓöÿ
  15875.  
  15876.  typeID 
  15877.     Either a unique name or an integer number identifying the resource type. If 
  15878.     a number is given, it must be greater than 255. The type numbers 1 through 
  15879.     255 are reserved for existing and future predefined resource types. Value 
  15880.     1000 is reserved for custom fonts. 
  15881.  
  15882.  nameID 
  15883.     Either a unique name or an integer number identifying the resource. 
  15884.  
  15885.  loadoption (LOADOPTION) 
  15886.     The default is LOADONCALL. 
  15887.  
  15888.     See Resource Load and Memory Options for a description of LOADOPTION. 
  15889.  
  15890.  memoption (MEMOPTION) 
  15891.     The default is MOVEABLE. 
  15892.  
  15893.     See Resource Load and Memory Options for a description of MEMOPTION. 
  15894.  
  15895.  filename 
  15896.     An ASCII string specifying the OS/2* name of the file containing the cursor 
  15897.     bit map. A full path must be given if the file is not in the current 
  15898.     working directory. 
  15899.  
  15900.  When the resource compiler (RC.EXE) encounters one or more font resources, or 
  15901.  any custom resource having type-id of 1000, it creates a font directory 
  15902.  resource which it adds to the output binary data. 
  15903.  
  15904.  Example 
  15905.  
  15906.  
  15907.   RESOURCE MYRES   array   DATA.RES
  15908.   RESOURCE 300     14      CUSTOM.RES
  15909.  
  15910.  
  15911. ΓòÉΓòÉΓòÉ 21.6.2.2.1. RCDATA statement ΓòÉΓòÉΓòÉ
  15912.  
  15913. The RCDATA statement is provided to allow an application to define a simple 
  15914. data resource. 
  15915.  
  15916.  ΓöÇRCDATAΓöÇΓöÇΓöÇidΓöÇΓöÇΓöÇΓöÇloadoptionΓöÇΓöÇΓöÇΓöÇΓöÇmemoptionΓöÇΓöÇΓöÇ
  15917.  
  15918.              ΓöîΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÉ
  15919.               ΓööΓöÇnewlineΓöÇΓöÿ Γöé
  15920.  ΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇdataΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  15921.  
  15922.  id 
  15923.     Either a unique name or an integer number identifying the resource. 
  15924.  
  15925.  loadoption (LOADOPTION) 
  15926.     The default is LOADONCALL. 
  15927.  
  15928.     See Resource Load and Memory Options for a description of LOADOPTION. 
  15929.  
  15930.  memoption (MEMOPTION) 
  15931.     The default is MOVEABLE. 
  15932.  
  15933.     See Resource Load and Memory Options for a description of MEMOPTION. 
  15934.  
  15935.  data 
  15936.     A number or string. 
  15937.  
  15938.  Example: 
  15939.  
  15940.  
  15941.   RCDATA 4
  15942.   BEGIN
  15943.    "Sample string."
  15944.    "TEST DATA."
  15945.    "A message."
  15946.   END
  15947.  
  15948.  
  15949. ΓòÉΓòÉΓòÉ 21.6.2.3. Directives ΓòÉΓòÉΓòÉ
  15950.  
  15951. The resource directives are special statements that define actions to perform 
  15952. on the file before it is compiled. The directives can assign values to names, 
  15953. include the contents of files, and control compilation of the file. 
  15954.  
  15955. #include filename 
  15956.  
  15957. rcinclude filename 
  15958.            These directives copy the contents of the file specified by filename 
  15959.            into the resource before it is compiled. If rcinclude is used, the 
  15960.            entire file is copied. If #include is used, only #define statements 
  15961.            are copied. 
  15962.  
  15963.            Note:  If an rcinclude is to be commented out, the open comment (/*) 
  15964.                   must appear on the same line as the directive. Filename is an 
  15965.            ASCII string. A full path must be given if the file is not in the 
  15966.            current directory or in the directory specified by the INCLUDE 
  15967.            environment variable. The file extensions .I and .TMP must not be 
  15968.            used as these are reserved for system use. 
  15969.  
  15970.            The filename parameter is handled as a C string, and two 
  15971.            back-slashes must be given wherever one is expected in the path name 
  15972.            (for example, root\\sub.) or, a single forward slash (/) can be used 
  15973.            instead of double back-slashes (for example, root/sub.) 
  15974.  
  15975.            Example: 
  15976.  
  15977.  
  15978.                       #include "wincalls.h"
  15979.  
  15980.                       MENU PenSelect
  15981.                       BEGIN
  15982.                              MENUITEM "black pen", BLACK_PEN
  15983.                       END
  15984.  
  15985.            Files included in resource script files constants that use #define 
  15986.            statements may not include any casting of those constants that are 
  15987.            used in the resource script. The resource compiler does not parse 
  15988.            this casting syntax. For example, the following statement may not be 
  15989.            included: 
  15990.  
  15991.  
  15992.                       #define IDBUTTON1  (USHORT) 3
  15993.  
  15994.            If casting is required for C source compilation, you may use two 
  15995.            statements such as: 
  15996.  
  15997.  
  15998.                       #define IDBUTTON1    3
  15999.                       #define CSRC_IDBUTTON1    ((USHORT)IDBUTTON1)
  16000.  
  16001.  
  16002.  #define name value 
  16003.            This directive assigns the given value to name. All subsequent 
  16004.            occurrences of name are replaced by the value. 
  16005.  
  16006.            name is any combination of letters, digits, or punctuation. 
  16007.  
  16008.            value is any integer, character string, or line of text. 
  16009.  
  16010.            Example: 
  16011.  
  16012.  
  16013.                       #define     nonzero        1
  16014.                       #define     USERCLASS   "MyControlClass"
  16015.  
  16016.  
  16017.  #undef name 
  16018.            This directive removes the current definition of name. All 
  16019.            subsequent occurrences of name are processed without replacement. 
  16020.  
  16021.            name is any combination of letters, digits, or punctuation. 
  16022.  
  16023.            Example: 
  16024.  
  16025.  
  16026.                       #undef     nonzero
  16027.                       #undef     USERCLASS
  16028.  
  16029.  
  16030.  #ifdef name 
  16031.            This directive performs a conditional compilation of the resource 
  16032.            file by checking the specified name. If the name has been defined 
  16033.            using a #define directive, #ifdef directs the resource compiler to 
  16034.            continue with the statement immediately after it. If the name has 
  16035.            not been defined, #ifdef directs the compiler to skip all statements 
  16036.            up to the next #endif directive. 
  16037.  
  16038.            name is the name to be checked by the directive. 
  16039.  
  16040.            Example: 
  16041.  
  16042.  
  16043.                       #ifdef Debug
  16044.                       FONT 4 errfont.fnt
  16045.                       #endif
  16046.  
  16047.  
  16048.  #ifndef name 
  16049.            This directive performs a conditional compilation of the resource 
  16050.            file by checking the specified name. If the name has not been 
  16051.            defined or if its definition has been removed using the #undef 
  16052.            directive, #ifndef directs the resource compiler to continue 
  16053.            processing statements up to the next #endif, #else, or #elif 
  16054.            directive, then skip to the statement after the #endif. If the name 
  16055.            is defined, #ifndef directs the compiler to skip to the next #endif, 
  16056.            #else, or #elif directive. 
  16057.  
  16058.            name is the name to be checked by the directive. 
  16059.  
  16060.            Example: 
  16061.  
  16062.  
  16063.                       #ifndef Optimize
  16064.                       FONT 4 errfont.fnt
  16065.                       #endif
  16066.  
  16067.  
  16068.  #if constant expression 
  16069.  
  16070.            This directive performs a conditional compilation of the resource 
  16071.            file by checking the specified constant-expression. If the 
  16072.            constant-expression is nonzero, #if directs the resource compiler to 
  16073.            continue processing statements up to the next #endif, #else, or 
  16074.            #elif directive, then skip to the statement after the #endif. If the 
  16075.            constant-expression is zero, #if directs the compiler to skip to the 
  16076.            next #endif, #else, or #elif directive. 
  16077.  
  16078.            constant expression is a defined name, an integer constant, or an 
  16079.            expression consisting of names, integers, and arithmetic and 
  16080.            relational operators. 
  16081.  
  16082.            Example: 
  16083.  
  16084.  
  16085.                       #if Version<3
  16086.                       FONT 4 errfont.fnt
  16087.                       #endif
  16088.  
  16089.  
  16090.  #elif constant expression 
  16091.            This directive marks an optional clause of a conditional compilation 
  16092.            block defined by an #ifdef, #ifndef, or #if directive. The directive 
  16093.            carries out conditional compilation of the resource file by checking 
  16094.            the specified constant-expression. If the constant-expression is 
  16095.            nonzero, #elif directs the resource compiler to continue processing 
  16096.            statements up to the next #endif, #else, or #elif directive, then 
  16097.            skip to the statement after the #endif. If the constant-expression 
  16098.            is zero, #elif directs the compiler to skip to the next #endif, 
  16099.            #else, or #elif directive. Any number of #elif directives can be 
  16100.            used in a conditional block. 
  16101.  
  16102.            constant expression Is a defined name, an integer constant, or an 
  16103.            expression consisting of names, integers, and arithmetic and 
  16104.            relational operators. 
  16105.  
  16106.            Example: 
  16107.  
  16108.  
  16109.                       #if Version<3
  16110.                       FONT 4 italic.fnt
  16111.                       #elif Version<7
  16112.                       FONT 4 bold.fnt
  16113.                       #endif
  16114.  
  16115.  
  16116.  #else 
  16117.  
  16118.            This directive marks an optional clause of a conditional compilation 
  16119.            block defined by an #ifdef, #ifndef, or #if directive. The #else 
  16120.            directive must be the last directive before #endif. 
  16121.  
  16122.            Example: 
  16123.  
  16124.  
  16125.                       #ifdef Debug
  16126.                       FONT 4 italic.fnt
  16127.                       #else
  16128.                       FONT 4 bold.fnt
  16129.                       #endif
  16130.  
  16131.  
  16132.  #endif 
  16133.            This directive marks the end of a conditional compilation block 
  16134.            defined by an #ifdef, #ifndef, or #if directive. One #endif is 
  16135.            required for each #ifdef, #ifndef, and #if directive. 
  16136.  
  16137.  
  16138. ΓòÉΓòÉΓòÉ 21.6.2.4. Multiple-Line Statements ΓòÉΓòÉΓòÉ
  16139.  
  16140. This sections covers Code Page Flagging, Keyboard Resources, and the following 
  16141. multiple-line statements: 
  16142.  
  16143.      ACCELTABLE Statement 
  16144.      ASSOCTABLE Statement 
  16145.      MENU Statement 
  16146.      STRINGTABLE Statement 
  16147.      Dialog and Window Template Statements 
  16148.  
  16149.  
  16150. ΓòÉΓòÉΓòÉ 21.6.2.4.1. Code Page Flagging ΓòÉΓòÉΓòÉ
  16151.  
  16152. The CODEPAGE statement may be placed within the source, to set the code page 
  16153. used for these resources: 
  16154.  
  16155.      ACCELTABLE 
  16156.      MENU 
  16157.      STRINGTABLE 
  16158.      DIALOGTEMPLATE and WINDOWTEMPLATE. 
  16159.  
  16160.  The CODEPAGE statement cannot be encoded within any other statement. All items 
  16161.  following a CODEPAGE statement are assumed to be in that code page. The code 
  16162.  page is encoded in the resource, and the data in the resource is assumed to be 
  16163.  in the specified code page.  However, no checking is performed. 
  16164.  
  16165.  These code pages can be specified: 
  16166.  
  16167.      437 
  16168.      850 
  16169.      860 
  16170.      863 
  16171.      865. 
  16172.  
  16173.  If the code page is not specified, code page 850 is assumed. 
  16174.  
  16175.  
  16176. ΓòÉΓòÉΓòÉ 21.6.2.4.2. Keyboard Resources ΓòÉΓòÉΓòÉ
  16177.  
  16178. RT_FKALONG (=17), is defined in BSEDOS.H, and the resource compiler (RC.EXE) 
  16179. recognizes FKALONG. This type identifies a 256-byte table, that can be used for 
  16180. either primary or secondary scan-code mapping. 
  16181.  
  16182. The resource ID contains three bytes, the least significant byte identifying 
  16183. the type of scan-code mapping table as follows: 
  16184.  
  16185.  0    Primary scan-code mapping 
  16186.  1    Secondary scan-code mapping. 
  16187.  
  16188.  The other two bytes are 0 for the primary mapping table, and the keyboard ID 
  16189.  (as defined in PMWINP.H) for secondary mapping tables. This is to enable 
  16190.  simple support to be provided for future keyboards with conflicting scan 
  16191.  codes. 
  16192.  
  16193.  The primary scan-code mapping table in the interrupt handler is stored as a 
  16194.  resource of this type. The secondary scan-code mapping table in the interrupt 
  16195.  handler is also stored as a resource of this type. 
  16196.  
  16197.  Depending on which keyboard is attached, the resources are loaded when the 
  16198.  system is initialized, and transferred to RING-0 byte arrays, where they can 
  16199.  be accessed by the interrupt handler as necessary. A default primary scan-code 
  16200.  mapping table is transferred if the resource cannot be loaded. 
  16201.  
  16202.  
  16203. ΓòÉΓòÉΓòÉ 21.6.2.4.3. ACCELTABLE Statement ΓòÉΓòÉΓòÉ
  16204.  
  16205. The ACCELTABLE statement defines a table of accelerator keys for an 
  16206. application. 
  16207.  
  16208. An accelerator is a keystroke defined by the application to give the user a 
  16209. quick way to perform a task. The WinGetMsg function automatically translates 
  16210. accelerator messages from the application queue into WM_COMMAND, WM_HELP, or 
  16211. WM_SYSCOMMAND messages. 
  16212.  
  16213. The ACCELTABLE statement has the form: 
  16214.  
  16215.  ΓöÇΓöÇΓöÇACCELTABLEΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇ
  16216.                   ΓööΓöÇΓöÇidΓöÇΓöÇΓöÿ    ΓööΓöÇmemoptionΓöÇΓöÿ
  16217.  
  16218.  ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16219.  
  16220.    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16221.    Γöé                        ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉΓöé
  16222.                                          ΓöéΓöé
  16223.  ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ,ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇacceloptionΓöÇΓöÇΓö┤Γö┤ΓöÇ
  16224.     ΓöökeyvalΓöÇΓöÿ   ΓööΓöÇcmdΓöÇΓöÿ
  16225.  
  16226.  ΓöÇΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  16227.  
  16228.  id (USHORT) 
  16229.     The resource identifier. 
  16230.  
  16231.  memoption 
  16232.     Optional. It consists of the following keyword or keywords, specifying 
  16233.     whether the resource is fixed or movable, and whether it can be discarded: 
  16234.  
  16235.     FIXED               Resource remains at a fixed memory location. 
  16236.     MOVEABLE            Resource can be moved if necessary to compact memory. 
  16237.     DISCARDABLE         Resource can be discarded if no longer needed. 
  16238.  
  16239.     See Resource Load and Memory Options for a description of LOADOPTION. 
  16240.  
  16241.  keyval (USHORT) 
  16242.     The accelerator character code.  This can be either a constant or a quoted 
  16243.     character. If it is a quoted character, the CHAR acceloption is assumed. 
  16244.     If the quoted character is preceded with a caret character (^), a control 
  16245.     character is specified as if the CONTROL acceloption had been used. 
  16246.  
  16247.  cmd (USHORT) 
  16248.     The value of the WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message generated 
  16249.     from the accelerator for the indicated key. 
  16250.  
  16251.  acceloption (BIT_16) 
  16252.     Defines the kind of accelerator. 
  16253.  
  16254.     The following options are available: 
  16255.  
  16256.               ALT 
  16257.               CHAR 
  16258.               CONTROL 
  16259.               HELP 
  16260.               LONEKEY 
  16261.               SCANCODE 
  16262.               SHIFT 
  16263.               SYSCOMMAND 
  16264.               VIRTUALKEY. 
  16265.  
  16266.     The VIRTUALKEY, SCANCODE, LONEKEY, and CHAR acceloptions specify the type 
  16267.     of message that matches the accelerator.  Only one of these options can be 
  16268.     specified for each accelerator. For information on the corresponding KC_* 
  16269.     values, see WM_CHAR. 
  16270.  
  16271.     The acceloptions SHIFT, CONTROL, and ALT, cause a match of the accelerator 
  16272.     only if the corresponding key is down. 
  16273.  
  16274.     If there are two accelerators that use the same key with different SHIFT, 
  16275.     CONTROL, or ALT options, the more restrictive accelerator should be 
  16276.     specified first in the table.  For example, Shift-Enter should be placed 
  16277.     before Enter. 
  16278.  
  16279.     The SYSCOMMAND acceloption causes the keystroke to be passed to the 
  16280.     application as a WM_SYSCOMMAND message. The HELP acceloption causes the 
  16281.     keystroke to be passed to the application as a WM_HELP message. If neither 
  16282.     is specified, a WM_COMMAND message is used. 
  16283.  
  16284.  Example: 
  16285.  
  16286.   ACCELTABLE MainAcc
  16287.   BEGIN
  16288.        VK_F1,101,HELP
  16289.        VK_F3,102,SYSCOMMAND
  16290.   END
  16291.  
  16292.  This generates a WM_HELP with value 101 from VIRTUALKEY accelerator F1 and a 
  16293.  WM_SYSCOMMAND with value 102 from VIRTUALKEY accelerator F3. 
  16294.  
  16295.  
  16296. ΓòÉΓòÉΓòÉ 21.6.2.4.4. ASSOCTABLE Statement ΓòÉΓòÉΓòÉ
  16297.  
  16298. The ASSOCTABLE statement defines the extended attributes (EA) for an 
  16299. application. 
  16300.  
  16301. The ASSOCTABLE statement has the form: 
  16302.  
  16303.  ΓöÇΓöÇΓöÇΓöÇASSOCTABLEΓöÇΓöÇassoctableidΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16304.  
  16305.  
  16306.  ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16307.  
  16308.  
  16309.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16310.                                            Γöé
  16311.  ΓöÇΓöÇΓöÇassocname,extensionsΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ,ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼Γö┤ΓöÇ
  16312.                           ΓööΓöÇflagsΓöÿ    ΓööiconΓöÿ
  16313.  
  16314.  ΓöÇΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  16315.  
  16316. The source for the ASSOCTABLE description is contained in the resource file for 
  16317. a particular project: 
  16318.  
  16319.  
  16320. ASSOCTABLE assoctableid
  16321. BEGIN
  16322. "association name", "extension", flags, icon filename
  16323. "association name", "extension", flags, icon filename
  16324.  ...
  16325. END
  16326.  
  16327.  association name 
  16328.     Program recognizes data files of this EA TYPE. This is the same name found 
  16329.     in the TYPE field of data files. 
  16330.  
  16331.  assoctableid 
  16332.     A name or number used to identify the assoctable resource. 
  16333.  
  16334.  extension 
  16335.     3 letter file extension that is used to identify files of this type if they 
  16336.     have no EA TYPE entry. (This may be empty.) 
  16337.  
  16338.  flags 
  16339.  
  16340.     EAF_DEFAULTOWNER 
  16341.             The default application for the file. 
  16342.  
  16343.     EAF_UNCHANGEABLE 
  16344.             This flag is set if the entry in the ASSOCTABLE is not to be 
  16345.             edited. 
  16346.  
  16347.     EAF_REUSEICON 
  16348.             This flag is specified if a previously defined icon in the 
  16349.             ASSOCTABLE is to be reused. Entries with this flag set have no icon 
  16350.             data defined. The icon used for this entry is the icon used for the 
  16351.             previous entry (see below). Note that EAF_* flags may be ORed 
  16352.             together when specified in the ASSOCTABLE. 
  16353.  
  16354.  icon filename 
  16355.     Filename of the icon used to represent this file type. (This may be empty.) 
  16356.  
  16357.  Example 
  16358.  
  16359.   ASSOCTABLE 3000
  16360.   BEGIN
  16361.   "Product XYZ Spreadsheet", "xys", EAF_DEFAULTOWNER, xyzspr.ico
  16362.   "Product XYZ Chart", "xyc", EAF_DEFAULTOWNER | EAF_REUSEICON
  16363.   END
  16364.  
  16365.  
  16366. ΓòÉΓòÉΓòÉ 21.6.2.4.5. Dialog and Window Template Statements ΓòÉΓòÉΓòÉ
  16367.  
  16368. This section describes how to define dialog and window templates. 
  16369.  
  16370. It also describes the control data and presentation parameter structures that 
  16371. the application needs to create windows and define dialog templates. 
  16372.  
  16373. DLGTEMPLATE and WINDOWTEMPLATE statements are used by an application to create 
  16374. predefined window and dialog resource templates. These statements are treated 
  16375. identically by the resource compiler and have the following format: 
  16376.  
  16377.  ΓöÇΓöÇΓöÇΓö¼ΓöÇDLGTEMPLATEΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇresourceidΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16378.       ΓööΓöÇWINDOWTEMPLATEΓöÇΓöÇΓöÿ
  16379.  
  16380.  ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  16381.       ΓööloadoptionΓöÇΓöÿΓööΓöÇmemoptionΓöÇΓöÿΓööΓöÇcodepageΓöÇΓöÿ
  16382.  
  16383.  ΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓö¼ΓöÇΓöÇDIALOG statementΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  16384.             Γö£ΓöÇΓöÇCONTROL statementΓöÇΓöÇΓöñ
  16385.             ΓööΓöÇΓöÇWINDOW statementΓöÇΓöÇΓöÇΓöÿ
  16386.  
  16387. In the following description of the parts of the DLGTEMPLATE and WINDOWTEMPLATE 
  16388. statements, data types are shown after each parameter or option. These are the 
  16389. data types that the parameter or option is converted to when it is compiled. 
  16390.  
  16391.  Purpose 
  16392.     The DLGTEMPLATE or WINDOWTEMPLATE statement marks the beginning of a window 
  16393.     template. It defines the name of the window, and its memory and load 
  16394.     options. 
  16395.  
  16396.  resourceid (USHORT) 
  16397.     Either a unique name or an integer number identifying the resource. 
  16398.  
  16399.  loadoption (LOADOPTION) 
  16400.     The default is LOADONCALL. 
  16401.  
  16402.     See Resource Load and Memory Options for a description of LOADOPTION. 
  16403.  
  16404.  memoption (MEMOPTION) 
  16405.     The default is MOVEABLE. 
  16406.  
  16407.     See Resource Load and Memory Options for a description of MEMOPTION. 
  16408.  
  16409.  code page (USHORT) 
  16410.     The code page of the text in the template. 
  16411.  
  16412.  Alternatively, ({) can be used in place of BEGIN and (}) in place of END. 
  16413.  
  16414.  The DLGTEMPLATE and WINDOWTEMPLATE keywords are synonymous. 
  16415.  
  16416.  The DIALOG statement defines a dialog-box window that can be created by an 
  16417.  application and has the following format: 
  16418.  
  16419.    ΓöÇΓöÇΓöÇDIALOGΓöÇΓöÇΓöÇtextΓöÇ,ΓöÇidΓöÇ,ΓöÇxΓöÇ,ΓöÇyΓöÇ,ΓöÇcxΓöÇ,ΓöÇcyΓöÇΓöÇΓöÇΓöÇ
  16420.  
  16421.    ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16422.            ΓööΓöÇ,styleΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16423.                     ΓööΓöÇ,controlΓöÇΓöÿ
  16424.  
  16425.    ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼
  16426.     Γöé                 ΓöéΓöéΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉΓöé
  16427.     Γöé                 ΓöéΓöé                     ΓöéΓöé
  16428.     ΓööCTLDATAΓöÇstatementΓöÿΓööΓöÇPRESPARAMSΓöÇstatementΓöÇΓö┤Γöÿ
  16429.  
  16430.              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16431.                                      Γöé
  16432.    ΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇDIALOGΓöÇstatementΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  16433.                Γö£ΓöÇΓöÇCONTROLΓöÇstatementΓöÇΓöñ
  16434.                ΓööΓöÇΓöÇWINDOWΓöÇstatementΓöÇΓöÇΓöÿ
  16435.  
  16436.       Control Data Statement 
  16437.       Presentation Parameters Statement 
  16438.  
  16439.  The WINDOW and CONTROL statements have the format: 
  16440.  
  16441.    ΓöÇΓö¼ΓöÇWINDOWΓöÇΓö¼ΓöÇtext,ΓöÇid,ΓöÇx,ΓöÇy,ΓöÇcx,ΓöÇcy,ΓöÇclassΓöÇΓöÇ
  16442.       ΓööΓöÇCONTROLΓöÿ
  16443.  
  16444.    ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇ
  16445.       ΓööΓöÇΓöÇΓöÇ,styleΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16446.                    ΓööΓöÇΓöÇ,controlΓöÇΓöÇΓöÇΓöÿ
  16447.  
  16448.  
  16449.    ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼
  16450.     Γöé                 ΓöéΓöéΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉΓöé
  16451.     Γöé                 ΓöéΓöé                     ΓöéΓöé
  16452.     ΓööCTLDATAΓöÇstatementΓöÿΓööΓöÇPRESPARAMSΓöÇstatementΓöÇΓö┤Γöÿ
  16453.  
  16454.              ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16455.                                      Γöé
  16456.    ΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇDIALOGΓöÇstatementΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  16457.                Γö£ΓöÇΓöÇCONTROLΓöÇstatementΓöÇΓöñ
  16458.                ΓööΓöÇΓöÇWINDOWΓöÇstatementΓöÇΓöÇΓöÿ
  16459.  
  16460.       Control Data Statement 
  16461.       Presentation Parameters Statement 
  16462.  
  16463.  Note:  The WINDOW and CONTROL keywords are synonymous. 
  16464.  
  16465.  The DIALOG, CONTROL, and WINDOW statements between the BEGIN and END 
  16466.  statements are defined as child windows. Presentation parameters always apply 
  16467.  to the whole control. They cannot be changed for the individual items within 
  16468.  the control. 
  16469.  
  16470.  Following is the description of the parameters for these statements. 
  16471.  
  16472.  Purpose 
  16473.     These statements mark the beginning of a window. They define the starting 
  16474.     location on the display screen, its width, its height, and other details 
  16475.     such as style. 
  16476.  
  16477.     Note:  Not all values may be specified for each statement type. For 
  16478.            details, see the call syntax diagrams. 
  16479.  
  16480.  text (PCH) 
  16481.     A string, enclosed in double quotes, that is displayed in the title-bar 
  16482.     control, if it exists. To insert a double-quote character (") in the text, 
  16483.     use two double-quote characters (""). 
  16484.  
  16485.  id (USHORT) 
  16486.     Item identifier. 
  16487.  
  16488.  x,y (SHORT) 
  16489.     Integer numbers specifying the x- and y-coordinates on the display screen 
  16490.     of the lower left corner of the dialog. X and y are in dialog coordinates. 
  16491.     The exact meaning of the coordinates depends on the style defined by the 
  16492.     style argument. For normal dialogs, the coordinates are relative to the 
  16493.     origin of the parent window. For FCF_SCREENALIGN style boxes, the 
  16494.     coordinates are relative to the origin of the display screen. With 
  16495.     FCF_MOUSEALIGN, the coordinates are relative to the position of the pointer 
  16496.     at the time  the dialog is created. 
  16497.  
  16498.  cx,cy (SHORT) 
  16499.     Integer numbers specifying the width and height of the window. 
  16500.  
  16501.  class (PCH) 
  16502.     The class of the window or control to be created. 
  16503.  
  16504.     Note:  For a DIALOG statement the class is fixed as WC_FRAME and cannot be 
  16505.            specified. 
  16506.  
  16507.  style (ULONG) 
  16508.     Any additional window style, frame style, or other class-specific style. 
  16509.  
  16510.     The default style is WS_SYNCPAINT | WS_CLIPSIBLINGS | WS_SAVEBITS | 
  16511.     FS_DLGBORDER. If the FS_DLGBORDER or WS_SAVEBITS styles are not required, 
  16512.     they should be preceded by the keyword "NOT". For example: 
  16513.  
  16514.  
  16515.         NOT FS_DLGBORDER | FS_BORDER | NOT WS_SAVEBITS
  16516.  
  16517.     replaces the FS_DLGBORDER default style by the FS_BORDER style and removes 
  16518.     the WS_SAVEBITS style. Note that the logic of the NOT keyword is different 
  16519.     from the corresponding operator in the C language. 
  16520.  
  16521.     It is not possible to remove the default WS_SYNCPAINT and WS_CLIPSIBLINGS 
  16522.     styles. 
  16523.  
  16524.  control (ULONG) 
  16525.     Frame Creation Flags (FCF_*) for the window. 
  16526.  
  16527.     This data is placed in the control data field in the correct format for a 
  16528.     window of class WC_FRAME. 
  16529.  
  16530.     Note:  FCF_SHELLPOSITION has no effect if specified in a template. 
  16531.  
  16532.  CTLDATA Statement 
  16533.     A statement used to define control data for the control. For more 
  16534.     information on this statement, see Control Data Statement 
  16535.  
  16536.  PRESPARAMS Statement 
  16537.     A statement used to define presentation parameters. For more information on 
  16538.     this statement, see Presentation Parameters Statement 
  16539.  
  16540.  
  16541. ΓòÉΓòÉΓòÉ 21.6.2.4.6. MENU Statement ΓòÉΓòÉΓòÉ
  16542.  
  16543. The MENU statement defines the contents of a menu resource. A menu resource is 
  16544. a collection of information that defines the appearance and function of an 
  16545. application menu. A menu can be used to create an action bar. 
  16546.  
  16547. The MENU statement has the form: 
  16548.  
  16549.  ΓöÇMENU-menuidΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  16550.                  ΓööΓöÇloadoptionΓöÇΓöÿΓööΓöÇmemoptionΓöÇΓöÿ
  16551.  
  16552.  ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16553.       ΓööΓöÇΓöÇcodepageΓöÇΓöÇΓöÿ
  16554.  
  16555.                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16556.                                     Γöé
  16557.              ΓöîΓöÇΓöÇPRESPARAMSΓöÇstatementΓöÇΓö┤ΓöÉ
  16558.  ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16559.           ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16560.                                   Γöé
  16561.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇMENUITEMΓöÇstatementΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇENDΓöÇΓöÇΓöÇΓöÇ
  16562.           Γöé                        Γöé
  16563.           ΓööΓöÇΓöÇΓöÇSUBMENUΓöÇstatementΓöÇΓöÇΓöÇΓöÇΓöÿ
  16564.  
  16565.       Menu Item Statements 
  16566.       Submenu Statements 
  16567.       Presentation Parameters Statement. 
  16568.  
  16569.  menuid (USHORT) 
  16570.     A name or number used to identify the menu resource. 
  16571.  
  16572.  loadoption (LOADOPTION) 
  16573.     The default is LOADONCALL. 
  16574.  
  16575.     SeeResource Load and Memory Options for a description of LOADOPTION. 
  16576.  
  16577.  memoption (MEMOPTION) 
  16578.     The default is MOVEABLE. 
  16579.  
  16580.     See Resource Load and Memory Options for a description of MEMOPTION. 
  16581.  
  16582.  codepage (USHORT) 
  16583.     The code page of the text. 
  16584.  
  16585.  PRESPARAMS statement 
  16586.     A special resource statement used to define presentation parameters. These 
  16587.     are discussed in more detail in Presentation Parameters Statement. 
  16588.  
  16589.  MENUITEM statement 
  16590.     A special resource statement used to define the items in the menu. These 
  16591.     are discussed in more detail in Menu Item Statements. 
  16592.  
  16593.  SUBMENU statement 
  16594.     A special resource statement used to define a submen. SUBMENU statements 
  16595.     are discussed in more detail in Submenu Statements. 
  16596.  
  16597.  Example 
  16598.  
  16599.  Following is an example of a complete MENU statement: 
  16600.  
  16601.  
  16602.   MENU sample
  16603.   BEGIN
  16604.    MENUITEM "~Alpha", 100, MIS_TEXT
  16605.    SUBMENU  "~Beta", 101, MIS_TEXT
  16606.    BEGIN
  16607.        MENUITEM "~Green", 200, MIS_TEXT
  16608.        MENUITEM "~Blue", 201, MIS_TEXT,MIA_CHECKED
  16609.    END
  16610.   END
  16611.  
  16612.  
  16613. ΓòÉΓòÉΓòÉ 21.6.2.4.6.1. Menu Item Statements ΓòÉΓòÉΓòÉ
  16614.  
  16615. MENUITEM statements are used in the item-definition section of a MENU statement 
  16616. to define the names and attributes of the actual menu items. Any number of 
  16617. statements can be given; each defines a unique item. The order of the 
  16618. statements defines the order of the menu items. 
  16619.  
  16620. Note:  The MENUITEM statements can only be used within an item-definition 
  16621.        section of a MENU statement. 
  16622.  
  16623.    ΓöÇΓöÇMENUITEMΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16624.  
  16625.    ΓöÇΓö¼ΓöÇΓöÇstringΓöÇΓöÇ,Γö¼ΓöÇΓöÇΓöÇΓöÇΓö¼,Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ,Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼
  16626.      Γöé           ΓööcmdΓöÇΓöÿ ΓööstylesΓöÿ  ΓööattributesΓöÿΓöé
  16627.      Γöé                                        Γöé
  16628.      ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇSEPARATORΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16629.  
  16630.  string (PCH) 
  16631.     A string, enclosed in double quotation marks, specifying the text of the 
  16632.     menu item. 
  16633.  
  16634.     To insert a double-quote character (") in the text, use two double-quote 
  16635.     characters (""). 
  16636.  
  16637.     If the styles parameter does not contain MIS_TEXT, the string is ignored 
  16638.     but must still be specified. An empty string ("") should be specified in 
  16639.     this instance. 
  16640.  
  16641.     To indicate the mnemonic for each item, insert the tilde character (~) in 
  16642.     the string preceding the mnemonic character. 
  16643.  
  16644.     For MENUITEM statements within a SUBMENU (that is, pull-down menus) text 
  16645.     may be split into a second column with an alignment substring. To 
  16646.     right-align items insert "\a" in the text where alignment should begin. To 
  16647.     left-align a second column of text insert "\t" in the text where alignment 
  16648.     should begin. For each SUBMENU the longest item in the second column 
  16649.     determines the width of that column. Only one alignment substring should be 
  16650.     used in a menu item. 
  16651.  
  16652.  cmd (USHORT) 
  16653.     The value of the WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message generated by 
  16654.     the item when it is selected. It identifies the selection made and should 
  16655.     be unique within one menu definition. 
  16656.  
  16657.  styles (USHORT) 
  16658.     One or more menu options defined by the MIS_* constants, ORed together with 
  16659.     the "|" operator. For definitions of the MIS_* constants, see Menu Item 
  16660.     Styles. 
  16661.  
  16662.  attributes (USHORT) 
  16663.     One or more menu options defined by the MIA_* constants, ORed together with 
  16664.     the "|" operator. For definitions of the MIA_* constants, see Menu Item 
  16665.     Attributes. 
  16666.  
  16667.     The style MIS_SUBMENU must not be used with this statement. See Submenu 
  16668.     Statements for the SUBMENU statement. 
  16669.  
  16670.  Examples: 
  16671.  
  16672.  
  16673.   MENUITEM  "Alpha", 1, MIS_TEXT,MIA_ENABLED|MIA_CHECKED,'A'
  16674.   MENUITEM  "Beta", 2, MIS_TEXT,,'B'
  16675.  
  16676.  
  16677. ΓòÉΓòÉΓòÉ 21.6.2.4.6.2. Submenu Statements ΓòÉΓòÉΓòÉ
  16678.  
  16679. In addition to simple items, a menu definition can contain the definition of a 
  16680. submenu. A submenu can itself invoke a lower level submenu. 
  16681.  
  16682.  ΓöÇΓöÇSUBMENUΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16683.  
  16684.  ΓöÇΓöÇΓöÇΓöÇstringΓöÇΓöÇ,Γö¼ΓöÇΓöÇΓöÇΓöÇΓö¼,Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ,Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ
  16685.                ΓööcmdΓöÇΓöÿ ΓööstylesΓöÿ  ΓööattributesΓöÿ
  16686.  
  16687.  
  16688.                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16689.                                     Γöé
  16690.              ΓöîΓöÇΓöÇPRESPARAMSΓöÇstatementΓöÇΓö┤ΓöÉ
  16691.  ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  16692.           ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16693.                                   Γöé
  16694.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇMENUITEMΓöÇstatementΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇENDΓöÇΓöÇΓöÇΓöÇ
  16695.           Γöé                        Γöé
  16696.           ΓööΓöÇΓöÇΓöÇSUBMENUΓöÇstatementΓöÇΓöÇΓöÇΓöÇΓöÿ
  16697.  
  16698.  string (PCH) 
  16699.     A string, enclosed in double quotation marks, specifying the text of the 
  16700.     menu item. 
  16701.  
  16702.     To insert a double-quote character (") in the text, use two double-quote 
  16703.     characters (""). 
  16704.  
  16705.     If the styles parameter does not contain MIS_TEXT, the string is ignored 
  16706.     but must still be specified. An empty string ("") should be specified in 
  16707.     this instance. 
  16708.  
  16709.  cmd (USHORT) 
  16710.     The value of the WM_COMMAND, WM_HELP, or WM_SYSCOMMAND message generated by 
  16711.     the item when it is selected. It identifies the selection made and should 
  16712.     be unique within one menu definition. 
  16713.  
  16714.  styles (USHORT) 
  16715.     One or more menu options defined by the MIS_ constants, ORed together with 
  16716.     the "|" operator. 
  16717.  
  16718.     In the SUBMENU statement, the style MIS_SUBMENU is always ORed with the 
  16719.     styles given. If no value is supplied, the default value of MIS_TEXT and 
  16720.     MIS_SUBMENU is used. 
  16721.  
  16722.  attributes (USHORT) 
  16723.     One or more menu options defined by the MIA_ constants, ORed together with 
  16724.     the | operator. 
  16725.  
  16726.  Example: 
  16727.  
  16728.  
  16729.   MENU chem
  16730.   BEGIN
  16731.  
  16732.   SUBMENU  "~Elements", 2, MIS_TEXT
  16733.   BEGIN
  16734.        MENUITEM "~Oxygen", 200, MIS_TEXT
  16735.        MENUITEM "~Carbon", 201, MIS_TEXT,MIA_CHECKED
  16736.        MENUITEM "~Hydrogen", 202, MIS_TEXT
  16737.   END
  16738.  
  16739.   SUBMENU  "~Compounds", 3, MIS_TEXT
  16740.   BEGIN
  16741.        MENUITEM "~Glucose", 301, MIS_TEXT
  16742.        MENUITEM "~Sucrose", 302, MIS_TEXT,MIA_CHECKED
  16743.        MENUITEM "~Lactose", 303, MIS_TEXT|MIS_BREAK
  16744.        MENUITEM "~Fructose", 304, MIS_TEXT
  16745.   END
  16746.  
  16747.   END
  16748.  
  16749.  
  16750. ΓòÉΓòÉΓòÉ 21.6.2.4.6.3. SEPARATOR Menu Item ΓòÉΓòÉΓòÉ
  16751.  
  16752. There is a special form of the MENUITEM statement that is used to create a 
  16753. horizontal dividing bar between two active menu items in a pull-down menu. The 
  16754. SEPARATOR menu item is itself inactive and has no text associated with it nor a 
  16755. cmd value. 
  16756.  
  16757. Example 
  16758.  
  16759.  
  16760. MENUITEM  "~Roman", 206, MIS_TEXT
  16761. MENUITEM  SEPARATOR
  16762. MENUITEM  "20 ~Point", 301, MIS_TEXT
  16763.  
  16764.  
  16765. ΓòÉΓòÉΓòÉ 21.6.2.4.6.4. Menu Template ΓòÉΓòÉΓòÉ
  16766.  
  16767. Menu templates are data structures used to define menus. Menu templates can be 
  16768. loaded as resources or created dynamically, or embedded in dialog templates, 
  16769. which in turn can be loaded as resources or created dynamically. Templates 
  16770. loaded as resources cannot contain references to bit maps or owner-drawn items. 
  16771. A menu template consists of a sequence of variable-length records. Each record 
  16772. in a menu template defines a menu item. If a menu item contains a reference to 
  16773. a submenu, the menu template that defines that submenu is placed after the 
  16774. definition of that particular menu item. 
  16775.  
  16776.  
  16777. ΓòÉΓòÉΓòÉ 21.6.2.4.6.5. Template Format ΓòÉΓòÉΓòÉ
  16778.  
  16779. A menu template has the following format: 
  16780.  
  16781.  Length (USHORT) 
  16782.     The length of the menu template. 
  16783.  
  16784.  Version (USHORT) 
  16785.     The template version. Versions 0 and 1 are valid. 
  16786.  
  16787.  Code page (USHORT) 
  16788.     The identifier of the code page used for the text items within the menu 
  16789.     (but not any submenus, which each have their own code pages). 
  16790.  
  16791.  Item offset (USHORT) 
  16792.     The offset of the items from the start of the template, in bytes. 
  16793.  
  16794.  Count (USHORT) 
  16795.     The count of menu items. 
  16796.  
  16797.  Presentation parameters offset (USHORT) 
  16798.     Offset of presentation parameters from the start of the template, in bytes. 
  16799.     This field is only present for version 1 of the template. 
  16800.  
  16801.  Menu Items 
  16802.     A variable-sized array of menu items as follows: 
  16803.  
  16804.     Style (USHORT) 
  16805.             Menu item styles (MIS_*; see Menu Item Styles) combined with the 
  16806.             logical-OR operator. 
  16807.  
  16808.     Attributes (USHORT) 
  16809.             Menu item attributes (MIA_*; see Menu Item Attributes) combined 
  16810.             with the logical-OR operator. 
  16811.  
  16812.     Item (USHORT) 
  16813.             An application-provided identifier for the menu item. 
  16814.  
  16815.     Variable data 
  16816.             Following the identifier is a variable data structure whose format 
  16817.             depends upon the value of Style: 
  16818.  
  16819.             MIS_TEXT 
  16820.  
  16821.                     Text (PSZ) 
  16822.                             Null-terminated text string. 
  16823.  
  16824.             MIS_SUBMENU 
  16825.                     A menu template structure. 
  16826.  
  16827.             MIS_BITMAP 
  16828.  
  16829.                     Text (PCH) 
  16830.                             Null-terminated text string. 
  16831.  
  16832.                             For MIS_BITMAP menu items, the item text string can 
  16833.                             be used to derive the resource identifier from 
  16834.                             which a bit map is loaded. There are three 
  16835.                             instances: 
  16836.  
  16837.                                 The first byte is null; that is, no resource 
  16838.                                  is defined and it is assumed that the 
  16839.                                  application subsequently provides a bit-map 
  16840.                                  handle for the item. 
  16841.  
  16842.                                 The first byte is 0xFF, the second byte is the 
  16843.                                  low byte of the resource identifier, and the 
  16844.                                  third byte is the high byte of the resource 
  16845.                                  identifier. 
  16846.  
  16847.                                 The first character is "#", and subsequent 
  16848.                                  characters make up the decimal text 
  16849.                                  representation of the resource identifier. 
  16850.  
  16851.                             The resource is assumed to reside in the resource 
  16852.                             file of the current process. 
  16853.  
  16854.                             If the string is empty or does not follow the 
  16855.                             format above, no resource is loaded. 
  16856.  
  16857.  
  16858. ΓòÉΓòÉΓòÉ 21.6.2.4.7. STRINGTABLE Statement ΓòÉΓòÉΓòÉ
  16859.  
  16860. The STRINGTABLE statement defines one or more string resources for an 
  16861. application. String resources are null-terminated ASCII strings that can be 
  16862. loaded, when needed, from the executable file, using the WinLoadString 
  16863. function. 
  16864.  
  16865. Note:  The ASCII strings can include no more than 256 characters, including the 
  16866.        NULL termination character. 
  16867.  
  16868.  The STRINGTABLE statement has the form: 
  16869.  
  16870.    ΓöÇSTRINGTABLEΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇ
  16871.                   ΓööΓöÇloadoptionΓöÇΓöÿΓööΓöÇmemoptionΓöÇΓöÿ
  16872.  
  16873.  
  16874.    ΓöÇΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇstring-definitionsΓöÇΓöÇΓöÇENDΓöÇΓöÇΓöÇ
  16875.  String-definitions 
  16876.  
  16877.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16878.         Γöé                                 Γöé
  16879.                                          Γöé
  16880.     ΓöÇΓöÇΓöÇΓöÇΓöÇintegerΓöÇΓöÇΓöÇΓöÇΓöÇstringΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇ
  16881.  
  16882.  loadoption (LOADOPTION) 
  16883.     An optional keyword specifying when the resource is to be loaded. It must 
  16884.     be one of: 
  16885.  
  16886.     PRELOAD                Resource is loaded immediately. 
  16887.     LOADONCALL             Resource is loaded when called. 
  16888.  
  16889.     The default is LOADONCALL. 
  16890.  
  16891.     See Resource Load and Memory Options for a description of LOADOPTION. 
  16892.  
  16893.  memoption (MEMOPTION) 
  16894.     Consists of the following keyword or keywords, specifying whether the 
  16895.     resource is fixed or movable and whether it is discardable: 
  16896.  
  16897.     FIXED                  Resource remains at a fixed memory location. 
  16898.     MOVEABLE               Resource can be moved if necessary to compact 
  16899.                            memory. 
  16900.     DISCARDABLE            Resource can be discarded if no longer needed. 
  16901.  
  16902.     The default is MOVEABLE and DISCARDABLE. 
  16903.  
  16904.     See Resource Load and Memory Options for a description of MEMOPTION. 
  16905.  
  16906.  string (PCH) 
  16907.     A string, enclosed in double quotation marks. To insert a double-quote 
  16908.     character (") in the text, use two double-quote characters (""). 
  16909.  
  16910.     Note:  A string may be defined on more than one line if each line begins 
  16911.            and ends with a double-quote. If newline characters are desired 
  16912.            after each line, there should be a double-quote at the beginning of 
  16913.            the first line and at the end of the last line only. The string may 
  16914.     contain any ASCII characters.  Because (\) is interpreted as an escape 
  16915.     character, use (\\) to generate a (\). 
  16916.  
  16917.     The following escape sequences may be used: 
  16918.  
  16919.     Escape 
  16920.     Sequence           Name 
  16921.     \t                 Horizontal tab 
  16922.     \a                 Bell (alert) 
  16923.     \nnn               ASCII character (octal) 
  16924.     \xdd               ASCII character (hexadecimal). 
  16925.  
  16926.     The sequences \ddd and \xdd allow any character in the ASCII character set 
  16927.     to be inserted in the character string. Thus, the horizontal tab could be 
  16928.     entered as \X09, \011 or \t. 
  16929.  
  16930.  Example 
  16931.  
  16932.   #define IDS_STRING1  1
  16933.   #define IDS_STRING2  2
  16934.   #define IDS_STRING3  3
  16935.  
  16936.   STRINGTABLE
  16937.   BEGIN
  16938.     IDS_STRING1, "The first two strings in this table are identical."
  16939.     IDS_STRING2, "The first two strings "
  16940.                  "in this table are identical."
  16941.     IDS_STRING3, "This string will contain a newline character
  16942.                   before it continues on this line."
  16943.   END
  16944.  
  16945.  
  16946. ΓòÉΓòÉΓòÉ 21.6.3. Templates, Control Data, and Presentation Parameters ΓòÉΓòÉΓòÉ
  16947.  
  16948. This section describes: 
  16949.  
  16950.      Dialog Template 
  16951.      Dialog Coordinates 
  16952.      Dialog Template Format and Contents 
  16953.      Header 
  16954.      Items 
  16955.      Data Area 
  16956.      Control Data Statement 
  16957.      Presentation Parameters Statement 
  16958.      Parent/Child/Owner Relationship 
  16959.      Predefined Window Classes 
  16960.      Predefined Control Statements 
  16961.  
  16962.  
  16963. ΓòÉΓòÉΓòÉ 21.6.3.1. Dialog Template ΓòÉΓòÉΓòÉ
  16964.  
  16965. A dialog template is a data structure used to define a dialog box. Dialog 
  16966. templates can be loaded from resources or created dynamically in memory. Dialog 
  16967. templates define windows of any window class that contain child windows of any 
  16968. class. For standard dialog windows, the dialog window itself is created with 
  16969. the WC_FRAME class, and its children are any of the preregistered control 
  16970. classes. 
  16971.  
  16972. The dialog template specifies all the information required to create a dialog 
  16973. box and its children. 
  16974.  
  16975.  
  16976. ΓòÉΓòÉΓòÉ 21.6.3.2. Dialog Coordinates ΓòÉΓòÉΓòÉ
  16977.  
  16978. Coordinates in a dialog template are specified in dialog coordinates. These are 
  16979. based on the default character cell size; a unit in the horizontal direction is 
  16980. 1/4 the default character-cell width, and a unit in the vertical direction is 
  16981. 1/8 the default character-cell height. The origin is the bottom left-hand 
  16982. corner of the dialog box. 
  16983.  
  16984.  
  16985. ΓòÉΓòÉΓòÉ 21.6.3.3. Dialog Template Format and Contents ΓòÉΓòÉΓòÉ
  16986.  
  16987. A dialog template has these sections: 
  16988.  
  16989.  Header      Defines the type of template format and contains information about 
  16990.              the location of the other sections of the template. It also 
  16991.              contains a summary of the status of the individual controls 
  16992.              contained within the dialog box. 
  16993.  
  16994.  Items       Defines each of the controls that comprise the dialog box. 
  16995.  
  16996.  Data area   Contains the data values associated with each control. Each 
  16997.              control defined in the item section contains pointers to the data 
  16998.              area section. The data area also contains presentation parameter 
  16999.              definitions. The data area is not necessarily a contiguous portion 
  17000.              of the template. User data can be placed anywhere in the template 
  17001.              if it does not interfere with other defined information. 
  17002.  
  17003.  The sections of a dialog template are illustrated in the following figure. 
  17004.  
  17005.  Notes 
  17006.  
  17007.    1. Throughout the dialog template all lengths are in bytes. String lengths 
  17008.       do not include any null terminator that may be present. When strings are 
  17009.       passed to the Presentation Interface, the length specifications are used 
  17010.       and any null terminators are ignored. When strings are returned by the 
  17011.       Presentation Interface, length specifications and null terminators are 
  17012.       both supplied; therefore, space must be allowed for a null terminator. 
  17013.  
  17014.    2. All offsets are in bytes from the start of the dialog template structure. 
  17015.  
  17016.  
  17017. ΓòÉΓòÉΓòÉ 21.6.3.4. Header ΓòÉΓòÉΓòÉ
  17018.  
  17019. The dialog template header consists of: 
  17020.  
  17021.  Template length (USHORT) 
  17022.    The overall length of the dialog template. 
  17023.  
  17024.  Template type (USHORT) 
  17025.    The dialog template format type. The format defined is type 0. 
  17026.  
  17027.  Code page (USHORT) 
  17028.    The code page of the text in the dialog template. 
  17029.  
  17030.  Items offset (USHORT) 
  17031.    The offset of the array of dialog items. 
  17032.  
  17033.  Reserved (USHORT) 
  17034.    Must be 0. 
  17035.  
  17036.  Focus item (USHORT) 
  17037.    The index in the array of dialog items of the control to receive the focus. 
  17038.    If this value is 0, or if the identified control cannot receive the focus, 
  17039.    for example because it is a static control, the focus is passed to the first 
  17040.    item within the template that can receive the focus. 
  17041.  
  17042.  Reserved (USHORT) 
  17043.    Must be 0. 
  17044.  
  17045.  
  17046. ΓòÉΓòÉΓòÉ 21.6.3.5. Items ΓòÉΓòÉΓòÉ
  17047.  
  17048. The dialog template items are specified as elements of an array that also 
  17049. defines the hierarchy of the control windows of the dialog box. Each element of 
  17050. the array is a control window descriptor and defines some control or a child of 
  17051. some control, so that every control within the dialog box is described by this 
  17052. array. The first descriptor is the specification of the dialog box itself. 
  17053.  
  17054. The dialog template items consist of: 
  17055.  
  17056.  Reserved (USHORT) (BOOL16) 
  17057.    Must be 0. 
  17058.  
  17059.  Children (USHORT) 
  17060.    The number of dialog item child windows that are owned by this dialog item. 
  17061.  
  17062.    This is the number of elements following in the array that are created as 
  17063.    child windows of this window. Each window can have any number of child 
  17064.    windows, which allows for a tree-structured arrangement. 
  17065.  
  17066.    For example, in the figure in Dialog Template Format and Contents, assuming 
  17067.    that there are no more dialog items than are shown, the first item, the 
  17068.    dialog box control window descriptor, has three children. The second item 
  17069.    has no children, the third item has two children, and the remaining three 
  17070.    items have no children. 
  17071.  
  17072.  Class name length (USHORT) 
  17073.    The length of the window class name string. 
  17074.  
  17075.  Class name offset (USHORT) 
  17076.    The offset of the window class name string. 
  17077.  
  17078.  Text length (USHORT) 
  17079.    The length of the text string. 
  17080.  
  17081.    For controls that allow input of text, this is the current text length, not 
  17082.    the maximum text length, and so this value changes when text is put into the 
  17083.    control. 
  17084.  
  17085.  Text offset (USHORT) 
  17086.    The offset of the text string. 
  17087.  
  17088.  Style (ULONG) (BOOL32) 
  17089.    The window style of the control. 
  17090.  
  17091.    The standard style bits are 16 bits. The use of the remaining 16 bits 
  17092.    depends on the class of the control. 
  17093.  
  17094.  x (SHORT) 
  17095.  
  17096.  y (SHORT) 
  17097.    The position of the origin of the dialog item. This is specified in dialog 
  17098.    coordinates, with x and y relative to the origin of the parent window. 
  17099.  
  17100.  cx (SHORT) 
  17101.  
  17102.  cy (SHORT) 
  17103.    The size of the dialog item in dialog coordinates; it must be greater than 
  17104.    0. 
  17105.  
  17106.  Identifier (USHORT) 
  17107.    An application-defined identifier for the dialog item. 
  17108.  
  17109.  Reserved (USHORT) 
  17110.    Must be zero. 
  17111.  
  17112.  Control data offset (USHORT) 
  17113.    The offset of the control-specific data for this dialog item. A value of 0 
  17114.    indicates that there is no control data for this dialog item. 
  17115.  
  17116.  
  17117. ΓòÉΓòÉΓòÉ 21.6.3.6. Data Area ΓòÉΓòÉΓòÉ
  17118.  
  17119. The dialog template data area contains the following different types of 
  17120. objects: text, class name, presentation parameters, and control data. These 
  17121. objects can be placed anywhere within the data area. They do not have to be in 
  17122. contiguous storage, and so an application can place data for its own use 
  17123. between these objects. 
  17124.  
  17125. The dialog template data area contains: 
  17126.  
  17127.  Text (PCH) 
  17128.    The textual data associated with a dialog item. 
  17129.  
  17130.  Class name (PCH) 
  17131.    The name of the window class. 
  17132.  
  17133.  Presentation parameters (PRESPARAMS) 
  17134.    Presentation parameters are defined in Presentation Parameters Statement. 
  17135.  
  17136.  Control data (CTLDATA) 
  17137.    For more information, see Control Data Statement. 
  17138.  
  17139.  
  17140. ΓòÉΓòÉΓòÉ 21.6.3.7. Control Data Statement ΓòÉΓòÉΓòÉ
  17141.  
  17142. The optional CTLDATA statement is used to define control data for the control. 
  17143. Hexadecimal or decimal word constants follow the CTLDATA statement, separated 
  17144. with commas. 
  17145.  
  17146.               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17147.               Γöé                          Γöé
  17148.                                         Γöé
  17149.  ΓöÇΓöÇCTLDATAΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdecimalΓöÇvalueΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇ
  17150.                  Γöé                     Γöé
  17151.                  Γö£ΓöÇΓöÇhexadecimalΓöÇvalueΓöÇΓöÇΓöñ
  17152.                  Γöé                     Γöé
  17153.                  ΓööΓöÇΓöÇstringΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17154.  
  17155. In addition to hexadecimal or decimal data, the CTLDATA statement can be 
  17156. followed by the MENU keyword, followed by a menu template in a BEGIN/END block. 
  17157. This creates a menu template as the control data of the window. 
  17158.  
  17159.  
  17160. ΓòÉΓòÉΓòÉ 21.6.3.8. Presentation Parameters Statement ΓòÉΓòÉΓòÉ
  17161.  
  17162. The optional PRESPARAMS statement is used to define presentation parameters. 
  17163. The syntax of the PRESPARAMS statement is as follows. 
  17164.  
  17165.                                  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÉ
  17166.                                  Γöé         Γöé
  17167.                                           Γöé
  17168.  ΓöÇΓöÇΓöÇPRESPARAMSΓöÇΓöÇΓöÇΓöÇtypeΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇvalueΓöÇΓöÇΓö┤ΓöÇ
  17169.  
  17170. A presentation parameter consists of: 
  17171.  
  17172.  type (ULONG) 
  17173.    The presentation parameter attribute type.  See the PARAM data type for a 
  17174.    description of valid types. 
  17175.  
  17176.    A string can be used to specify the type for a user type. If this is done, 
  17177.    the string type is converted into a string atom when the dialog template is 
  17178.    read into memory. Thereafter, this presentation parameter is referred to by 
  17179.    this string atom. The application can use the atom manager API to match the 
  17180.    string and the string atom. 
  17181.  
  17182.  value (LONG or PSZ) 
  17183.    One or more values depending upon the attribute type. 
  17184.  
  17185.    If the value is enclosed in quotes it is a zero-terminated string. 
  17186.    Otherwise, it is converted to a LONG. There may be more than one value, 
  17187.    depending upon the type. See PARAM data type for a description of the values 
  17188.    required for system-defined presentation parameters. 
  17189.  
  17190.  Examples 
  17191.  
  17192.  The following are examples of PRESPARAMS statements: 
  17193.  
  17194.  
  17195.   PRESPARAMS PP_BORDERCOLOR,  0x00ff00ffL
  17196.   PRESPARAMS PP_FONTNAMESIZE, "12.Helv"
  17197.   PRESPARAMS "my color",      0x00ff00ffL
  17198.   PRESPARAMS "my param",      0, 1, 2, 3, "Hi there"
  17199.  
  17200.  
  17201. ΓòÉΓòÉΓòÉ 21.6.3.9. Parent/Child/Owner Relationship ΓòÉΓòÉΓòÉ
  17202.  
  17203. The format of the DLGTEMPLATE and WINDOWTEMPLATE resources is very general to 
  17204. allow tree-structured relationships within the resource format. The general 
  17205. layout of the templates is: 
  17206.  
  17207.  
  17208. WINDOWTEMPLATE id
  17209. BEGIN
  17210.     WINDOW winTop             the top-level window
  17211.     BEGIN
  17212.         WINDOW wind1
  17213.         WINDOW wind2
  17214.         WINDOW wind3
  17215.         BEGIN
  17216.             WINDOW wind4
  17217.         END
  17218.         WINDOW wind5
  17219.     END
  17220. END
  17221.  
  17222. In this example, the top-level window is identified by winTop. It has four 
  17223. child windows: wind1, wind2, wind3, and wind5.  wind3 has one child window, 
  17224. wind4. When each of these windows is created, the parent and the owner are set 
  17225. to be the same. 
  17226.  
  17227. The only time when the parent and owner windows are not the same is when frame 
  17228. controls are automatically created by a frame window. 
  17229.  
  17230. Note that the WINDOW statements in the example above could also have been 
  17231. CONTROL or DIALOG statements. 
  17232.  
  17233.  
  17234. ΓòÉΓòÉΓòÉ 21.6.3.10. Predefined Window Classes ΓòÉΓòÉΓòÉ
  17235.  
  17236. The CONTROL statement can be used to define a window control of any class. 
  17237. Window classes may be user defined of one of a predefined set provided by the 
  17238. operating system. The following classes are provided in the OS/2 operating 
  17239. system. 
  17240.  
  17241.  WC_FRAME                 Application frame control. 
  17242.  WC_STATIC                Text and group boxes. 
  17243.  WC_BUTTON                Push button, check box or radio button. 
  17244.  WC_COMBOBOX              Combination of an entry field and list box. 
  17245.  WC_ENTRYFIELD            Single line entry field. 
  17246.  WC_MLE                   Multiple line entry field. 
  17247.  WC_LISTBOX               List box. 
  17248.  WC_MENU                  Application action bar, menus and popup menus. 
  17249.  WC_SCROLLBAR             Horizontal or vertical scroll bar. 
  17250.  WC_TITLEBAR              Application title bar. 
  17251.  WC_SPINBUTTON            Spin button entry field. 
  17252.  WC_CONTAINER             Container list. 
  17253.  WC_SLIDER                Horizontal or vertical slider control. 
  17254.  WC_VALUESET              Value set control. 
  17255.  WC_NOTEBOOK              Notebook control. 
  17256.  
  17257.  These controls make up the standard user interface components for 
  17258.  applications. The following example shows a simple listbox control. 
  17259.  
  17260.  
  17261.   CONTROL "", 1, 10, 20, 60, 40, WC_LISTBOX, WS_VISIBLE
  17262.  
  17263.  
  17264. ΓòÉΓòÉΓòÉ 21.6.3.11. Predefined Control Statements ΓòÉΓòÉΓòÉ
  17265.  
  17266. In addition to the general form of the CONTROL statement, there are special 
  17267. control statements for commonly used controls. These statements define the 
  17268. attributes of the child control windows that appear in the window. 
  17269.  
  17270. Control statements have this general form: 
  17271.  
  17272.  ΓöÇcontroltypeΓöÇtextΓöÇ,ΓöÇidΓöÇ,ΓöÇxΓöÇ,ΓöÇyΓöÇ,ΓöÇcxΓöÇ,ΓöÇcyΓöÇΓöÇΓöÇ
  17273.  
  17274.  ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  17275.      ΓööΓöÇΓöÇ,ΓöÇΓöÇΓöÇstyleΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17276.  
  17277.             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17278.                                      Γöé
  17279.  ΓöÇΓöÇΓöÇBEGINΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇDIALOG statementΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇENDΓöÇΓöÇΓöÇ
  17280.               Γö£ΓöÇΓöÇCONTROL statementΓöÇΓöÇΓöñ
  17281.               ΓööΓöÇΓöÇWINDOW statementΓöÇΓöÇΓöÇΓöÿ
  17282.  
  17283. The following six controls are exceptions to this form because they do not take 
  17284. a text field. See the LISTBOX control statement for the form of these six 
  17285. controls. 
  17286.  
  17287.      CONTAINER 
  17288.      LISTBOX 
  17289.      NOTEBOOK 
  17290.      SLIDER 
  17291.      SPINBUTTON 
  17292.      VALUESET 
  17293.  
  17294.  controltype 
  17295.    is one of the keywords described below, defining the type of the control. 
  17296.  
  17297.  text (PCH) 
  17298.    is a string specifying the text to be displayed.  The string must be 
  17299.    enclosed in double quotation marks. The manner in which the text is 
  17300.    displayed depends on the particular control, as detailed below. 
  17301.  
  17302.    To indicate the mnemonic for each item, insert the tilde character (~) in 
  17303.    the string preceding the mnemonic character. 
  17304.  
  17305.    The double quotation marks are required for the COMBOBOX title even if no 
  17306.    title is used. 
  17307.  
  17308.  id (USHORT) 
  17309.    is a unique integer number identifying the control. 
  17310.  
  17311.  x,y (SHORT) 
  17312.    are integer numbers specifying the x- and y-coordinates of the lower left 
  17313.    corner of the control, in dialog coordinates. The coordinates are relative 
  17314.    to the origin of the dialog. 
  17315.  
  17316.  cx,cy (SHORT) 
  17317.    are integer numbers specifying the width and height of the control. 
  17318.  
  17319.  The x, y, cx, and cy fields can use addition and subtraction operators (+ and 
  17320.  -). For example, 15 + 6 can be used for the x-field. 
  17321.  
  17322.  Styles can be combined using the (|) operator. 
  17323.  
  17324.  The control type keywords are shown below, with their classes and default 
  17325.  styles: 
  17326.  
  17327.  AUTOCHECKBOX 
  17328.  
  17329.     Class              WC_BUTTON 
  17330.     Default style      WS_TABSTOP, WS_VISIBLE, BS_AUTOCHECKBOX 
  17331.  
  17332.  AUTORADIOBUTTON 
  17333.  
  17334.     Class              WC_BUTTON 
  17335.     Default style      BS_AUTORADIOBUTTON, WS_TABSTOP, WS_VISIBLE 
  17336.  
  17337.  CHECKBOX 
  17338.  
  17339.     Class              WC_BUTTON 
  17340.     Default style      BS_CHECKBOX, WS_TABSTOP, WS_VISIBLE 
  17341.  
  17342.  COMBOBOX 
  17343.  
  17344.     Format             The form of the COMBOBOX control statement is shown 
  17345.                        below. 
  17346.  
  17347.                        The fields have the same meaning as in the other control 
  17348.                        statements. 
  17349.  
  17350.                                                ΓöÇΓöÇΓöÇCOMBOBOXΓöÇΓöÇ"title"ΓöÇΓöÇ,ΓöÇΓöÇidΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇxΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇyΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇcxΓöÇ
  17351.  
  17352.                                                ΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇcyΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  17353.                                                            ΓööΓöÇΓöÇ,ΓöÇΓöÇΓöÇstyleΓöÇΓöÇΓöÿ
  17354.  
  17355.     Class              WC_COMBOBOX 
  17356.     Default style      CBS_SIMPLE, WS_TABSTOP, WS_VISIBLE 
  17357.  
  17358.  CONTAINER 
  17359.  
  17360.     Format             The CONTAINER control statement does not contain a text 
  17361.                        field, so it has the same format as the LISTBOX 
  17362.                        statement. 
  17363.  
  17364.     Class              WC_CONTAINER 
  17365.     Default style      WS_TABSTOP, WS_VISIBLE, CCS_SINGLESEL 
  17366.  
  17367.  CTEXT 
  17368.  
  17369.     Class              WC_STATIC 
  17370.     Default style      SS_TEXT, DT_CENTER, WS_GROUP, WS_VISIBLE 
  17371.  
  17372.  DEFPUSHBUTTON 
  17373.  
  17374.     Class              WC_BUTTON 
  17375.     Default style      BS_DEFAULT, BS_PUSHBUTTON, WS_TABSTOP, WS_VISIBLE 
  17376.  
  17377.  EDITTEXT 
  17378.  
  17379.     Class              WC_ENTRYFIELD 
  17380.     Default style      WS_ENTRYFIELD, WS_TABSTOP, WS_VISIBLE, ES_AUTOSCROLL 
  17381.  
  17382.  ENTRYFIELD 
  17383.  
  17384.     Class              WC_ENTRYFIELD 
  17385.     Default style      WS_TABSTOP, ES_LEFT, WS_VISIBLE 
  17386.  
  17387.  FRAME 
  17388.  
  17389.     Class              WC_FRAME 
  17390.     Default style      WS_VISIBLE 
  17391.  
  17392.  GROUPBOX 
  17393.  
  17394.     Class              WC_STATIC 
  17395.     Default style      SS_GROUPBOX, WS_TABSTOP, WS_VISIBLE 
  17396.  
  17397.  ICON 
  17398.  
  17399.     Class              WC_STATIC 
  17400.     Default style      SS_ICON, WS_VISIBLE 
  17401.  
  17402.  LISTBOX 
  17403.  
  17404.     Format             The form of the LISTBOX control statement is different 
  17405.                        from the general form because it does not take a text 
  17406.                        field, however the fields have the same meaning as in 
  17407.                        the other control statements. The form of the LISTBOX 
  17408.                        control statement is shown below. 
  17409.  
  17410.                                                ΓöÇΓöÇcontroltypeΓöÇΓöÇΓöÇidΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇxΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇyΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇcxΓöÇΓöÇ
  17411.  
  17412.                                                ΓöÇΓöÇΓöÇ,ΓöÇΓöÇΓöÇcyΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ
  17413.                                                            ΓööΓöÇΓöÇ,ΓöÇΓöÇΓöÇstyleΓöÇΓöÇΓöÿ
  17414.  
  17415.     Class              WC_LISTBOX 
  17416.     Default style      LBS_NOTIFY, LBS_SORT, WS_VSCROLL, WS_BORDER, WS_VISIBLE 
  17417.  
  17418.  LTEXT 
  17419.  
  17420.     Class              WC_STATIC 
  17421.     Default style      SS_TEXT, DT_LEFT, WS_GROUP, WS_VISIBLE 
  17422.  
  17423.  MLE 
  17424.  
  17425.     Class              WC_MLE 
  17426.     Default style      WS_MLE, WS_TABSTOP, WS_VISIBLE, MLS_BORDER 
  17427.  
  17428.  NOTEBOOK 
  17429.  
  17430.     Format             The NOTEBOOK control statement does not contain a text 
  17431.                        field, so it has the same format as the LISTBOX 
  17432.                        statement. 
  17433.  
  17434.     Class              WC_NOTEBOOK 
  17435.     Default style      WS_NOTEBOOK, WS_TABSTOP, WS_VISIBLE 
  17436.  
  17437.  PUSHBUTTON 
  17438.  
  17439.     Class              WC_BUTTON 
  17440.     Default style      BS_PUSHBUTTON, WS_TABSTOP, WS_VISIBLE 
  17441.  
  17442.  RADIOBUTTON 
  17443.  
  17444.     Class              WC_BUTTON 
  17445.     Default style      BS_RADIOBUTTON, WS_TABSTOP, WS_VISIBLE 
  17446.  
  17447.  RTEXT 
  17448.  
  17449.     Class              WC_STATIC 
  17450.     Default style      SS_TEXT, DT_RIGHT, WS_GROUP, WS_VISIBLE 
  17451.  
  17452.  SLIDER 
  17453.  
  17454.     Format             The SLIDER control statement does not contain a text 
  17455.                        field, so it has the same format as the LISTBOX 
  17456.                        statement. 
  17457.  
  17458.     Class              WC_SLIDER 
  17459.     Default style      WS_SLIDER, WS_TABSTOP, WS_VISIBLE 
  17460.  
  17461.  SPINBUTTON 
  17462.  
  17463.     Format             The SPINBUTTON control statement does not contain a text 
  17464.                        field, so it has the same format as the LISTBOX 
  17465.                        statement. 
  17466.  
  17467.     Class              WC_SPINBUTTON 
  17468.     Default style      WS_TABSTOP, WS_VISIBLE, SPBS_MASTER 
  17469.  
  17470.  VALUESET 
  17471.  
  17472.     Format             The VALUESET control statement does not contain a text 
  17473.                        field, so it has the same format as the LISTBOX 
  17474.                        statement. 
  17475.  
  17476.     Class              WC_VALUESET 
  17477.     Default style      WS_VALUESET, WS_TABSTOP, WS_VISIBLE 
  17478.  
  17479.  Examples 
  17480.  
  17481.  The following is a complete example of a DIALOG statement: 
  17482.  
  17483.  
  17484.   DLGTEMPLATE errmess
  17485.   BEGIN
  17486.       DIALOG  "Disk Error", 100, 10, 10, 300, 110
  17487.       BEGIN
  17488.           CTEXT "Select One:", 1, 10, 80, 280, 12
  17489.           RADIOBUTTON "Retry", 2, 75, 50, 60, 12
  17490.           RADIOBUTTON "Abort", 3, 75, 30, 60, 12
  17491.           RADIOBUTTON "Ignore", 4, 75, 10, 60, 12
  17492.       END
  17493.   END
  17494.  
  17495.  This is an example of a WINDOWTEMPLATE statement that is used to define a 
  17496.  specific kind of window frame. Calling Load Dialog with this resource 
  17497.  automatically creates the frame window, the frame controls, and the client 
  17498.  window (of class MyClientClass). 
  17499.  
  17500.  
  17501.   WINDOWTEMPLATE wind1
  17502.   BEGIN
  17503.    FRAME "My Window", 1, 10, 10, 320, 130, WS_VISIBLE,
  17504.           FCF_STANDARD | FCF_VERTSCROLL
  17505.    BEGIN
  17506.     WINDOW "", FID_CLIENT, 0, 0, 0, 0, "MyClientClass",
  17507.                                                     style
  17508.    END
  17509.   END
  17510.  
  17511.  This example creates a resource template for a parallel dialog identified by 
  17512.  the constant parallel1. It includes a frame with a title bar, a system menu, 
  17513.  and a dialog-style border. The parallel dialog has three auto radio buttons in 
  17514.  it. 
  17515.  
  17516.  
  17517.   DLGTEMPLATE parallel1
  17518.   BEGIN
  17519.       DIALOG "Parallel Dialog", 1, 50, 50, 180, 110
  17520.       CTLDATA FCF_TITLEBAR | FCF_SYSMENU | FCF_DLGBORDER
  17521.       BEGIN
  17522.           AUTORADIOBUTTON "Retry", 2, 75, 80, 60, 12
  17523.           AUTORADIOBUTTON "Abort", 3, 75, 50, 60, 12
  17524.           AUTORADIOBUTTON "Ignore", 4, 75, 30, 60, 12
  17525.       END
  17526.   END
  17527.  
  17528.  
  17529. ΓòÉΓòÉΓòÉ 21.6.4. Resource (.RES) File Specification ΓòÉΓòÉΓòÉ
  17530.  
  17531. The format for the .RES file is: 
  17532.  
  17533.  
  17534. (/TYPE NAME FLAGS SIZE BYTES/)+
  17535.  
  17536. Where: 
  17537.  
  17538.  TYPE      is either a null-terminated string or an ordinal, in which instance 
  17539.            the first byte is 0xFF followed by an INT that is the ordinal. 
  17540.  
  17541.  
  17542.                       /* Predefined resource types */
  17543.                       #define RT_POINTER             1
  17544.                       #define RT_BITMAP              2
  17545.                       #define RT_MENU                3
  17546.                       #define RT_DIALOG              4
  17547.                       #define RT_STRING              5
  17548.                       #define RT_FONTDIR             6
  17549.                       #define RT_FONT                7
  17550.                       #define RT_ACCELTABLE          8
  17551.                       #define RT_RCDATA              9
  17552.                       #define RT_DLGINCLUDE         11
  17553.                       #define RT_FKALONG            17
  17554.                       #define RT_HELPTABLE          18
  17555.  
  17556.  NAME      is the same format as TYPE. There are no predefined names. 
  17557.  
  17558.  FLAGS     is an unsigned value containing the memory manager flags: 
  17559.  
  17560.  
  17561.                       #define NSTYPE      0x0007   /* Segment type mask            */
  17562.                       #define NSCODE      0x0000   /* Code segment                 */
  17563.                       #define NSDATA      0x0001   /* Data segment                 */
  17564.                       #define NSITER      0x0008   /* Iterated segment flag        */
  17565.                       #define NSMOVE      0x0010   /* Moveable segment flag        */
  17566.                       #define NSPURE      0x0020   /* Pure segment flag            */
  17567.                       #define NSPRELOAD   0x0040   /* Preload segment flag         */
  17568.                       #define NSEXRD      0x0080   /* Execute-only (code segment), */
  17569.                                                     /* or read-only (data segment)  */
  17570.                       #define NSRELOC     0x0100   /* Segment has relocations      */
  17571.                       #define NSCONFORM   0x0200   /* Segment has debug info       */
  17572.                       #define NSDPL       0x0C00   /* 286 DPL bits                 */
  17573.                       #define NSDISCARD   0x1000   /* Discard bit for segment      */
  17574.                       #define NS32BIT     0x2000   /* 32-BIT code segment          */
  17575.                       #define NSHUGE      0x4000   /* Huge memory segment          */
  17576.  
  17577.  SIZE      is a LONG value defining how many bytes follow in the resource. 
  17578.  
  17579.  BYTES     is the stream of bytes that makes up the resource. 
  17580.  
  17581.  Any number of resources can appear one after another in the .RES file. 
  17582.  
  17583.  
  17584. ΓòÉΓòÉΓòÉ 21.7. Virtual Key Definitions ΓòÉΓòÉΓòÉ
  17585.  
  17586. The PC VKEY set is shown in the following table: 
  17587.  
  17588. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  17589. ΓöéSymbol         ΓöéPersonal Computer AT   ΓöéEnhanced Keyboard        Γöé
  17590. Γöé               ΓöéKeyboard               Γöé                         Γöé
  17591. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17592. ΓöéVK_BUTTON1     ΓöéThese values are only  ΓöéThese values are only    Γöé
  17593. ΓöéVK_BUTTON2     Γöéused to access the     Γöéused to access the       Γöé
  17594. ΓöéVK_BUTTON3     Γöéup/down and toggled    Γöéup/down and toggled      Γöé
  17595. Γöé               Γöéstates of the pointing Γöéstates of the pointing   Γöé
  17596. Γöé               Γöédevice buttons; they   Γöédevice buttons; they     Γöé
  17597. Γöé               Γöénever actually appear  Γöénever actually appear in Γöé
  17598. Γöé               Γöéin a WM_CHAR message.  Γöéa WM_CHAR message.       Γöé
  17599. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17600. ΓöéVK_BREAK       ΓöéCtrl + Scroll Lock     ΓöéCtrl + Pause             Γöé
  17601. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17602. ΓöéVK_BACKSPACE   ΓöéBackspace              ΓöéBackspace                Γöé
  17603. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17604. ΓöéVK_TAB         ΓöéTab                    ΓöéTab                      Γöé
  17605. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17606. ΓöéVK_BACKTAB     ΓöéShift + Tab            ΓöéShift + Tab              Γöé
  17607. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17608. ΓöéVK_NEWLINE     ΓöéEnter                  ΓöéEnter                    Γöé
  17609. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17610. ΓöéVK_SHIFT  *    ΓöéLeft and Right Shift   ΓöéLeft and Right Shift     Γöé
  17611. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17612. ΓöéVK_CTRL  *     ΓöéCtrl                   ΓöéLeft and Right Ctrl      Γöé
  17613. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17614. ΓöéVK_ALT  *      ΓöéAlt                    ΓöéLeft and Right Alt       Γöé
  17615. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17616. ΓöéVK_ALTGRAF  *  ΓöéNone                   ΓöéAlt Graf (if available)  Γöé
  17617. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17618. ΓöéVK_PAUSE       ΓöéCtrl + Num Lock        ΓöéPause                    Γöé
  17619. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17620. ΓöéVK_CAPSLOCK    ΓöéCaps Lock              ΓöéCaps Lock                Γöé
  17621. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17622. ΓöéVK_ESC         ΓöéEsc                    ΓöéEsc                      Γöé
  17623. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17624. ΓöéVK_SPACE  *    ΓöéSpace                  ΓöéSpace                    Γöé
  17625. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17626. ΓöéVK_PAGEUP  *   ΓöéNumpad 9               ΓöéPg Up and Numpad 9       Γöé
  17627. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17628. ΓöéVK_PAGEDOWN  * ΓöéNumpad 3               ΓöéPg Dn and Numpad 3       Γöé
  17629. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17630. ΓöéVK_END  *      ΓöéNumpad 1               ΓöéEnd and Numpad 1         Γöé
  17631. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17632. ΓöéVK_HOME  *     ΓöéNumpad 7               ΓöéHome and Numpad 7        Γöé
  17633. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17634. ΓöéVK_LEFT  *     ΓöéNumpad 4               ΓöéLeft and Numpad 4        Γöé
  17635. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17636. ΓöéVK_UP  *       ΓöéNumpad 8               ΓöéUp and Numpad 8          Γöé
  17637. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17638. ΓöéVK_RIGHT  *    ΓöéNumpad 6               ΓöéRight and Numpad 6       Γöé
  17639. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17640. ΓöéVK_DOWN  *     ΓöéNumpad 2               ΓöéDown and Numpad 2        Γöé
  17641. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17642. ΓöéVK_PRINTSCRN   ΓöéShift + Print Screen   ΓöéPrint Screen             Γöé
  17643. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17644. ΓöéVK_INSERT  *   ΓöéNumpad 0               ΓöéIns and Numpad 0         Γöé
  17645. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17646. ΓöéVK_DELETE  *   ΓöéNumpad                 ΓöéDel and Numpad           Γöé
  17647. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17648. ΓöéVK_SCRLLOCK    ΓöéScroll Lock            ΓöéScroll Lock              Γöé
  17649. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17650. ΓöéVK_NUMLOCK     ΓöéNum Lock               ΓöéNum Lock                 Γöé
  17651. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17652. ΓöéVK_ENTER       ΓöéShift + Enter          ΓöéShift + Enter and Numpad Γöé
  17653. Γöé               Γöé                       ΓöéEnter                    Γöé
  17654. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17655. ΓöéVK_SYSRQ       ΓöéSysRq                  ΓöéAlt + Print Screen       Γöé
  17656. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17657. ΓöéVK_F1  *       ΓöéF1                     ΓöéF1                       Γöé
  17658. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17659. ΓöéVK_F2  *       ΓöéF2                     ΓöéF2                       Γöé
  17660. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17661. ΓöéVK_F3  *       ΓöéF3                     ΓöéF3                       Γöé
  17662. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17663. ΓöéVK_F4  *       ΓöéF4                     ΓöéF4                       Γöé
  17664. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17665. ΓöéVK_F5  *       ΓöéF5                     ΓöéF5                       Γöé
  17666. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17667. ΓöéVK_F6  *       ΓöéF6                     ΓöéF6                       Γöé
  17668. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17669. ΓöéVK_F7  *       ΓöéF7                     ΓöéF7                       Γöé
  17670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17671. ΓöéVK_F8  *       ΓöéF8                     ΓöéF8                       Γöé
  17672. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17673. ΓöéVK_F9  *       ΓöéF9                     ΓöéF9                       Γöé
  17674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17675. ΓöéVK_F10  *      ΓöéF10                    ΓöéF10                      Γöé
  17676. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17677. ΓöéVK_F11  *      ΓöéNone                   ΓöéF11                      Γöé
  17678. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17679. ΓöéVK_F12  *      ΓöéNone                   ΓöéF12                      Γöé
  17680. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17681. ΓöéVK_F13         ΓöéNone                   ΓöéNone                     Γöé
  17682. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17683. ΓöéVK_F14         ΓöéNone                   ΓöéNone                     Γöé
  17684. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17685. ΓöéVK_F15         ΓöéNone                   ΓöéNone                     Γöé
  17686. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17687. ΓöéVK_F16         ΓöéNone                   ΓöéNone                     Γöé
  17688. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17689. ΓöéVK_F17         ΓöéNone                   ΓöéNone                     Γöé
  17690. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17691. ΓöéVK_F18         ΓöéNone                   ΓöéNone                     Γöé
  17692. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17693. ΓöéVK_F19         ΓöéNone                   ΓöéNone                     Γöé
  17694. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17695. ΓöéVK_F20         ΓöéNone                   ΓöéNone                     Γöé
  17696. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17697. ΓöéVK_F21         ΓöéNone                   ΓöéNone                     Γöé
  17698. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17699. ΓöéVK_F22         ΓöéNone                   ΓöéNone                     Γöé
  17700. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17701. ΓöéVK_F23         ΓöéNone                   ΓöéNone                     Γöé
  17702. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17703. ΓöéVK_F24         ΓöéNone                   ΓöéNone                     Γöé
  17704. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  17705. ΓöéVK_MENU  *     ΓöéF10                    ΓöéF10                      Γöé
  17706. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  17707.  
  17708. Notes 
  17709.  
  17710.    1. VKEYs marked with an asterisk (*) are generated irrespective of other 
  17711.       shift states (Shift, Ctrl, Alt, and Alt Graf). 
  17712.  
  17713.    2. VK_CAPSLOCK is not generated for any of the Ctrl shift states, for PC-DOS 
  17714.       compatibility. 
  17715.  
  17716.    3. Wherever possible, the VK_ name is derived from the legend on the key top 
  17717.       of the 101-key Enhanced PC keyboard. 
  17718.  
  17719.  
  17720. ΓòÉΓòÉΓòÉ 22. Notices ΓòÉΓòÉΓòÉ
  17721.  
  17722. First Edition (October 1994) 
  17723.  
  17724. The following paragraph does not apply to the United Kingdom or any country 
  17725. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  17726. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  17727. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  17728. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  17729. do not allow disclaimer of express or implied warranties in certain 
  17730. transactions, therefore, this statement may not apply to you. 
  17731.  
  17732. This publication could include technical inaccuracies or typographical errors. 
  17733. Changes are periodically made to the information herein; these changes will be 
  17734. incorporated in new editions of the publication. IBM may make improvements 
  17735. and/or changes in the product(s) and/or the program(s) described in this 
  17736. publication at any time. 
  17737.  
  17738. It is possible that this publication may contain reference to, or information 
  17739. about, IBM products (machines and programs), programming, or services that are 
  17740. not announced in your country.  Such references or information must not be 
  17741. construed to mean that IBM intends to announce such IBM products, programming, 
  17742. or services in your country. 
  17743.  
  17744. Requests for technical information about IBM products should be made to your 
  17745. IBM reseller or IBM marketing representative. 
  17746.  
  17747.  
  17748. ΓòÉΓòÉΓòÉ 22.1. Copyright Notices ΓòÉΓòÉΓòÉ
  17749.  
  17750. COPYRIGHT LICENSE: This publication contains printed sample application 
  17751. programs in source language, which illustrate OS/2 programming techniques. You 
  17752. may copy, modify, and distribute these sample programs in any form without 
  17753. payment to IBM, for the purposes of developing, using, marketing or 
  17754. distributing application programs conforming to the OS/2 application 
  17755. programming interface. 
  17756.  
  17757. Each copy of any portion of these sample programs or any derivative work, which 
  17758. is distributed to others, must include a copyright notice as follows: "(C) 
  17759. (your company name) (year).  All rights reserved." 
  17760.  
  17761. (C) Copyright International Business Machines Corporation 1994. All rights 
  17762. reserved. 
  17763. Note to U.S. Government Users - Documentation related to restricted rights - 
  17764. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  17765. Schedule Contract with IBM Corp. 
  17766.  
  17767.  
  17768. ΓòÉΓòÉΓòÉ 22.2. Disclaimers ΓòÉΓòÉΓòÉ
  17769.  
  17770. References in this publication to IBM products, programs, or services do not 
  17771. imply that IBM intends to make these available in all countries in which IBM 
  17772. operates. Any reference to an IBM product, program, or service is not intended 
  17773. to state or imply that only IBM's product, program, or service may be used. 
  17774. Subject to IBM's valid intellectual property or other legally protectable 
  17775. rights, any functionally equivalent product, program, or service may be used 
  17776. instead of the IBM product, program, or service. Evaluation and verification of 
  17777. operation in conjunction with other products, programs, or services, except 
  17778. those expressly designated by IBM, are the user's responsibility. 
  17779.  
  17780. IBM may have patents or pending patent applications covering subject matter in 
  17781. this document. The furnishing of this document does not give you any license to 
  17782. these patents. You can send license inquiries, in writing, to the IBM Director 
  17783. of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood, NY 10594, U.S.A. 
  17784.  
  17785. Licensees of this program who wish to have information about it for the purpose 
  17786. of enabling:  (i) the exchange of information between independently created 
  17787. programs and other programs (including this one) and (ii) the mutual use of the 
  17788. information which has been exchanged, should contact IBM Corporation, 
  17789. Department RM1A, 1000 N.W. 51st Street, Boca Raton, FL 33431, U.S.A.  Such 
  17790. information may be available, subject to appropriate terms and conditions, 
  17791. including in some cases, payment of a fee. 
  17792.  
  17793.  
  17794. ΓòÉΓòÉΓòÉ 22.3. Trademarks ΓòÉΓòÉΓòÉ
  17795.  
  17796. The following terms are trademarks of the IBM Corporation in the United States 
  17797. or other countries or both: 
  17798.  
  17799.  Common User Access                 CUA 
  17800.  IBM                                Information Presentation Facility 
  17801.  IPF                                Operating System/2 
  17802.  OS/2                               PM 
  17803.  Presentation Manager               SAA 
  17804.  System Application Architecture    Workplace Shell 
  17805.  
  17806.  The following terms are trademarks of other companies: 
  17807.  
  17808.  Adobe                              Adobe Systems Incorporated 
  17809.  Helvetica                          Linotype 
  17810.  Intel                              Intel Corporation 
  17811.  PostScript                         Adobe Systems Incorporated 
  17812.  Times New Roman                    Monotype 
  17813.  
  17814.  Other company, product, and service names, which may be denoted by a double 
  17815.  asterisk (**), may be trademarks or service marks of others. 
  17816.  
  17817.  
  17818. ΓòÉΓòÉΓòÉ 23. Glossary ΓòÉΓòÉΓòÉ
  17819.  
  17820. This glossary defines many of the terms used in this book. It includes terms 
  17821. and definitions from the IBM Dictionary of Computing, as well as terms specific 
  17822. to the OS/2 operating system and the Presentation Manager. It is not a complete 
  17823. glossary for the entire OS/2 operating system; nor is it a complete dictionary 
  17824. of computer terms. 
  17825.  
  17826. Other primary sources for these definitions are: 
  17827.  
  17828.      The American National Standard Dictionary for Information Systems, ANSI 
  17829.       X3.172-1990, copyrighted 1990 by the American National Standards 
  17830.       Institute, 11 West 42nd Street, New York, New York 10036. These 
  17831.       definitions are identified by the symbol (A) after the definition. 
  17832.  
  17833.      The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  17834.       Technical Committee 1, of the International Organization for 
  17835.       Standardization and the International Electrotechnical Commission 
  17836.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  17837.       identified by the symbol (I) after the definition; definitions taken from 
  17838.       draft international standards, committee drafts, and working papers being 
  17839.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  17840.       definition, indicating that final agreement has not yet been reached 
  17841.       among the participating National Bodies of SC1. 
  17842.  
  17843.  
  17844. ΓòÉΓòÉΓòÉ 23.1. Glossary Listing ΓòÉΓòÉΓòÉ
  17845.  
  17846. Select a starting letter of glossary terms: 
  17847.  
  17848.  A    N 
  17849.  B    O 
  17850.  C    P 
  17851.  D    Q 
  17852.  E    R 
  17853.  F    S 
  17854.  G    T 
  17855.  H    U 
  17856.  I    V 
  17857.  J    W 
  17858.  K    X 
  17859.  L    Y 
  17860.  M    Z 
  17861.  
  17862.  
  17863. ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
  17864.  
  17865.  accelerator  -In SAA Common User Access architecture, a key or combination of 
  17866.    keys that invokes an application-defined function. 
  17867.  
  17868.  accelerator table  -A table used to define which key strokes are treated as 
  17869.    accelerators and the commands they are translated into. 
  17870.  
  17871.  access mode  -The manner in which an application gains access to a file it has 
  17872.    opened. Examples of access modes are read-only, write-only, and read/write. 
  17873.  
  17874.  access permission  -All access rights that a user has regarding an object. (I)
  17875.  
  17876.  action  -One of a set of defined tasks that a computer performs. Users request 
  17877.    the application to perform an action in several ways, such as typing a 
  17878.    command, pressing a function key, or selecting the action name from an 
  17879.    action bar or menu. 
  17880.  
  17881.  action bar  -In SAA Common User Access architecture, the area at the top of a 
  17882.    window that contains choices that give a user access to actions available in 
  17883.    that window. 
  17884.  
  17885.  action point  -The current position on the screen at which the pointer is 
  17886.    pointing. Contrast with hot spot and input focus. 
  17887.  
  17888.  active program  -A program currently running on the computer.  An active 
  17889.    program can be interactive (running and receiving input from the user) or 
  17890.    noninteractive (running but not receiving input from the user). See also 
  17891.    interactive program and noninteractive program. 
  17892.  
  17893.  active window  -The window with which the user is currently interacting. 
  17894.  
  17895.  address space  -(1) The range of addresses available to a program. (A)  (2) 
  17896.    The area of virtual storage available for a particular job. 
  17897.  
  17898.  alphanumeric video output  -Output to the logical video buffer when the video 
  17899.    adapter is in text mode and the logical video buffer is addressed by an 
  17900.    application as a rectangular array of character cells. 
  17901.  
  17902.  American National Standard Code for Information Interchange  -The standard 
  17903.    code, using a coded character set consisting of 7-bit coded characters (8 
  17904.    bits including parity check), that is used for information interchange among 
  17905.    data processing systems, data communication systems, and associated 
  17906.    equipment. The ASCII set consists of control characters and graphic 
  17907.    characters. (A) 
  17908.  
  17909.    Note:  IBM has defined an extension to ASCII code (characters 128-255). 
  17910.  
  17911.  anchor  -A window procedure that handles Presentation Manager message 
  17912.    conversions between an icon procedure and an application. 
  17913.  
  17914.  anchor block  -An area of Presentation-Manager-internal resources to allocated 
  17915.    process or thread that calls WinInitialize. 
  17916.  
  17917.  anchor point  -A point in a window used by a program designer or by a window 
  17918.    manager to position a subsequently appearing window. 
  17919.  
  17920.  ANSI  -American National Standards Institute. 
  17921.  
  17922.  APA  -All points addressable. 
  17923.  
  17924.  API  -Application programming interface. 
  17925.  
  17926.  application  -A collection of software components used to perform specific 
  17927.    types of work on a computer; for example, a payroll application, an airline 
  17928.    reservation application, a network application. 
  17929.  
  17930.  application object  -In SAA Advanced Common User Access architecture, a form 
  17931.    that an application provides for a user; for example, a spreadsheet form. 
  17932.    Contrast with user object. 
  17933.  
  17934.  application programming interface (API)  -A functional interface supplied by 
  17935.    the operating system or by a separately orderable licensed program that 
  17936.    allows an application program written in a high-level language to use 
  17937.    specific data or functions of the operating system or the licensed program. 
  17938.  
  17939.  application-modal  -Pertaining to a message box or dialog box for which 
  17940.    processing must be completed before further interaction with any other 
  17941.    window owned by the same application may take place. 
  17942.  
  17943.  area  -In computer graphics, a filled shape such as a solid rectangle. 
  17944.  
  17945.  ASCII  -American National Standard Code for Information Interchange. 
  17946.  
  17947.  ASCIIZ  -A string of ASCII characters that is terminated with a byte 
  17948.    containing the value 0. 
  17949.  
  17950.  aspect ratio  -In computer graphics, the width-to-height ratio of an area, 
  17951.    symbol, or shape. 
  17952.  
  17953.  asynchronous (ASYNC)  -(1) Pertaining to two or more processes that do not 
  17954.    depend upon the occurrence of specific events such as common timing 
  17955.    signals. (T)  (2) Without regular time relationship;  unexpected or 
  17956.    unpredictable with respect to the execution of program instructions. See 
  17957.    also synchronous. 
  17958.  
  17959.  atom  -A constant that represents a string. As soon as a string has been 
  17960.    defined as an atom, the atom can be used in place of the string to save 
  17961.    space. Strings are associated with their respective atoms in an atom table. 
  17962.    See also integer atom. 
  17963.  
  17964.  atom table  -A table used to relate atoms with the strings that they 
  17965.    represent. Also in the table is the mechanism by which the presence of a 
  17966.    string can be checked. 
  17967.  
  17968.  atomic operation  -An operation that completes its work on an object before 
  17969.    another operation can be performed on the same object. 
  17970.  
  17971.  attribute  -A characteristic or property that can be controlled, usually to 
  17972.    obtain a required appearance;  for example, the color of a line. See also 
  17973.    graphics attributes and segment attributes. 
  17974.  
  17975.  automatic link  -In Information Presentation Facility (IPF), a link that 
  17976.    begins a chain reaction at the primary window. When the user selects the 
  17977.    primary window, an automatic link is activated to display secondary windows. 
  17978.  
  17979.  AVIO  -Advanced Video Input/Output. 
  17980.  
  17981.  
  17982. ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
  17983.  
  17984.  B╨Æzier curve  -(1) A mathematical technique of specifying smooth continous 
  17985.    lines and surfaces, which require a starting point and a finishing point 
  17986.    with several intermediate points that influence or control the path of the 
  17987.    linking curve. Named after Dr. P. B╨Æzier. (2) (D of C) In the AIX Graphics 
  17988.    Library, a cubic spline approximation to a set of four control points that 
  17989.    passes through the first and fourth control points and that has a continuous 
  17990.    slope where two spline segments meet. Named after Dr. P. B╨Æzier. 
  17991.  
  17992.  background  -(1) In multiprogramming, the conditions under which low-priority 
  17993.    programs are executed. Contrast with foreground. (2) An active session that 
  17994.    is not currently displayed on the screen. 
  17995.  
  17996.  background color  -The color in which the background of a graphic primitive is 
  17997.    drawn. 
  17998.  
  17999.  background mix  -An attribute that determines how the background of a graphic 
  18000.    primitive is combined with the existing color of the graphics presentation 
  18001.    space. Contrast with mix. 
  18002.  
  18003.  background program  -In multiprogramming, a program that executes with a low 
  18004.    priority. Contrast with foreground program. 
  18005.  
  18006.  bit map  -A representation in memory of the data displayed on an APA device, 
  18007.    usually the screen. 
  18008.  
  18009.  block  -(1) A string of data elements recorded or transmitted as a unit. The 
  18010.    elements may be characters, words, or logical records. (T)  (2) To record 
  18011.    data in a block. (3) A collection of contiguous records recorded as a unit. 
  18012.    Blocks are separated by interblock gaps and each block may contain one or 
  18013.    more records. (A)
  18014.  
  18015.  block device  -A storage device that performs I/O operations on blocks of data 
  18016.    called sectors. Data on block devices can be randomly accessed. Block 
  18017.    devices are designated by a drive letter (for example, C:). 
  18018.  
  18019.  blocking mode  -A condition set by an application that determines when its 
  18020.    threads might block. For example, an application might set the Pipemode 
  18021.    parameter for the DosCreateNPipe function so that its threads perform I/O 
  18022.    operations to the named pipe block when no data is available. 
  18023.  
  18024.  border  -A visual indication (for example, a separator line or a background 
  18025.    color) of the boundaries of a window. 
  18026.  
  18027.  boundary determination  -An operation used to compute the size of the smallest 
  18028.    rectangle that encloses a graphics object on the screen. 
  18029.  
  18030.  breakpoint  -(1) A point in a computer program where execution may be halted. 
  18031.    A breakpoint is usually at the beginning of an instruction where halts, 
  18032.    caused by external intervention, are convenient for resuming 
  18033.    execution. (T)  (2) A place in a program, specified by a command or a 
  18034.    condition, where the system halts execution and gives control to the 
  18035.    workstation user or to a specified program. 
  18036.  
  18037.  broken pipe  -When all of the handles that access one end of a pipe have been 
  18038.    closed. 
  18039.  
  18040.  bucket  -One or more fields in which the result of an operation is kept. 
  18041.  
  18042.  buffer  -(1) A portion of storage used to hold input or output data 
  18043.    temporarily. (2) To allocate and schedule the use of buffers. (A)
  18044.  
  18045.  button  -A mechanism used to request or initiate an action. See also barrel 
  18046.    buttons, bezel buttons, mouse button, push button, and radio button. 
  18047.  
  18048.  byte pipe  -Pipes that handle data as byte streams. All unnamed pipes are byte 
  18049.    pipes. Named pipes can be byte pipes or message pipes. See byte stream. 
  18050.  
  18051.  byte stream  -Data that consists of an unbroken stream of bytes. 
  18052.  
  18053.  
  18054. ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
  18055.  
  18056.  cache  -A high-speed buffer storage that contains frequently accessed 
  18057.    instructions and data; it is used to reduce access time. 
  18058.  
  18059.  cached micro presentation space  -A presentation space from a 
  18060.    Presentation-Manager-owned store of micro presentation spaces. It can be 
  18061.    used for drawing to a window only, and must be returned to the store when 
  18062.    the task is complete. 
  18063.  
  18064.  CAD  -Computer-Aided Design. 
  18065.  
  18066.  call  -(1) The action of bringing a computer program, a routine, or a 
  18067.    subroutine into effect, usually by specifying the entry conditions and 
  18068.    jumping to an entry point. (I)  (A)  (2) To transfer control to a procedure, 
  18069.    program, routine, or subroutine. 
  18070.  
  18071.  calling sequence  -A sequence of instructions together with any associated 
  18072.    data necessary to execute a call. (T)
  18073.  
  18074.  Cancel  -An action that removes the current window or menu without processing 
  18075.    it, and returns the previous window. 
  18076.  
  18077.  cascaded menu  -In the OS/2 operating system, a menu that appears when the 
  18078.    arrow to the right of a cascading choice is selected. It contains a set of 
  18079.    choices that are related to the cascading choice. Cascaded menus are used to 
  18080.    reduce the length of a menu. See also cascading choice. 
  18081.  
  18082.  cascading choice  -In SAA Common User Access architecture, a choice in a menu 
  18083.    that, when selected, produces a cascaded menu containing other choices.  An 
  18084.    arrow () appears to the right of the cascading choice. 
  18085.  
  18086.  CASE statement  -In PM programming, provides the body of a window procedure. 
  18087.    There is usually one CASE statement for each message type supported by an 
  18088.    application. 
  18089.  
  18090.  CGA  -Color graphics adapter. 
  18091.  
  18092.  chained list  -A list in which the data elements may be dispersed but in which 
  18093.    each data element contains information for locating the 
  18094.    next. (T)Synonymous with linked list. 
  18095.  
  18096.  character  -A letter, digit, or other symbol. 
  18097.  
  18098.  character box  -In computer graphics, the boundary that defines, in world 
  18099.    coordinates, the horizontal and vertical space occupied by a single 
  18100.    character from a character set. See also character mode. Contrast with 
  18101.    character cell. 
  18102.  
  18103.  character cell  -The physical, rectangular space in which any single character 
  18104.    is displayed on a screen or printer device. Position is addressed by row and 
  18105.    column coordinates. Contrast with character box. 
  18106.  
  18107.  character code  -The means of addressing a character in a character set, 
  18108.    sometimes called code point. 
  18109.  
  18110.  character device  -A device that performs I/O operations on one character at a 
  18111.    time. Because character devices view data as a stream of bytes, 
  18112.    character-device data cannot be randomly accessed. Character devices include 
  18113.    the keyboard, mouse, and printer, and are referred to by name. 
  18114.  
  18115.  character mode  -A mode that, in conjunction with the font type, determines 
  18116.    the extent to which graphics characters are affected by the character box, 
  18117.    shear, and angle attributes. 
  18118.  
  18119.  character set  -(1) An ordered set of unique representations called 
  18120.    characters; for example, the 26 letters of English alphabet, Boolean 0 and 
  18121.    1, the set of symbols in the Morse code, and the 128 ASCII 
  18122.    characters. (A)  (2) All the valid characters for a programming language or 
  18123.    for a computer system. (3) A group of characters used for a specific reason; 
  18124.    for example, the set of characters a printer can print. 
  18125.  
  18126.  check box  -In SAA Advanced Common User Access architecture, a square box with 
  18127.    associated text that represents a choice. When a user selects a choice, an X 
  18128.    appears in the check box to indicate that the choice is in effect. The user 
  18129.    can clear the check box by selecting the choice again. Contrast with radio 
  18130.    button. 
  18131.  
  18132.  check mark  - (1) (D of C) In SAA Advanced Common User Access architecture, a 
  18133.    symbol that shows that a choice is currently in effect. (2) The symbol that 
  18134.    is used to indicate a selected item on a pull-down menu. 
  18135.  
  18136.  child process  -In the OS/2 operating system, a process started by another 
  18137.    process, which is called the parent process. Contrast with parent process. 
  18138.  
  18139.  child window  -A window that appears within the border of its parent window 
  18140.    (either a primary window or another child window). When the parent window is 
  18141.    resized, moved, or destroyed, the child window also is resized, moved, or 
  18142.    destroyed; however, the child window can be moved or resized independently 
  18143.    from the parent window, within the boundaries of the parent window. Contrast 
  18144.    with parent window. 
  18145.  
  18146.  choice  -(1) An option that can be selected. The choice can be presented as 
  18147.    text, as a symbol (number or letter), or as an icon (a pictorial symbol). 
  18148.    (2) (D of C) In SAA Common User Access architecture, an item that a user can 
  18149.    select. 
  18150.  
  18151.  chord  -(1) To press more than one button on a pointing device while the 
  18152.    pointer is within the limits that the user has specified for the operating 
  18153.    environment. (2) (D of C) In graphics, a short line segment whose end points 
  18154.    lie on a circle. Chords are a means for producing a circular image from 
  18155.    straight lines. The higher the number of chords per circle, the smoother the 
  18156.    circular image. 
  18157.  
  18158.  class  -A way of categorizing objects based on their behavior and shape. A 
  18159.    class is, in effect, a definition of a generic object. In SOM, a class is a 
  18160.    special kind of object that can manufacture other objects that all have a 
  18161.    common shape and exhibit similar behavior (more precisely, all of the 
  18162.    objects manufactured by a class have the same memory layout and share a 
  18163.    common set of methods). New classes can be defined in terms of existing 
  18164.    classes through a technique known as inheritance. 
  18165.  
  18166.  class method  -A class method of class <X> is a method provided by the 
  18167.    metaclass of class <X>. Class methods are executed without requiring any 
  18168.    instances of class <X> to exist, and are frequently used to create 
  18169.    instances. In System Object Model, an action that can be performed on a 
  18170.    class object. 
  18171.  
  18172.  class object  -In System Object Model, the run-time implementation of a class. 
  18173.  
  18174.  class style  -The set of properties that apply to every window in a window 
  18175.    class. 
  18176.  
  18177.  client  -(1) A functional unit that receives shared services from a 
  18178.    server. (T)  (2) A user, as in a client process that uses a named pipe or 
  18179.    queue that is created and owned by a server process. 
  18180.  
  18181.  client area  -The part of the window, inside the border, that is below the 
  18182.    menu bar. It is the user's work space, where a user types information and 
  18183.    selects choices from selection fields.  In primary windows, it is where an 
  18184.    application programmer presents the objects that a user works on. 
  18185.  
  18186.  client program  -An application that creates and manipulates instances of 
  18187.    classes. 
  18188.  
  18189.  client window  -The window in which the application displays output and 
  18190.    receives input. This window is located inside the frame window, under the 
  18191.    window title bar and any menu bar, and within any scroll bars. 
  18192.  
  18193.  clip limits  -The area of the paper that can be reached by a printer or 
  18194.    plotter. 
  18195.  
  18196.  clipboard  -In SAA Common User Access architecture, an area of computer 
  18197.    memory, or storage, that temporarily holds data. Data in the clipboard is 
  18198.    available to other applications. 
  18199.  
  18200.  clipping  -In computer graphics, removing those parts of a display image that 
  18201.    lie outside a given boundary. (I)  (A)
  18202.  
  18203.  clipping area  -The area in which the window can paint. 
  18204.  
  18205.  clipping path  -A clipping boundary in world-coordinate space. 
  18206.  
  18207.  clock tick  -The minimum unit of time that the system tracks. If the system 
  18208.    timer currently counts at a rate of X Hz, the system tracks the time every 
  18209.    1/X of a second. Also known as time tick. 
  18210.  
  18211.  CLOCK$  -Character-device name reserved for the system clock. 
  18212.  
  18213.  code page  -An assignment of graphic characters and control-function meanings 
  18214.    to all code points. 
  18215.  
  18216.  code point  -(1) Synonym for character code. (2) (D of C) A 1-byte code 
  18217.    representing one of 256 potential characters. 
  18218.  
  18219.  code segment  -An executable section of programming code within a load module. 
  18220.  
  18221.  color dithering  -See dithering. 
  18222.  
  18223.  color graphics adapter (CGA)  -An adapter that simultaneously provides four 
  18224.    colors and is supported by all IBM Personal Computer and Personal System/2 
  18225.    models. 
  18226.  
  18227.  command  -The name and parameters associated with an action that a program can 
  18228.    perform. 
  18229.  
  18230.  command area  -An area composed of a command field prompt and a command entry 
  18231.    field. 
  18232.  
  18233.  command entry field  -An entry field in which users type commands. 
  18234.  
  18235.  command line  -On a display screen, a display line, sometimes at the bottom of 
  18236.    the screen, in which only commands can be entered. 
  18237.  
  18238.  command mode  -A state of a system or device in which the user can enter 
  18239.    commands. 
  18240.  
  18241.  command prompt  -A field prompt showing the location of the command entry 
  18242.    field in a panel. 
  18243.  
  18244.  Common Programming Interface (CPI)  -Definitions of those application 
  18245.    development languages and services that have, or are intended to have, 
  18246.    implementations on and a high degree of commonality across the SAA 
  18247.    environments. One of the three SAA architectural areas. See also Common User 
  18248.    Access architecture. 
  18249.  
  18250.  Common User Access (CUA) architecture  - Guidelines for the dialog between a 
  18251.    human and a workstation or terminal. One of the three SAA architectural 
  18252.    areas. See also Common Programming Interface. 
  18253.  
  18254.  compile  -To translate a program written in a higher-level programming 
  18255.    language into a machine language program. 
  18256.  
  18257.  composite window  -A window composed of other windows (such as a frame window, 
  18258.    frame-control windows, and a client window) that are kept together as a unit 
  18259.    and that interact with each other. 
  18260.  
  18261.  computer-aided design (CAD)  -The use of a computer to design or change a 
  18262.    product, tool, or machine, such as using a computer for drafting or 
  18263.    illustrating. 
  18264.  
  18265.  COM1, COM2, COM3  -Character-device names reserved for serial ports 1 through 
  18266.    3. 
  18267.  
  18268.  CON  -Character-device name reserved for the console keyboard and screen. 
  18269.  
  18270.  conditional cascaded menu  -A pull-down menu associated with a menu item that 
  18271.    has a cascade mini-push button beside it in an object's pop-up menu. The 
  18272.    conditional cascaded menu is displayed when the user selects the mini-push 
  18273.    button. 
  18274.  
  18275.  container  -In SAA Common User Access architecture, an object that holds other 
  18276.    objects. A folder is an example of a container object. See also folder and 
  18277.    object. 
  18278.  
  18279.  contextual help  -In SAA Common User Access Architecture, help that gives 
  18280.    specific information about the item the cursor is on. The help is contextual 
  18281.    because it provides information about a specific item as it is currently 
  18282.    being used. Contrast with extended help. 
  18283.  
  18284.  contiguous  -Touching or joining at a common edge or boundary, for example, an 
  18285.    unbroken consecutive series of storage locations. 
  18286.  
  18287.  control  -In SAA Advanced Common User Access architecture, a component of the 
  18288.    user interface that allows a user to select choices or type information; for 
  18289.    example, a check box, an entry field, a radio button. 
  18290.  
  18291.  control area  -A storage area used by a computer program to hold control information. (I)  (A)
  18292.  
  18293.  Control Panel  -In the Presentation Manager, a program used to set up user 
  18294.    preferences that act globally across the system. 
  18295.  
  18296.  Control Program  -(1) The basic functions of the operating system, including 
  18297.    DOS emulation and the support for keyboard, mouse, and video input/output. 
  18298.    (2) A computer program designed to schedule and to supervise the execution 
  18299.    of programs of a computer system. (I)  (A)
  18300.  
  18301.  control window  -A window that is used as part of a composite window to 
  18302.    perform simple input and output tasks. Radio buttons and check boxes are 
  18303.    examples. 
  18304.  
  18305.  control word  -An instruction within a document that identifies its parts or 
  18306.    indicates how to format the document. 
  18307.  
  18308.  coordinate space  -A two-dimensional set of points used to generate output on 
  18309.    a video display of printer. 
  18310.  
  18311.  Copy  -A choice that places onto the clipboard, a copy of what the user has 
  18312.    selected. See also Cut and Paste. 
  18313.  
  18314.  correlation  -The action of determining which element or object within a 
  18315.    picture is at a given position on the display. This follows a pick 
  18316.    operation. 
  18317.  
  18318.  coverpage window  -A window in which the application's help information is 
  18319.    displayed. 
  18320.  
  18321.  CPI  -Common Programming Interface. 
  18322.  
  18323.  critical extended attribute  -An extended attribute that is necessary for the 
  18324.    correct operation of the system or a particular application. 
  18325.  
  18326.  critical section  -(1) In programming languages, a part of an asynchronous 
  18327.    procedure that cannot be executed simultaneously with a certain part of 
  18328.    another asynchronous procedure. (I)
  18329.  
  18330.    Note:  Part of the other asynchronous procedure also is a critical section. 
  18331.    (2) A section of code that is not reentrant; that is, code that can be 
  18332.    executed by only one thread at a time. 
  18333.  
  18334.  CUA architecture  -Common User Access architecture. 
  18335.  
  18336.  current position  -In computer graphics, the position, in user coordinates, 
  18337.    that becomes the starting point for the next graphics routine, if that 
  18338.    routine does not explicitly specify a starting point. 
  18339.  
  18340.  cursor  -A symbol displayed on the screen and associated with an input device. 
  18341.    The cursor indicates where input from the device will be placed. Types of 
  18342.    cursors include text cursors, graphics cursors, and selection cursors. 
  18343.    Contrast with pointer and input focus. 
  18344.  
  18345.  Cut  -In SAA Common User Access architecture, a choice that removes a selected 
  18346.    object, or a part of an object, to the clipboard, usually compressing the 
  18347.    space it occupied in a window. See also Copy and Paste. 
  18348.  
  18349.  
  18350. ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
  18351.  
  18352.  daisy chain  -A method of device interconnection for determining interrupt 
  18353.    priority by connecting the interrupt sources serially. 
  18354.  
  18355.  data segment  -A nonexecutable section of a program module; that is, a section 
  18356.    of a program that contains data definitions. 
  18357.  
  18358.  data structure  -The syntactic structure of symbolic expressions and their 
  18359.    storage-allocation characteristics. (T)
  18360.  
  18361.  data transfer  -The movement of data from one object to another by way of the 
  18362.    clipboard or by direct manipulation. 
  18363.  
  18364.  DBCS  -Double-byte character set. 
  18365.  
  18366.  DDE  -Dynamic data exchange. 
  18367.  
  18368.  deadlock  -(1) Unresolved contention for the use of a resource. (2) An error 
  18369.    condition in which processing cannot continue because each of two elements 
  18370.    of the process is waiting for an action by, or a response from, the other. 
  18371.    (3) An impasse that occurs when multiple processes are waiting for the 
  18372.    availability of a resource that will not become available because it is 
  18373.    being held by another process that is in a similar wait state. 
  18374.  
  18375.  debug  -To detect, diagnose, and eliminate errors in programs. (T)
  18376.  
  18377.  decipoint  -In printing, one tenth of a point.  There are 72 points in an 
  18378.    inch. 
  18379.  
  18380.  default procedure  -A function provided by the Presentation Manager Interface 
  18381.    that may be used to process standard messages from dialogs or windows. 
  18382.  
  18383.  default value  -A value assumed when no value has been specified. Synonymous 
  18384.    with assumed value. For example, in the graphics programming interface, the 
  18385.    default line-type is 'solid'. 
  18386.  
  18387.  definition list  -A type of list that pairs a term and its description. 
  18388.  
  18389.  delta  -An application-defined threshold, or number of container items, from 
  18390.    either end of the list. 
  18391.  
  18392.  descendant  -See child process. 
  18393.  
  18394.  descriptive text  -Text used in addition to a field prompt to give more 
  18395.    information about a field. 
  18396.  
  18397.  Deselect all  -A choice that cancels the selection of all of the objects that 
  18398.    have been selected in that window. 
  18399.  
  18400.  Desktop Manager  -In the Presentation Manager, a window that displays a list 
  18401.    of groups of programs, each of which can be started or stopped. 
  18402.  
  18403.  desktop window  -The window, corresponding to the physical device, against 
  18404.    which all other types of windows are established. 
  18405.  
  18406.  detached process  -A background process that runs independent of the parent 
  18407.    process. 
  18408.  
  18409.  detent  -A point on a slider that represents an exact value to which a user 
  18410.    can move the slider arm. 
  18411.  
  18412.  device context  -A logical description of a data destination such as memory, 
  18413.    metafile, display, printer, or plotter. See also direct device context, 
  18414.    information device context, memory device context, metafile device context, 
  18415.    queued device context, and screen device context. 
  18416.  
  18417.  device driver  -A file that contains the code needed to attach and use a 
  18418.    device such as a display, printer, or plotter. 
  18419.  
  18420.  device space  -(1) Coordinate space in which graphics are assembled after all 
  18421.    GPI transformations have been applied. Device space is defined in 
  18422.    device-specific units. (2) ( D of C) In computer graphics, a space defined 
  18423.    by the complete set of addressable points of a display device. (A)
  18424.  
  18425.  dialog  -The interchange of information between a computer and its user 
  18426.    through a sequence of requests by the user and the presentation of responses 
  18427.    by the computer. 
  18428.  
  18429.  dialog box  -In SAA Advanced Common User Access architecture, a movable 
  18430.    window, fixed in size, containing controls that a user uses to provide 
  18431.    information required by an application so that it can continue to process a 
  18432.    user request. See also message box, primary window, secondary window. Also 
  18433.    known as a pop-up window. 
  18434.  
  18435.  Dialog Box Editor  -A WYSIWYG editor that creates dialog boxes for 
  18436.    communicating with the application user. 
  18437.  
  18438.  dialog item  -A component (for example, a menu or a button) of a dialog box. 
  18439.    Dialog items are also used when creating dialog templates. 
  18440.  
  18441.  dialog procedure  -A dialog window that is controlled by a window procedure. 
  18442.    It is responsible for responding to all messages sent to the dialog window. 
  18443.  
  18444.  dialog tag language  -A markup language used by the DTL compiler to create 
  18445.    dialog objects. 
  18446.  
  18447.  dialog template  -The definition of a dialog box, which contains details of 
  18448.    its position, appearance, and window ID, and the window ID of each of its 
  18449.    child windows. 
  18450.  
  18451.  direct device context  -A logical description of a data destination that is a 
  18452.    device other than the screen (for example, a printer or plotter), and where 
  18453.    the output is not to go through the spooler. Its purpose is to satisfy 
  18454.    queries. See also device context. 
  18455.  
  18456.  direct manipulation  -The user's ability to interact with an object by using 
  18457.    the mouse, typically by dragging an object around on the Desktop and 
  18458.    dropping it on other objects. 
  18459.  
  18460.  direct memory access (DMA)  -A technique for moving data directly between main 
  18461.    storage and peripheral equipment without requiring processing of the data by 
  18462.    the processing unit.(T)
  18463.  
  18464.  directory  -A type of file containing the names and controlling information 
  18465.    for other files or other directories. 
  18466.  
  18467.  display point  -Synonym for pel. 
  18468.  
  18469.  dithering  -(1) The process used in color displays whereby every other pel is 
  18470.    set to one color, and the intermediate pels are set to another. Together 
  18471.    they produce the effect of a third color at normal viewing distances. This 
  18472.    process can only be used on solid areas of color; it does not work, for 
  18473.    example, on narrow lines. (2) (D of C ) In computer graphics, a technique of 
  18474.    interleaving dark and light pixels so that the resulting image looks 
  18475.    smoothly shaded when viewed from a distance. 
  18476.  
  18477.  DMA  -Direct memory access. 
  18478.  
  18479.  DOS Protect Mode Interface (DPMI)  -An interface between protect mode and real 
  18480.    mode programs. 
  18481.  
  18482.  double-byte character set (DBCS)  -A set of characters in which each character 
  18483.    is represented by two bytes.  Languages such as Japanese, Chinese, and 
  18484.    Korean, which contain more characters than can be represented by 256 code 
  18485.    points, require double-byte character sets. Since each character requires 
  18486.    two bytes, the entering, displaying, and printing of DBCS characters 
  18487.    requires hardware and software that can support DBCS. 
  18488.  
  18489.  doubleword  -A contiguous sequence of bits or characters that comprises two 
  18490.    computer words and is capable of being addressed as a unit. (A)
  18491.  
  18492.  DPMI  -DOS Protect Mode Interface. 
  18493.  
  18494.  drag  -In SAA Common User Access, to use a pointing device to move an object; 
  18495.    for example, clicking on a window border, and dragging it to make the window 
  18496.    larger. 
  18497.  
  18498.  dragging  -(1) In computer graphics, moving an object on the display screen as 
  18499.    if it were attached to the pointer. (2) (D of C) In computer graphics, 
  18500.    moving one or more segments on a display surface by translating. (I)  (A)
  18501.  
  18502.  drawing chain  -See segment chain. 
  18503.  
  18504.  drop  -To fix the position of an object that is being dragged, by releasing 
  18505.    the select button of the pointing device. 
  18506.  
  18507.  drop  -To fix the position of an object that is being dragged, by releasing 
  18508.    the select button of the pointing device. See also drag. 
  18509.  
  18510.  DTL  -Dialog tag language. 
  18511.  
  18512.  dual-boot function  -A feature of the OS/2 operating system that allows the 
  18513.    user to start DOS from within the operating system, or an OS/2 session from 
  18514.    within DOS. 
  18515.  
  18516.  duplex  -Pertaining to communication in which data can be sent and received at 
  18517.    the same time. Synonymous with full duplex. 
  18518.  
  18519.  dynamic data exchange (DDE)  -A message protocol used to communicate between 
  18520.    applications that share data. The protocol uses shared memory as the means 
  18521.    of exchanging data between applications. 
  18522.  
  18523.  dynamic data formatting  -A formatting procedure that enables you to 
  18524.    incorporate text, bit maps or metafiles in an IPF window at execution time. 
  18525.  
  18526.  dynamic link library  -A collection of executable programming code and data 
  18527.    that is bound to an application at load time or run time, rather than during 
  18528.    linking. The programming code and data in a dynamic link library can be 
  18529.    shared by several applications simultaneously. 
  18530.  
  18531.  dynamic linking  -The process of resolving external references in a program 
  18532.    module at load time or run time rather than during linking. 
  18533.  
  18534.  dynamic segments  -Graphics segments drawn in exclusive-OR mix mode so that 
  18535.    they can be moved from one screen position to another without affecting the 
  18536.    rest of the displayed picture. 
  18537.  
  18538.  dynamic storage  -(1) A device that stores data in a manner that permits the 
  18539.    data to move or vary with time such that the specified data is not always 
  18540.    available for recovery. (A)  (2) A storage in which the cells require 
  18541.    repetitive application of control signals in order to retain stored data. 
  18542.    Such repetitive application of the control signals is called a refresh 
  18543.    operation. A dynamic storage may use static addressing or sensing 
  18544.    circuits. (A)  (3) See also static storage. 
  18545.  
  18546.  dynamic time slicing  -Varies the size of the time slice depending on system 
  18547.    load and paging activity. 
  18548.  
  18549.  dynamic-link module  -A module that is linked at load time or run time. 
  18550.  
  18551.  
  18552. ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
  18553.  
  18554.  EBCDIC  -Extended binary-coded decimal interchange code. A coded character set 
  18555.    consisting of 8-bit coded characters (9 bits including parity check), used 
  18556.    for information interchange among data processing systems, data 
  18557.    communications systems, and associated equipment. 
  18558.  
  18559.  edge-triggered  -Pertaining to an event semaphore that is posted then reset 
  18560.    before a waiting thread gets a chance to run. The semaphore is considered to 
  18561.    be posted for the rest of that thread's waiting period; the thread does not 
  18562.    have to wait for the semaphore to be posted again. 
  18563.  
  18564.  EGA  -Extended graphics adapter. 
  18565.  
  18566.  element  -An entry in a graphics segment that comprises one or more graphics 
  18567.    orders and that is addressed by the element pointer. 
  18568.  
  18569.  EMS  -Expanded Memory Specification. 
  18570.  
  18571.  encapsulation  -Hiding an object's implementation, that is, its private, 
  18572.    internal data and methods. Private variables and methods are accessible only 
  18573.    to the object that contains them. 
  18574.  
  18575.  entry field  -In SAA Common User Access architecture, an area where a user 
  18576.    types information. Its boundaries are usually indicated. See also selection 
  18577.    field. 
  18578.  
  18579.  entry panel  -A defined panel type containing one or more entry fields and 
  18580.    protected information such as headings, prompts, and explanatory text. 
  18581.  
  18582.  entry-field control  -The component of a user interface that provides the 
  18583.    means by which the application receives data entered by the user in an entry 
  18584.    field. When it has the input focus, the entry field displays a flashing 
  18585.    pointer at the position where the next typed character will go. 
  18586.  
  18587.  environment segment  -The list of environment variables and their values for a 
  18588.    process. 
  18589.  
  18590.  environment strings  -ASCII text strings that define the value of environment 
  18591.    variables. 
  18592.  
  18593.  environment variables  -Variables that describe the execution environment of a 
  18594.    process. These variables are named by the operating system or by the 
  18595.    application. Environment variables named by the operating system are PATH, 
  18596.    DPATH, INCLUDE, INIT, LIB, PROMPT, and TEMP. The values of environment 
  18597.    variables are defined by the user in the CONFIG.SYS file, or by using the 
  18598.    SET command at the OS/2 command prompt. 
  18599.  
  18600.  error message  -An indication that an error has been detected. (A)
  18601.  
  18602.  event semaphore  -A semaphore that enables a thread to signal a waiting thread 
  18603.    or threads that an event has occurred or that a task has been completed. The 
  18604.    waiting threads can then perform an action that is dependent on the 
  18605.    completion of the signaled event. 
  18606.  
  18607.  exception  -An abnormal condition such as an I/O error encountered in 
  18608.    processing a data set or a file. 
  18609.  
  18610.  exclusive system semaphore  -A system semaphore that can be modified only by 
  18611.    threads within the same process. 
  18612.  
  18613.  executable file  -(1) A file that contains programs or commands that perform 
  18614.    operations or actions to be taken. (2) A collection of related data records 
  18615.    that execute programs. 
  18616.  
  18617.  exit  -To execute an instruction within a portion of a computer program in 
  18618.    order to terminate the execution of that portion. Such portions of computer 
  18619.    programs include loops, subroutines, modules, and so on. (T)  Repeated exit 
  18620.    requests return the user to the point from which all functions provided to 
  18621.    the system are accessible. Contrast with cancel. 
  18622.  
  18623.  expanded memory specification (EMS)  -Enables DOS applications to access 
  18624.    memory above the 1MB real mode addressing limit. 
  18625.  
  18626.  extended attribute  -An additional piece of information about a file object, 
  18627.    such as its data format or category. It consists of a name and a value. A 
  18628.    file object may have more than one extended attribute associated with it. 
  18629.  
  18630.  extended help  -In SAA Common User Access architecture, a help action that 
  18631.    provides information about the contents of the application window from which 
  18632.    a user requested help. Contrast with contextual help. 
  18633.  
  18634.  extended-choice selection  -A mode that allows the user to select more than 
  18635.    one item from a window. Not all windows allow extended choice selection. 
  18636.    Contrast with multiple-choice selection. 
  18637.  
  18638.  extent  -Continuous space on a disk or diskette that is occupied by or 
  18639.    reserved for a particular data set, data space, or file. 
  18640.  
  18641.  external link  -In Information Presentation Facility, a link that connects 
  18642.    external online document files. 
  18643.  
  18644.  
  18645. ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
  18646.  
  18647.  family-mode application  -An application program that can run in the OS/2 
  18648.    environment and in the DOS environment; however, it cannot take advantage of 
  18649.    many of the OS/2-mode facilities, such as multitasking, interprocess 
  18650.    communication, and dynamic linking. 
  18651.  
  18652.  FAT  -File allocation table. 
  18653.  
  18654.  FEA  -Full extended attribute. 
  18655.  
  18656.  field-level help  -Information specific to the field on which the cursor is 
  18657.    positioned. This help function is "contextual" because it provides 
  18658.    information about a specific item as it is currently used; the information 
  18659.    is dependent upon the context within the work session. 
  18660.  
  18661.  FIFO  -First-in-first-out. (A)
  18662.  
  18663.  file  -A named set of records stored or processed as a unit. (T)
  18664.  
  18665.  file allocation table (FAT)  -In IBM personal computers, a table used by the 
  18666.    operating system to allocate space on a disk for a file, and to locate and 
  18667.    chain together parts of the file that may be scattered on different sectors 
  18668.    so that the file can be used in a random or sequential manner. 
  18669.  
  18670.  file attribute  -Any of the attributes that describe the characteristics of a 
  18671.    file. 
  18672.  
  18673.  File Manager  -In the Presentation Manager, a program that displays 
  18674.    directories and files, and allows various actions on them. 
  18675.  
  18676.  file specification  -The full identifier for a file, which includes its drive 
  18677.    designation, path, file name, and extension. 
  18678.  
  18679.  file system  -The combination of software and hardware that supports storing 
  18680.    information on a storage device. 
  18681.  
  18682.  file system driver (FSD)  -A program that manages file I\O and controls the 
  18683.    format of information on the storage media. 
  18684.  
  18685.  fillet  -A curve that is tangential to the end points of two adjoining lines. 
  18686.    See also polyfillet. 
  18687.  
  18688.  filtering  -An application process that changes the order of data in a queue. 
  18689.  
  18690.  first-in-first-out (FIFO)  -A queuing technique in which the next item to be 
  18691.    retrieved is the item that has been in the queue for the longest time. (A)
  18692.  
  18693.  flag  -(1) An indicator or parameter that shows the setting of a switch. (2) A 
  18694.    character that signals the occurrence of some condition, such as the end of 
  18695.    a word. (A)  (3) (D of C) A characteristic of a file or directory that 
  18696.    enables it to be used in certain ways. See also archive flag, hidden flag, 
  18697.    and read-only flag. 
  18698.  
  18699.  focus  -See input focus. 
  18700.  
  18701.  folder  -A container used to organize objects. 
  18702.  
  18703.  font  -A particular size and style of typeface that contains definitions of 
  18704.    character sets, marker sets, and pattern sets. 
  18705.  
  18706.  Font Editor  -A utility program provided with the IBM Developers Toolkit that 
  18707.    enables the design and creation of new fonts. 
  18708.  
  18709.  foreground program  -(1) The program with which the user is currently 
  18710.    interacting. Also known as interactive program. Contrast with background 
  18711.    program. (2) (D of C) In multiprogramming,  a high-priority program. 
  18712.  
  18713.  frame  -The part of a window that can contain several different visual 
  18714.    elements specified by the application, but drawn and controlled by the 
  18715.    Presentation Manager. The frame encloses the client area. 
  18716.  
  18717.  frame styles  -Standard window layouts provided by the Presentation Manager. 
  18718.  
  18719.  FSD  -File system driver. 
  18720.  
  18721.  full-duplex  -Synonym for duplex. 
  18722.  
  18723.  full-screen application  -An application that has complete control of the 
  18724.    screen. 
  18725.  
  18726.  function  -(1) In a programming language, a block, with or without formal 
  18727.    parameters, whose execution is invoked by means of a call. (2) A set of 
  18728.    related control statements that cause one or more programs to be performed. 
  18729.  
  18730.  function key  -A key that causes a specified sequence of operations to be 
  18731.    performed when it is pressed, for example, F1 and Alt-K. 
  18732.  
  18733.  function key area  -The area at the bottom of a window that contains function 
  18734.    key assignments such as F1=Help. 
  18735.  
  18736.  
  18737. ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
  18738.  
  18739.  GDT  -Global Descriptor Table. 
  18740.  
  18741.  general protection fault  -An exception condition that occurs when a process 
  18742.    attempts to use storage or a module that has some level of protection 
  18743.    assigned to it, such as I/O privilege level. See also IOPL code segment. 
  18744.  
  18745.  Global Descriptor Table (GDT)  -A table that defines code and data segments 
  18746.    available to all tasks in an application. 
  18747.  
  18748.  global dynamic-link module  -A dynamic-link module that can be shared by all 
  18749.    processes in the system that refer to the module name. 
  18750.  
  18751.  global file-name character  -Either a question mark (?) or an asterisk (*) 
  18752.    used as a variable in a file name or file name extension when referring to a 
  18753.    particular file or group of files. 
  18754.  
  18755.  glyph  -A graphic symbol whose appearance conveys information. 
  18756.  
  18757.  GPI  -Graphics programming interface. 
  18758.  
  18759.  graphic primitive  -In computer graphics, a basic element, such as an arc or a 
  18760.    line, that is not made up of smaller parts and that is used to create 
  18761.    diagrams and pictures. See also graphics segment. 
  18762.  
  18763.  graphics  -(1) A picture defined in terms of graphic primitives and graphics 
  18764.    attributes. (2) (D of C) The making of charts and pictures. (3) Pertaining 
  18765.    to charts, tables, and their creation. (4) See computer graphics, coordinate 
  18766.    graphics, fixed-image graphics, interactive graphics, passive graphics, 
  18767.    raster graphics. 
  18768.  
  18769.  graphics attributes  -Attributes that apply to graphic primitives. Examples 
  18770.    are color, line type, and shading-pattern definition. See also segment 
  18771.    attributes. 
  18772.  
  18773.  graphics field  -The clipping boundary that defines the visible part of the 
  18774.    presentation-page contents. 
  18775.  
  18776.  graphics mode  -One of several states of a display. The mode determines the 
  18777.    resolution and color content of the screen. 
  18778.  
  18779.  graphics model space  -The conceptual coordinate space in which a picture is 
  18780.    constructed after any model transforms have been applied. Also known as 
  18781.    model space. 
  18782.  
  18783.  Graphics programming interface  -The formally defined programming language 
  18784.    that is between an IBM graphics program and the user of the program. 
  18785.  
  18786.  graphics segment  -A sequence of related graphic primitives and graphics 
  18787.    attributes. See also graphic primitive. 
  18788.  
  18789.  graying  -The indication that a choice on a pull-down is unavailable. 
  18790.  
  18791.  group  -A collection of logically connected controls. For example, the buttons 
  18792.    controlling paper size for a printer could be called a group. See also 
  18793.    program group. 
  18794.  
  18795.  
  18796. ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
  18797.  
  18798.  handle  -(1) An identifier that represents an object, such as a device or 
  18799.    window, to the Presentation Interface. (2) (D of C) In the Advanced DOS and 
  18800.    OS/2 operating systems, a binary value created by the system that identifies 
  18801.    a drive, directory, and file so that the file can be found and opened. 
  18802.  
  18803.  hard error  -An error condition on a network that requires either that the 
  18804.    system be reconfigured or that the source of the error be removed before the 
  18805.    system can resume reliable operation. 
  18806.  
  18807.  header  -(1) System-defined control information that precedes user data. (2) 
  18808.    The portion of a message that contains control information for the message, 
  18809.    such as one or more destination fields, name of the originating station, 
  18810.    input sequence number, character string indicating the type of message, and 
  18811.    priority level for the message. 
  18812.  
  18813.  heading tags  -A document element that enables information to be displayed in 
  18814.    windows, and that controls entries in the contents window controls placement 
  18815.    of push buttons in a window, and defines the shape and size of windows. 
  18816.  
  18817.  heap  -An area of free storage available for dynamic allocation by an 
  18818.    application. Its size varies according to the storage requirements of the 
  18819.    application. 
  18820.  
  18821.  help function  -(1) A function that provides information about a specific 
  18822.    field, an application panel, or information about the help facility. (2) (D 
  18823.    of C) One or more display images that describe how to use application 
  18824.    software or how to do a system operation. 
  18825.  
  18826.  Help index  -In SAA Common User Access architecture, a help action that 
  18827.    provides an index of the help information available for an application. 
  18828.  
  18829.  help panel  -A panel with information to assist users that is displayed in 
  18830.    response to a help request from the user. 
  18831.  
  18832.  help window  -A Common-User-Access-defined secondary window that displays 
  18833.    information when the user requests help. 
  18834.  
  18835.  hidden file  -An operating system file that is not displayed by a directory 
  18836.    listing. 
  18837.  
  18838.  hide button  -In the OS/2 operating system, a small, square button located in 
  18839.    the right-hand corner of the title bar of a window that, when selected, 
  18840.    removes from the screen all the windows associated with that window. 
  18841.    Contrast with maximize button. See also restore button. 
  18842.  
  18843.  hierarchical inheritance  -The relationship between parent and child classes. 
  18844.    An object that is lower in the inheritance hierarchy than another object, 
  18845.    inherits all the characteristics and behaviors of the objects above it in 
  18846.    the hierarchy. 
  18847.  
  18848.  hierarchy  -A tree of segments beginning with the root segment and proceeding 
  18849.    downward to dependent segment types. 
  18850.  
  18851.  high-performance file system (HPFS)  -In the OS/2 operating system, an 
  18852.    installable file system that uses high-speed buffer storage, known as a 
  18853.    cache, to provide fast access to large disk volumes. The file system also 
  18854.    supports the coexistence of multiple, active file systems on a single 
  18855.    personal computer, with the capability of multiple and different storage 
  18856.    devices. File names used with the HPFS can have as many as 254 characters. 
  18857.  
  18858.  hit testing  -The means of identifying which window is associated with which 
  18859.    input device event. 
  18860.  
  18861.  hook  -A point in a system-defined function where an application can supply 
  18862.    additional code that the system processes as though it were part of the 
  18863.    function. 
  18864.  
  18865.  hook chain  -A sequence of hook procedures that are "chained" together so that 
  18866.    each event is passed, in turn, to each procedure in the chain. 
  18867.  
  18868.  hot spot  -The part of the pointer that must touch an object before it can be 
  18869.    selected. This is usually the tip of the pointer. Contrast with action 
  18870.    point. 
  18871.  
  18872.  HPFS  -high-performance file system. 
  18873.  
  18874.  hypergraphic link  -A connection between one piece of information and another 
  18875.    through the use of graphics. 
  18876.  
  18877.  hypertext  -A way of presenting information online with connections between 
  18878.    one piece of information and another, called hypertext links. See also 
  18879.    hypertext link. 
  18880.  
  18881.  hypertext link  -A connection between one piece of information and another. 
  18882.  
  18883.  
  18884. ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
  18885.  
  18886.  I/O operation  -An input operation to, or output operation from a device 
  18887.    attached to a computer. 
  18888.  
  18889.  I-beam pointer  -A pointer that indicates an area, such as an entry field in 
  18890.    which text can be edited. 
  18891.  
  18892.  icon  -In SAA Advanced Common User Access architecture, a graphical 
  18893.    representation of an object, consisting of an image, image background, and a 
  18894.    label. Icons can represent items (such as a document file) that the user 
  18895.    wants to work on, and actions that the user wants to perform. In the 
  18896.    Presentation Manager, icons are used for data objects, system actions, and 
  18897.    minimized programs. 
  18898.  
  18899.  icon area  -In the Presentation Manager, the area at the bottom of the screen 
  18900.    that is normally used to display the icons for minimized programs. 
  18901.  
  18902.  Icon Editor  -The Presentation Manager-provided tool for creating icons. 
  18903.  
  18904.  IDL  -Interface Definition Language. 
  18905.  
  18906.  image font  -A set of symbols, each of which is described in a rectangular 
  18907.    array of pels. Some of the pels in the array are set to produce the image of 
  18908.    one of the symbols. Contrast with outline font. 
  18909.  
  18910.  implied metaclass  -Subclassing the metaclass of a parent class without a 
  18911.    separate CSC for the resultant metaclass. 
  18912.  
  18913.  indirect manipulation  -Interaction with an object through choices and 
  18914.    controls. 
  18915.  
  18916.  information device context  -A logical description of a data destination other 
  18917.    than the screen (for example, a printer or plotter), but where no output 
  18918.    will occur. Its purpose is to satisfy queries. See also device context. 
  18919.  
  18920.  information panel  -A defined panel type characterized by a body containing 
  18921.    only protected information. 
  18922.  
  18923.  Information Presentation Facility (IPF)  -A facility provided by the OS/2 
  18924.    operating system, by which application developers can produce online 
  18925.    documentation and context-sensitive online help panels for their 
  18926.    applications. 
  18927.  
  18928.  inheritance  -The technique of specifying the shape and behavior of one class 
  18929.    (called a subclass) as incremental differences from another class (called 
  18930.    the parent class or superclass). The subclass inherits the superclass' state 
  18931.    representation and methods, and can provide additional data elements and 
  18932.    methods. The subclass also can provide new functions with the same method 
  18933.    names used by the superclass. Such a subclass method is said to override the 
  18934.    superclass method, and will be selected automatically by method resolution 
  18935.    on subclass instances. An overriding method can elect to call upon the 
  18936.    superclass' method as part of its own implementation. 
  18937.  
  18938.  input focus  -(1) The area of a window where user interaction is possible 
  18939.    using an input device, such as a mouse or the keyboard. (2) The position in 
  18940.    the active window where a user's normal interaction with the keyboard will 
  18941.    appear. 
  18942.  
  18943.  input router  -An internal OS/2 process that removes messages from the system 
  18944.    queue. 
  18945.  
  18946.  input/output control  -A device-specific command that requests a function of a 
  18947.    device driver. 
  18948.  
  18949.  installable file system (IFS)  -A file system in which software is installed 
  18950.    when the operating system is started. 
  18951.  
  18952.  instance  -(Or object instance). A specific object, as distinguished from the 
  18953.    abstract definition of an object referred to as its class. 
  18954.  
  18955.  instance method  -A method valid for a particular object. 
  18956.  
  18957.  instruction pointer  -In System/38, a pointer that provides addressability for 
  18958.    a machine interface instruction in a program. 
  18959.  
  18960.  integer atom  -An atom that represents a predefined system constant and 
  18961.    carries no storage overhead. For example, names of window classes provided 
  18962.    by Presentation Manager are expressed as integer atoms. 
  18963.  
  18964.  interactive graphics  -Graphics that can be moved or manipulated by a user at 
  18965.    a terminal. 
  18966.  
  18967.  interactive program  -(1) A program that is running (active) and is ready to 
  18968.    receive (or is receiving) input from a user. (2) A running program that can 
  18969.    receive input from the keyboard or another input device. Compare with active 
  18970.    program and contrast with noninteractive program. 
  18971.  
  18972.    Also known as a foreground program. 
  18973.  
  18974.  interchange file  -A file containing data that can be sent from one 
  18975.    Presentation Manager interface application to another. 
  18976.  
  18977.  Interface Definition Language (IDL)  -Language-neutral interface specification 
  18978.    for a SOM class. 
  18979.  
  18980.  interpreter  -A program that translates and executes each instruction of a 
  18981.    high-level programming language before it translates and executes. 
  18982.  
  18983.  interprocess communication (IPC)  -In the OS/2 operating system, the exchange 
  18984.    of information between processes or threads through semaphores, pipes, 
  18985.    queues, and shared memory. 
  18986.  
  18987.  interval timer  -(1) A timer that provides program interruptions on a 
  18988.    program-controlled basis. (2) An electronic counter that counts intervals of 
  18989.    time under program control. 
  18990.  
  18991.  IOCtl  -Input/output control. 
  18992.  
  18993.  IOPL  -Input/output privilege level. 
  18994.  
  18995.  IOPL code segment  -An IOPL executable section of programming code that 
  18996.    enables an application to directly manipulate hardware interrupts and ports 
  18997.    without replacing the device driver. See also privilege level. 
  18998.  
  18999.  IPC  -Interprocess communication. 
  19000.  
  19001.  IPF  -Information Presentation Facility. 
  19002.  
  19003.  IPF compiler  -A text compiler that interpret tags in a source file and 
  19004.    converts the information into the specified format. 
  19005.  
  19006.  IPF tag language  -A markup language that provides the instructions for 
  19007.    displaying online information. 
  19008.  
  19009.  item  -A data object that can be passed in a DDE transaction. 
  19010.  
  19011.  
  19012. ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
  19013.  
  19014.  journal  -A special-purpose file that is used to record changes made in the 
  19015.    system. 
  19016.  
  19017.  
  19018. ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
  19019.  
  19020.  Kanji  -A graphic character set used in Japanese ideographic alphabets. 
  19021.  
  19022.  KBD$  -Character-device name reserved for the keyboard. 
  19023.  
  19024.  kernel  -The part of an operating system that performs basic functions, such 
  19025.    as allocating hardware resources. 
  19026.  
  19027.  kerning  -The design of graphics characters so that their character boxes 
  19028.    overlap. Used to space text proportionally. 
  19029.  
  19030.  keyboard accelerator  -A keystroke that generates a command message for an 
  19031.    application. 
  19032.  
  19033.  keyboard augmentation  -A function that enables a user to press a keyboard key 
  19034.    while pressing a mouse button. 
  19035.  
  19036.  keyboard focus  -A temporary attribute of a window. The window that has a 
  19037.    keyboard focus receives all keyboard input until the focus changes to a 
  19038.    different window. 
  19039.  
  19040.  Keys help  -In SAA Common User Access architecture, a help action that 
  19041.    provides a listing of the application keys and their assigned functions. 
  19042.  
  19043.  
  19044. ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
  19045.  
  19046.  label  -In a graphics segment, an identifier of one or more elements that is 
  19047.    used when editing the segment. 
  19048.  
  19049.  LAN  -local area network. 
  19050.  
  19051.  language support procedure  -A function provided by the Presentation Manager 
  19052.    Interface for applications that do not, or cannot (as in the case of COBOL 
  19053.    and FORTRAN programs), provide their own dialog or window procedures. 
  19054.  
  19055.  lazy drag  -See pickup and drop. 
  19056.  
  19057.  lazy drag set  -See pickup set. 
  19058.  
  19059.  LDT  -In the OS/2 operating system, Local Descriptor Table. 
  19060.  
  19061.  LIFO stack  -A stack from which data is retrieved in last-in, first-out order. 
  19062.  
  19063.  linear address  -A unique value that identifies the memory object. 
  19064.  
  19065.  linked list  -Synonym for chained list. 
  19066.  
  19067.  list box  -In SAA Advanced Common User Access architecture, a control that 
  19068.    contains scrollable choices from which a user can select one choice. 
  19069.  
  19070.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  19071.    selection list. 
  19072.  
  19073.  list button  -A button labeled with an underlined down-arrow that presents a 
  19074.    list of valid objects or choices that can be selected for that field. 
  19075.  
  19076.  list panel  -A defined panel type that displays a list of items from which 
  19077.    users can select one or more choices and then specify one or more actions to 
  19078.    work on those choices. 
  19079.  
  19080.  load time  -The point in time at which a program module is loaded into main 
  19081.    storage for execution. 
  19082.  
  19083.  load-on-call  -A function of a linkage editor that allows selected segments of 
  19084.    the module to be disk resident while other segments are executing. Disk 
  19085.    resident segments are loaded for execution and given control when any entry 
  19086.    point that they contain is called. 
  19087.  
  19088.  local area network (LAN)  -(1) A computer network located on a user's premises 
  19089.    within a limited geographical area. Communication within a local area 
  19090.    network is not subject to external regulations;  however, communication 
  19091.    across the LAN boundary may be subject to some form of regulation. (T)
  19092.  
  19093.    Note:  A LAN does not use store and forward techniques. (2) A network 
  19094.    inwhich a set of devices are connected to one another for communication and 
  19095.    that can be connected to a larger network. 
  19096.  
  19097.  Local Descriptor Table (LDT)  -Defines code and data segments specific to a 
  19098.    single task. 
  19099.  
  19100.  lock  -A serialization mechanism by means of which a resource is restricted 
  19101.    for use by the holder of the lock. 
  19102.  
  19103.  logical storage device  -A device that the user can map to a physical (actual) 
  19104.    device. 
  19105.  
  19106.  LPT1, LPT2, LPT3  -Character-device names reserved for parallel printers 1 
  19107.    through 3. 
  19108.  
  19109.  
  19110. ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
  19111.  
  19112.  main window  -The window that is positioned relative to the desktop window. 
  19113.  
  19114.  manipulation button  -The button on a pointing device a user presses to 
  19115.    directly manipulate an object. 
  19116.  
  19117.  map  -(1) A set of values having a defined correspondence with the quantities 
  19118.    or values of another set. (I)  (A)  (2) To establish a set of values having 
  19119.    a defined correspondence with the quantities or values of another set. (I)
  19120.  
  19121.  marker box  -In computer graphics, the boundary that defines, in world 
  19122.    coordinates, the horizontal and vertical space occupied by a single marker 
  19123.    from a marker set. 
  19124.  
  19125.  marker symbol  -A symbol centered on a point. Graphs and charts can use marker 
  19126.    symbols to indicate the plotted points. 
  19127.  
  19128.  marquee box  -The rectangle that appears during a selection technique in which 
  19129.    a user selects objects by drawing a box around them with a pointing device. 
  19130.  
  19131.  Master Help Index  -In the OS/2 operating system, an alphabetic list of help 
  19132.    topics related to using the operating system. 
  19133.  
  19134.  maximize  -To enlarge a window to its largest possible size. 
  19135.  
  19136.  media window  -The part of the physical device (display, printer, or plotter) 
  19137.    on which a picture is presented. 
  19138.  
  19139.  memory block  -Part memory within a heap. 
  19140.  
  19141.  memory device context  -A logical description of a data destination that is a 
  19142.    memory bit map. See also device context. 
  19143.  
  19144.  memory management  -A feature of the operating system for allocating, sharing, 
  19145.    and freeing main storage. 
  19146.  
  19147.  memory object  -Logical unit of memory requested by an application, which 
  19148.    forms the granular unit of memory manipulation from the application 
  19149.    viewpoint. 
  19150.  
  19151.  menu  -In SAA Advanced Common User Access architecture, an extension of the 
  19152.    menu bar that displays a list of choices available for a selected choice in 
  19153.    the menu bar. After a user selects a choice in menu bar, the corresponding 
  19154.    menu appears. Additional pop-up windows can appear from menu choices. 
  19155.  
  19156.  menu bar  -In SAA Advanced Common User Access architecture, the area near the 
  19157.    top of a window, below the title bar and above the rest of the window, that 
  19158.    contains choices that provide access to other menus. 
  19159.  
  19160.  menu button  -The button on a pointing device that a user presses to view a 
  19161.    pop-up menu associated with an object. 
  19162.  
  19163.  message  -(1) In the Presentation Manager, a packet of data used for 
  19164.    communication between the Presentation Manager interface and Presentation 
  19165.    Manager applications (2) In a user interface, information not requested by 
  19166.    users but presented to users by the computer in response to a user action or 
  19167.    internal process. 
  19168.  
  19169.  message box  -(1) A dialog window predefined by the system and used as a 
  19170.    simple interface for applications, without the necessity of creating 
  19171.    dialog-template resources or dialog procedures. (2) (D of C) In SAA Advanced 
  19172.    Common User Access architecture, a type of window that shows messages to 
  19173.    users. See also dialog box, primary window, secondary window. 
  19174.  
  19175.  message filter  -The means of selecting which messages from a specific window 
  19176.    will be handled by the application. 
  19177.  
  19178.  message queue  -A sequenced collection of messages to be read by the 
  19179.    application. 
  19180.  
  19181.  message stream mode  -A method of operation in which data is treated as a 
  19182.    stream of messages.  Contrast with  byte stream. 
  19183.  
  19184.  metacharacter  -See global file-name character. 
  19185.  
  19186.  metaclass  -A class whose instances are all classes. In SOM, any class 
  19187.    descended from SOMClass is a metaclass. The methods of a metaclass are 
  19188.    sometimes called "class" methods. 
  19189.  
  19190.  metafile  -A file containing a series of attributes that set color, shape and 
  19191.    size, usually of a picture or a drawing. Using a program that can interpret 
  19192.    these attributes, a user can view the assembled image. 
  19193.  
  19194.  metafile device context  -A logical description of a data destination that is 
  19195.    a metafile, which is used for graphics interchange. See also device context. 
  19196.  
  19197.  metalanguage  -A language used to specify another language. For example, data 
  19198.    types can be described using a metalanguage so as to make the descriptions 
  19199.    independent of any one computer language. 
  19200.  
  19201.  method  -One of the units that makes up the behavior of an object. A method is 
  19202.    a combination of a function and a name, such that many different functions 
  19203.    can have the same name. Which function the name refers to at any point in 
  19204.    time depends on the object that is to execute the method and is the subject 
  19205.    of method resolution. 
  19206.  
  19207.  method override  -The replacement, by a child class, of the implementation of 
  19208.    a method inherited from a parent and an ancestor class. 
  19209.  
  19210.  mickey  -A unit of measurement for physical mouse motion whose value depends 
  19211.    on the mouse device driver currently loaded. 
  19212.  
  19213.  micro presentation space  -A graphics presentation space in which a restricted 
  19214.    set of the GPI function calls is available. 
  19215.  
  19216.  minimize  -To remove from the screen all windows associated with an 
  19217.    application and replace them with an icon that represents the application. 
  19218.  
  19219.  mix  -An attribute that determines how the foreground of a graphic primitive 
  19220.    is combined with the existing color of graphics output. Also known as 
  19221.    foreground mix. Contrast with background mix. 
  19222.  
  19223.  mixed character string  -A string containing a mixture of one-byte and Kanji 
  19224.    or Hangeul (two-byte) characters. 
  19225.  
  19226.  mnemonic  -(1) A method of selecting an item on a pull-down by means of typing 
  19227.    the highlighted letter in the menu item. (2) (D of C) In SAA Advanced Common 
  19228.    User Access architecture, usually a single character, within the text of a 
  19229.    choice, identified by an underscore beneath the character. If all characters 
  19230.    in a choice already serve as mnemonics for other choices, another character, 
  19231.    placed in parentheses immediately following the choice, can be used. When a 
  19232.    user types the mnemonic for a choice, the choice is either selected or the 
  19233.    cursor is moved to that choice. 
  19234.  
  19235.  modal dialog box  -In SAA Advanced Common User Access architecture, a type of 
  19236.    movable window, fixed in size, that requires a user to enter information 
  19237.    before continuing to work in the application window from which it was 
  19238.    displayed. Contrast with modeless dialog box. Also known as a serial dialog 
  19239.    box. Contrast with parallel dialog box. 
  19240.  
  19241.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  19242.    pop-up window. 
  19243.  
  19244.  model space  -See graphics model space. 
  19245.  
  19246.  modeless dialog box  -In SAA Advanced Common User Access architecture, a type 
  19247.    of movable window, fixed in size, that allows users to continue their dialog 
  19248.    with the application without entering information in the dialog box. Also 
  19249.    known as a parallel dialog box. Contrast with modal dialog box. 
  19250.  
  19251.    Note:  In CUA architecture, this is a programmer term. The end user term is 
  19252.    pop-up window. 
  19253.  
  19254.  module definition file  -A file that describes the code segments within a load 
  19255.    module. For example, it indicates whether a code segment is loadable before 
  19256.    module execution begins (preload), or loadable only when referred to at run 
  19257.    time (load-on-call). 
  19258.  
  19259.  mouse  -In SAA usage, a device that a user moves on a flat surface to position 
  19260.    a pointer on the screen. It allows a user to select a choice o function to 
  19261.    be performed or to perform operations on the screen, such as dragging or 
  19262.    drawing lines from one position to another. 
  19263.  
  19264.  MOUSE$  -Character-device name reserved for a mouse. 
  19265.  
  19266.  multiple-choice selection  -In SAA Basic Common User Access architecture, a 
  19267.    type of field from which a user can select one or more choices or select 
  19268.    none. See also check box. Contrast with extended-choice selection. 
  19269.  
  19270.  multiple-line entry field  -In SAA Advanced Common User Access architecture, a 
  19271.    control into which a user types more than one line of information. See also 
  19272.    single-line entry field. 
  19273.  
  19274.  multitasking  -The concurrent processing of applications or parts of 
  19275.    applications. A running application and its data are protected from other 
  19276.    concurrently running applications. 
  19277.  
  19278.  mutex semaphore  -(Mutual exclusion semaphore). A semaphore that enables 
  19279.    threads to serialize their access to resources. Only the thread that 
  19280.    currently owns the mutex semaphore can gain access to the resource, thus 
  19281.    preventing one thread from interrupting operations being performed by 
  19282.    another. 
  19283.  
  19284.  muxwait semaphore  -(Multiple wait semaphore). A semaphore that enables a 
  19285.    thread to wait either for multiple event semaphores to be posted or for 
  19286.    multiple mutex semaphores to be released. Alternatively, a muxwait semaphore 
  19287.    can be set to enable a thread to wait for any ONE of the event or mutex 
  19288.    semaphores in the muxwait semaphore's list to be posted or released. 
  19289.  
  19290.  
  19291. ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
  19292.  
  19293.  named pipe  -A named buffer that provides client-to-server, server-to-client, 
  19294.    or full duplex communication between unrelated processes. Contrast with 
  19295.    unnamed pipe. 
  19296.  
  19297.  national language support (NLS)  -The modification or conversion of a United 
  19298.    States English product to conform to the requirements of another language or 
  19299.    country. This can include the enabling or retrofitting of a product and the 
  19300.    translation of nomenclature, MRI, or documentation of a product. 
  19301.  
  19302.  nested list  -A list that is contained within another list. 
  19303.  
  19304.  NLS  -national language support. 
  19305.  
  19306.  non-8.3 file-name format  -A file-naming convention in which file names can 
  19307.    consist of up to 255 characters. See also 8.3 file-name format. 
  19308.  
  19309.  noncritical extended attribute  -An extended attribute that is not necessary 
  19310.    for the function of an application. 
  19311.  
  19312.  nondestructive read  -Reading that does not erase the data in the source 
  19313.    location. (T)
  19314.  
  19315.  noninteractive program  -A running program that cannot receive input from the 
  19316.    keyboard or other input device. Compare with active program, and contrast 
  19317.    with interactive program. 
  19318.  
  19319.  nonretained graphics  -Graphic primitives that are not remembered by the 
  19320.    Presentation Manager interface when they have been drawn. Contrast with 
  19321.    retained graphics. 
  19322.  
  19323.  null character (NUL)  -(1) Character-device name reserved for a nonexistent 
  19324.    (dummy) device. (2) (D of C) A control character that is used to accomplish 
  19325.    media-fill or time-fill and that may be inserted into or removed from a 
  19326.    sequence of characters without affecting the meaning of the sequence; 
  19327.    however, the control of equipment or the format may be affected by this 
  19328.    character. (I)  (A)
  19329.  
  19330.  null-terminated string  -A string of (n+1) characters where the (n+1)th 
  19331.    character is the 'null' character (0x00) Also known as 'zero-terminated' 
  19332.    string and 'ASCIIZ' string. 
  19333.  
  19334.  
  19335. ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
  19336.  
  19337.  object  -The elements of data and function that programs create, manipulate, 
  19338.    pass as arguments, and so forth. An object is a way of associating specific 
  19339.    data values with a specific set of named functions (called methods) for a 
  19340.    period of time (referred to as the lifetime of the object). The data values 
  19341.    of an object are referred to as its state. In SOM, objects are created by 
  19342.    other objects called classes. The specification of what comprises the set of 
  19343.    functions and data elements that make up an object is referred to as the 
  19344.    definition of a class. 
  19345.  
  19346.    SOM objects offer a high degree of encapsulation. This property permits many 
  19347.    aspects of the implementation of an object to change without affecting 
  19348.    client programs that depend on the object's behavior. 
  19349.  
  19350.  object definition  -See class. 
  19351.  
  19352.  object instance  -See instance. 
  19353.  
  19354.  Object Interface Definition Language (OIDL)  -Specification language used in 
  19355.    SOM Version 1 for defining classes. Replaced by Interface Definition 
  19356.    Language (IDL). 
  19357.  
  19358.  object window  -A window that does not have a parent but which might have 
  19359.    child windows. An object window cannot be presented on a device. 
  19360.  
  19361.  OIDL  -Object Interface Definition Language. 
  19362.  
  19363.  open  -To start working with a file, directory, or other object. 
  19364.  
  19365.  ordered list  -Vertical arrangements of items, with each item in the list 
  19366.    preceded by a number or letter. 
  19367.  
  19368.  outline font  -A set of symbols, each of which is created as a series of lines 
  19369.    and curves.  Synonymous with vector font. Contrast with image font. 
  19370.  
  19371.  output area  -An area of storage reserved for output. (A)
  19372.  
  19373.  owner window  -A window into which specific events that occur in another 
  19374.    (owned) window are reported. 
  19375.  
  19376.  ownership  -The determination of how windows communicate using messages. 
  19377.  
  19378.  owning process  -The process that owns the resources that might be shared with 
  19379.    other processes. 
  19380.  
  19381.  
  19382. ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
  19383.  
  19384.  page  -(1) A 4KB segment of contiguous physical memory. (2) (D of C) A defined 
  19385.    unit of space on a storage medium. 
  19386.  
  19387.  page viewport  -A boundary in device coordinates that defines the area of the 
  19388.    output device in which graphics are to be displayed. The presentation-page 
  19389.    contents are transformed automatically to the page viewport in device space. 
  19390.  
  19391.  paint  -(1) The action of drawing or redrawing the contents of a window. (2) 
  19392.    In computer graphics, to shade an area of a display image;  for example, 
  19393.    with crosshatching or color. 
  19394.  
  19395.  panel  -In SAA Basic Common User Access architecture, a particular arrangement 
  19396.    of information that is presented in a window or pop-up. If some of the 
  19397.    information is not visible, a user can scroll through the information. 
  19398.  
  19399.  panel area  -An area within a panel that contains related information. The 
  19400.    three major Common User Access-defined panel areas are the action bar, the 
  19401.    function key area, and the panel body. 
  19402.  
  19403.  panel area separator  -In SAA Basic Common User Access architecture, a solid, 
  19404.    dashed, or blank line that provides a visual distinction between two 
  19405.    adjacent areas of a panel. 
  19406.  
  19407.  panel body  -The portion of a panel not occupied by the action bar, function 
  19408.    key area, title or scroll bars. The panel body can contain protected 
  19409.    information, selection fields, and entry fields. The layout and content of 
  19410.    the panel body determine the panel type. 
  19411.  
  19412.  panel body area  -See client area. 
  19413.  
  19414.  panel definition  -A description of the contents and characteristics of a 
  19415.    panel. A panel definition is the application developer's mechanism for 
  19416.    predefining the format to be presented to users in a window. 
  19417.  
  19418.  panel ID  -In SAA Basic Common User Access architecture, a panel identifier, 
  19419.    located in the upper-left corner of a panel.  A user can choose whether to 
  19420.    display the panel ID. 
  19421.  
  19422.  panel title  -In SAA Basic Common User Access architecture, a particular 
  19423.    arrangement of information that is presented in a window or pop-up. If some 
  19424.    of the information is not visible, a user can scroll through the 
  19425.    information. 
  19426.  
  19427.  paper size  -The size of paper, defined in either standard U.S. or European 
  19428.    names (for example, A, B, A4), and measured in inches or millimeters 
  19429.    respectively. 
  19430.  
  19431.  parallel dialog box  -See modeless dialog box. 
  19432.  
  19433.  parameter list  -A list of values that provides a means of associating 
  19434.    addressability of data defined in a called program with data in the calling 
  19435.    program. It contains parameter names and the order in which they are to be 
  19436.    associated in the calling and called program. 
  19437.  
  19438.  parent class  -See inheritance. 
  19439.  
  19440.  parent process  -In the OS/2 operating system, a process that creates other 
  19441.    processes. Contrast with child process. 
  19442.  
  19443.  parent window  -In the OS/2 operating system, a window that creates a child 
  19444.    window. The child window is drawn within the parent window. If the parent 
  19445.    window is moved, resized, or destroyed, the child window also will be moved, 
  19446.    resized, or destroyed. However, the child window can be moved and resized 
  19447.    independently from the parent window, within the boundaries of the parent 
  19448.    window. Contrast with child window. 
  19449.  
  19450.  partition  -(1) A fixed-size division of storage. (2) On an IBM personal 
  19451.    computer fixed disk, one of four possible storage areas of variable size; 
  19452.    one may be accessed by DOS, and each of the others may be assigned to 
  19453.    another operating system. 
  19454.  
  19455.  Paste  -A choice in the Edit pull-down that a user selects to move the 
  19456.    contents of the clipboard into a preselected location. See also Copy and 
  19457.    Cut. 
  19458.  
  19459.  path  -The route used to locate files; the storage location of a file. A fully 
  19460.    qualified path lists the drive identifier, directory name, subdirectory name 
  19461.    (if any), and file name with the associated extension. 
  19462.  
  19463.  PDD  -Physical device driver. 
  19464.  
  19465.  peeking  -An action taken by any thread in the process that owns the queue to 
  19466.    examine queue elements without removing them. 
  19467.  
  19468.  pel  -(1) The smallest area of a display screen capable of being addressed and 
  19469.    switched between visible and invisible states. Synonym for display point, 
  19470.    pixel, and picture element. (2) (D of C) Picture element. 
  19471.  
  19472.  persistent object  -An object whose instance data and state are preserved 
  19473.    between system shutdown and system startup. 
  19474.  
  19475.  physical device driver (PDD)  -A system interface that handles hardware 
  19476.    interrupts and supports a set of input and output functions. 
  19477.  
  19478.  pick  -To select part of a displayed object using the pointer. 
  19479.  
  19480.  pickup  -To add an object or set of objects to the pickup set. 
  19481.  
  19482.  pickup and drop  -A drag operation that does not require the direct 
  19483.    manipulation button to be pressed for the duration of the drag. 
  19484.  
  19485.  pickup set  -The set of objects that have been picked up as part of a pickup 
  19486.    and drop operation. 
  19487.  
  19488.  picture chain  -See segment chain. 
  19489.  
  19490.  picture element  -(1) Synonym for pel. (2) (D of C) In computer graphics, the 
  19491.    smallest element of a display surface that can be independently assigned 
  19492.    color and intensity. (T)  . (3) The area of the finest detail that can be 
  19493.    reproduced effectively on the recording medium. 
  19494.  
  19495.  PID  -Process identification. 
  19496.  
  19497.  pipe  -(1) A named or unnamed buffer used to pass data between processes. A 
  19498.    process reads from or writes to a pipe as if the pipe were a standard-input 
  19499.    or standard-output file. See also named pipe and unnamed pipe. (2) (D of C) 
  19500.    To direct data so that the output from one process becomes the input to 
  19501.    another process. The standard output of one command can be connected to the 
  19502.    standard input of another with the pipe operator (|). 
  19503.  
  19504.  pixel  -(1) Synonym for pel. (2) (D of C) Picture element. 
  19505.  
  19506.  plotter  -An output unit that directly produces a hardcopy record of data on a 
  19507.    removable medium, in the form of a two-dimensional graphic representation. (T)
  19508.  
  19509.  PM  -Presentation Manager. 
  19510.  
  19511.  pointer  -(1) The symbol displayed on the screen that is moved by a pointing 
  19512.    device, such as a mouse. The pointer is used to point at items that users 
  19513.    can select. Contrast with cursor. (2) A data element that indicates the 
  19514.    location of another data element. (T)
  19515.  
  19516.  POINTER$  -Character-device name reserved for a pointer device (mouse screen 
  19517.    support). 
  19518.  
  19519.  pointing device  -In SAA Advanced Common User Access architecture, an 
  19520.    instrument, such as a mouse, trackball, or joystick, used to move a pointer 
  19521.    on the screen. 
  19522.  
  19523.  pointings  -Pairs of x-y coordinates produced by an operator defining 
  19524.    positions on a screen with a pointing device, such as a mouse. 
  19525.  
  19526.  polyfillet  -A curve based on a sequence of lines. The curve is tangential to 
  19527.    the end points of the first and last lines, and tangential also to the 
  19528.    midpoints of all other lines. See also fillet. 
  19529.  
  19530.  polygon  -One or more closed figures that can be drawn filled, outlined, or 
  19531.    filled and outlined. 
  19532.  
  19533.  polyline  -A sequence of adjoining lines. 
  19534.  
  19535.  polymorphism  -The ability to have different implementations of the same 
  19536.    method for two or more classes of objects. 
  19537.  
  19538.  pop  -To retrieve an item from a last-in-first-out stack of items. Contrast 
  19539.    with push. 
  19540.  
  19541.  pop-up menu  -A menu that lists the actions that a user can perform on an 
  19542.    object. The contents of the pop-up menu can vary depending on the context, 
  19543.    or state, of the object. 
  19544.  
  19545.  pop-up window  -(1) A window that appears on top of another window in a 
  19546.    dialog. Each pop-up window must be completed before returning to the 
  19547.    underlying window. (2) (D of C) In SAA Advanced Common User Access 
  19548.    architecture, a movable window, fixed in size, in which a user provides 
  19549.    information required by an application so that it can continue to process a 
  19550.    user request. 
  19551.  
  19552.  presentation drivers  -Special purpose I/O routines that handle field 
  19553.    device-independent I/O requests from the PM and its applications. 
  19554.  
  19555.  Presentation Manager (PM)  -The interface of the OS/2 operating system that 
  19556.    presents, in windows a graphics-based interface to applications and files 
  19557.    installed and running under the OS/2 operating system. 
  19558.  
  19559.  presentation page  -The coordinate space in which a picture is assembled for 
  19560.    display. 
  19561.  
  19562.  presentation space (PS)  -(1) Contains the device-independent definition of a 
  19563.    picture. (2) (D of C) The display space on a display device. 
  19564.  
  19565.  primary window  -In SAA Common User Access architecture, the window in which 
  19566.    the main interaction between the user and the application takes place. In a 
  19567.    multiprogramming environment, each application starts in its own primary 
  19568.    window. The primary window remains for the duration of the application, 
  19569.    although the panel displayed will change as the user's dialog moves forward. 
  19570.    See also secondary window. 
  19571.  
  19572.  primitive  -In computer graphics, one of several simple functions for drawing 
  19573.    on the screen, including, for example, the rectangle, line, ellipse, 
  19574.    polygon, and so on. 
  19575.  
  19576.  primitive attribute  -A specifiable characteristic of a graphic primitive. See 
  19577.    graphics attributes. 
  19578.  
  19579.  print job  -The result of sending a document or picture to be printed. 
  19580.  
  19581.  Print Manager  -In the Presentation Manager, the part of the spooler that 
  19582.    manages the spooling process. It also allows users to view print queues and 
  19583.    to manipulate print jobs. 
  19584.  
  19585.  privilege level  -A protection level imposed by the hardware architecture of 
  19586.    the IBM personal computer.  There are four privilege levels (number 0 
  19587.    through 3).  Only certain types of programs are allowed to execute at each 
  19588.    privilege level.  See also IOPL code segment. 
  19589.  
  19590.  procedure call  -In programming languages, a language construct for invoking 
  19591.    execution of a procedure. 
  19592.  
  19593.  process  -An instance of an executing application and the resources it is 
  19594.    using. 
  19595.  
  19596.  program  -A sequence of instructions that a computer can interpret and 
  19597.    execute. 
  19598.  
  19599.  program details  -Information about a program that is specified in the Program 
  19600.    Manager window and is used when the program is started. 
  19601.  
  19602.  program group  -In the Presentation Manager, several programs that can be 
  19603.    acted upon as a single entity. 
  19604.  
  19605.  program name  -The full file specification of a program. Contrast with program 
  19606.    title. 
  19607.  
  19608.  program title  -The name of a program as it is listed in the Program Manager 
  19609.    window. Contrast with program name. 
  19610.  
  19611.  prompt  -A displayed symbol or message that requests input from the user or 
  19612.    gives operational information; for example, on the display screen of an IBM 
  19613.    personal computer, the DOS A> prompt. The user must respond to the prompt in 
  19614.    order to proceed. 
  19615.  
  19616.  protect mode  -A method of program operation that limits or prevents access to 
  19617.    certain instructions or areas of storage. Contrast with real mode. 
  19618.  
  19619.  protocol  -A set of semantic and syntactic rules that determines the behavior 
  19620.    of functional units in achieving communication. (I)
  19621.  
  19622.  pseudocode  -An artificial language used to describe computer program 
  19623.    algorithms without using the syntax of any particular programming language. (A)
  19624.  
  19625.  pull-down  -(1) An action bar extension that displays a list of choices 
  19626.    available for a selected action bar choice. After users select an action bar 
  19627.    choice, the pull-down appears with the list of choices. Additional pop-up 
  19628.    windows may appear from pull-down choices to further extend the actions 
  19629.    available to users. (2) (D of C) In SAA Common User Access architecture, 
  19630.    pertaining to a choice in an action bar pull-down. 
  19631.  
  19632.  push  -To add an item to a last-in-first-out stack of items. Contrast with 
  19633.    pop. 
  19634.  
  19635.  push button  -In SAA Advanced Common User Access architecture, a rectangle 
  19636.    with text inside. Push buttons are used in windows for actions that occur 
  19637.    immediately when the push button is selected. 
  19638.  
  19639.  putback  -To remove an object or set of objects from the lazy drag set. This 
  19640.    has the effect of undoing the pickup operation for those objects 
  19641.  
  19642.  putdown  -To drop the objects in the lazy drag set on the target object. 
  19643.  
  19644.  
  19645. ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
  19646.  
  19647.  queue  -(1) A linked list of elements waiting to be processed in FIFO order. 
  19648.    For example, a queue may be a list of print jobs waiting to be printed. (2) 
  19649.    (D of C) A line or list of items waiting to be processed; for example, work 
  19650.    to be performed or messages to be displayed. 
  19651.  
  19652.  queued device context  -A logical description of a data destination (for 
  19653.    example, a printer or plotter) where the output is to go through the 
  19654.    spooler. See also device context. 
  19655.  
  19656.  
  19657. ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
  19658.  
  19659.  radio button  -(1) A control window, shaped like a round button on the screen, 
  19660.    that can be in a checked or unchecked state. It is used to select a single 
  19661.    item from a list. Contrast with check box. (2) In SAA Advanced Common User 
  19662.    Access architecture, a circle with text beside it. Radio buttons are 
  19663.    combined to show a user a fixed set of choices from which only one can be 
  19664.    selected. The circle is partially filled when a choice is selected. 
  19665.  
  19666.  RAS  -Reliability, availability, and serviceability. 
  19667.  
  19668.  raster  -(1) In computer graphics, a predetermined pattern of lines that 
  19669.    provides uniform coverage of a display space. (T)  (2) The coordinate grid 
  19670.    that divides the display area of a display device.  (A)
  19671.  
  19672.  read-only file  -A file that can be read from but not written to. 
  19673.  
  19674.  real mode  -A method of program operation that does not limit or prevent 
  19675.    access to any instructions or areas of storage.  The operating system loads 
  19676.    the entire program into storage and gives the program access to all system 
  19677.    resources. Contrast with protect mode. 
  19678.  
  19679.  realize  -To cause the system to ensure, wherever possible, that the physical 
  19680.    color table of a device is set to the closest possible match in the logical 
  19681.    color table. 
  19682.  
  19683.  recursive routine  -A routine that can call itself, or be called by another 
  19684.    routine that was called by the recursive routine. 
  19685.  
  19686.  reentrant  -The attribute of a program or routine that allows the same copy of 
  19687.    the program or routine to be used concurrently by two or more tasks. 
  19688.  
  19689.  reference phrase  -(1) A word or phrase that is emphasized in a 
  19690.    device-dependent manner to inform the user that additional information for 
  19691.    the word or phrase is available. (2) (D of C) In hypertext, text that is 
  19692.    highlighted and preceded by a single-character input field used to signify 
  19693.    the existence of a hypertext link. 
  19694.  
  19695.  reference phrase help  -In SAA Common User Access architecture, highlighted 
  19696.    words or phrases within help information that a user selects to get 
  19697.    additional information. 
  19698.  
  19699.  refresh  -To update a window, with changed information, to its current status. 
  19700.  
  19701.  region  -A clipping boundary in device space. 
  19702.  
  19703.  register  -A part of internal storage having a specified storage capacity and 
  19704.    usually intended for a specific purpose. (T)
  19705.  
  19706.  remote file system  -A file-system driver that gains access to a remote system 
  19707.    without a block device driver. 
  19708.  
  19709.  resource  -The means of providing extra information used in the definition of 
  19710.    a window. A resource can contain definitions of fonts, templates, 
  19711.    accelerators, and mnemonics; the definitions are held in a resource file. 
  19712.  
  19713.  resource file  -A file containing information used in the definition of a 
  19714.    window. Definitions can be of fonts, templates, accelerators, and mnemonics. 
  19715.  
  19716.  restore  -To return a window to its original size or position following a 
  19717.    sizing or moving action. 
  19718.  
  19719.  retained graphics  -Graphic primitives that are remembered by the Presentation 
  19720.    Manager interface after they have been drawn. Contrast with nonretained 
  19721.    graphics. 
  19722.  
  19723.  return code  -(1) A value returned to a program to indicate the results of an 
  19724.    operation requested by that program. (2) A code used to influence the 
  19725.    execution of succeeding instructions.(A) 
  19726.  
  19727.  reverse video  -(1) A form of highlighting a character, field, or cursor by 
  19728.    reversing the color of the character, field, or cursor with its background; 
  19729.    for example, changing a red character on a black background to a black 
  19730.    character on a red background. (2) In SAA Basic Common User Access 
  19731.    architecture, a screen emphasis feature that interchanges the foreground and 
  19732.    background colors of an item. 
  19733.  
  19734.  REXX Language  -Restructured Extended Executor. A procedural language that 
  19735.    provides batch language functions along with structured programming 
  19736.    constructs such as loops; conditional testing and subroutines. 
  19737.  
  19738.  RGB  -(1) Color coding in which the brightness of the additive primary colors 
  19739.    of light, red, green, and blue, are specified as three distinct values of 
  19740.    white light. (2) Pertaining to a color display that accepts signals 
  19741.    representing red, green, and blue. 
  19742.  
  19743.  roman  -Relating to a type style with upright characters. 
  19744.  
  19745.  root segment  -In a hierarchical database, the highest segment in the tree 
  19746.    structure. 
  19747.  
  19748.  round-robin scheduling  -A process that allows each thread to run for a 
  19749.    specified amount of time. 
  19750.  
  19751.  run time  -(1) Any instant at which the execution of a particular computer 
  19752.    program takes place. (T)  (2) The amount of time needed for the execution of 
  19753.    a particular computer program. (T)  (3) The time during which an instruction 
  19754.    in an instruction register is decoded and performed. Synonym for execution 
  19755.    time. 
  19756.  
  19757.  
  19758. ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
  19759.  
  19760.  SAA  -Systems Application Architecture. 
  19761.  
  19762.  SBCS  -Single-byte character set. 
  19763.  
  19764.  scheduler  -A computer program designed to perform functions such as 
  19765.    scheduling, initiation, and termination of jobs. 
  19766.  
  19767.  screen  -In SAA Basic Common User Access architecture, the physical surface of 
  19768.    a display device upon which information is shown to a user. 
  19769.  
  19770.  screen device context  -A logical description of a data destination that is a 
  19771.    particular window on the screen. See also device context. 
  19772.  
  19773.  SCREEN$  -Character-device name reserved for the display screen. 
  19774.  
  19775.  scroll bar  -In SAA Advanced Common User Access architecture, a part of a 
  19776.    window, associated with a scrollable area, that a user interacts with to see 
  19777.    information that is not currently allows visible. 
  19778.  
  19779.  scrollable entry field  -An entry field larger than the visible field. 
  19780.  
  19781.  scrollable selection field  -A selection field that contains more choices than 
  19782.    are visible. 
  19783.  
  19784.  scrolling  -Moving a display image vertically or horizontally in a manner such 
  19785.    that new data appears at one edge, as existing data disappears at the 
  19786.    opposite edge. 
  19787.  
  19788.  secondary window  -A window that contains information that is dependent on 
  19789.    information in a primary window and is used to supplement the interaction in 
  19790.    the primary window. 
  19791.  
  19792.  sector  -On disk or diskette storage, an addressable subdivision of a track 
  19793.    used to record one block of a program or data. 
  19794.  
  19795.  segment  -See graphics segment. 
  19796.  
  19797.  segment attributes  -Attributes that apply to the segment as an entity, as 
  19798.    opposed to the individual primitives within the segment. For example, the 
  19799.    visibility or detectability of a segment. 
  19800.  
  19801.  segment chain  -All segments in a graphics presentation space that are defined 
  19802.    with the 'chained' attribute. Synonym for picture chain. 
  19803.  
  19804.  segment priority  -The order in which segments are drawn. 
  19805.  
  19806.  segment store  -An area in a normal graphics presentation space where retained 
  19807.    graphics segments are stored. 
  19808.  
  19809.  select  -To mark or choose an item. Note that select means to mark or type in 
  19810.    a choice on the screen; enter means to send all selected choices to the 
  19811.    computer for processing. 
  19812.  
  19813.  select button  -The button on a pointing device, such as a mouse, that is 
  19814.    pressed to select a menu choice.  Also known as button 1. 
  19815.  
  19816.  selection cursor  -In SAA Advanced Common User Access architecture, a visual 
  19817.    indication that a user has selected a choice. It is represented by outlining 
  19818.    the choice with a dotted box. See also text cursor. 
  19819.  
  19820.  selection field  -(1) In SAA Advanced Common User Access architecture, a set 
  19821.    of related choices. See also entry field. (2) In SAA Basic Common User 
  19822.    Access architecture, an area of a panel that cannot be scrolled and contains 
  19823.    a fixed number of choices. 
  19824.  
  19825.  semantics  -The relationships between symbols and their meanings. 
  19826.  
  19827.  semaphore  -An object used by applications for signalling purposes and for 
  19828.    controlling access to serially reusable resources. 
  19829.  
  19830.  separator  -In SAA Advanced Common User Access architecture, a line or color 
  19831.    boundary that provides a visual distinction between two adjacent areas. 
  19832.  
  19833.  serial dialog box  -See modal dialog box. 
  19834.  
  19835.  serialization  -The consecutive ordering of items. 
  19836.  
  19837.  serialize  -To ensure that one or more events occur in a specified sequence. 
  19838.  
  19839.  serially reusable resource (SRR)  -A logical resource or object that can be 
  19840.    accessed by only one task at a time. 
  19841.  
  19842.  session  -(1) A routing mechanism for user interaction via the console; a 
  19843.    complete environment that determines how an application runs and how users 
  19844.    interact with the application. OS/2 can manage more than one session at a 
  19845.    time, and more than one process can run in a session. Each session has its 
  19846.    own set of environment variables that determine where OS/2 looks for 
  19847.    dynamic-link libraries and other important files. (2) (D of C) In the OS/2 
  19848.    operating system, one instance of a started program or command prompt. Each 
  19849.    session is separate from all other sessions that might be running on the 
  19850.    computer. The operating system is responsible for coordinating the resources 
  19851.    that each session uses, such as computer memory, allocation of processor 
  19852.    time, and windows on the screen. 
  19853.  
  19854.  Settings Notebook  -A control window that is used to display the settings for 
  19855.    an object and to enable the user to change them. 
  19856.  
  19857.  shadow  -An object that refers to another object. A shadow is not a copy of 
  19858.    another object, but is another representation of the object. 
  19859.  
  19860.  shadow box  -The area on the screen that follows mouse movements and shows 
  19861.    what shape the window will take if the mouse button is released. 
  19862.  
  19863.  shared data  -Data that is used by two or more programs. 
  19864.  
  19865.  shared memory  -In the OS/2 operating system, a segment that can be used by 
  19866.    more than one program. 
  19867.  
  19868.  shear  -In computer graphics, the forward or backward slant of a graphics 
  19869.    symbol or string of such symbols relative to a line perpendicular to the 
  19870.    baseline of the symbol. 
  19871.  
  19872.  shell  -(1) A software interface between a user and the operating system of a 
  19873.    computer. Shell programs interpret commands and user interactions on devices 
  19874.    such as keyboards, pointing devices, and touch-sensitive screens, and 
  19875.    communicate them to the operating system. (2) Software that allows a kernel 
  19876.    program to run under different operating-system environments. 
  19877.  
  19878.  shutdown  -The process of ending operation of a system or a subsystem, 
  19879.    following a defined procedure. 
  19880.  
  19881.  sibling processes  -Child processes that have the same parent process. 
  19882.  
  19883.  sibling windows  -Child windows that have the same parent window. 
  19884.  
  19885.  simple list  -A list of like values; for example, a list of user names. 
  19886.    Contrast with mixed list. 
  19887.  
  19888.  single-byte character set (SBCS)  -A character set in which each character is 
  19889.    represented by a one-byte code.  Contrast with double-byte character set. 
  19890.  
  19891.  slider box  -In SAA Advanced Common User Access architecture: a part of the 
  19892.    scroll bar that shows the position and size of the visible information in a 
  19893.    window relative to the total amount of information available. Also known as 
  19894.    thumb mark. 
  19895.  
  19896.  SOM  -System Object Model. 
  19897.  
  19898.  source file  -A file that contains source statements for items such as 
  19899.    high-level language programs and data description specifications. 
  19900.  
  19901.  source statement  -A statement written in a programming language. 
  19902.  
  19903.  specific dynamic-link module  -A dynamic-link module created for the exclusive 
  19904.    use of an application. 
  19905.  
  19906.  spin button  -In SAA Advanced Common User Access architecture, a type of entry 
  19907.    field that shows a scrollable ring of choices from which a user can select a 
  19908.    choice. After the last choice is displayed, the first choice is displayed 
  19909.    again.  A user can also type a choice from the scrollable ring into the 
  19910.    entry field without interacting with the spin button. 
  19911.  
  19912.  spline  -A sequence of one or more B╨Æzier curves. 
  19913.  
  19914.  spooler  -A program that intercepts the data going to printer devices and 
  19915.    writes it to disk. The data is printed or plotted when it is complete and 
  19916.    the required device is available.  The spooler prevents output from 
  19917.    different sources from being intermixed. 
  19918.  
  19919.  stack  -A list constructed and maintained so that the next data element to be 
  19920.    retrieved is the most recently stored. This method is characterized as 
  19921.    last-in-first-out (LIFO). 
  19922.  
  19923.  standard window  -A collection of window elements that form a panel. The 
  19924.    standard window can include one or more of the following window elements: 
  19925.    sizing borders, system menu icon, title bar, maximize/minimize/restore 
  19926.    icons, action bar and pull-downs, scroll bars, and client area. 
  19927.  
  19928.  static control  -The means by which the application presents descriptive 
  19929.    information (for example, headings and descriptors) to the user. The user 
  19930.    cannot change this information. 
  19931.  
  19932.  static storage  -(1) A read/write storage unit in which data is retained in 
  19933.    the absence of control signals. (A)  Static storage may use dynamic 
  19934.    addressing or sensing circuits. (2) Storage other than dynamic storage. (A)
  19935.  
  19936.  style  -See window style. 
  19937.  
  19938.  subclass  -A class that inherits from another class. See also Inheritance. 
  19939.  
  19940.  subdirectory  -In an IBM personal computer, a file referred to in a root 
  19941.    directory that contains the names of other files stored on the diskette or 
  19942.    fixed disk. 
  19943.  
  19944.  superclass  -A class from which another class inherits. See also inheritance. 
  19945.  
  19946.  swapping  -(1) A process that interchanges the contents of an area of real 
  19947.    storage with the contents of an area in auxiliary storage. (I)  (A)  (2) In 
  19948.    a system with virtual storage, a paging technique that writes the active 
  19949.    pages of a job to auxiliary storage and reads pages of another job from 
  19950.    auxiliary storage into real storage. (3) The process of temporarily removing 
  19951.    an active job from main storage, saving it on disk, and processing another 
  19952.    job in the area of main storage formerly occupied by the first job. 
  19953.  
  19954.  switch  -(1) In SAA usage, to move the cursor from one point of interest to 
  19955.    another;  for example, to move from one screen or window to another or from 
  19956.    a place within a displayed image to another place on the same displayed 
  19957.    image. (2) In a computer program, a conditional instruction and an indicator 
  19958.    to be interrogated by that instruction. (3) A device or programming 
  19959.    technique for making a selection, for example, a toggle, a conditional jump. 
  19960.  
  19961.  switch list  -See Task List. 
  19962.  
  19963.  symbolic identifier  -A text string that equates to an integer value in an 
  19964.    include file, which is used to identify a programming object. 
  19965.  
  19966.  symbols  -In Information Presentation Facility, a document element used to 
  19967.    produce characters that cannot be entered from the keyboard. 
  19968.  
  19969.  synchronous  -Pertaining to two or more processes that depend upon the 
  19970.    occurrence of specific events such as common timing signals. (T)  See also 
  19971.    asynchronous. 
  19972.  
  19973.  System Menu  -In the Presentation Manager, the pull-down in the top left 
  19974.    corner of a window that allows it to be moved and sized with the keyboard. 
  19975.  
  19976.  System Object Model (SOM)  -A mechanism for language-neutral, object-oriented 
  19977.    programming in the OS/2 environment. 
  19978.  
  19979.  system queue  -The master queue for all pointer device or keyboard events. 
  19980.  
  19981.  system-defined messages  -Messages that control the operations of applications 
  19982.    and provides input an other information for applications to process. 
  19983.  
  19984.  Systems Application Architecture (SAA)  -A set of IBM software interfaces, 
  19985.    conventions, and protocols that provide a framework for designing and 
  19986.    developing applications that are consistent across systems. 
  19987.  
  19988.  
  19989. ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
  19990.  
  19991.  table tags  -In Information Presentation Facility, a document element that 
  19992.    formats text in an arrangement of rows and columns. 
  19993.  
  19994.  tag  -(1) One or more characters attached to a set of data that contain 
  19995.    information about the set, including its identification. (I)  (A)  (2) In 
  19996.    Generalized Markup Language markup, a name for a type of document or 
  19997.    document element that is entered in the source document to identify it. 
  19998.  
  19999.  target object  -An object to which the user is transferring information. 
  20000.  
  20001.  Task List  -In the Presentation Manager, the list of programs that are active. 
  20002.    The list can be used to switch to a program and to stop programs. 
  20003.  
  20004.  terminate-and-stay-resident (TSR)  -Pertaining to an application that modifies 
  20005.    an operating system interrupt vector to point to its own location (known as 
  20006.    hooking an interrupt). 
  20007.  
  20008.  text  -Characters or symbols. 
  20009.  
  20010.  text cursor  -A symbol displayed in an entry field that indicates where typed 
  20011.    input will appear. 
  20012.  
  20013.  text window  -Also known as the VIO window. 
  20014.  
  20015.  text-windowed application  -The environment in which the operating system 
  20016.    performs advanced-video input and output operations. 
  20017.  
  20018.  thread  -A unit of execution within a process. It uses the resources of the 
  20019.    process. 
  20020.  
  20021.  thumb mark  -The portion of the scroll bar that describes the range and 
  20022.    properties of the data that is currently visible in a window. Also known as 
  20023.    a slider box. 
  20024.  
  20025.  thunk  -Term used to describe the process of address conversion, stack and 
  20026.    structure realignment, etc., necessary when passing control between 16-bit 
  20027.    and 32-bit modules. 
  20028.  
  20029.  tilde  -A mark used to denote the character that is to be used as a mnemonic 
  20030.    when selecting text items within a menu. 
  20031.  
  20032.  time slice  -(1) An interval of time on the processing unit allocated for use 
  20033.    in performing a task. After the interval has expired, processing-unit time 
  20034.    is allocated to another task, so a task cannot monopolize processing-unit 
  20035.    time beyond a fixed limit. (2) In systems with time sharing, a segment of 
  20036.    time allocated to a terminal job. 
  20037.  
  20038.  time-critical process  -A process that must be performed within a specified 
  20039.    time after an event has occurred. 
  20040.  
  20041.  timer  -A facility provided under the Presentation Manager, whereby 
  20042.    Presentation Manager will dispatch a message of class WM_TIMER to a 
  20043.    particular window at specified intervals. This capability may be used by an 
  20044.    application to perform a specific processing task at predetermined 
  20045.    intervals, without the necessity for the application to explicitly keep 
  20046.    track of the passage of time. 
  20047.  
  20048.  timer tick  -See clock tick. 
  20049.  
  20050.  title bar  -In SAA Advanced Common User Access architecture, the area at the 
  20051.    top of each window that contains the window title and system menu icon. When 
  20052.    appropriate, it also contains the minimize, maximize, and restore icons. 
  20053.    Contrast with panel title. 
  20054.  
  20055.  TLB  -Translation lookaside buffer. 
  20056.  
  20057.  transaction  -An exchange between a workstation and another device that 
  20058.    accomplishes a particular action or result. 
  20059.  
  20060.  transform  -(1) The action of modifying a picture by scaling, shearing, 
  20061.    reflecting, rotating, or translating. (2) The object that performs or 
  20062.    defines such a modification; also referred to as a transformation. 
  20063.  
  20064.  Translation lookaside buffer (TLB)  -A hardware-based address caching 
  20065.    mechanism for paging information. 
  20066.  
  20067.  Tree  -In the Presentation Manager, the window in the File Manager that shows 
  20068.    the organization of drives and directories. 
  20069.  
  20070.  truncate  -(1) To terminate a computational process in accordance with some 
  20071.    rule (A)  (2) To remove the beginning or ending elements of a string. (3) To 
  20072.    drop data that cannot be printed or displayed in the line width specified or 
  20073.    available. (4) To shorten a field or statement to a specified length. 
  20074.  
  20075.  TSR  -Terminate-and-stay-resident. 
  20076.  
  20077.  unnamed pipe  -A circular buffer, created in memory, used by related processes 
  20078.    to communicate with one another. Contrast with named pipe. 
  20079.  
  20080.  unordered list  -In Information Presentation Facility, a vertical arrangement 
  20081.    of items in a list, with each item in the list preceded by a special 
  20082.    character or bullet. 
  20083.  
  20084.  update region  -A system-provided area of dynamic storage containing one or 
  20085.    more (not necessarily contiguous) rectangular areas of a window that are 
  20086.    visually invalid or incorrect, and therefore are in need of repainting. 
  20087.  
  20088.  user interface  -Hardware, software, or both that allows a user to interact 
  20089.    with and perform operations on a system, program, or device. 
  20090.  
  20091.  User Shell  -A component of OS/2 that uses a graphics-based, windowed 
  20092.    interface to allow the user to manage applications and files installed and 
  20093.    running under OS/2. 
  20094.  
  20095.  utility program  -(1) A computer program in general support of computer 
  20096.    processes; for example, a diagnostic program, a trace program, a sort 
  20097.    program. (T)  (2) A program designed to perform an everyday task such as 
  20098.    copying data from one storage device to another. (A)
  20099.  
  20100.  
  20101. ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
  20102.  
  20103. There are no glossary terms for this starting letter. 
  20104.  
  20105.  
  20106. ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
  20107.  
  20108.  value set control  -A visual component that enables a user to select one 
  20109.    choice from a group of mutually exclusive choices. 
  20110.  
  20111.  vector font  -A set of symbols, each of which is created as a series of lines 
  20112.    and curves. Synonymous with outline font. Contrast with image font. 
  20113.  
  20114.  VGA  -Video graphics array. 
  20115.  
  20116.  view  -A way of looking at an object's information. 
  20117.  
  20118.  viewing pipeline  -The series of transformations applied to a graphic object 
  20119.    to map the object to the device on which it is to be presented. 
  20120.  
  20121.  viewing window  -A clipping boundary that defines the visible part of model 
  20122.    space. 
  20123.  
  20124.  VIO  -Video Input/Output. 
  20125.  
  20126.  virtual memory (VM)  -Synonymous with virtual storage. 
  20127.  
  20128.  virtual storage  -(1) The storage space that may be regarded as addressable 
  20129.    main storage by the user of a computer system in which virtual addresses are 
  20130.    mapped into real addresses. The size of virtual storage is limited by the 
  20131.    addressing scheme of the computer system and by the amount of auxiliary 
  20132.    storage available, not by the actual number of main storage 
  20133.    locations. (I)  (A)  (2) Addressable space that is apparent to the user as 
  20134.    the processor storage space, from which the instructions and the data are 
  20135.    mapped into the processor storage locations. (3) Synonymous with virtual 
  20136.    memory. 
  20137.  
  20138.  visible region  -A window's presentation space, clipped to the boundary of the 
  20139.    window and the boundaries of any overlying window. 
  20140.  
  20141.  volume  -(1) A file-system driver that uses a block device driver for input 
  20142.    and output operations to a local or remote device. (I)  (2) A portion of 
  20143.    data, together with its data carrier, that can be handled conveniently as a 
  20144.    unit. 
  20145.  
  20146.  
  20147. ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
  20148.  
  20149.  wildcard character  -Synonymous with global file-name character. 
  20150.  
  20151.  window  -(1) A portion of a display surface in which display images pertaining 
  20152.    to a particular application can be presented. Different applications can be 
  20153.    displayed simultaneously in different windows. (A)  (2) An area of the 
  20154.    screen with visible boundaries within which information is displayed. A 
  20155.    window can be smaller than or the same size as the screen. Windows can 
  20156.    appear to overlap on the screen. 
  20157.  
  20158.  window class  -The grouping of windows whose processing needs conform to the 
  20159.    services provided by one window procedure. 
  20160.  
  20161.  window coordinates  -A set of coordinates by which a window position or size 
  20162.    is defined; measured in device units, or pels. 
  20163.  
  20164.  window handle  -Unique identifier of a window, generated by Presentation 
  20165.    Manager when the window is created, and used by applications to direct 
  20166.    messages to the window. 
  20167.  
  20168.  window procedure  -Code that is activated in response to a message. The 
  20169.    procedure controls the appearance and behavior of its associated windows. 
  20170.  
  20171.  window rectangle  -The means by which the size and position of a window is 
  20172.    described in relation to the desktop window. 
  20173.  
  20174.  window resource  -A read-only data segment stored in the .EXE file of an 
  20175.    application o the .DLL file of a dynamic link library. 
  20176.  
  20177.  window style  -The set of properties that influence how events related to a 
  20178.    particular window will be processed. 
  20179.  
  20180.  window title  -In SAA Advanced Common User Access architecture, the area in 
  20181.    the title bar that contains the name of the application and the OS/2 
  20182.    operating system file name, if applicable. 
  20183.  
  20184.  Workplace Shell  -The OS/2 object-oriented, graphical user interface. 
  20185.  
  20186.  workstation  -(1) A display screen together with attachments such as a 
  20187.    keyboard, a local copy device, or a tablet. (2) (D of C) One or more 
  20188.    programmable or nonprogrammable devices that allow a user to do work. 
  20189.  
  20190.  world coordinates  -A device-independent Cartesian coordinate system used by 
  20191.    the application program for specifying graphical input and output. (I)  (A)
  20192.  
  20193.  world-coordinate space  -Coordinate space in which graphics are defined before 
  20194.    transformations are applied. 
  20195.  
  20196.  WYSIWYG  -What-You-See-Is-What-You-Get. A capability of a text editor to 
  20197.    continually display pages exactly as they will be printed. 
  20198.  
  20199.  
  20200. ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
  20201.  
  20202. There are no glossary terms for this starting letter. 
  20203.  
  20204.  
  20205. ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
  20206.  
  20207. There are no glossary terms for this starting letter. 
  20208.  
  20209.  
  20210. ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
  20211.  
  20212.  z-order  -The order in which sibling windows are presented. The topmost 
  20213.    sibling window obscures any portion of the siblings that it overlaps; the 
  20214.    same effect occurs down through the order of lower sibling windows. 
  20215.  
  20216.  zooming  -The progressive scaling of an entire display image in order to give 
  20217.    the visual impression of movement of all or part of a display group toward 
  20218.    or away from an observer. (I)  (A)
  20219.  
  20220.  8.3 file-name format  -A file-naming convention in which file names are 
  20221.    limited to eight characters before and three characters after a single dot. 
  20222.    Usually pronounced "eight-dot-three." See also non-8.3 file-name format. 
  20223.