comparison win32/wincon.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
comparison
equal deleted inserted replaced
0:586e4a649642 1:4a9dcbd9e54f
1 /***********************************************************************\
2 * wincon.d *
3 * *
4 * Windows API header module *
5 * *
6 * Translated from MinGW Windows headers *
7 * *
8 * Placed into public domain *
9 \***********************************************************************/
10 module win32.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 }
154
155 struct WINDOW_BUFFER_SIZE_RECORD {
156 COORD dwSize;
157 }
158
159 struct MENU_EVENT_RECORD {
160 UINT dwCommandId;
161 }
162 alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD;
163
164 struct FOCUS_EVENT_RECORD {
165 BOOL bSetFocus;
166 }
167
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;
178 }
179 alias INPUT_RECORD* PINPUT_RECORD;
180
181 extern (Windows):
182
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, SMALL_RECT*, SMALL_RECT*, COORD, CHAR_INFO*);
213 BOOL ScrollConsoleScreenBufferW(HANDLE, SMALL_RECT*, SMALL_RECT*, COORD, CHAR_INFO*);
214 BOOL SetConsoleActiveScreenBuffer(HANDLE);
215 BOOL SetConsoleCP(UINT);
216 BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE, BOOL);
217 BOOL SetConsoleCursorInfo(HANDLE, CONSOLE_CURSOR_INFO*);
218 BOOL SetConsoleCursorPosition(HANDLE, COORD);
219
220
221 static if (_WIN32_WINNT >= 0x0500) {
222 BOOL GetConsoleDisplayMode(LPDWORD);
223 HWND GetConsoleWindow();
224 }
225
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;
230 }
231
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, SMALL_RECT*);
239 BOOL WriteConsoleA(HANDLE, PCVOID, DWORD, PDWORD, PVOID);
240 BOOL WriteConsoleW(HANDLE, PCVOID, DWORD, PDWORD, PVOID);
241 BOOL WriteConsoleInputA(HANDLE, INPUT_RECORD*, DWORD, PDWORD);
242 BOOL WriteConsoleInputW(HANDLE, INPUT_RECORD*, DWORD, PDWORD);
243 BOOL WriteConsoleOutputA(HANDLE, CHAR_INFO*, COORD, COORD, PSMALL_RECT);
244 BOOL WriteConsoleOutputW(HANDLE, CHAR_INFO*, COORD, COORD, PSMALL_RECT);
245 BOOL WriteConsoleOutputAttribute(HANDLE, WORD*, DWORD, COORD, PDWORD);
246 BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD);
247 BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD);
248
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 }