Differences From Artifact [5ebbf537eec215cc]:
- File
src/win32/wincon.d
- 2011-02-23 12:53:16 - part of checkin [c2b7a98c21] on branch trunk - Initial import (user: kinaba) [annotate]
To Artifact [a1d2dfcf9ddedace]:
- File
src/win32/wincon.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
1 +/***********************************************************************\
2 +* wincon.d *
3 +* *
4 +* Windows API header module *
5 +* *
6 +* Translated from MinGW Windows headers *
7 +* *
8 +* Placed into public domain *
9 +\***********************************************************************/
1 10 module win32.wincon;
2 -
3 -// Translated from Microsoft Platform SDK August 2001 Edition
4 -// by Y.Tomino
5 -
6 -import win32.windef;
7 -import win32.winbase;
8 -
9 -// #ifndef _WINCON_
10 -// #define _WINCON_
11 +pragma(lib, "kernel32.lib");
12 +
13 +private import win32.w32api, win32.windef;
14 +
15 +// FIXME: clean up Windows version support
16 +
17 +enum {
18 + FOREGROUND_BLUE = 1,
19 + FOREGROUND_GREEN = 2,
20 + FOREGROUND_RED = 4,
21 + FOREGROUND_INTENSITY = 8,
22 + BACKGROUND_BLUE = 16,
23 + BACKGROUND_GREEN = 32,
24 + BACKGROUND_RED = 64,
25 + BACKGROUND_INTENSITY = 128
26 +}
27 +
28 +static if (_WIN32_WINNT >= 0x0501) {
29 + enum {
30 + CONSOLE_FULLSCREEN_MODE = 1,
31 + CONSOLE_WINDOWED_MODE = 0
32 + }
33 +}
34 +
35 +enum {
36 + CTRL_C_EVENT = 0,
37 + CTRL_BREAK_EVENT = 1,
38 + CTRL_CLOSE_EVENT = 2,
39 + CTRL_LOGOFF_EVENT = 5,
40 + CTRL_SHUTDOWN_EVENT = 6
41 +}
42 +
43 +enum {
44 + ENABLE_PROCESSED_INPUT = 1,
45 + ENABLE_LINE_INPUT = 2,
46 + ENABLE_ECHO_INPUT = 4,
47 + ENABLE_WINDOW_INPUT = 8,
48 + ENABLE_MOUSE_INPUT = 16
49 +}
50 +
51 +enum {
52 + ENABLE_PROCESSED_OUTPUT = 1,
53 + ENABLE_WRAP_AT_EOL_OUTPUT = 2
54 +}
55 +
56 +enum {
57 + KEY_EVENT = 1,
58 + MOUSE_EVENT = 2,
59 + WINDOW_BUFFER_SIZE_EVENT = 4,
60 + MENU_EVENT = 8,
61 + FOCUS_EVENT = 16
62 +}
63 +enum {
64 + RIGHT_ALT_PRESSED = 1,
65 + LEFT_ALT_PRESSED = 2,
66 + RIGHT_CTRL_PRESSED = 4,
67 + LEFT_CTRL_PRESSED = 8,
68 + SHIFT_PRESSED = 16,
69 + NUMLOCK_ON = 32,
70 + SCROLLLOCK_ON = 64,
71 + CAPSLOCK_ON = 128,
72 + ENHANCED_KEY = 256
73 +}
74 +enum {
75 + FROM_LEFT_1ST_BUTTON_PRESSED = 1,
76 + RIGHTMOST_BUTTON_PRESSED = 2,
77 + FROM_LEFT_2ND_BUTTON_PRESSED = 4,
78 + FROM_LEFT_3RD_BUTTON_PRESSED = 8,
79 + FROM_LEFT_4TH_BUTTON_PRESSED = 16
80 +}
81 +
82 +enum {
83 + MOUSE_MOVED = 1,
84 + DOUBLE_CLICK = 2,
85 + MOUSE_WHEELED = 4
86 +}
87 +
88 +struct CHAR_INFO {
89 + union _Char {
90 + WCHAR UnicodeChar;
91 + CHAR AsciiChar;
92 + }
93 + _Char Char;
94 + WORD Attributes;
95 +}
96 +alias CHAR_INFO* PCHAR_INFO;
97 +
98 +struct SMALL_RECT {
99 + SHORT Left;
100 + SHORT Top;
101 + SHORT Right;
102 + SHORT Bottom;
103 +}
104 +alias SMALL_RECT* PSMALL_RECT;
105 +
106 +struct CONSOLE_CURSOR_INFO {
107 + DWORD dwSize;
108 + BOOL bVisible;
109 +}
110 +alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO;
111 +
112 +struct COORD {
113 + SHORT X;
114 + SHORT Y;
115 +}
116 +alias COORD* PCOORD;
117 +
118 +struct CONSOLE_FONT_INFO {
119 + DWORD nFont;
120 + COORD dwFontSize;
121 +}
122 +alias CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO;
123 +
124 +struct CONSOLE_SCREEN_BUFFER_INFO {
125 + COORD dwSize;
126 + COORD dwCursorPosition;
127 + WORD wAttributes;
128 + SMALL_RECT srWindow;
129 + COORD dwMaximumWindowSize;
130 +}
131 +alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO;
132 +
133 +alias BOOL function(DWORD) PHANDLER_ROUTINE;
134 +
135 +struct KEY_EVENT_RECORD {
136 + BOOL bKeyDown;
137 + WORD wRepeatCount;
138 + WORD wVirtualKeyCode;
139 + WORD wVirtualScanCode;
140 + union _uChar {
141 + WCHAR UnicodeChar;
142 + CHAR AsciiChar;
143 + }
144 + _uChar uChar;
145 + DWORD dwControlKeyState;
146 +}
147 +
148 +struct MOUSE_EVENT_RECORD {
149 + COORD dwMousePosition;
150 + DWORD dwButtonState;
151 + DWORD dwControlKeyState;
152 + DWORD dwEventFlags;
153 +}
11 154
12 -// #ifdef __cplusplus
13 -// extern "C" {
14 -// #endif
15 -
16 -struct _COORD {
17 - SHORT X;
18 - SHORT Y;
155 +struct WINDOW_BUFFER_SIZE_RECORD {
156 + COORD dwSize;
19 157 }
20 -alias _COORD COORD;
21 -alias _COORD* PCOORD;
22 158
23 -struct _SMALL_RECT {
24 - SHORT Left;
25 - SHORT Top;
26 - SHORT Right;
27 - SHORT Bottom;
159 +struct MENU_EVENT_RECORD {
160 + UINT dwCommandId;
28 161 }
29 -alias _SMALL_RECT SMALL_RECT;
30 -alias _SMALL_RECT* PSMALL_RECT;
162 +alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD;
31 163
32 -struct _KEY_EVENT_RECORD {
33 - BOOL bKeyDown;
34 - WORD wRepeatCount;
35 - WORD wVirtualKeyCode;
36 - WORD wVirtualScanCode;
37 -union {
38 - WCHAR UnicodeChar;
39 - CHAR AsciiChar;
164 +struct FOCUS_EVENT_RECORD {
165 + BOOL bSetFocus;
40 166 }
41 167
42 - DWORD dwControlKeyState;
43 -}
44 -alias _KEY_EVENT_RECORD KEY_EVENT_RECORD;
45 -alias _KEY_EVENT_RECORD* PKEY_EVENT_RECORD;
46 -
47 -enum : uint { RIGHT_ALT_PRESSED = 0x0001 }
48 -enum : uint { LEFT_ALT_PRESSED = 0x0002 }
49 -enum : uint { RIGHT_CTRL_PRESSED = 0x0004 }
50 -enum : uint { LEFT_CTRL_PRESSED = 0x0008 }
51 -enum : uint { SHIFT_PRESSED = 0x0010 }
52 -enum : uint { NUMLOCK_ON = 0x0020 }
53 -enum : uint { SCROLLLOCK_ON = 0x0040 }
54 -enum : uint { CAPSLOCK_ON = 0x0080 }
55 -enum : uint { ENHANCED_KEY = 0x0100 }
56 -enum : uint { NLS_DBCSCHAR = 0x00010000 }
57 -enum : uint { NLS_ALPHANUMERIC = 0x00000000 }
58 -enum : uint { NLS_KATAKANA = 0x00020000 }
59 -enum : uint { NLS_HIRAGANA = 0x00040000 }
60 -enum : uint { NLS_ROMAN = 0x00400000 }
61 -enum : uint { NLS_IME_CONVERSION = 0x00800000 }
62 -enum : uint { NLS_IME_DISABLE = 0x20000000 }
63 -
64 -struct _MOUSE_EVENT_RECORD {
65 - COORD dwMousePosition;
66 - DWORD dwButtonState;
67 - DWORD dwControlKeyState;
68 - DWORD dwEventFlags;
168 +struct INPUT_RECORD {
169 + WORD EventType;
170 + union _Event {
171 + KEY_EVENT_RECORD KeyEvent;
172 + MOUSE_EVENT_RECORD MouseEvent;
173 + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
174 + MENU_EVENT_RECORD MenuEvent;
175 + FOCUS_EVENT_RECORD FocusEvent;
176 + }
177 + _Event Event;
69 178 }
70 -alias _MOUSE_EVENT_RECORD MOUSE_EVENT_RECORD;
71 -alias _MOUSE_EVENT_RECORD* PMOUSE_EVENT_RECORD;
179 +alias INPUT_RECORD* PINPUT_RECORD;
72 180
73 -enum : uint { FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001 }
74 -enum : uint { RIGHTMOST_BUTTON_PRESSED = 0x0002 }
75 -enum : uint { FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004 }
76 -enum : uint { FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008 }
77 -enum : uint { FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010 }
181 +extern (Windows):
78 182
79 -enum : uint { MOUSE_MOVED = 0x0001 }
80 -enum : uint { DOUBLE_CLICK = 0x0002 }
81 -enum : uint { MOUSE_WHEELED = 0x0004 }
82 -
83 -struct _WINDOW_BUFFER_SIZE_RECORD {
84 - COORD dwSize;
85 -}
86 -alias _WINDOW_BUFFER_SIZE_RECORD WINDOW_BUFFER_SIZE_RECORD;
87 -alias _WINDOW_BUFFER_SIZE_RECORD* PWINDOW_BUFFER_SIZE_RECORD;
88 -
89 -struct _MENU_EVENT_RECORD {
90 - UINT dwCommandId;
91 -}
92 -alias _MENU_EVENT_RECORD MENU_EVENT_RECORD;
93 -alias _MENU_EVENT_RECORD* PMENU_EVENT_RECORD;
183 +BOOL AllocConsole();
184 +HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, SECURITY_ATTRIBUTES*, DWORD, LPVOID);
185 +BOOL FillConsoleOutputAttribute(HANDLE, WORD, DWORD, COORD, PDWORD);
186 +BOOL FillConsoleOutputCharacterA(HANDLE, CHAR, DWORD, COORD, PDWORD);
187 +BOOL FillConsoleOutputCharacterW(HANDLE, WCHAR, DWORD, COORD, PDWORD);
188 +BOOL FlushConsoleInputBuffer(HANDLE);
189 +BOOL FreeConsole();
190 +BOOL GenerateConsoleCtrlEvent(DWORD, DWORD);
191 +UINT GetConsoleCP();
192 +BOOL GetConsoleCursorInfo(HANDLE, PCONSOLE_CURSOR_INFO);
193 +BOOL GetConsoleMode(HANDLE,PDWORD);
194 +UINT GetConsoleOutputCP();
195 +BOOL GetConsoleScreenBufferInfo(HANDLE, PCONSOLE_SCREEN_BUFFER_INFO);
196 +DWORD GetConsoleTitleA(LPSTR, DWORD);
197 +DWORD GetConsoleTitleW(LPWSTR, DWORD);
198 +COORD GetLargestConsoleWindowSize(HANDLE);
199 +BOOL GetNumberOfConsoleInputEvents(HANDLE, PDWORD);
200 +BOOL GetNumberOfConsoleMouseButtons(PDWORD);
201 +BOOL PeekConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD);
202 +BOOL PeekConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD);
203 +BOOL ReadConsoleA(HANDLE, PVOID, DWORD, PDWORD, PVOID);
204 +BOOL ReadConsoleW(HANDLE, PVOID, DWORD, PDWORD, PVOID);
205 +BOOL ReadConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD);
206 +BOOL ReadConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD);
207 +BOOL ReadConsoleOutputAttribute(HANDLE, LPWORD, DWORD, COORD, LPDWORD);
208 +BOOL ReadConsoleOutputCharacterA(HANDLE, LPSTR, DWORD, COORD, PDWORD);
209 +BOOL ReadConsoleOutputCharacterW(HANDLE, LPWSTR, DWORD, COORD, PDWORD);
210 +BOOL ReadConsoleOutputA(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT);
211 +BOOL ReadConsoleOutputW(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT);
212 +BOOL ScrollConsoleScreenBufferA(HANDLE, CPtr!(SMALL_RECT), CPtr!(SMALL_RECT), COORD, CPtr!(CHAR_INFO));
213 +BOOL ScrollConsoleScreenBufferW(HANDLE, CPtr!(SMALL_RECT), CPtr!(SMALL_RECT), COORD, CPtr!(CHAR_INFO));
214 +BOOL SetConsoleActiveScreenBuffer(HANDLE);
215 +BOOL SetConsoleCP(UINT);
216 +BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE, BOOL);
217 +BOOL SetConsoleCursorInfo(HANDLE, CPtr!(CONSOLE_CURSOR_INFO));
218 +BOOL SetConsoleCursorPosition(HANDLE, COORD);
219 +
94 220
95 -struct _FOCUS_EVENT_RECORD {
96 - BOOL bSetFocus;
97 -}
98 -alias _FOCUS_EVENT_RECORD FOCUS_EVENT_RECORD;
99 -alias _FOCUS_EVENT_RECORD* PFOCUS_EVENT_RECORD;
100 -
101 -struct _INPUT_RECORD {
102 - WORD EventType;
103 -union {
104 - KEY_EVENT_RECORD KeyEvent;
105 - MOUSE_EVENT_RECORD MouseEvent;
106 - WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
107 - MENU_EVENT_RECORD MenuEvent;
108 - FOCUS_EVENT_RECORD FocusEvent;
221 +static if (_WIN32_WINNT >= 0x0500) {
222 +BOOL GetConsoleDisplayMode(LPDWORD);
223 +HWND GetConsoleWindow();
109 224 }
110 225
111 -}
112 -alias _INPUT_RECORD INPUT_RECORD;
113 -alias _INPUT_RECORD* PINPUT_RECORD;
114 -
115 -enum : uint { KEY_EVENT = 0x0001 }
116 -enum : uint { MOUSE_EVENT = 0x0002 }
117 -enum : uint { WINDOW_BUFFER_SIZE_EVENT = 0x0004 }
118 -enum : uint { MENU_EVENT = 0x0008 }
119 -enum : uint { FOCUS_EVENT = 0x0010 }
120 -
121 -struct _CHAR_INFO {
122 -union {
123 - WCHAR UnicodeChar;
124 - CHAR AsciiChar;
226 +static if (_WIN32_WINNT >= 0x0501) {
227 +BOOL AttachConsole(DWORD);
228 +BOOL SetConsoleDisplayMode(HANDLE, DWORD, PCOORD);
229 +const DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1;
125 230 }
126 231
127 - WORD Attributes;
128 -}
129 -alias _CHAR_INFO CHAR_INFO;
130 -alias _CHAR_INFO* PCHAR_INFO;
131 -
132 -enum : uint { FOREGROUND_BLUE = 0x0001 }
133 -enum : uint { FOREGROUND_GREEN = 0x0002 }
134 -enum : uint { FOREGROUND_RED = 0x0004 }
135 -enum : uint { FOREGROUND_INTENSITY = 0x0008 }
136 -enum : uint { BACKGROUND_BLUE = 0x0010 }
137 -enum : uint { BACKGROUND_GREEN = 0x0020 }
138 -enum : uint { BACKGROUND_RED = 0x0040 }
139 -enum : uint { BACKGROUND_INTENSITY = 0x0080 }
140 -enum : uint { COMMON_LVB_LEADING_BYTE = 0x0100 }
141 -enum : uint { COMMON_LVB_TRAILING_BYTE = 0x0200 }
142 -enum : uint { COMMON_LVB_GRID_HORIZONTAL = 0x0400 }
143 -enum : uint { COMMON_LVB_GRID_LVERTICAL = 0x0800 }
144 -enum : uint { COMMON_LVB_GRID_RVERTICAL = 0x1000 }
145 -enum : uint { COMMON_LVB_REVERSE_VIDEO = 0x4000 }
146 -enum : uint { COMMON_LVB_UNDERSCORE = 0x8000 }
147 -
148 -enum : uint { COMMON_LVB_SBCSDBCS = 0x0300 }
149 -
150 -struct _CONSOLE_SCREEN_BUFFER_INFO {
151 - COORD dwSize;
152 - COORD dwCursorPosition;
153 - WORD wAttributes;
154 - SMALL_RECT srWindow;
155 - COORD dwMaximumWindowSize;
156 -}
157 -alias _CONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO;
158 -alias _CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO;
159 -
160 -struct _CONSOLE_CURSOR_INFO {
161 - DWORD dwSize;
162 - BOOL bVisible;
163 -}
164 -alias _CONSOLE_CURSOR_INFO CONSOLE_CURSOR_INFO;
165 -alias _CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO;
166 -
167 -struct _CONSOLE_FONT_INFO {
168 - DWORD nFont;
169 - COORD dwFontSize;
170 -}
171 -alias _CONSOLE_FONT_INFO CONSOLE_FONT_INFO;
172 -alias _CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO;
173 -
174 -// #if(_WIN32_WINNT >= 0x0500)
175 -struct _CONSOLE_SELECTION_INFO {
176 - DWORD dwFlags;
177 - COORD dwSelectionAnchor;
178 - SMALL_RECT srSelection;
179 -}
180 -alias _CONSOLE_SELECTION_INFO CONSOLE_SELECTION_INFO;
181 -alias _CONSOLE_SELECTION_INFO* PCONSOLE_SELECTION_INFO;
182 -
183 -enum : uint { CONSOLE_NO_SELECTION = 0x0000 }
184 -enum : uint { CONSOLE_SELECTION_IN_PROGRESS = 0x0001 }
185 -enum : uint { CONSOLE_SELECTION_NOT_EMPTY = 0x0002 }
186 -enum : uint { CONSOLE_MOUSE_SELECTION = 0x0004 }
187 -enum : uint { CONSOLE_MOUSE_DOWN = 0x0008 }
188 -// #endif /* _WIN32_WINNT >= 0x0500 */
189 -
190 -extern(Windows) alias BOOL function( DWORD CtrlType ) PHANDLER_ROUTINE;
191 -
192 -enum : uint { CTRL_C_EVENT = 0 }
193 -enum : uint { CTRL_BREAK_EVENT = 1 }
194 -enum : uint { CTRL_CLOSE_EVENT = 2 }
195 -
196 -enum : uint { CTRL_LOGOFF_EVENT = 5 }
197 -enum : uint { CTRL_SHUTDOWN_EVENT = 6 }
198 -
199 -enum : uint { ENABLE_PROCESSED_INPUT = 0x0001 }
200 -enum : uint { ENABLE_LINE_INPUT = 0x0002 }
201 -enum : uint { ENABLE_ECHO_INPUT = 0x0004 }
202 -enum : uint { ENABLE_WINDOW_INPUT = 0x0008 }
203 -enum : uint { ENABLE_MOUSE_INPUT = 0x0010 }
204 -
205 -enum : uint { ENABLE_PROCESSED_OUTPUT = 0x0001 }
206 -enum : uint { ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 }
207 -
208 -extern(Windows) export BOOL PeekConsoleInputA(
209 - HANDLE hConsoleInput,
210 - PINPUT_RECORD lpBuffer,
211 - DWORD nLength,
212 - LPDWORD lpNumberOfEventsRead
213 - );
214 -extern(Windows) export BOOL PeekConsoleInputW(
215 - HANDLE hConsoleInput,
216 - PINPUT_RECORD lpBuffer,
217 - DWORD nLength,
218 - LPDWORD lpNumberOfEventsRead
219 - );
220 -// #ifdef UNICODE
221 -alias PeekConsoleInputW PeekConsoleInput;
222 -// #else
223 -// #...
224 -// #endif // !UNICODE
225 -
226 -extern(Windows) export BOOL ReadConsoleInputA(
227 - HANDLE hConsoleInput,
228 - PINPUT_RECORD lpBuffer,
229 - DWORD nLength,
230 - LPDWORD lpNumberOfEventsRead
231 - );
232 -extern(Windows) export BOOL ReadConsoleInputW(
233 - HANDLE hConsoleInput,
234 - PINPUT_RECORD lpBuffer,
235 - DWORD nLength,
236 - LPDWORD lpNumberOfEventsRead
237 - );
238 -// #ifdef UNICODE
239 -alias ReadConsoleInputW ReadConsoleInput;
240 -// #else
241 -// #...
242 -// #endif // !UNICODE
243 -
244 -extern(Windows) export BOOL WriteConsoleInputA(
245 - HANDLE hConsoleInput,
246 - INPUT_RECORD *lpBuffer,
247 - DWORD nLength,
248 - LPDWORD lpNumberOfEventsWritten
249 - );
250 -extern(Windows) export BOOL WriteConsoleInputW(
251 - HANDLE hConsoleInput,
252 - INPUT_RECORD *lpBuffer,
253 - DWORD nLength,
254 - LPDWORD lpNumberOfEventsWritten
255 - );
256 -// #ifdef UNICODE
257 -alias WriteConsoleInputW WriteConsoleInput;
258 -// #else
259 -// #...
260 -// #endif // !UNICODE
232 +BOOL SetConsoleMode(HANDLE, DWORD);
233 +BOOL SetConsoleOutputCP(UINT);
234 +BOOL SetConsoleScreenBufferSize(HANDLE, COORD);
235 +BOOL SetConsoleTextAttribute(HANDLE, WORD);
236 +BOOL SetConsoleTitleA(LPCSTR);
237 +BOOL SetConsoleTitleW(LPCWSTR);
238 +BOOL SetConsoleWindowInfo(HANDLE, BOOL, CPtr!(SMALL_RECT));
239 +BOOL WriteConsoleA(HANDLE, PCVOID, DWORD, PDWORD, PVOID);
240 +BOOL WriteConsoleW(HANDLE, PCVOID, DWORD, PDWORD, PVOID);
241 +BOOL WriteConsoleInputA(HANDLE, CPtr!(INPUT_RECORD), DWORD, PDWORD);
242 +BOOL WriteConsoleInputW(HANDLE, CPtr!(INPUT_RECORD), DWORD, PDWORD);
243 +BOOL WriteConsoleOutputA(HANDLE, CPtr!(CHAR_INFO), COORD, COORD, PSMALL_RECT);
244 +BOOL WriteConsoleOutputW(HANDLE, CPtr!(CHAR_INFO), COORD, COORD, PSMALL_RECT);
245 +BOOL WriteConsoleOutputAttribute(HANDLE, CPtr!(WORD), DWORD, COORD, PDWORD);
246 +BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD);
247 +BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD);
261 248
262 -extern(Windows) export BOOL ReadConsoleOutputA(
263 - HANDLE hConsoleOutput,
264 - PCHAR_INFO lpBuffer,
265 - COORD dwBufferSize,
266 - COORD dwBufferCoord,
267 - PSMALL_RECT lpReadRegion
268 - );
269 -extern(Windows) export BOOL ReadConsoleOutputW(
270 - HANDLE hConsoleOutput,
271 - PCHAR_INFO lpBuffer,
272 - COORD dwBufferSize,
273 - COORD dwBufferCoord,
274 - PSMALL_RECT lpReadRegion
275 - );
276 -// #ifdef UNICODE
277 -alias ReadConsoleOutputW ReadConsoleOutput;
278 -// #else
279 -// #...
280 -// #endif // !UNICODE
281 -
282 -extern(Windows) export BOOL WriteConsoleOutputA(
283 - HANDLE hConsoleOutput,
284 - CHAR_INFO *lpBuffer,
285 - COORD dwBufferSize,
286 - COORD dwBufferCoord,
287 - PSMALL_RECT lpWriteRegion
288 - );
289 -extern(Windows) export BOOL WriteConsoleOutputW(
290 - HANDLE hConsoleOutput,
291 - CHAR_INFO *lpBuffer,
292 - COORD dwBufferSize,
293 - COORD dwBufferCoord,
294 - PSMALL_RECT lpWriteRegion
295 - );
296 -// #ifdef UNICODE
297 -alias WriteConsoleOutputW WriteConsoleOutput;
298 -// #else
299 -// #...
300 -// #endif // !UNICODE
301 -
302 -extern(Windows) export BOOL ReadConsoleOutputCharacterA(
303 - HANDLE hConsoleOutput,
304 - LPSTR lpCharacter,
305 - DWORD nLength,
306 - COORD dwReadCoord,
307 - LPDWORD lpNumberOfCharsRead
308 - );
309 -extern(Windows) export BOOL ReadConsoleOutputCharacterW(
310 - HANDLE hConsoleOutput,
311 - LPWSTR lpCharacter,
312 - DWORD nLength,
313 - COORD dwReadCoord,
314 - LPDWORD lpNumberOfCharsRead
315 - );
316 -// #ifdef UNICODE
317 -alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter;
318 -// #else
319 -// #...
320 -// #endif // !UNICODE
321 -
322 -extern(Windows) export BOOL ReadConsoleOutputAttribute(
323 - HANDLE hConsoleOutput,
324 - LPWORD lpAttribute,
325 - DWORD nLength,
326 - COORD dwReadCoord,
327 - LPDWORD lpNumberOfAttrsRead
328 - );
329 -
330 -extern(Windows) export BOOL WriteConsoleOutputCharacterA(
331 - HANDLE hConsoleOutput,
332 - LPCSTR lpCharacter,
333 - DWORD nLength,
334 - COORD dwWriteCoord,
335 - LPDWORD lpNumberOfCharsWritten
336 - );
337 -extern(Windows) export BOOL WriteConsoleOutputCharacterW(
338 - HANDLE hConsoleOutput,
339 - LPCWSTR lpCharacter,
340 - DWORD nLength,
341 - COORD dwWriteCoord,
342 - LPDWORD lpNumberOfCharsWritten
343 - );
344 -// #ifdef UNICODE
345 -alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter;
346 -// #else
347 -// #...
348 -// #endif // !UNICODE
349 -
350 -extern(Windows) export BOOL WriteConsoleOutputAttribute(
351 - HANDLE hConsoleOutput,
352 - WORD *lpAttribute,
353 - DWORD nLength,
354 - COORD dwWriteCoord,
355 - LPDWORD lpNumberOfAttrsWritten
356 - );
357 -
358 -extern(Windows) export BOOL FillConsoleOutputCharacterA(
359 - HANDLE hConsoleOutput,
360 - CHAR cCharacter,
361 - DWORD nLength,
362 - COORD dwWriteCoord,
363 - LPDWORD lpNumberOfCharsWritten
364 - );
365 -extern(Windows) export BOOL FillConsoleOutputCharacterW(
366 - HANDLE hConsoleOutput,
367 - WCHAR cCharacter,
368 - DWORD nLength,
369 - COORD dwWriteCoord,
370 - LPDWORD lpNumberOfCharsWritten
371 - );
372 -// #ifdef UNICODE
373 -alias FillConsoleOutputCharacterW FillConsoleOutputCharacter;
374 -// #else
375 -// #...
376 -// #endif // !UNICODE
377 -
378 -extern(Windows) export BOOL FillConsoleOutputAttribute(
379 - HANDLE hConsoleOutput,
380 - WORD wAttribute,
381 - DWORD nLength,
382 - COORD dwWriteCoord,
383 - LPDWORD lpNumberOfAttrsWritten
384 - );
385 -
386 -extern(Windows) export BOOL GetConsoleMode(
387 - HANDLE hConsoleHandle,
388 - LPDWORD lpMode
389 - );
390 -
391 -extern(Windows) export BOOL GetNumberOfConsoleInputEvents(
392 - HANDLE hConsoleInput,
393 - LPDWORD lpNumberOfEvents
394 - );
395 -
396 -extern(Windows) export BOOL GetConsoleScreenBufferInfo(
397 - HANDLE hConsoleOutput,
398 - PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
399 - );
400 -
401 -extern(Windows) export COORD GetLargestConsoleWindowSize(
402 - HANDLE hConsoleOutput
403 - );
404 -
405 -extern(Windows) export BOOL GetConsoleCursorInfo(
406 - HANDLE hConsoleOutput,
407 - PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
408 - );
409 -
410 -// #if(_WIN32_WINNT >= 0x0500)
411 -
412 -extern(Windows) export BOOL GetCurrentConsoleFont(
413 - HANDLE hConsoleOutput,
414 - BOOL bMaximumWindow,
415 - PCONSOLE_FONT_INFO lpConsoleCurrentFont
416 - );
417 -
418 -extern(Windows) export COORD GetConsoleFontSize(
419 - HANDLE hConsoleOutput,
420 - DWORD nFont
421 - );
422 -
423 -extern(Windows) export BOOL GetConsoleSelectionInfo(
424 - PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo
425 - );
426 -
427 -// #endif /* _WIN32_WINNT >= 0x0500 */
428 -
429 -extern(Windows) export BOOL GetNumberOfConsoleMouseButtons(
430 - LPDWORD lpNumberOfMouseButtons
431 - );
432 -
433 -extern(Windows) export BOOL SetConsoleMode(
434 - HANDLE hConsoleHandle,
435 - DWORD dwMode
436 - );
437 -
438 -extern(Windows) export BOOL SetConsoleActiveScreenBuffer(
439 - HANDLE hConsoleOutput
440 - );
441 -
442 -extern(Windows) export BOOL FlushConsoleInputBuffer(
443 - HANDLE hConsoleInput
444 - );
445 -
446 -extern(Windows) export BOOL SetConsoleScreenBufferSize(
447 - HANDLE hConsoleOutput,
448 - COORD dwSize
449 - );
450 -
451 -extern(Windows) export BOOL SetConsoleCursorPosition(
452 - HANDLE hConsoleOutput,
453 - COORD dwCursorPosition
454 - );
455 -
456 -extern(Windows) export BOOL SetConsoleCursorInfo(
457 - HANDLE hConsoleOutput,
458 - CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
459 - );
460 -
461 -extern(Windows) export BOOL ScrollConsoleScreenBufferA(
462 - HANDLE hConsoleOutput,
463 - SMALL_RECT *lpScrollRectangle,
464 - SMALL_RECT *lpClipRectangle,
465 - COORD dwDestinationOrigin,
466 - CHAR_INFO *lpFill
467 - );
468 -extern(Windows) export BOOL ScrollConsoleScreenBufferW(
469 - HANDLE hConsoleOutput,
470 - SMALL_RECT *lpScrollRectangle,
471 - SMALL_RECT *lpClipRectangle,
472 - COORD dwDestinationOrigin,
473 - CHAR_INFO *lpFill
474 - );
475 -// #ifdef UNICODE
476 -alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer;
477 -// #else
478 -// #...
479 -// #endif // !UNICODE
480 -
481 -extern(Windows) export BOOL SetConsoleWindowInfo(
482 - HANDLE hConsoleOutput,
483 - BOOL bAbsolute,
484 - SMALL_RECT *lpConsoleWindow
485 - );
486 -
487 -extern(Windows) export BOOL SetConsoleTextAttribute(
488 - HANDLE hConsoleOutput,
489 - WORD wAttributes
490 - );
491 -
492 -extern(Windows) export BOOL SetConsoleCtrlHandler(
493 - PHANDLER_ROUTINE HandlerRoutine,
494 - BOOL Add
495 - );
496 -
497 -extern(Windows) export BOOL GenerateConsoleCtrlEvent(
498 - DWORD dwCtrlEvent,
499 - DWORD dwProcessGroupId
500 - );
501 -
502 -extern(Windows) export BOOL AllocConsole();
503 -
504 -extern(Windows) export BOOL FreeConsole();
505 -
506 -// #if(_WIN32_WINNT >= 0x0500)
507 -extern(Windows) export BOOL AttachConsole(
508 - DWORD dwProcessId
509 - );
510 -// #endif /* _WIN32_WINNT >= 0x0500 */
511 -
512 -extern(Windows) export DWORD GetConsoleTitleA(
513 - LPSTR lpConsoleTitle,
514 - DWORD nSize
515 - );
516 -extern(Windows) export DWORD GetConsoleTitleW(
517 - LPWSTR lpConsoleTitle,
518 - DWORD nSize
519 - );
520 -// #ifdef UNICODE
521 -alias GetConsoleTitleW GetConsoleTitle;
522 -// #else
523 -// #...
524 -// #endif // !UNICODE
525 -
526 -extern(Windows) export BOOL SetConsoleTitleA(
527 - LPCSTR lpConsoleTitle
528 - );
529 -extern(Windows) export BOOL SetConsoleTitleW(
530 - LPCWSTR lpConsoleTitle
531 - );
532 -// #ifdef UNICODE
533 -alias SetConsoleTitleW SetConsoleTitle;
534 -// #else
535 -// #...
536 -// #endif // !UNICODE
537 -
538 -extern(Windows) export BOOL ReadConsoleA(
539 - HANDLE hConsoleInput,
540 - LPVOID lpBuffer,
541 - DWORD nNumberOfCharsToRead,
542 - LPDWORD lpNumberOfCharsRead,
543 - LPVOID lpReserved
544 - );
545 -extern(Windows) export BOOL ReadConsoleW(
546 - HANDLE hConsoleInput,
547 - LPVOID lpBuffer,
548 - DWORD nNumberOfCharsToRead,
549 - LPDWORD lpNumberOfCharsRead,
550 - LPVOID lpReserved
551 - );
552 -// #ifdef UNICODE
553 -alias ReadConsoleW ReadConsole;
554 -// #else
555 -// #...
556 -// #endif // !UNICODE
557 -
558 -extern(Windows) export BOOL WriteConsoleA(
559 - HANDLE hConsoleOutput,
560 - VOID *lpBuffer,
561 - DWORD nNumberOfCharsToWrite,
562 - LPDWORD lpNumberOfCharsWritten,
563 - LPVOID lpReserved
564 - );
565 -extern(Windows) export BOOL WriteConsoleW(
566 - HANDLE hConsoleOutput,
567 - VOID *lpBuffer,
568 - DWORD nNumberOfCharsToWrite,
569 - LPDWORD lpNumberOfCharsWritten,
570 - LPVOID lpReserved
571 - );
572 -// #ifdef UNICODE
573 -alias WriteConsoleW WriteConsole;
574 -// #else
575 -// #...
576 -// #endif // !UNICODE
577 -
578 -enum : uint { CONSOLE_TEXTMODE_BUFFER = 1 }
579 -
580 -extern(Windows) export HANDLE CreateConsoleScreenBuffer(
581 - DWORD dwDesiredAccess,
582 - DWORD dwShareMode,
583 - SECURITY_ATTRIBUTES *lpSecurityAttributes,
584 - DWORD dwFlags,
585 - LPVOID lpScreenBufferData
586 - );
587 -
588 -extern(Windows) export UINT GetConsoleCP();
589 -
590 -extern(Windows) export BOOL SetConsoleCP(
591 - UINT wCodePageID
592 - );
593 -
594 -extern(Windows) export UINT GetConsoleOutputCP();
595 -
596 -extern(Windows) export BOOL SetConsoleOutputCP(
597 - UINT wCodePageID
598 - );
599 -
600 -// #if(_WIN32_WINNT >= 0x0500)
601 -
602 -enum : uint { CONSOLE_FULLSCREEN = 1 }
603 -enum : uint { CONSOLE_FULLSCREEN_HARDWARE = 2 }
604 -
605 -extern(Windows) export BOOL GetConsoleDisplayMode(
606 - LPDWORD lpModeFlags
607 - );
608 -
609 -extern(Windows) export HWND GetConsoleWindow();
610 -
611 -// #endif /* _WIN32_WINNT >= 0x0500 */
612 -
613 -// #if(_WIN32_WINNT >= 0x0501)
614 -
615 -extern(Windows) export DWORD GetConsoleProcessList(
616 - LPDWORD lpdwProcessList,
617 - DWORD dwProcessCount);
618 -// #endif /* _WIN32_WINNT >= 0x0501 */
619 -
620 -// #ifdef __cplusplus
621 -// }
622 -// #endif
623 -
624 -// #endif // _WINCON_
625 -
249 +version (Unicode) {
250 + alias FillConsoleOutputCharacterW FillConsoleOutputCharacter;
251 + alias GetConsoleTitleW GetConsoleTitle;
252 + alias PeekConsoleInputW PeekConsoleInput;
253 + alias ReadConsoleW ReadConsole;
254 + alias ReadConsoleInputW ReadConsoleInput;
255 + alias ReadConsoleOutputW ReadConsoleOutput;
256 + alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter;
257 + alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer;
258 + alias SetConsoleTitleW SetConsoleTitle;
259 + alias WriteConsoleW WriteConsole;
260 + alias WriteConsoleInputW WriteConsoleInput;
261 + alias WriteConsoleOutputW WriteConsoleOutput;
262 + alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter;
263 +} else {
264 + alias FillConsoleOutputCharacterA FillConsoleOutputCharacter;
265 + alias GetConsoleTitleA GetConsoleTitle;
266 + alias PeekConsoleInputA PeekConsoleInput;
267 + alias ReadConsoleA ReadConsole;
268 + alias ReadConsoleInputA ReadConsoleInput;
269 + alias ReadConsoleOutputA ReadConsoleOutput;
270 + alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter;
271 + alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer;
272 + alias SetConsoleTitleA SetConsoleTitle;
273 + alias WriteConsoleA WriteConsole;
274 + alias WriteConsoleInputA WriteConsoleInput;
275 + alias WriteConsoleOutputA WriteConsoleOutput;
276 + alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter;
277 +}