home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _0ccdc40ffd3df0ba95ec5673d2cf2eae < prev    next >
Text File  |  2000-03-23  |  29KB  |  726 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>Win32::Console - Win32 Console and Character Mode Functions</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> Win32::Console - Win32 Console and Character Mode Functions</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  24.     <LI><A HREF="#reference">REFERENCE</A></LI>
  25.     <UL>
  26.  
  27.         <LI><A HREF="#methods">Methods</A></LI>
  28.         <LI><A HREF="#constants">Constants</A></LI>
  29.         <LI><A HREF="#microsoft's documentation">Microsoft's Documentation</A></LI>
  30.     </UL>
  31.  
  32.     <LI><A HREF="#version history">VERSION HISTORY</A></LI>
  33.     <LI><A HREF="#author">AUTHOR</A></LI>
  34.     <LI><A HREF="#credits">CREDITS</A></LI>
  35.     <LI><A HREF="#disclaimer">DISCLAIMER</A></LI>
  36. </UL>
  37. <!-- INDEX END -->
  38.  
  39. <HR>
  40. <P>
  41. <H1><A NAME="name">NAME</A></H1>
  42. <P>Win32::Console - Win32 Console and Character Mode Functions</P>
  43. <P>
  44. <HR>
  45. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  46. <UL>
  47. <LI>Windows</LI>
  48. </UL>
  49. <HR>
  50. <H1><A NAME="description">DESCRIPTION</A></H1>
  51. <P>This module implements the Win32 console and character mode
  52. functions.  They give you full control on the console input and output,
  53. including: support of off-screen console buffers (eg. multiple screen
  54. pages)</P>
  55. <UL>
  56. <LI>
  57. reading and writing of characters, attributes and whole portions of
  58. the screen
  59. <P></P>
  60. <LI>
  61. complete processing of keyboard and mouse events
  62. <P></P>
  63. <LI>
  64. some very funny additional features :)
  65. <P></P></UL>
  66. <P>Those functions should also make possible a port of the Unix's curses
  67. library; if there is anyone interested (and/or willing to contribute)
  68. to this project, e-mail me.  Thank you.</P>
  69. <P>
  70. <HR>
  71. <H1><A NAME="reference">REFERENCE</A></H1>
  72. <P>
  73. <H2><A NAME="methods">Methods</A></H2>
  74. <DL>
  75. <DT><STRONG><A NAME="item_Alloc">Alloc</A></STRONG><BR>
  76. <DD>
  77. Allocates a new console for the process.  Returns <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors, a
  78. nonzero value on success.  A process cannot be associated with more
  79. than one console, so this method will fail if there is already an
  80. allocated console.  Use Free to detach the process from the console,
  81. and then call Alloc to create a new console.  See also: <A HREF="#item_Free"><CODE>Free</CODE></A>
  82. <P>Example:</P>
  83. <PRE>
  84.     $CONSOLE->Alloc();</PRE>
  85. <P></P>
  86. <DT><STRONG><A NAME="item_Attr_%5Battr%5D">Attr [attr]</A></STRONG><BR>
  87. <DD>
  88. Gets or sets the current console attribute.  This attribute is used by
  89. the Write method.
  90. <P>Example:</P>
  91. <PRE>
  92.     $attr = $CONSOLE->Attr();
  93.     $CONSOLE->Attr($FG_YELLOW | $BG_BLUE);</PRE>
  94. <P></P>
  95. <DT><STRONG><A NAME="item_Close">Close</A></STRONG><BR>
  96. <DD>
  97. Closes a shortcut object.  Note that it is not ``strictly'' required to
  98. close the objects you created, since the Win32::Shortcut objects are
  99. automatically closed when the program ends (or when you elsehow
  100. destroy such an object).
  101. <P>Example:</P>
  102. <PRE>
  103.     $LINK->Close();</PRE>
  104. <P></P>
  105. <DT><STRONG><A NAME="item_Cls_%5Battr%5D">Cls [attr]</A></STRONG><BR>
  106. <DD>
  107. Clear the console, with the specified <EM>attr</EM> if given, or using
  108. ATTR_NORMAL otherwise.
  109. <P>Example:</P>
  110. <PRE>
  111.     $CONSOLE->Cls();
  112.     $CONSOLE->Cls($FG_WHITE | $BG_GREEN);</PRE>
  113. <P></P>
  114. <DT><STRONG><A NAME="item_Cursor_%5Bx%2C_y%2C_size%2C_visible%5D">Cursor [x, y, size, visible]</A></STRONG><BR>
  115. <DD>
  116. Gets or sets cursor position and appearance.  Returns <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on
  117. errors, or a 4-element list containing: <EM>x</EM>, <EM>y</EM>, <EM>size</EM>,
  118. <EM>visible</EM>.  <EM>x</EM> and <EM>y</EM> are the current cursor position; ...
  119. <P>Example:</P>
  120. <PRE>
  121.     ($x, $y, $size, $visible) = $CONSOLE->Cursor();</PRE>
  122. <PRE>
  123.     # Get position only
  124.     ($x, $y) = $CONSOLE->Cursor();</PRE>
  125. <PRE>
  126.     $CONSOLE->Cursor(40, 13, 50, 1);</PRE>
  127. <PRE>
  128.     # Set position only
  129.     $CONSOLE->Cursor(40, 13);</PRE>
  130. <PRE>
  131.     # Set size and visibility without affecting position
  132.     $CONSOLE->Cursor(-1, -1, 50, 1);</PRE>
  133. <P></P>
  134. <DT><STRONG><A NAME="item_Display">Display</A></STRONG><BR>
  135. <DD>
  136. Displays the specified console on the screen.  Returns <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors,
  137. a nonzero value on success.
  138. <P>Example:</P>
  139. <PRE>
  140.     $CONSOLE->Display();</PRE>
  141. <P></P>
  142. <DT><STRONG><A NAME="item_FillAttr_%5Battribute%2C_number%2C_col%2C_row%5D">FillAttr [attribute, number, col, row]</A></STRONG><BR>
  143. <DD>
  144. Fills the specified number of consecutive attributes, beginning at
  145. <EM>col</EM>, <EM>row</EM>, with the value specified in <EM>attribute</EM>.  Returns the
  146. number of attributes filled, or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  See also:
  147. <CODE>FillChar</CODE>.
  148. <P>Example:</P>
  149. <PRE>
  150.     $CONSOLE->FillAttr($FG_BLACK | $BG_BLACK, 80*25, 0, 0);</PRE>
  151. <P></P>
  152. <DT><STRONG><A NAME="item_FillChar_char%2C_number%2C_col%2C_row">FillChar char, number, col, row</A></STRONG><BR>
  153. <DD>
  154. Fills the specified number of consecutive characters, beginning at
  155. <EM>col</EM>, <EM>row</EM>, with the character specified in <EM>char</EM>.  Returns the
  156. number of characters filled, or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  See also:
  157. <CODE>FillAttr</CODE>.
  158. <P>Example:</P>
  159. <PRE>
  160.     $CONSOLE->FillChar("X", 80*25, 0, 0);</PRE>
  161. <P></P>
  162. <DT><STRONG><A NAME="item_Flush">Flush</A></STRONG><BR>
  163. <DD>
  164. Flushes the console input buffer.  All the events in the buffer are
  165. discarded.  Returns <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors, a nonzero value on success.
  166. <P>Example:</P>
  167. <PRE>
  168.     $CONSOLE->Flush();</PRE>
  169. <P></P>
  170. <DT><STRONG><A NAME="item_Free">Free</A></STRONG><BR>
  171. <DD>
  172. Detaches the process from the console.  Returns <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors, a
  173. nonzero value on success.  See also: <A HREF="#item_Alloc"><CODE>Alloc</CODE></A>.
  174. <P>Example:</P>
  175. <PRE>
  176.     $CONSOLE->Free();</PRE>
  177. <P></P>
  178. <DT><STRONG><A NAME="item_GenerateCtrlEvent_%5Btype%2C_processgroup%5D">GenerateCtrlEvent [type, processgroup]</A></STRONG><BR>
  179. <DD>
  180. Sends a break signal of the specified <EM>type</EM> to the specified
  181. <EM>processgroup</EM>.  <EM>type</EM> can be one of the following constants:
  182. <PRE>
  183.     CTRL_BREAK_EVENT
  184.     CTRL_C_EVENT</PRE>
  185. <P>they signal, respectively, the pressing of Control + Break and of
  186. Control + C; if not specified, it defaults to CTRL_C_EVENT.
  187. <EM>processgroup</EM> is the pid of a process sharing the same console.  If
  188. omitted, it defaults to 0 (the current process), which is also the
  189. only meaningful value that you can pass to this function.  Returns
  190. <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors, a nonzero value on success.</P>
  191. <P>Example:</P>
  192. <PRE>
  193.     # break this script now
  194.     $CONSOLE->GenerateCtrlEvent();</PRE>
  195. <P></P>
  196. <DT><STRONG><A NAME="item_GetEvents">GetEvents</A></STRONG><BR>
  197. <DD>
  198. Returns the number of unread input events in the console's input
  199. buffer, or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  See also: <A HREF="#item_Input"><CODE>Input</CODE></A>, <CODE>InputChar</CODE>,
  200. <A HREF="#item_PeekInput"><CODE>PeekInput</CODE></A>, <A HREF="#item_WriteInput"><CODE>WriteInput</CODE></A>.
  201. <P>Example:</P>
  202. <PRE>
  203.     $events = $CONSOLE->GetEvents();</PRE>
  204. <P></P>
  205. <DT><STRONG><A NAME="item_Info">Info</A></STRONG><BR>
  206. <DD>
  207. Returns an array of informations about the console (or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on
  208. errors), which contains:
  209. <UL>
  210. <LI>
  211. columns (X size) of the console buffer.
  212. <P></P>
  213. <LI>
  214. rows (Y size) of the console buffer.
  215. <P></P>
  216. <LI>
  217. current column (X position) of the cursor.
  218. <P></P>
  219. <LI>
  220. current row (Y position) of the cursor.
  221. <P></P>
  222. <LI>
  223. current attribute used for <CODE>Write</CODE>.
  224. <P></P>
  225. <LI>
  226. left column (X of the starting point) of the current console window.
  227. <P></P>
  228. <LI>
  229. top row (Y of the starting point) of the current console window.
  230. <P></P>
  231. <LI>
  232. right column (X of the final point) of the current console window.
  233. <P></P>
  234. <LI>
  235. bottom row (Y of the final point) of the current console window.
  236. <P></P>
  237. <LI>
  238. maximum number of columns for the console window, given the current
  239. buffer size, font and the screen size.
  240. <P></P>
  241. <LI>
  242. maximum number of rows for the console window, given the current
  243. buffer size, font and the screen size.
  244. <P></P></UL>
  245. <P>See also: <CODE>Attr</CODE>, <CODE>Cursor</CODE>, <CODE>Size</CODE>, <CODE>Window</CODE>, <A HREF="#item_MaxWindow"><CODE>MaxWindow</CODE></A>.</P>
  246. <P>Example:</P>
  247. <PRE>
  248.     @info = $CONSOLE->Info();
  249.     print "Cursor at $info[3], $info[4].\n";</PRE>
  250. <DT><STRONG><A NAME="item_Input">Input</A></STRONG><BR>
  251. <DD>
  252. Reads an event from the input buffer.  Returns a list of values, which
  253. depending on the event's nature are:
  254. <DL>
  255. <DT><STRONG><A NAME="item_keyboard_event">keyboard event</A></STRONG><BR>
  256. <DD>
  257. The list will contain:
  258. <UL>
  259. <LI>
  260. event type: 1 for keyboard
  261. <P></P>
  262. <LI>
  263. key down: TRUE if the key is being pressed, FALSE if the key is being released
  264. <P></P>
  265. <LI>
  266. repeat count: the number of times the key is being held down
  267. <P></P>
  268. <LI>
  269. virtual keycode: the virtual key code of the key
  270. <P></P>
  271. <LI>
  272. virtual scancode: the virtual scan code of the key
  273. <P></P>
  274. <LI>
  275. char: the ASCII code of the character (if the key is a character key, 0 otherwise)
  276. <P></P>
  277. <LI>
  278. control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)
  279. <P></P></UL>
  280. <DT><STRONG><A NAME="item_mouse_event">mouse event</A></STRONG><BR>
  281. <DD>
  282. The list will contain:
  283. <UL>
  284. <LI>
  285. event type: 2 for mouse
  286. <P></P>
  287. <LI>
  288. mouse pos. X: X coordinate (column) of the mouse location
  289. <P></P>
  290. <LI>
  291. mouse pos. Y: Y coordinate (row) of the mouse location
  292. <P></P>
  293. <LI>
  294. button state: the mouse <CODE>button(s)</CODE> which are pressed
  295. <P></P>
  296. <LI>
  297. control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.)
  298. <P></P>
  299. <LI>
  300. event flags: the type of the mouse event
  301. <P></P></UL>
  302. </DL>
  303. <P>This method will return <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  Note that the events
  304. returned are depending on the input <CODE>Mode</CODE> of the console; for example,
  305. mouse events are not intercepted unless ENABLE_MOUSE_INPUT is
  306. specified.  See also: <A HREF="#item_GetEvents"><CODE>GetEvents</CODE></A>, <CODE>InputChar</CODE>, <CODE>Mode</CODE>,
  307. <A HREF="#item_PeekInput"><CODE>PeekInput</CODE></A>, <A HREF="#item_WriteInput"><CODE>WriteInput</CODE></A>.</P>
  308. <P>Example:</P>
  309. <PRE>
  310.     @event = $CONSOLE->Input();</PRE>
  311. <DT><STRONG><A NAME="item_InputChar_number">InputChar number</A></STRONG><BR>
  312. <DD>
  313. Reads and returns <EM>number</EM> characters from the console input buffer,
  314. or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  See also: <A HREF="#item_Input"><CODE>Input</CODE></A>, <CODE>Mode</CODE>.
  315. <P>Example:</P>
  316. <PRE>
  317.     $key = $CONSOLE->InputChar(1);</PRE>
  318. <P></P>
  319. <DT><STRONG><A NAME="item_InputCP_%5Bcodepage%5D">InputCP [codepage]</A></STRONG><BR>
  320. <DD>
  321. Gets or sets the input code page used by the console.  Note that this
  322. doesn't apply to a console object, but to the standard input
  323. console.  This attribute is used by the Write method.  See also:
  324. <CODE>OutputCP</CODE>.
  325. <P>Example:</P>
  326. <PRE>
  327.     $codepage = $CONSOLE->InputCP();
  328.     $CONSOLE->InputCP(437);</PRE>
  329. <PRE>
  330.     # you may want to use the non-instanciated form to avoid confuzion :)
  331.     $codepage = Win32::Console::InputCP();
  332.     Win32::Console::InputCP(437);</PRE>
  333. <P></P>
  334. <DT><STRONG><A NAME="item_MaxWindow">MaxWindow</A></STRONG><BR>
  335. <DD>
  336. Returns the size of the largest possible console window, based on the
  337. current font and the size of the display.  The result is <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on
  338. errors, otherwise a 2-element list containing col, row.
  339. <P>Example:</P>
  340. <PRE>
  341.     ($maxCol, $maxRow) = $CONSOLE->MaxWindow();</PRE>
  342. <P></P>
  343. <DT><STRONG><A NAME="item_Mode_%5Bflags%5D">Mode [flags]</A></STRONG><BR>
  344. <DD>
  345. Gets or sets the input or output mode of a console.  <EM>flags</EM> can be a
  346. combination of the following constants:
  347. <PRE>
  348.     ENABLE_LINE_INPUT
  349.     ENABLE_ECHO_INPUT
  350.     ENABLE_PROCESSED_INPUT
  351.     ENABLE_WINDOW_INPUT
  352.     ENABLE_MOUSE_INPUT
  353.     ENABLE_PROCESSED_OUTPUT
  354.     ENABLE_WRAP_AT_EOL_OUTPUT</PRE>
  355. <P>For more informations on the meaning of those flags, please refer to
  356. the <A HREF="#microsoft's documentation">Microsoft's Documentation</A>.</P>
  357. <P>Example:</P>
  358. <PRE>
  359.     $mode = $CONSOLE->Mode();
  360.     $CONSOLE->Mode(ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT);</PRE>
  361. <P></P>
  362. <DT><STRONG><A NAME="item_MouseButtons">MouseButtons</A></STRONG><BR>
  363. <DD>
  364. Returns the number of the buttons on your mouse, or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.
  365. <P>Example:</P>
  366. <PRE>
  367.     print "Your mouse has ", $CONSOLE->MouseButtons(), " buttons.\n";</PRE>
  368. <P></P>
  369. <DT><STRONG><A NAME="item_new_Win32%3A%3AConsole_standard_handle">new Win32::Console standard_handle</A></STRONG><BR>
  370. <DD>
  371. <DT><STRONG><A NAME="item_new_Win32%3A%3AConsole_%5Baccessmode%2C_sharemode%">new Win32::Console [accessmode, sharemode]</A></STRONG><BR>
  372. <DD>
  373. Creates a new console object.  The first form creates a handle to a
  374. standard channel, <EM>standard_handle</EM> can be one of the following:
  375. <PRE>
  376.     STD_OUTPUT_HANDLE
  377.     STD_ERROR_HANDLE
  378.     STD_INPUT_HANDLE</PRE>
  379. <P>The second form, instead, creates a console screen buffer in memory,
  380. which you can access for reading and writing as a normal console, and
  381. then redirect on the standard output (the screen) with <A HREF="#item_Display"><CODE>Display</CODE></A>.  In
  382. this case, you can specify one or both of the following values for
  383. <EM>accessmode</EM>:</P>
  384. <PRE>
  385.     GENERIC_READ
  386.     GENERIC_WRITE</PRE>
  387. <P>which are the permissions you will have on the created buffer, and one
  388. or both of the following values for <EM>sharemode</EM>:</P>
  389. <PRE>
  390.     FILE_SHARE_READ
  391.     FILE_SHARE_WRITE</PRE>
  392. <P>which affect the way the console can be shared.  If you don't specify
  393. any of those parameters, all 4 flags will be used.</P>
  394. <P>Example:</P>
  395. <PRE>
  396.     $STDOUT = new Win32::Console(STD_OUTPUT_HANDLE);
  397.     $STDERR = new Win32::Console(STD_ERROR_HANDLE);
  398.     $STDIN  = new Win32::Console(STD_INPUT_HANDLE);</PRE>
  399. <PRE>
  400.     $BUFFER = new Win32::Console();
  401.     $BUFFER = new Win32::Console(GENERIC_READ | GENERIC_WRITE);</PRE>
  402. <P></P>
  403. <DT><STRONG><A NAME="item_OutputCP_%5Bcodepage%5D">OutputCP [codepage]</A></STRONG><BR>
  404. <DD>
  405. Gets or sets the output code page used by the console.  Note that this
  406. doesn't apply to a console object, but to the standard output console.
  407. See also: <CODE>InputCP</CODE>.
  408. <P>Example:</P>
  409. <PRE>
  410.     $codepage = $CONSOLE->OutputCP();
  411.     $CONSOLE->OutputCP(437);</PRE>
  412. <PRE>
  413.     # you may want to use the non-instanciated form to avoid confuzion :)
  414.     $codepage = Win32::Console::OutputCP();
  415.     Win32::Console::OutputCP(437);</PRE>
  416. <P></P>
  417. <DT><STRONG><A NAME="item_PeekInput">PeekInput</A></STRONG><BR>
  418. <DD>
  419. Does exactly the same as <A HREF="#item_Input"><CODE>Input</CODE></A>, except that the event read is not
  420. removed from the input buffer.  See also: <A HREF="#item_GetEvents"><CODE>GetEvents</CODE></A>, <A HREF="#item_Input"><CODE>Input</CODE></A>,
  421. <CODE>InputChar</CODE>, <CODE>Mode</CODE>, <A HREF="#item_WriteInput"><CODE>WriteInput</CODE></A>.
  422. <P>Example:</P>
  423. <PRE>
  424.     @event = $CONSOLE->PeekInput();</PRE>
  425. <P></P>
  426. <DT><STRONG><A NAME="item_ReadAttr_%5Bnumber%2C_col%2C_row%5D">ReadAttr [number, col, row]</A></STRONG><BR>
  427. <DD>
  428. Reads the specified <EM>number</EM> of consecutive attributes, beginning at
  429. <EM>col</EM>, <EM>row</EM>, from the console.  Returns the attributes read (a
  430. variable containing one character for each attribute), or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on
  431. errors.  You can then pass the returned variable to <CODE>WriteAttr</CODE> to
  432. restore the saved attributes on screen.  See also: <CODE>ReadChar</CODE>,
  433. <CODE>ReadRect</CODE>.
  434. <P>Example:</P>
  435. <PRE>
  436.     $colors = $CONSOLE->ReadAttr(80*25, 0, 0);</PRE>
  437. <P></P>
  438. <DT><STRONG><A NAME="item_ReadChar_%5Bnumber%2C_col%2C_row%5D">ReadChar [number, col, row]</A></STRONG><BR>
  439. <DD>
  440. Reads the specified <EM>number</EM> of consecutive characters, beginning at
  441. <EM>col</EM>, <EM>row</EM>, from the console.  Returns a string containing the
  442. characters read, or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  You can then pass the
  443. returned variable to <CODE>WriteChar</CODE> to restore the saved characters on
  444. screen.  See also: <CODE>ReadAttr</CODE>, <CODE>ReadRect</CODE>.
  445. <P>Example:</P>
  446. <PRE>
  447.     $chars = $CONSOLE->ReadChar(80*25, 0, 0);</PRE>
  448. <P></P>
  449. <DT><STRONG><A NAME="item_ReadRect_left%2C_top%2C_right%2C_bottom">ReadRect left, top, right, bottom</A></STRONG><BR>
  450. <DD>
  451. Reads the content (characters and attributes) of the rectangle
  452. specified by <EM>left</EM>, <EM>top</EM>, <EM>right</EM>, <EM>bottom</EM> from the console.
  453. Returns a string containing the rectangle read, or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.
  454. You can then pass the returned variable to <CODE>WriteRect</CODE> to restore the
  455. saved rectangle on screen (or on another console).  See also:
  456. <CODE>ReadAttr</CODE>, <CODE>ReadChar</CODE>.
  457. <P>Example:</P>
  458. <PRE>
  459.      $rect = $CONSOLE->ReadRect(0, 0, 80, 25);</PRE>
  460. <P></P>
  461. <DT><STRONG><A NAME="item_Scroll_left%2C_top%2C_right%2C_bottom%2C_col%2C_ro">Scroll left, top, right, bottom, col, row, char, attr,
  462.              [cleft, ctop, cright, cbottom]</A></STRONG><BR>
  463. <DD>
  464. Moves a block of data in a console buffer; the block is identified by
  465. <EM>left</EM>, <EM>top</EM>, <EM>right</EM>, <EM>bottom</EM>, while <EM>row</EM>, <EM>col</EM> identify
  466. the new location of the block.  The cells left empty as a result of
  467. the move are filled with the character <EM>char</EM> and attribute <EM>attr</EM>.
  468. Optionally you can specify a clipping region with <EM>cleft</EM>, <EM>ctop</EM>,
  469. <EM>cright</EM>, <EM>cbottom</EM>, so that the content of the console outside this
  470. rectangle are unchanged.  Returns <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors, a nonzero value
  471. on success.
  472. <P>Example:</P>
  473. <PRE>
  474.     # scrolls the screen 10 lines down, filling with black spaces
  475.     $CONSOLE->Scroll(0, 0, 80, 25, 0, 10, " ", $FG_BLACK | $BG_BLACK);</PRE>
  476. <P></P>
  477. <DT><STRONG><A NAME="item_Select_standard_handle">Select standard_handle</A></STRONG><BR>
  478. <DD>
  479. Redirects a standard handle to the specified console.
  480. <EM>standard_handle</EM> can have one of the following values:
  481. <PRE>
  482.     STD_INPUT_HANDLE
  483.     STD_OUTPUT_HANDLE
  484.     STD_ERROR_HANDLE</PRE>
  485. <P>Returns <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors, a nonzero value on success.</P>
  486. <P>Example:</P>
  487. <PRE>
  488.     $CONSOLE->Select(STD_OUTPUT_HANDLE);</PRE>
  489. <P></P>
  490. <DT><STRONG><A NAME="item_Size_%5Bcol%2C_row%5D">Size [col, row]</A></STRONG><BR>
  491. <DD>
  492. Gets or sets the console buffer size.
  493. <P>Example:</P>
  494. <PRE>
  495.     ($x, $y) = $CONSOLE->Size();
  496.     $CONSOLE->Size(80, 25);</PRE>
  497. <P></P>
  498. <DT><STRONG><A NAME="item_Title_%5Btitle%5D">Title [title]</A></STRONG><BR>
  499. <DD>
  500. Gets or sets the title bar the string of the current console window.
  501. <P>Example:</P>
  502. <PRE>
  503.     $title = $CONSOLE->Title();
  504.     $CONSOLE->Title("This is a title");</PRE>
  505. <P></P>
  506. <DT><STRONG><A NAME="item_Window_%5Bflag%2C_left%2C_top%2C_right%2C_bottom%5">Window [flag, left, top, right, bottom]</A></STRONG><BR>
  507. <DD>
  508. Gets or sets the current console window size.  If called without
  509. arguments, returns a 4-element list containing the current window
  510. coordinates in the form of <EM>left</EM>, <EM>top</EM>, <EM>right</EM>, <EM>bottom</EM>.  To
  511. set the window size, you have to specify an additional <EM>flag</EM>
  512. parameter: if it is 0 (zero), coordinates are considered relative to
  513. the current coordinates; if it is non-zero, coordinates are absolute.
  514. <P>Example:</P>
  515. <PRE>
  516.     ($left, $top, $right, $bottom) = $CONSOLE->Window();
  517.     $CONSOLE->Window(1, 0, 0, 80, 50);</PRE>
  518. <P></P>
  519. <DT><STRONG><A NAME="item_Write_string">Write string</A></STRONG><BR>
  520. <DD>
  521. Writes <EM>string</EM> on the console, using the current attribute, that you
  522. can set with <CODE>Attr</CODE>, and advancing the cursor as needed.  This isn't
  523. so different from Perl's ``print'' statement.  Returns the number of
  524. characters written or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  See also: <CODE>WriteAttr</CODE>,
  525. <CODE>WriteChar</CODE>, <CODE>WriteRect</CODE>.
  526. <P>Example:</P>
  527. <PRE>
  528.     $CONSOLE->Write("Hello, world!");</PRE>
  529. <P></P>
  530. <DT><STRONG><A NAME="item_WriteAttr_attrs%2C_col%2C_row">WriteAttr attrs, col, row</A></STRONG><BR>
  531. <DD>
  532. Writes the attributes in the string <EM>attrs</EM>, beginning at <EM>col</EM>,
  533. <EM>row</EM>, without affecting the characters that are on screen.  The
  534. string attrs can be the result of a <CODE>ReadAttr</CODE> function, or you can
  535. build your own attribute string; in this case, keep in mind that every
  536. attribute is treated as a character, not a number (see example).
  537. Returns the number of attributes written or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  See
  538. also: <CODE>Write</CODE>, <CODE>WriteChar</CODE>, <CODE>WriteRect</CODE>.
  539. <P>Example:</P>
  540. <PRE>
  541.     $CONSOLE->WriteAttr($attrs, 0, 0);</PRE>
  542. <PRE>
  543.     # note the use of chr()...
  544.     $attrs = chr($FG_BLACK | $BG_WHITE) x 80;
  545.     $CONSOLE->WriteAttr($attrs, 0, 0);</PRE>
  546. <P></P>
  547. <DT><STRONG><A NAME="item_WriteChar_chars%2C_col%2C_row">WriteChar chars, col, row</A></STRONG><BR>
  548. <DD>
  549. Writes the characters in the string <EM>attr</EM>, beginning at <EM>col</EM>, <EM>row</EM>,
  550. without affecting the attributes that are on screen.  The string <EM>chars</EM>
  551. can be the result of a <CODE>ReadChar</CODE> function, or a normal string.  Returns
  552. the number of characters written or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  See also:
  553. <CODE>Write</CODE>, <CODE>WriteAttr</CODE>, <CODE>WriteRect</CODE>.
  554. <P>Example:</P>
  555. <PRE>
  556.     $CONSOLE->WriteChar("Hello, worlds!", 0, 0);</PRE>
  557. <P></P>
  558. <DT><STRONG><A NAME="item_WriteInput">WriteInput (event)</A></STRONG><BR>
  559. <DD>
  560. Pushes data in the console input buffer.  <EM>(event)</EM> is a list of values,
  561. for more information see <A HREF="#item_Input"><CODE>Input</CODE></A>.  The string chars can be the result of
  562. a <CODE>ReadChar</CODE> function, or a normal string.  Returns the number of
  563. characters written or <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors.  See also: <CODE>Write</CODE>,
  564. <CODE>WriteAttr</CODE>, <CODE>WriteRect</CODE>.
  565. <P>Example:</P>
  566. <PRE>
  567.     $CONSOLE->WriteInput(@event);</PRE>
  568. <P></P>
  569. <DT><STRONG><A NAME="item_WriteRect_rect%2C_left%2C_top%2C_right%2C_bottom">WriteRect rect, left, top, right, bottom</A></STRONG><BR>
  570. <DD>
  571. Writes a rectangle of characters and attributes (contained in <EM>rect</EM>)
  572. on the console at the coordinates specified by <EM>left</EM>, <EM>top</EM>,
  573. <EM>right</EM>, <EM>bottom</EM>.  <EM>rect</EM> can be the result of a <CODE>ReadRect</CODE>
  574. function.  Returns <A HREF="../../../lib/Pod/perlfunc.html#item_undef"><CODE>undef</CODE></A> on errors, otherwise a 4-element list
  575. containing the coordinates of the affected rectangle, in the format
  576. <EM>left</EM>, <EM>top</EM>, <EM>right</EM>, <EM>bottom</EM>.  See also: <CODE>Write</CODE>,
  577. <CODE>WriteAttr</CODE>, <CODE>WriteChar</CODE>.
  578. <P>Example:</P>
  579. <PRE>
  580.     $CONSOLE->WriteRect($rect, 0, 0, 80, 25);</PRE>
  581. <P></P></DL>
  582. <P>
  583. <H2><A NAME="constants">Constants</A></H2>
  584. <P>The following constants are exported in the main namespace of your
  585. script using Win32::Console:</P>
  586. <PRE>
  587.     BACKGROUND_BLUE
  588.     BACKGROUND_GREEN
  589.     BACKGROUND_INTENSITY
  590.     BACKGROUND_RED
  591.     CAPSLOCK_ON
  592.     CONSOLE_TEXTMODE_BUFFER
  593.     ENABLE_ECHO_INPUT
  594.     ENABLE_LINE_INPUT
  595.     ENABLE_MOUSE_INPUT
  596.     ENABLE_PROCESSED_INPUT
  597.     ENABLE_PROCESSED_OUTPUT
  598.     ENABLE_WINDOW_INPUT
  599.     ENABLE_WRAP_AT_EOL_OUTPUT
  600.     ENHANCED_KEY
  601.     FILE_SHARE_READ
  602.     FILE_SHARE_WRITE
  603.     FOREGROUND_BLUE
  604.     FOREGROUND_GREEN
  605.     FOREGROUND_INTENSITY
  606.     FOREGROUND_RED
  607.     LEFT_ALT_PRESSED
  608.     LEFT_CTRL_PRESSED
  609.     NUMLOCK_ON
  610.     GENERIC_READ
  611.     GENERIC_WRITE
  612.     RIGHT_ALT_PRESSED
  613.     RIGHT_CTRL_PRESSED
  614.     SCROLLLOCK_ON
  615.     SHIFT_PRESSED
  616.     STD_INPUT_HANDLE
  617.     STD_OUTPUT_HANDLE
  618.     STD_ERROR_HANDLE</PRE>
  619. <P>Additionally, the following variables can be used:</P>
  620. <PRE>
  621.     $FG_BLACK
  622.     $FG_BLUE
  623.     $FG_LIGHTBLUE
  624.     $FG_RED
  625.     $FG_LIGHTRED
  626.     $FG_GREEN
  627.     $FG_LIGHTGREEN
  628.     $FG_MAGENTA
  629.     $FG_LIGHTMAGENTA
  630.     $FG_CYAN
  631.     $FG_LIGHTCYAN
  632.     $FG_BROWN
  633.     $FG_YELLOW
  634.     $FG_GRAY
  635.     $FG_WHITE</PRE>
  636. <PRE>
  637.     $BG_BLACK
  638.     $BG_BLUE
  639.     $BG_LIGHTBLUE
  640.     $BG_RED
  641.     $BG_LIGHTRED
  642.     $BG_GREEN
  643.     $BG_LIGHTGREEN
  644.     $BG_MAGENTA
  645.     $BG_LIGHTMAGENTA
  646.     $BG_CYAN
  647.     $BG_LIGHTCYAN
  648.     $BG_BROWN
  649.     $BG_YELLOW
  650.     $BG_GRAY
  651.     $BG_WHITE</PRE>
  652. <PRE>
  653.     $ATTR_NORMAL
  654.     $ATTR_INVERSE</PRE>
  655. <P>ATTR_NORMAL is set to gray foreground on black background (DOS's
  656. standard colors).</P>
  657. <P>
  658. <H2><A NAME="microsoft's documentation">Microsoft's Documentation</A></H2>
  659. <P>Documentation for the Win32 Console and Character mode Functions can
  660. be found on Microsoft's site at this URL:</P>
  661. <P><A HREF="http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar.htm">http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar.htm</A></P>
  662. <P>A reference of the available functions is at:</P>
  663. <P><A HREF="http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar_34.htm">http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar_34.htm</A></P>
  664. <P>
  665. <HR>
  666. <H1><A NAME="version history">VERSION HISTORY</A></H1>
  667. <UL>
  668. <LI><STRONG><A NAME="item_031">0.031 (24 Sep 1999)</A></STRONG><BR>
  669.  
  670. <UL>
  671. <LI>
  672. Fixed typo in GenerateCtrlEvent().
  673. <P></P>
  674. <LI>
  675. Converted and added pod documentation (from Jan Dubois <<A HREF="mailto:jand@activestate.com">jand@activestate.com</A>>).
  676. <P></P></UL>
  677. <LI><STRONG><A NAME="item_03">0.03 (07 Apr 1997)</A></STRONG><BR>
  678.  
  679. <UL>
  680. <LI>
  681. Added ``GenerateCtrlEvent'' method.
  682. <P></P>
  683. <LI>
  684. The PLL file now comes in 2 versions, one for Perl version 5.001
  685. (build 110) and one for Perl version 5.003 (build 300 and higher,
  686. EXCEPT 304).
  687. <P></P>
  688. <LI>
  689. added an installation program that will automatically copy the right
  690. version in the right place.
  691. <P></P></UL>
  692. <LI><STRONG><A NAME="item_01">0.01 (09 Feb 1997)</A></STRONG><BR>
  693.  
  694. <UL>
  695. <LI>
  696. First public release.
  697. <P></P></UL>
  698. </UL>
  699. <P>
  700. <HR>
  701. <H1><A NAME="author">AUTHOR</A></H1>
  702. <P>Aldo Calpini <<A HREF="mailto:a.calpini@romagiubileo.it">a.calpini@romagiubileo.it</A>></P>
  703. <P>
  704. <HR>
  705. <H1><A NAME="credits">CREDITS</A></H1>
  706. <P>Thanks to: Jesse Dougherty, Dave Roth, ActiveWare, and the
  707. Perl-Win32-Users community.</P>
  708. <P>
  709. <HR>
  710. <H1><A NAME="disclaimer">DISCLAIMER</A></H1>
  711. <P>This program is FREE; you can redistribute, modify, disassemble, or
  712. even reverse engineer this software at your will.  Keep in mind,
  713. however, that NOTHING IS GUARANTEED to work and everything you do is
  714. AT YOUR OWN RISK - I will not take responsibility for any damage, loss
  715. of money and/or health that may arise from the use of this program!</P>
  716. <P>This is distributed under the terms of Larry Wall's Artistic License.</P>
  717. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  718. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  719. <STRONG><P CLASS=block> Win32::Console - Win32 Console and Character Mode Functions</P></STRONG>
  720. </TD></TR>
  721. </TABLE>
  722.  
  723. </BODY>
  724.  
  725. </HTML>
  726.