wincon.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. /*
  2. * Copyright (C) the Wine project
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. */
  18. #ifndef __WINE_WINCON_H
  19. #define __WINE_WINCON_H
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. #define CTRL_C_EVENT 0
  24. #define CTRL_BREAK_EVENT 1
  25. #define CTRL_CLOSE_EVENT 2
  26. #define CTRL_LOGOFF_EVENT 5
  27. #define CTRL_SHUTDOWN_EVENT 6
  28. /* Console Mode flags */
  29. #define ENABLE_PROCESSED_INPUT 0x01
  30. #define ENABLE_LINE_INPUT 0x02
  31. #define ENABLE_ECHO_INPUT 0x04
  32. #define ENABLE_WINDOW_INPUT 0x08
  33. #define ENABLE_MOUSE_INPUT 0x10
  34. #define ENABLE_PROCESSED_OUTPUT 0x01
  35. #define ENABLE_WRAP_AT_EOL_OUTPUT 0x02
  36. typedef BOOL (WINAPI *PHANDLER_ROUTINE)(DWORD dwCtrlType);
  37. /* Attributes flags: */
  38. #define FOREGROUND_BLUE 0x0001 /* text color contains blue. */
  39. #define FOREGROUND_GREEN 0x0002 /* text color contains green. */
  40. #define FOREGROUND_RED 0x0004 /* text color contains red. */
  41. #define FOREGROUND_INTENSITY 0x0008 /* text color is intensified. */
  42. #define BACKGROUND_BLUE 0x0010 /* background color contains blue. */
  43. #define BACKGROUND_GREEN 0x0020 /* background color contains green. */
  44. #define BACKGROUND_RED 0x0040 /* background color contains red. */
  45. #define BACKGROUND_INTENSITY 0x0080 /* background color is intensified. */
  46. typedef struct _CONSOLE_CURSOR_INFO {
  47. DWORD dwSize; /* Between 1 & 100 for percentage of cell filled */
  48. BOOL bVisible; /* Visibility of cursor */
  49. } CONSOLE_CURSOR_INFO, *LPCONSOLE_CURSOR_INFO;
  50. typedef struct tagCOORD
  51. {
  52. SHORT X;
  53. SHORT Y;
  54. } COORD, *LPCOORD;
  55. typedef struct tagSMALL_RECT
  56. {
  57. SHORT Left;
  58. SHORT Top;
  59. SHORT Right;
  60. SHORT Bottom;
  61. } SMALL_RECT,*LPSMALL_RECT;
  62. typedef struct tagCONSOLE_SCREEN_BUFFER_INFO
  63. {
  64. COORD dwSize;
  65. COORD dwCursorPosition;
  66. WORD wAttributes;
  67. SMALL_RECT srWindow;
  68. COORD dwMaximumWindowSize;
  69. } CONSOLE_SCREEN_BUFFER_INFO,*LPCONSOLE_SCREEN_BUFFER_INFO;
  70. typedef struct tagCHAR_INFO
  71. {
  72. union
  73. {
  74. WCHAR UnicodeChar;
  75. CHAR AsciiChar;
  76. } Char;
  77. WORD Attributes;
  78. } CHAR_INFO,*LPCHAR_INFO;
  79. typedef struct tagKEY_EVENT_RECORD
  80. {
  81. BOOL bKeyDown; /* 04 */
  82. WORD wRepeatCount; /* 08 */
  83. WORD wVirtualKeyCode; /* 0A */
  84. WORD wVirtualScanCode; /* 0C */
  85. union /* 0E */
  86. {
  87. WCHAR UnicodeChar; /* 0E */
  88. CHAR AsciiChar; /* 0E */
  89. } uChar;
  90. DWORD dwControlKeyState; /* 10 */
  91. } KEY_EVENT_RECORD,*LPKEY_EVENT_RECORD;
  92. /* dwControlKeyState bitmask */
  93. #define RIGHT_ALT_PRESSED 0x0001
  94. #define LEFT_ALT_PRESSED 0x0002
  95. #define RIGHT_CTRL_PRESSED 0x0004
  96. #define LEFT_CTRL_PRESSED 0x0008
  97. #define SHIFT_PRESSED 0x0010
  98. #define NUMLOCK_ON 0x0020
  99. #define SCROLLLOCK_ON 0x0040
  100. #define CAPSLOCK_ON 0x0080
  101. #define ENHANCED_KEY 0x0100
  102. typedef struct tagMOUSE_EVENT_RECORD
  103. {
  104. COORD dwMousePosition;
  105. DWORD dwButtonState;
  106. DWORD dwControlKeyState;
  107. DWORD dwEventFlags;
  108. } MOUSE_EVENT_RECORD,*LPMOUSE_EVENT_RECORD;
  109. #define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001
  110. #define RIGHTMOST_BUTTON_PRESSED 0x0002
  111. #define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004
  112. #define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008
  113. #define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010
  114. #define MOUSE_MOVED 0x0001
  115. #define DOUBLE_CLICK 0x0002
  116. #define MOUSE_WHEELED 0x0004
  117. typedef struct tagWINDOW_BUFFER_SIZE_RECORD
  118. {
  119. COORD dwSize;
  120. } WINDOW_BUFFER_SIZE_RECORD,*LPWINDOW_BUFFER_SIZE_RECORD;
  121. typedef struct tagMENU_EVENT_RECORD
  122. {
  123. UINT dwCommandId; /* perhaps UINT16 ??? */
  124. } MENU_EVENT_RECORD,*LPMENU_EVENT_RECORD;
  125. typedef struct tagFOCUS_EVENT_RECORD
  126. {
  127. BOOL bSetFocus; /* perhaps BOOL16 ??? */
  128. } FOCUS_EVENT_RECORD,*LPFOCUS_EVENT_RECORD;
  129. typedef struct tagINPUT_RECORD
  130. {
  131. WORD EventType; /* 00 */
  132. union
  133. {
  134. KEY_EVENT_RECORD KeyEvent;
  135. MOUSE_EVENT_RECORD MouseEvent;
  136. WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
  137. MENU_EVENT_RECORD MenuEvent;
  138. FOCUS_EVENT_RECORD FocusEvent;
  139. } Event;
  140. } INPUT_RECORD,*PINPUT_RECORD;
  141. /* INPUT_RECORD.wEventType */
  142. #define KEY_EVENT 0x01
  143. #define MOUSE_EVENT 0x02
  144. #define WINDOW_BUFFER_SIZE_EVENT 0x04
  145. #define MENU_EVENT 0x08
  146. #define FOCUS_EVENT 0x10
  147. #define CONSOLE_TEXTMODE_BUFFER 1
  148. #ifdef __i386__
  149. /* Note: this should return a COORD, but calling convention for returning
  150. * structures is different between Windows and gcc on i386. */
  151. DWORD WINAPI GetLargestConsoleWindowSize(HANDLE);
  152. inline static COORD __wine_GetLargestConsoleWindowSize_wrapper(HANDLE h)
  153. {
  154. union {
  155. COORD c;
  156. DWORD dw;
  157. } u;
  158. u.dw = GetLargestConsoleWindowSize(h);
  159. return u.c;
  160. }
  161. #define GetLargestConsoleWindowSize(h) __wine_GetLargestConsoleWindowSize_wrapper(h)
  162. #else /* __i386__ */
  163. COORD WINAPI GetLargestConsoleWindowSize(HANDLE);
  164. #endif /* __i386__ */
  165. BOOL WINAPI AllocConsole(VOID);
  166. HANDLE WINAPI CreateConsoleScreenBuffer( DWORD dwDesiredAccess, DWORD dwShareMode,
  167. LPSECURITY_ATTRIBUTES sa, DWORD dwFlags,
  168. LPVOID lpScreenBufferData);
  169. BOOL WINAPI FillConsoleOutputAttribute( HANDLE hConsoleOutput, WORD wAttribute, DWORD nLength,
  170. COORD dwCoord, LPDWORD lpNumAttrsWritten);
  171. BOOL WINAPI FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,LPDWORD);
  172. BOOL WINAPI FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,LPDWORD);
  173. #define FillConsoleOutputCharacter WINELIB_NAME_AW(FillConsoleOutputCharacter)
  174. BOOL WINAPI FlushConsoleInputBuffer( HANDLE handle);
  175. BOOL WINAPI FreeConsole(VOID);
  176. BOOL WINAPI GenerateConsoleCtrlEvent( DWORD dwCtrlEvent, DWORD dwProcessGroupID);
  177. UINT WINAPI GetConsoleCP(VOID);
  178. BOOL WINAPI GetConsoleCursorInfo( HANDLE hcon, LPCONSOLE_CURSOR_INFO cinfo);
  179. BOOL WINAPI GetConsoleMode( HANDLE hcon,LPDWORD mode);
  180. UINT WINAPI GetConsoleOutputCP(VOID);
  181. BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE hConsoleOutput,
  182. LPCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);
  183. DWORD WINAPI GetConsoleTitleA(LPSTR title,DWORD size);
  184. DWORD WINAPI GetConsoleTitleW(LPWSTR title, DWORD size);
  185. #define GetConsoleTitle WINELIB_NAME_AW(GetConsoleTitle)
  186. HWND WINAPI GetConsoleWindow(void);
  187. BOOL WINAPI GetNumberOfConsoleInputEvents( HANDLE hcon,LPDWORD nrofevents);
  188. BOOL WINAPI GetNumberOfConsoleMouseButtons(LPDWORD nrofbuttons);
  189. BOOL WINAPI PeekConsoleInputA( HANDLE handle, PINPUT_RECORD buffer, DWORD count, LPDWORD read );
  190. BOOL WINAPI PeekConsoleInputW( HANDLE handle, PINPUT_RECORD buffer, DWORD count, LPDWORD read );
  191. #define PeekConsoleInput WINELIB_NAME_AW(PeekConsoleInput)
  192. BOOL WINAPI ReadConsoleA(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead,
  193. LPDWORD lpNumberOfCharsRead, LPVOID lpReserved);
  194. BOOL WINAPI ReadConsoleW(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead,
  195. LPDWORD lpNumberOfCharsRead, LPVOID lpReserved);
  196. #define ReadConsole WINELIB_NAME_AW(ReadConsole)
  197. BOOL WINAPI ReadConsoleInputA(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength,
  198. LPDWORD lpNumberOfEventsRead);
  199. BOOL WINAPI ReadConsoleInputW(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength,
  200. LPDWORD lpNumberOfEventsRead);
  201. #define ReadConsoleInput WINELIB_NAME_AW(ReadConsoleInput)
  202. BOOL WINAPI ReadConsoleOutputA( HANDLE hConsoleOutput, LPCHAR_INFO lpBuffer, COORD dwBufferSize,
  203. COORD dwBufferCoord, LPSMALL_RECT lpReadRegion );
  204. BOOL WINAPI ReadConsoleOutputW( HANDLE hConsoleOutput, LPCHAR_INFO lpBuffer, COORD dwBufferSize,
  205. COORD dwBufferCoord, LPSMALL_RECT lpReadRegion );
  206. #define ReadConsoleOutput WINELIB_NAME_AW(ReadConsoleOutput)
  207. BOOL WINAPI ReadConsoleOutputAttribute( HANDLE hConsoleOutput, LPWORD lpAttribute, DWORD nLength,
  208. COORD dwReadCoord, LPDWORD lpNumberOfAttrsRead);
  209. BOOL WINAPI ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,LPDWORD);
  210. BOOL WINAPI ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,LPDWORD);
  211. #define ReadConsoleOutputCharacter WINELIB_NAME_AW(ReadConsoleOutputCharacter)
  212. BOOL WINAPI ScrollConsoleScreenBufferA( HANDLE hConsoleOutput, LPSMALL_RECT lpScrollRect,
  213. LPSMALL_RECT lpClipRect, COORD dwDestOrigin,
  214. LPCHAR_INFO lpFill);
  215. BOOL WINAPI ScrollConsoleScreenBufferW( HANDLE hConsoleOutput, LPSMALL_RECT lpScrollRect,
  216. LPSMALL_RECT lpClipRect, COORD dwDestOrigin,
  217. LPCHAR_INFO lpFill);
  218. #define ScrollConsoleScreenBuffer WINELIB_NAME_AW(ScrollConsoleScreenBuffer)
  219. BOOL WINAPI SetConsoleActiveScreenBuffer( HANDLE hConsoleOutput);
  220. BOOL WINAPI SetConsoleCP(UINT cp);
  221. BOOL WINAPI SetConsoleCtrlHandler( PHANDLER_ROUTINE func, BOOL add);
  222. BOOL WINAPI SetConsoleCursorInfo( HANDLE hcon, LPCONSOLE_CURSOR_INFO cinfo);
  223. BOOL WINAPI SetConsoleCursorPosition(HANDLE,COORD);
  224. BOOL WINAPI SetConsoleMode( HANDLE hcon, DWORD mode);
  225. BOOL WINAPI SetConsoleOutputCP(UINT cp);
  226. BOOL WINAPI SetConsoleScreenBufferSize(HANDLE hConsoleOutput, COORD dwSize);
  227. BOOL WINAPI SetConsoleTextAttribute( HANDLE hConsoleOutput,WORD wAttr);
  228. BOOL WINAPI SetConsoleTitleA(LPCSTR title);
  229. BOOL WINAPI SetConsoleTitleW(LPCWSTR title);
  230. #define SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle)
  231. BOOL WINAPI SetConsoleWindowInfo( HANDLE hcon, BOOL bAbsolute, LPSMALL_RECT window);
  232. BOOL WINAPI WriteConsoleA(HANDLE,CONST VOID *,DWORD,LPDWORD,LPVOID);
  233. BOOL WINAPI WriteConsoleW(HANDLE, CONST VOID *lpBuffer, DWORD,LPDWORD,LPVOID);
  234. #define WriteConsole WINELIB_NAME_AW(WriteConsole)
  235. BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD *,DWORD,LPDWORD);
  236. BOOL WINAPI WriteConsoleInputW(HANDLE,const INPUT_RECORD *,DWORD,LPDWORD);
  237. #define WriteConsoleInput WINELIB_NAME_AW(WriteConsoleInput)
  238. BOOL WINAPI WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,LPSMALL_RECT);
  239. BOOL WINAPI WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,LPSMALL_RECT);
  240. #define WriteConsoleOutput WINELIB_NAME_AW(WriteConsoleOutput)
  241. BOOL WINAPI WriteConsoleOutputAttribute(HANDLE,CONST WORD *,DWORD,COORD,LPDWORD);
  242. BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,LPDWORD);
  243. BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,LPDWORD);
  244. #define WriteConsoleOutputCharacter WINELIB_NAME_AW(WriteConsoleOutputCharacter)
  245. #ifdef __cplusplus
  246. }
  247. #endif
  248. #endif /* __WINE_WINCON_H */