home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c495 / 8.ddi / WATCM958.ARJ / NT_H.WPK / WINCON.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-02-16  |  13.5 KB  |  668 lines

  1. /*++ BUILD Version: 0002    // Increment this if a change has global effects
  2.  
  3. Copyright (c) 1989  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     wincon.x
  8.  
  9. Abstract:
  10.  
  11.     This module contains the public data structures, data types,
  12.     and procedures exported by the NT console subsystem.
  13.  
  14. Created:
  15.  
  16.     26-Oct-1990
  17.  
  18. Revision History:
  19.  
  20. --*/
  21.  
  22. #ifndef _WINCON_
  23. #define _WINCON_
  24.  
  25. typedef struct _COORD {
  26.     SHORT X;
  27.     SHORT Y;
  28. } COORD, *PCOORD;
  29.  
  30. typedef struct _SMALL_RECT {
  31.     SHORT Left;
  32.     SHORT Top;
  33.     SHORT Right;
  34.     SHORT Bottom;
  35. } SMALL_RECT, *PSMALL_RECT;
  36.  
  37. typedef struct _KEY_EVENT_RECORD {
  38.     BOOL bKeyDown;
  39.     WORD wRepeatCount;
  40.     WORD wVirtualKeyCode;
  41.     WORD wVirtualScanCode;
  42.     union {
  43.         WCHAR UnicodeChar;
  44.         CHAR   AsciiChar;
  45.     } uChar;
  46.     DWORD dwControlKeyState;
  47. } KEY_EVENT_RECORD, *PKEY_EVENT_RECORD;
  48.  
  49. //
  50. // ControlKeyState flags
  51. //
  52.  
  53. #define RIGHT_ALT_PRESSED     0x0001 // the right alt key is pressed.
  54. #define LEFT_ALT_PRESSED      0x0002 // the left alt key is pressed.
  55. #define RIGHT_CTRL_PRESSED    0x0004 // the right ctrl key is pressed.
  56. #define LEFT_CTRL_PRESSED     0x0008 // the left ctrl key is pressed.
  57. #define SHIFT_PRESSED         0x0010 // the shift key is pressed.
  58. #define NUMLOCK_ON            0x0020 // the numlock light is on.
  59. #define SCROLLLOCK_ON         0x0040 // the scrolllock light is on.
  60. #define CAPSLOCK_ON           0x0080 // the capslock light is on.
  61. #define ENHANCED_KEY          0x0100 // the key is enhanced.
  62.  
  63. typedef struct _MOUSE_EVENT_RECORD {
  64.     COORD dwMousePosition;
  65.     DWORD dwButtonState;
  66.     DWORD dwControlKeyState;
  67.     DWORD dwEventFlags;
  68. } MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;
  69.  
  70. //
  71. // ButtonState flags
  72. //
  73.  
  74. #define FROM_LEFT_1ST_BUTTON_PRESSED    0x0001
  75. #define RIGHTMOST_BUTTON_PRESSED        0x0002
  76. #define FROM_LEFT_2ND_BUTTON_PRESSED    0x0004
  77. #define FROM_LEFT_3RD_BUTTON_PRESSED    0x0008
  78. #define FROM_LEFT_4TH_BUTTON_PRESSED    0x0010
  79.  
  80. //
  81. // EventFlags
  82. //
  83.  
  84. #define MOUSE_MOVED   0x0001
  85. #define DOUBLE_CLICK  0x0002
  86.  
  87. typedef struct _WINDOW_BUFFER_SIZE_RECORD {
  88.     COORD dwSize;
  89. } WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD;
  90.  
  91. typedef struct _MENU_EVENT_RECORD {
  92.     UINT dwCommandId;
  93. } MENU_EVENT_RECORD, *PMENU_EVENT_RECORD;
  94.  
  95. typedef struct _FOCUS_EVENT_RECORD {
  96.     BOOL bSetFocus;
  97. } FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD;
  98.  
  99. typedef struct _INPUT_RECORD {
  100.     WORD EventType;
  101.     WORD __MISSING_ALIGNMENT__;
  102.     union {
  103.         KEY_EVENT_RECORD KeyEvent;
  104.         MOUSE_EVENT_RECORD MouseEvent;
  105.         WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
  106.         MENU_EVENT_RECORD MenuEvent;
  107.         FOCUS_EVENT_RECORD FocusEvent;
  108.     } Event;
  109. } INPUT_RECORD, *PINPUT_RECORD;
  110.  
  111. //
  112. //  EventType flags:
  113. //
  114.  
  115. #define KEY_EVENT         0x0001 // Event contains key event record
  116. #define MOUSE_EVENT       0x0002 // Event contains mouse event record
  117. #define WINDOW_BUFFER_SIZE_EVENT 0x0004 // Event contains window change event record
  118. #define MENU_EVENT 0x0008 // Event contains menu event record
  119. #define FOCUS_EVENT 0x0010 // event contains focus change
  120.  
  121. typedef struct _CHAR_INFO {
  122.     union {
  123.         WCHAR UnicodeChar;
  124.         CHAR   AsciiChar;
  125.     } Char;
  126.     WORD Attributes;
  127. } CHAR_INFO, *PCHAR_INFO;
  128.  
  129. //
  130. // Attributes flags:
  131. //
  132.  
  133. #define FOREGROUND_BLUE      0x0001 // text color contains blue.
  134. #define FOREGROUND_GREEN     0x0002 // text color contains green.
  135. #define FOREGROUND_RED       0x0004 // text color contains red.
  136. #define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
  137. #define BACKGROUND_BLUE      0x0010 // background color contains blue.
  138. #define BACKGROUND_GREEN     0x0020 // background color contains green.
  139. #define BACKGROUND_RED       0x0040 // background color contains red.
  140. #define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
  141.  
  142.  
  143. typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
  144.     COORD dwSize;
  145.     COORD dwCursorPosition;
  146.     WORD  wAttributes;
  147.     SMALL_RECT srWindow;
  148.     COORD dwMaximumWindowSize;
  149. } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
  150.  
  151. typedef struct _CONSOLE_CURSOR_INFO {
  152.     DWORD  dwSize;
  153.     BOOL   bVisible;
  154. } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
  155.  
  156. //
  157. // typedef for ctrl-c handler routines
  158. //
  159.  
  160. typedef
  161. BOOL
  162. (WINAPI *PHANDLER_ROUTINE)(
  163.     DWORD CtrlType
  164.     );
  165.  
  166. #define CTRL_C_EVENT        0
  167. #define CTRL_BREAK_EVENT    1
  168. #define CTRL_CLOSE_EVENT    2
  169. // 3 is reserved!
  170. // 4 is reserved!
  171. #define CTRL_LOGOFF_EVENT   5
  172. #define CTRL_SHUTDOWN_EVENT 6
  173.  
  174. //
  175. //  Input Mode flags:
  176. //
  177.  
  178. #define ENABLE_PROCESSED_INPUT 0x0001
  179. #define ENABLE_LINE_INPUT      0x0002
  180. #define ENABLE_ECHO_INPUT      0x0004
  181. #define ENABLE_WINDOW_INPUT    0x0008
  182. #define ENABLE_MOUSE_INPUT     0x0010
  183.  
  184. //
  185. // Output Mode flags:
  186. //
  187.  
  188. #define ENABLE_PROCESSED_OUTPUT  0x0001
  189. #define ENABLE_WRAP_AT_EOL_OUTPUT  0x0002
  190.  
  191. //
  192. // direct API definitions.
  193. //
  194.  
  195. BOOL
  196. WINAPI
  197. PeekConsoleInputA(
  198.     HANDLE hConsoleInput,
  199.     PINPUT_RECORD lpBuffer,
  200.     DWORD nLength,
  201.     LPDWORD lpNumberOfEventsRead
  202.     );
  203. BOOL
  204. WINAPI
  205. PeekConsoleInputW(
  206.     HANDLE hConsoleInput,
  207.     PINPUT_RECORD lpBuffer,
  208.     DWORD nLength,
  209.     LPDWORD lpNumberOfEventsRead
  210.     );
  211. #ifdef UNICODE
  212. #define PeekConsoleInput PeekConsoleInputW
  213. #else
  214. #define PeekConsoleInput PeekConsoleInputA
  215. #endif // !UNICODE
  216.  
  217. BOOL
  218. WINAPI
  219. ReadConsoleInputA(
  220.     HANDLE hConsoleInput,
  221.     PINPUT_RECORD lpBuffer,
  222.     DWORD nLength,
  223.     LPDWORD lpNumberOfEventsRead
  224.     );
  225. BOOL
  226. WINAPI
  227. ReadConsoleInputW(
  228.     HANDLE hConsoleInput,
  229.     PINPUT_RECORD lpBuffer,
  230.     DWORD nLength,
  231.     LPDWORD lpNumberOfEventsRead
  232.     );
  233. #ifdef UNICODE
  234. #define ReadConsoleInput ReadConsoleInputW
  235. #else
  236. #define ReadConsoleInput ReadConsoleInputA
  237. #endif // !UNICODE
  238.  
  239. BOOL
  240. WINAPI
  241. WriteConsoleInputA(
  242.     HANDLE hConsoleInput,
  243.     PINPUT_RECORD lpBuffer,
  244.     DWORD nLength,
  245.     LPDWORD lpNumberOfEventsWritten
  246.     );
  247. BOOL
  248. WINAPI
  249. WriteConsoleInputW(
  250.     HANDLE hConsoleInput,
  251.     PINPUT_RECORD lpBuffer,
  252.     DWORD nLength,
  253.     LPDWORD lpNumberOfEventsWritten
  254.     );
  255. #ifdef UNICODE
  256. #define WriteConsoleInput WriteConsoleInputW
  257. #else
  258. #define WriteConsoleInput WriteConsoleInputA
  259. #endif // !UNICODE
  260.  
  261. BOOL
  262. WINAPI
  263. ReadConsoleOutputA(
  264.     HANDLE hConsoleOutput,
  265.     PCHAR_INFO lpBuffer,
  266.     COORD dwBufferSize,
  267.     COORD dwBufferCoord,
  268.     PSMALL_RECT lpReadRegion
  269.     );
  270. BOOL
  271. WINAPI
  272. ReadConsoleOutputW(
  273.     HANDLE hConsoleOutput,
  274.     PCHAR_INFO lpBuffer,
  275.     COORD dwBufferSize,
  276.     COORD dwBufferCoord,
  277.     PSMALL_RECT lpReadRegion
  278.     );
  279. #ifdef UNICODE
  280. #define ReadConsoleOutput ReadConsoleOutputW
  281. #else
  282. #define ReadConsoleOutput ReadConsoleOutputA
  283. #endif // !UNICODE
  284.  
  285. BOOL
  286. WINAPI
  287. WriteConsoleOutputA(
  288.     HANDLE hConsoleOutput,
  289.     PCHAR_INFO lpBuffer,
  290.     COORD dwBufferSize,
  291.     COORD dwBufferCoord,
  292.     PSMALL_RECT lpWriteRegion
  293.     );
  294. BOOL
  295. WINAPI
  296. WriteConsoleOutputW(
  297.     HANDLE hConsoleOutput,
  298.     PCHAR_INFO lpBuffer,
  299.     COORD dwBufferSize,
  300.     COORD dwBufferCoord,
  301.     PSMALL_RECT lpWriteRegion
  302.     );
  303. #ifdef UNICODE
  304. #define WriteConsoleOutput WriteConsoleOutputW
  305. #else
  306. #define WriteConsoleOutput WriteConsoleOutputA
  307. #endif // !UNICODE
  308.  
  309. BOOL
  310. WINAPI
  311. ReadConsoleOutputCharacterA(
  312.     HANDLE hConsoleOutput,
  313.     LPSTR lpCharacter,
  314.     DWORD nLength,
  315.     COORD dwReadCoord,
  316.     LPDWORD lpNumberOfCharsRead
  317.     );
  318. BOOL
  319. WINAPI
  320. ReadConsoleOutputCharacterW(
  321.     HANDLE hConsoleOutput,
  322.     LPWSTR lpCharacter,
  323.     DWORD nLength,
  324.     COORD dwReadCoord,
  325.     LPDWORD lpNumberOfCharsRead
  326.     );
  327. #ifdef UNICODE
  328. #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
  329. #else
  330. #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
  331. #endif // !UNICODE
  332.  
  333. BOOL
  334. WINAPI
  335. ReadConsoleOutputAttribute(
  336.     HANDLE hConsoleOutput,
  337.     LPWORD lpAttribute,
  338.     DWORD nLength,
  339.     COORD dwReadCoord,
  340.     LPDWORD lpNumberOfAttrsRead
  341.     );
  342.  
  343. BOOL
  344. WINAPI
  345. WriteConsoleOutputCharacterA(
  346.     HANDLE hConsoleOutput,
  347.     LPSTR lpCharacter,
  348.     DWORD nLength,
  349.     COORD dwWriteCoord,
  350.     LPDWORD lpNumberOfCharsWritten
  351.     );
  352. BOOL
  353. WINAPI
  354. WriteConsoleOutputCharacterW(
  355.     HANDLE hConsoleOutput,
  356.     LPWSTR lpCharacter,
  357.     DWORD nLength,
  358.     COORD dwWriteCoord,
  359.     LPDWORD lpNumberOfCharsWritten
  360.     );
  361. #ifdef UNICODE
  362. #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
  363. #else
  364. #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
  365. #endif // !UNICODE
  366.  
  367. BOOL
  368. WINAPI
  369. WriteConsoleOutputAttribute(
  370.     HANDLE hConsoleOutput,
  371.     LPWORD lpAttribute,
  372.     DWORD nLength,
  373.     COORD dwWriteCoord,
  374.     LPDWORD lpNumberOfAttrsWritten
  375.     );
  376.  
  377. BOOL
  378. WINAPI
  379. FillConsoleOutputCharacterA(
  380.     HANDLE hConsoleOutput,
  381.     CHAR  cCharacter,
  382.     DWORD  nLength,
  383.     COORD  dwWriteCoord,
  384.     LPDWORD lpNumberOfCharsWritten
  385.     );
  386. BOOL
  387. WINAPI
  388. FillConsoleOutputCharacterW(
  389.     HANDLE hConsoleOutput,
  390.     WCHAR  cCharacter,
  391.     DWORD  nLength,
  392.     COORD  dwWriteCoord,
  393.     LPDWORD lpNumberOfCharsWritten
  394.     );
  395. #ifdef UNICODE
  396. #define FillConsoleOutputCharacter FillConsoleOutputCharacterW
  397. #else
  398. #define FillConsoleOutputCharacter FillConsoleOutputCharacterA
  399. #endif // !UNICODE
  400.  
  401. BOOL
  402. WINAPI
  403. FillConsoleOutputAttribute(
  404.     HANDLE hConsoleOutput,
  405.     WORD   wAttribute,
  406.     DWORD  nLength,
  407.     COORD  dwWriteCoord,
  408.     LPDWORD lpNumberOfAttrsWritten
  409.     );
  410.  
  411. BOOL
  412. WINAPI
  413. GetConsoleMode(
  414.     HANDLE hConsoleHandle,
  415.     LPDWORD lpMode
  416.     );
  417.  
  418. BOOL
  419. WINAPI
  420. GetNumberOfConsoleInputEvents(
  421.     HANDLE hConsoleInput,
  422.     LPDWORD lpNumberOfEvents
  423.     );
  424.  
  425. BOOL
  426. WINAPI
  427. GetConsoleScreenBufferInfo(
  428.     HANDLE hConsoleOutput,
  429.     PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
  430.     );
  431.  
  432. COORD
  433. WINAPI
  434. GetLargestConsoleWindowSize(
  435.     HANDLE hConsoleOutput
  436.     );
  437.  
  438. BOOL
  439. WINAPI
  440. GetConsoleCursorInfo(
  441.     HANDLE hConsoleOutput,
  442.     PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
  443.     );
  444.  
  445. BOOL
  446. WINAPI
  447. GetNumberOfConsoleMouseButtons(
  448.     LPDWORD lpNumberOfMouseButtons
  449.     );
  450.  
  451. BOOL
  452. WINAPI
  453. SetConsoleMode(
  454.     HANDLE hConsoleHandle,
  455.     DWORD dwMode
  456.     );
  457.  
  458. BOOL
  459. WINAPI
  460. SetConsoleActiveScreenBuffer(
  461.     HANDLE hConsoleOutput
  462.     );
  463.  
  464. BOOL
  465. WINAPI
  466. FlushConsoleInputBuffer(
  467.     HANDLE hConsoleInput
  468.     );
  469.  
  470. BOOL
  471. WINAPI
  472. SetConsoleScreenBufferSize(
  473.     HANDLE hConsoleOutput,
  474.     COORD dwSize
  475.     );
  476.  
  477. BOOL
  478. WINAPI
  479. SetConsoleCursorPosition(
  480.     HANDLE hConsoleOutput,
  481.     COORD dwCursorPosition
  482.     );
  483.  
  484. BOOL
  485. WINAPI
  486. SetConsoleCursorInfo(
  487.     HANDLE hConsoleOutput,
  488.     PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
  489.     );
  490.  
  491. BOOL
  492. WINAPI
  493. ScrollConsoleScreenBufferA(
  494.     HANDLE hConsoleOutput,
  495.     PSMALL_RECT lpScrollRectangle,
  496.     PSMALL_RECT lpClipRectangle,
  497.     COORD dwDestinationOrigin,
  498.     PCHAR_INFO lpFill
  499.     );
  500. BOOL
  501. WINAPI
  502. ScrollConsoleScreenBufferW(
  503.     HANDLE hConsoleOutput,
  504.     PSMALL_RECT lpScrollRectangle,
  505.     PSMALL_RECT lpClipRectangle,
  506.     COORD dwDestinationOrigin,
  507.     PCHAR_INFO lpFill
  508.     );
  509. #ifdef UNICODE
  510. #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
  511. #else
  512. #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
  513. #endif // !UNICODE
  514.  
  515. BOOL
  516. WINAPI
  517. SetConsoleWindowInfo(
  518.     HANDLE hConsoleOutput,
  519.     BOOL bAbsolute,
  520.     PSMALL_RECT lpConsoleWindow
  521.     );
  522.  
  523. BOOL
  524. WINAPI
  525. SetConsoleTextAttribute(
  526.     HANDLE hConsoleOutput,
  527.     WORD wAttributes
  528.     );
  529.  
  530. BOOL
  531. WINAPI
  532. SetConsoleCtrlHandler(
  533.     PHANDLER_ROUTINE HandlerRoutine,
  534.     BOOL Add
  535.     );
  536.  
  537. BOOL
  538. WINAPI
  539. GenerateConsoleCtrlEvent(
  540.     DWORD dwCtrlEvent,
  541.     DWORD dwProcessGroupId
  542.     );
  543.  
  544. BOOL
  545. WINAPI
  546. AllocConsole( VOID );
  547.  
  548. BOOL
  549. WINAPI
  550. FreeConsole( VOID );
  551.  
  552.  
  553. DWORD
  554. WINAPI
  555. GetConsoleTitleA(
  556.     LPSTR lpConsoleTitle,
  557.     DWORD nSize
  558.     );
  559. DWORD
  560. WINAPI
  561. GetConsoleTitleW(
  562.     LPWSTR lpConsoleTitle,
  563.     DWORD nSize
  564.     );
  565. #ifdef UNICODE
  566. #define GetConsoleTitle GetConsoleTitleW
  567. #else
  568. #define GetConsoleTitle GetConsoleTitleA
  569. #endif // !UNICODE
  570.  
  571. BOOL
  572. WINAPI
  573. SetConsoleTitleA(
  574.     LPSTR lpConsoleTitle
  575.     );
  576. BOOL
  577. WINAPI
  578. SetConsoleTitleW(
  579.     LPWSTR lpConsoleTitle
  580.     );
  581. #ifdef UNICODE
  582. #define SetConsoleTitle SetConsoleTitleW
  583. #else
  584. #define SetConsoleTitle SetConsoleTitleA
  585. #endif // !UNICODE
  586.  
  587. BOOL
  588. WINAPI
  589. ReadConsoleA(
  590.     HANDLE hConsoleInput,
  591.     LPVOID lpBuffer,
  592.     DWORD nNumberOfCharsToRead,
  593.     LPDWORD lpNumberOfCharsRead,
  594.     LPVOID lpReserved
  595.     );
  596. BOOL
  597. WINAPI
  598. ReadConsoleW(
  599.     HANDLE hConsoleInput,
  600.     LPVOID lpBuffer,
  601.     DWORD nNumberOfCharsToRead,
  602.     LPDWORD lpNumberOfCharsRead,
  603.     LPVOID lpReserved
  604.     );
  605. #ifdef UNICODE
  606. #define ReadConsole ReadConsoleW
  607. #else
  608. #define ReadConsole ReadConsoleA
  609. #endif // !UNICODE
  610.  
  611. BOOL
  612. WINAPI
  613. WriteConsoleA(
  614.     HANDLE hConsoleOutput,
  615.     CONST VOID *lpBuffer,
  616.     DWORD nNumberOfCharsToWrite,
  617.     LPDWORD lpNumberOfCharsWritten,
  618.     LPVOID lpReserved
  619.     );
  620. BOOL
  621. WINAPI
  622. WriteConsoleW(
  623.     HANDLE hConsoleOutput,
  624.     CONST VOID *lpBuffer,
  625.     DWORD nNumberOfCharsToWrite,
  626.     LPDWORD lpNumberOfCharsWritten,
  627.     LPVOID lpReserved
  628.     );
  629. #ifdef UNICODE
  630. #define WriteConsole WriteConsoleW
  631. #else
  632. #define WriteConsole WriteConsoleA
  633. #endif // !UNICODE
  634.  
  635. #define CONSOLE_TEXTMODE_BUFFER  1
  636.  
  637. HANDLE
  638. WINAPI
  639. CreateConsoleScreenBuffer(
  640.     DWORD dwDesiredAccess,
  641.     DWORD dwShareMode,
  642.     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  643.     DWORD dwFlags,
  644.     PVOID lpScreenBufferData
  645.     );
  646.  
  647. UINT
  648. WINAPI
  649. GetConsoleCP( VOID );
  650.  
  651. BOOL
  652. WINAPI
  653. SetConsoleCP(
  654.     UINT wCodePageID
  655.     );
  656.  
  657. UINT
  658. WINAPI
  659. GetConsoleOutputCP( VOID );
  660.  
  661. BOOL
  662. WINAPI
  663. SetConsoleOutputCP(
  664.     UINT wCodePageID
  665.     );
  666.  
  667. #endif // _WINCON_
  668.