root/trunk/win32/wincon.d

Revision 409, 8.4 kB (checked in by CyberShadow, 2 months ago)

Remove .lib extension from pragma(lib) directives

This extension is redundant for DMD, but causes link errors with LDC.

Please revert this or let me know if this breaks anything.

Line 
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");
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, 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
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, 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);
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 }
Note: See TracBrowser for help on using the browser.