Mercurial > projects > ldc
comparison druntime/import/core/sys/windows/windows.d @ 1458:e0b2d67cfe7c
Added druntime (this should be removed once it works).
author | Robert Clipsham <robert@octarineparrot.com> |
---|---|
date | Tue, 02 Jun 2009 17:43:06 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1456:7b218ec1044f | 1458:e0b2d67cfe7c |
---|---|
1 /** | |
2 * Windows is a registered trademark of Microsoft Corporation in the United | |
3 * States and other countries. | |
4 * | |
5 * Copyright: Copyright Digital Mars 2000 - 2009. | |
6 * License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>. | |
7 * Authors: Walter Bright, Sean Kelly | |
8 * | |
9 * Copyright Digital Mars 2000 - 2009. | |
10 * Distributed under the Boost Software License, Version 1.0. | |
11 * (See accompanying file LICENSE_1_0.txt or copy at | |
12 * http://www.boost.org/LICENSE_1_0.txt) | |
13 */ | |
14 module core.sys.windows.windows; | |
15 | |
16 version (Windows) | |
17 { | |
18 } | |
19 else | |
20 { | |
21 static assert(0); // Windows only | |
22 } | |
23 | |
24 extern (Windows) | |
25 { | |
26 alias uint ULONG; | |
27 alias ULONG *PULONG; | |
28 alias ushort USHORT; | |
29 alias USHORT *PUSHORT; | |
30 alias ubyte UCHAR; | |
31 alias UCHAR *PUCHAR; | |
32 alias char *PSZ; | |
33 alias wchar WCHAR; | |
34 | |
35 alias void VOID; | |
36 alias char CHAR; | |
37 alias short SHORT; | |
38 alias int LONG; | |
39 alias CHAR *LPSTR; | |
40 alias CHAR *PSTR; | |
41 | |
42 alias const(CHAR)* LPCSTR; | |
43 alias const(CHAR)* PCSTR; | |
44 | |
45 alias LPSTR LPTCH, PTCH; | |
46 alias LPSTR PTSTR, LPTSTR; | |
47 alias LPCSTR LPCTSTR; | |
48 | |
49 alias WCHAR* LPWSTR; | |
50 | |
51 alias const(WCHAR)* LPCWSTR, PCWSTR; | |
52 | |
53 alias uint DWORD; | |
54 alias int BOOL; | |
55 alias ubyte BYTE; | |
56 alias ushort WORD; | |
57 alias float FLOAT; | |
58 alias FLOAT *PFLOAT; | |
59 alias BOOL *PBOOL; | |
60 alias BOOL *LPBOOL; | |
61 alias BYTE *PBYTE; | |
62 alias BYTE *LPBYTE; | |
63 alias int *PINT; | |
64 alias int *LPINT; | |
65 alias WORD *PWORD; | |
66 alias WORD *LPWORD; | |
67 alias int *LPLONG; | |
68 alias DWORD *PDWORD; | |
69 alias DWORD *LPDWORD; | |
70 alias void *LPVOID; | |
71 alias void *LPCVOID; | |
72 | |
73 alias int INT; | |
74 alias uint UINT; | |
75 alias uint *PUINT; | |
76 | |
77 // ULONG_PTR must be able to store a pointer as an integral type | |
78 version(Win64) | |
79 { | |
80 alias long INT_PTR; | |
81 alias ulong UINT_PTR; | |
82 alias long LONG_PTR; | |
83 alias ulong ULONG_PTR; | |
84 alias long * PINT_PTR; | |
85 alias ulong * PUINT_PTR; | |
86 alias long * PLONG_PTR; | |
87 alias ulong * PULONG_PTR; | |
88 } | |
89 version(Win32) | |
90 { | |
91 alias int INT_PTR; | |
92 alias uint UINT_PTR; | |
93 alias int LONG_PTR; | |
94 alias uint ULONG_PTR; | |
95 alias int * PINT_PTR; | |
96 alias uint * PUINT_PTR; | |
97 alias int * PLONG_PTR; | |
98 alias uint * PULONG_PTR; | |
99 } | |
100 | |
101 typedef void *HANDLE; | |
102 alias void *PVOID; | |
103 alias HANDLE HGLOBAL; | |
104 alias HANDLE HLOCAL; | |
105 alias LONG HRESULT; | |
106 alias LONG SCODE; | |
107 alias HANDLE HINSTANCE; | |
108 alias HINSTANCE HMODULE; | |
109 alias HANDLE HWND; | |
110 | |
111 alias HANDLE HGDIOBJ; | |
112 alias HANDLE HACCEL; | |
113 alias HANDLE HBITMAP; | |
114 alias HANDLE HBRUSH; | |
115 alias HANDLE HCOLORSPACE; | |
116 alias HANDLE HDC; | |
117 alias HANDLE HGLRC; | |
118 alias HANDLE HDESK; | |
119 alias HANDLE HENHMETAFILE; | |
120 alias HANDLE HFONT; | |
121 alias HANDLE HICON; | |
122 alias HANDLE HMENU; | |
123 alias HANDLE HMETAFILE; | |
124 alias HANDLE HPALETTE; | |
125 alias HANDLE HPEN; | |
126 alias HANDLE HRGN; | |
127 alias HANDLE HRSRC; | |
128 alias HANDLE HSTR; | |
129 alias HANDLE HTASK; | |
130 alias HANDLE HWINSTA; | |
131 alias HANDLE HKL; | |
132 alias HICON HCURSOR; | |
133 | |
134 alias HANDLE HKEY; | |
135 alias HKEY *PHKEY; | |
136 alias DWORD ACCESS_MASK; | |
137 alias ACCESS_MASK *PACCESS_MASK; | |
138 alias ACCESS_MASK REGSAM; | |
139 | |
140 alias int (*FARPROC)(); | |
141 | |
142 alias UINT WPARAM; | |
143 alias LONG LPARAM; | |
144 alias LONG LRESULT; | |
145 | |
146 alias DWORD COLORREF; | |
147 alias DWORD *LPCOLORREF; | |
148 alias WORD ATOM; | |
149 | |
150 version (0) | |
151 { // Properly prototyped versions | |
152 alias BOOL function(HWND, UINT, WPARAM, LPARAM) DLGPROC; | |
153 alias VOID function(HWND, UINT, UINT, DWORD) TIMERPROC; | |
154 alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; | |
155 alias BOOL function(HWND, LPARAM) WNDENUMPROC; | |
156 alias LRESULT function(int code, WPARAM wParam, LPARAM lParam) HOOKPROC; | |
157 alias VOID function(HWND, UINT, DWORD, LRESULT) SENDASYNCPROC; | |
158 alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; | |
159 alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; | |
160 alias BOOL function(HWND, LPSTR, HANDLE, DWORD) PROPENUMPROCEXA; | |
161 alias BOOL function(HWND, LPWSTR, HANDLE, DWORD) PROPENUMPROCEXW; | |
162 alias int function(LPSTR lpch, int ichCurrent, int cch, int code) | |
163 EDITWORDBREAKPROCA; | |
164 alias int function(LPWSTR lpch, int ichCurrent, int cch, int code) | |
165 EDITWORDBREAKPROCW; | |
166 alias BOOL function(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy) | |
167 DRAWSTATEPROC; | |
168 } | |
169 else | |
170 { | |
171 alias FARPROC DLGPROC; | |
172 alias FARPROC TIMERPROC; | |
173 alias FARPROC GRAYSTRINGPROC; | |
174 alias FARPROC WNDENUMPROC; | |
175 alias FARPROC HOOKPROC; | |
176 alias FARPROC SENDASYNCPROC; | |
177 alias FARPROC EDITWORDBREAKPROCA; | |
178 alias FARPROC EDITWORDBREAKPROCW; | |
179 alias FARPROC PROPENUMPROCA; | |
180 alias FARPROC PROPENUMPROCW; | |
181 alias FARPROC PROPENUMPROCEXA; | |
182 alias FARPROC PROPENUMPROCEXW; | |
183 alias FARPROC DRAWSTATEPROC; | |
184 } | |
185 | |
186 extern (D) | |
187 { | |
188 WORD HIWORD(int l) { return cast(WORD)((l >> 16) & 0xFFFF); } | |
189 WORD LOWORD(int l) { return cast(WORD)l; } | |
190 bool FAILED(int status) { return status < 0; } | |
191 bool SUCCEEDED(int Status) { return Status >= 0; } | |
192 } | |
193 | |
194 enum : int | |
195 { | |
196 FALSE = 0, | |
197 TRUE = 1, | |
198 } | |
199 | |
200 enum : uint | |
201 { | |
202 MAX_PATH = 260, | |
203 HINSTANCE_ERROR = 32, | |
204 } | |
205 | |
206 enum | |
207 { | |
208 ERROR_SUCCESS = 0, | |
209 ERROR_INVALID_FUNCTION = 1, | |
210 ERROR_FILE_NOT_FOUND = 2, | |
211 ERROR_PATH_NOT_FOUND = 3, | |
212 ERROR_TOO_MANY_OPEN_FILES = 4, | |
213 ERROR_ACCESS_DENIED = 5, | |
214 ERROR_INVALID_HANDLE = 6, | |
215 ERROR_NO_MORE_FILES = 18, | |
216 ERROR_MORE_DATA = 234, | |
217 ERROR_NO_MORE_ITEMS = 259, | |
218 } | |
219 | |
220 enum | |
221 { | |
222 DLL_PROCESS_ATTACH = 1, | |
223 DLL_THREAD_ATTACH = 2, | |
224 DLL_THREAD_DETACH = 3, | |
225 DLL_PROCESS_DETACH = 0, | |
226 } | |
227 | |
228 enum | |
229 { | |
230 FILE_BEGIN = 0, | |
231 FILE_CURRENT = 1, | |
232 FILE_END = 2, | |
233 } | |
234 | |
235 enum : uint | |
236 { | |
237 DELETE = 0x00010000, | |
238 READ_CONTROL = 0x00020000, | |
239 WRITE_DAC = 0x00040000, | |
240 WRITE_OWNER = 0x00080000, | |
241 SYNCHRONIZE = 0x00100000, | |
242 | |
243 STANDARD_RIGHTS_REQUIRED = 0x000F0000, | |
244 STANDARD_RIGHTS_READ = READ_CONTROL, | |
245 STANDARD_RIGHTS_WRITE = READ_CONTROL, | |
246 STANDARD_RIGHTS_EXECUTE = READ_CONTROL, | |
247 STANDARD_RIGHTS_ALL = 0x001F0000, | |
248 SPECIFIC_RIGHTS_ALL = 0x0000FFFF, | |
249 ACCESS_SYSTEM_SECURITY = 0x01000000, | |
250 MAXIMUM_ALLOWED = 0x02000000, | |
251 | |
252 GENERIC_READ = 0x80000000, | |
253 GENERIC_WRITE = 0x40000000, | |
254 GENERIC_EXECUTE = 0x20000000, | |
255 GENERIC_ALL = 0x10000000, | |
256 } | |
257 | |
258 enum | |
259 { | |
260 FILE_SHARE_READ = 0x00000001, | |
261 FILE_SHARE_WRITE = 0x00000002, | |
262 FILE_SHARE_DELETE = 0x00000004, | |
263 FILE_ATTRIBUTE_READONLY = 0x00000001, | |
264 FILE_ATTRIBUTE_HIDDEN = 0x00000002, | |
265 FILE_ATTRIBUTE_SYSTEM = 0x00000004, | |
266 FILE_ATTRIBUTE_DIRECTORY = 0x00000010, | |
267 FILE_ATTRIBUTE_ARCHIVE = 0x00000020, | |
268 FILE_ATTRIBUTE_NORMAL = 0x00000080, | |
269 FILE_ATTRIBUTE_TEMPORARY = 0x00000100, | |
270 FILE_ATTRIBUTE_COMPRESSED = 0x00000800, | |
271 FILE_ATTRIBUTE_OFFLINE = 0x00001000, | |
272 FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, | |
273 FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, | |
274 FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, | |
275 FILE_NOTIFY_CHANGE_SIZE = 0x00000008, | |
276 FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, | |
277 FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, | |
278 FILE_NOTIFY_CHANGE_CREATION = 0x00000040, | |
279 FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, | |
280 FILE_ACTION_ADDED = 0x00000001, | |
281 FILE_ACTION_REMOVED = 0x00000002, | |
282 FILE_ACTION_MODIFIED = 0x00000003, | |
283 FILE_ACTION_RENAMED_OLD_NAME = 0x00000004, | |
284 FILE_ACTION_RENAMED_NEW_NAME = 0x00000005, | |
285 FILE_CASE_SENSITIVE_SEARCH = 0x00000001, | |
286 FILE_CASE_PRESERVED_NAMES = 0x00000002, | |
287 FILE_UNICODE_ON_DISK = 0x00000004, | |
288 FILE_PERSISTENT_ACLS = 0x00000008, | |
289 FILE_FILE_COMPRESSION = 0x00000010, | |
290 FILE_VOLUME_IS_COMPRESSED = 0x00008000, | |
291 } | |
292 | |
293 enum : DWORD | |
294 { | |
295 MAILSLOT_NO_MESSAGE = cast(DWORD)-1, | |
296 MAILSLOT_WAIT_FOREVER = cast(DWORD)-1, | |
297 } | |
298 | |
299 enum : uint | |
300 { | |
301 FILE_FLAG_WRITE_THROUGH = 0x80000000, | |
302 FILE_FLAG_OVERLAPPED = 0x40000000, | |
303 FILE_FLAG_NO_BUFFERING = 0x20000000, | |
304 FILE_FLAG_RANDOM_ACCESS = 0x10000000, | |
305 FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, | |
306 FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, | |
307 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, | |
308 FILE_FLAG_POSIX_SEMANTICS = 0x01000000, | |
309 } | |
310 | |
311 enum | |
312 { | |
313 CREATE_NEW = 1, | |
314 CREATE_ALWAYS = 2, | |
315 OPEN_EXISTING = 3, | |
316 OPEN_ALWAYS = 4, | |
317 TRUNCATE_EXISTING = 5, | |
318 } | |
319 | |
320 | |
321 enum | |
322 { | |
323 HANDLE INVALID_HANDLE_VALUE = cast(HANDLE)-1, | |
324 DWORD INVALID_SET_FILE_POINTER = cast(DWORD)-1, | |
325 DWORD INVALID_FILE_SIZE = cast(DWORD)0xFFFFFFFF, | |
326 } | |
327 | |
328 struct OVERLAPPED { | |
329 DWORD Internal; | |
330 DWORD InternalHigh; | |
331 DWORD Offset; | |
332 DWORD OffsetHigh; | |
333 HANDLE hEvent; | |
334 } | |
335 | |
336 struct SECURITY_ATTRIBUTES { | |
337 DWORD nLength; | |
338 void *lpSecurityDescriptor; | |
339 BOOL bInheritHandle; | |
340 } | |
341 | |
342 alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; | |
343 | |
344 struct FILETIME { | |
345 DWORD dwLowDateTime; | |
346 DWORD dwHighDateTime; | |
347 } | |
348 alias FILETIME* PFILETIME, LPFILETIME; | |
349 | |
350 struct WIN32_FIND_DATA { | |
351 DWORD dwFileAttributes; | |
352 FILETIME ftCreationTime; | |
353 FILETIME ftLastAccessTime; | |
354 FILETIME ftLastWriteTime; | |
355 DWORD nFileSizeHigh; | |
356 DWORD nFileSizeLow; | |
357 DWORD dwReserved0; | |
358 DWORD dwReserved1; | |
359 char cFileName[MAX_PATH]; | |
360 char cAlternateFileName[ 14 ]; | |
361 } | |
362 | |
363 struct WIN32_FIND_DATAW { | |
364 DWORD dwFileAttributes; | |
365 FILETIME ftCreationTime; | |
366 FILETIME ftLastAccessTime; | |
367 FILETIME ftLastWriteTime; | |
368 DWORD nFileSizeHigh; | |
369 DWORD nFileSizeLow; | |
370 DWORD dwReserved0; | |
371 DWORD dwReserved1; | |
372 wchar cFileName[ 260 ]; | |
373 wchar cAlternateFileName[ 14 ]; | |
374 } | |
375 | |
376 // Critical Section | |
377 | |
378 struct _LIST_ENTRY | |
379 { | |
380 _LIST_ENTRY *Flink; | |
381 _LIST_ENTRY *Blink; | |
382 } | |
383 alias _LIST_ENTRY LIST_ENTRY; | |
384 | |
385 struct _RTL_CRITICAL_SECTION_DEBUG | |
386 { | |
387 WORD Type; | |
388 WORD CreatorBackTraceIndex; | |
389 _RTL_CRITICAL_SECTION *CriticalSection; | |
390 LIST_ENTRY ProcessLocksList; | |
391 DWORD EntryCount; | |
392 DWORD ContentionCount; | |
393 DWORD Spare[ 2 ]; | |
394 } | |
395 alias _RTL_CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG; | |
396 | |
397 struct _RTL_CRITICAL_SECTION | |
398 { | |
399 RTL_CRITICAL_SECTION_DEBUG * DebugInfo; | |
400 | |
401 // | |
402 // The following three fields control entering and exiting the critical | |
403 // section for the resource | |
404 // | |
405 | |
406 LONG LockCount; | |
407 LONG RecursionCount; | |
408 HANDLE OwningThread; // from the thread's ClientId->UniqueThread | |
409 HANDLE LockSemaphore; | |
410 ULONG_PTR SpinCount; // force size on 64-bit systems when packed | |
411 } | |
412 alias _RTL_CRITICAL_SECTION CRITICAL_SECTION; | |
413 | |
414 | |
415 enum | |
416 { | |
417 STD_INPUT_HANDLE = cast(DWORD)-10, | |
418 STD_OUTPUT_HANDLE = cast(DWORD)-11, | |
419 STD_ERROR_HANDLE = cast(DWORD)-12, | |
420 } | |
421 | |
422 export | |
423 { | |
424 BOOL SetCurrentDirectoryA(LPCSTR lpPathName); | |
425 BOOL SetCurrentDirectoryW(LPCWSTR lpPathName); | |
426 DWORD GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer); | |
427 DWORD GetCurrentDirectoryW(DWORD nBufferLength, LPWSTR lpBuffer); | |
428 BOOL CreateDirectoryA(LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); | |
429 BOOL CreateDirectoryW(LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); | |
430 BOOL CreateDirectoryExA(LPCSTR lpTemplateDirectory, LPCSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes); | |
431 BOOL CreateDirectoryExW(LPCWSTR lpTemplateDirectory, LPCWSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes); | |
432 BOOL RemoveDirectoryA(LPCSTR lpPathName); | |
433 BOOL RemoveDirectoryW(LPCWSTR lpPathName); | |
434 | |
435 BOOL CloseHandle(HANDLE hObject); | |
436 | |
437 HANDLE CreateFileA(in char* lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, | |
438 SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwCreationDisposition, | |
439 DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); | |
440 HANDLE CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, | |
441 SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwCreationDisposition, | |
442 DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); | |
443 | |
444 BOOL DeleteFileA(in char *lpFileName); | |
445 BOOL DeleteFileW(LPCWSTR lpFileName); | |
446 | |
447 BOOL FindClose(HANDLE hFindFile); | |
448 HANDLE FindFirstFileA(in char *lpFileName, WIN32_FIND_DATA* lpFindFileData); | |
449 HANDLE FindFirstFileW(in LPCWSTR lpFileName, WIN32_FIND_DATAW* lpFindFileData); | |
450 BOOL FindNextFileA(HANDLE hFindFile, WIN32_FIND_DATA* lpFindFileData); | |
451 BOOL FindNextFileW(HANDLE hFindFile, WIN32_FIND_DATAW* lpFindFileData); | |
452 BOOL GetExitCodeThread(HANDLE hThread, DWORD *lpExitCode); | |
453 DWORD GetLastError(); | |
454 DWORD GetFileAttributesA(in char *lpFileName); | |
455 DWORD GetFileAttributesW(in wchar *lpFileName); | |
456 DWORD GetFileSize(HANDLE hFile, DWORD *lpFileSizeHigh); | |
457 BOOL CopyFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, BOOL bFailIfExists); | |
458 BOOL CopyFileW(LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, BOOL bFailIfExists); | |
459 BOOL MoveFileA(in char *from, in char *to); | |
460 BOOL MoveFileW(LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName); | |
461 BOOL ReadFile(HANDLE hFile, void *lpBuffer, DWORD nNumberOfBytesToRead, | |
462 DWORD *lpNumberOfBytesRead, OVERLAPPED *lpOverlapped); | |
463 DWORD SetFilePointer(HANDLE hFile, LONG lDistanceToMove, | |
464 LONG *lpDistanceToMoveHigh, DWORD dwMoveMethod); | |
465 BOOL WriteFile(HANDLE hFile, in void *lpBuffer, DWORD nNumberOfBytesToWrite, | |
466 DWORD *lpNumberOfBytesWritten, OVERLAPPED *lpOverlapped); | |
467 DWORD GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize); | |
468 HANDLE GetStdHandle(DWORD nStdHandle); | |
469 BOOL SetStdHandle(DWORD nStdHandle, HANDLE hHandle); | |
470 } | |
471 | |
472 struct MEMORYSTATUS { | |
473 DWORD dwLength; | |
474 DWORD dwMemoryLoad; | |
475 DWORD dwTotalPhys; | |
476 DWORD dwAvailPhys; | |
477 DWORD dwTotalPageFile; | |
478 DWORD dwAvailPageFile; | |
479 DWORD dwTotalVirtual; | |
480 DWORD dwAvailVirtual; | |
481 }; | |
482 alias MEMORYSTATUS *LPMEMORYSTATUS; | |
483 | |
484 HMODULE LoadLibraryA(LPCSTR lpLibFileName); | |
485 FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName); | |
486 DWORD GetVersion(); | |
487 BOOL FreeLibrary(HMODULE hLibModule); | |
488 void FreeLibraryAndExitThread(HMODULE hLibModule, DWORD dwExitCode); | |
489 BOOL DisableThreadLibraryCalls(HMODULE hLibModule); | |
490 | |
491 // | |
492 // Registry Specific Access Rights. | |
493 // | |
494 | |
495 enum | |
496 { | |
497 KEY_QUERY_VALUE = 0x0001, | |
498 KEY_SET_VALUE = 0x0002, | |
499 KEY_CREATE_SUB_KEY = 0x0004, | |
500 KEY_ENUMERATE_SUB_KEYS = 0x0008, | |
501 KEY_NOTIFY = 0x0010, | |
502 KEY_CREATE_LINK = 0x0020, | |
503 | |
504 KEY_READ = cast(int)((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & ~SYNCHRONIZE), | |
505 KEY_WRITE = cast(int)((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & ~SYNCHRONIZE), | |
506 KEY_EXECUTE = cast(int)(KEY_READ & ~SYNCHRONIZE), | |
507 KEY_ALL_ACCESS = cast(int)((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & ~SYNCHRONIZE), | |
508 } | |
509 | |
510 // | |
511 // Key creation/open disposition | |
512 // | |
513 | |
514 enum : int | |
515 { | |
516 REG_CREATED_NEW_KEY = 0x00000001, // New Registry Key created | |
517 REG_OPENED_EXISTING_KEY = 0x00000002, // Existing Key opened | |
518 } | |
519 | |
520 // | |
521 // | |
522 // Predefined Value Types. | |
523 // | |
524 enum | |
525 { | |
526 REG_NONE = 0, // No value type | |
527 REG_SZ = 1, // Unicode nul terminated string | |
528 REG_EXPAND_SZ = 2, // Unicode nul terminated string | |
529 // (with environment variable references) | |
530 REG_BINARY = 3, // Free form binary | |
531 REG_DWORD = 4, // 32-bit number | |
532 REG_DWORD_LITTLE_ENDIAN = 4, // 32-bit number (same as REG_DWORD) | |
533 REG_DWORD_BIG_ENDIAN = 5, // 32-bit number | |
534 REG_LINK = 6, // Symbolic Link (unicode) | |
535 REG_MULTI_SZ = 7, // Multiple Unicode strings | |
536 REG_RESOURCE_LIST = 8, // Resource list in the resource map | |
537 REG_FULL_RESOURCE_DESCRIPTOR = 9, // Resource list in the hardware description | |
538 REG_RESOURCE_REQUIREMENTS_LIST = 10, | |
539 REG_QWORD = 11, | |
540 REG_QWORD_LITTLE_ENDIAN = 11, | |
541 } | |
542 | |
543 /* | |
544 * MessageBox() Flags | |
545 */ | |
546 enum | |
547 { | |
548 MB_OK = 0x00000000, | |
549 MB_OKCANCEL = 0x00000001, | |
550 MB_ABORTRETRYIGNORE = 0x00000002, | |
551 MB_YESNOCANCEL = 0x00000003, | |
552 MB_YESNO = 0x00000004, | |
553 MB_RETRYCANCEL = 0x00000005, | |
554 | |
555 | |
556 MB_ICONHAND = 0x00000010, | |
557 MB_ICONQUESTION = 0x00000020, | |
558 MB_ICONEXCLAMATION = 0x00000030, | |
559 MB_ICONASTERISK = 0x00000040, | |
560 | |
561 | |
562 MB_USERICON = 0x00000080, | |
563 MB_ICONWARNING = MB_ICONEXCLAMATION, | |
564 MB_ICONERROR = MB_ICONHAND, | |
565 | |
566 | |
567 MB_ICONINFORMATION = MB_ICONASTERISK, | |
568 MB_ICONSTOP = MB_ICONHAND, | |
569 | |
570 MB_DEFBUTTON1 = 0x00000000, | |
571 MB_DEFBUTTON2 = 0x00000100, | |
572 MB_DEFBUTTON3 = 0x00000200, | |
573 | |
574 MB_DEFBUTTON4 = 0x00000300, | |
575 | |
576 | |
577 MB_APPLMODAL = 0x00000000, | |
578 MB_SYSTEMMODAL = 0x00001000, | |
579 MB_TASKMODAL = 0x00002000, | |
580 | |
581 MB_HELP = 0x00004000, // Help Button | |
582 | |
583 | |
584 MB_NOFOCUS = 0x00008000, | |
585 MB_SETFOREGROUND = 0x00010000, | |
586 MB_DEFAULT_DESKTOP_ONLY = 0x00020000, | |
587 | |
588 | |
589 MB_TOPMOST = 0x00040000, | |
590 MB_RIGHT = 0x00080000, | |
591 MB_RTLREADING = 0x00100000, | |
592 | |
593 | |
594 MB_TYPEMASK = 0x0000000F, | |
595 MB_ICONMASK = 0x000000F0, | |
596 MB_DEFMASK = 0x00000F00, | |
597 MB_MODEMASK = 0x00003000, | |
598 MB_MISCMASK = 0x0000C000, | |
599 } | |
600 | |
601 | |
602 int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); | |
603 int MessageBoxExA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType, WORD wLanguageId); | |
604 | |
605 | |
606 enum : HKEY | |
607 { | |
608 HKEY_CLASSES_ROOT = cast(HKEY)(0x80000000), | |
609 HKEY_CURRENT_USER = cast(HKEY)(0x80000001), | |
610 HKEY_LOCAL_MACHINE = cast(HKEY)(0x80000002), | |
611 HKEY_USERS = cast(HKEY)(0x80000003), | |
612 HKEY_PERFORMANCE_DATA = cast(HKEY)(0x80000004), | |
613 HKEY_PERFORMANCE_TEXT = cast(HKEY)(0x80000050), | |
614 HKEY_PERFORMANCE_NLSTEXT = cast(HKEY)(0x80000060), | |
615 HKEY_CURRENT_CONFIG = cast(HKEY)(0x80000005), | |
616 HKEY_DYN_DATA = cast(HKEY)(0x80000006), | |
617 } | |
618 | |
619 | |
620 enum | |
621 { | |
622 REG_OPTION_RESERVED = (0x00000000), // Parameter is reserved | |
623 | |
624 REG_OPTION_NON_VOLATILE = (0x00000000), // Key is preserved | |
625 // when system is rebooted | |
626 | |
627 REG_OPTION_VOLATILE = (0x00000001), // Key is not preserved | |
628 // when system is rebooted | |
629 | |
630 REG_OPTION_CREATE_LINK = (0x00000002), // Created key is a | |
631 // symbolic link | |
632 | |
633 REG_OPTION_BACKUP_RESTORE = (0x00000004), // open for backup or restore | |
634 // special access rules | |
635 // privilege required | |
636 | |
637 REG_OPTION_OPEN_LINK = (0x00000008), // Open symbolic link | |
638 | |
639 REG_LEGAL_OPTION = (REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK), | |
640 } | |
641 | |
642 export LONG RegDeleteKeyA(HKEY hKey, LPCSTR lpSubKey); | |
643 export LONG RegDeleteValueA(HKEY hKey, LPCSTR lpValueName); | |
644 | |
645 export LONG RegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName, LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass, FILETIME* lpftLastWriteTime); | |
646 export LONG RegEnumValueA(HKEY hKey, DWORD dwIndex, LPSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, | |
647 LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData); | |
648 | |
649 export LONG RegCloseKey(HKEY hKey); | |
650 export LONG RegFlushKey(HKEY hKey); | |
651 | |
652 export LONG RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult); | |
653 export LONG RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult); | |
654 | |
655 export LONG RegQueryInfoKeyA(HKEY hKey, LPSTR lpClass, LPDWORD lpcbClass, | |
656 LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcbMaxSubKeyLen, LPDWORD lpcbMaxClassLen, | |
657 LPDWORD lpcValues, LPDWORD lpcbMaxValueNameLen, LPDWORD lpcbMaxValueLen, LPDWORD lpcbSecurityDescriptor, | |
658 PFILETIME lpftLastWriteTime); | |
659 | |
660 export LONG RegQueryValueA(HKEY hKey, LPCSTR lpSubKey, LPSTR lpValue, | |
661 LPLONG lpcbValue); | |
662 | |
663 export LONG RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, | |
664 DWORD dwOptions, REGSAM samDesired, SECURITY_ATTRIBUTES* lpSecurityAttributes, | |
665 PHKEY phkResult, LPDWORD lpdwDisposition); | |
666 | |
667 export LONG RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, BYTE* lpData, DWORD cbData); | |
668 | |
669 struct MEMORY_BASIC_INFORMATION { | |
670 PVOID BaseAddress; | |
671 PVOID AllocationBase; | |
672 DWORD AllocationProtect; | |
673 DWORD RegionSize; | |
674 DWORD State; | |
675 DWORD Protect; | |
676 DWORD Type; | |
677 } | |
678 alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; | |
679 | |
680 enum | |
681 { | |
682 SECTION_QUERY = 0x0001, | |
683 SECTION_MAP_WRITE = 0x0002, | |
684 SECTION_MAP_READ = 0x0004, | |
685 SECTION_MAP_EXECUTE = 0x0008, | |
686 SECTION_EXTEND_SIZE = 0x0010, | |
687 | |
688 SECTION_ALL_ACCESS = cast(int)(STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE), | |
689 PAGE_NOACCESS = 0x01, | |
690 PAGE_READONLY = 0x02, | |
691 PAGE_READWRITE = 0x04, | |
692 PAGE_WRITECOPY = 0x08, | |
693 PAGE_EXECUTE = 0x10, | |
694 PAGE_EXECUTE_READ = 0x20, | |
695 PAGE_EXECUTE_READWRITE = 0x40, | |
696 PAGE_EXECUTE_WRITECOPY = 0x80, | |
697 PAGE_GUARD = 0x100, | |
698 PAGE_NOCACHE = 0x200, | |
699 MEM_COMMIT = 0x1000, | |
700 MEM_RESERVE = 0x2000, | |
701 MEM_DECOMMIT = 0x4000, | |
702 MEM_RELEASE = 0x8000, | |
703 MEM_FREE = 0x10000, | |
704 MEM_PRIVATE = 0x20000, | |
705 MEM_MAPPED = 0x40000, | |
706 MEM_RESET = 0x80000, | |
707 MEM_TOP_DOWN = 0x100000, | |
708 SEC_FILE = 0x800000, | |
709 SEC_IMAGE = 0x1000000, | |
710 SEC_RESERVE = 0x4000000, | |
711 SEC_COMMIT = 0x8000000, | |
712 SEC_NOCACHE = 0x10000000, | |
713 MEM_IMAGE = SEC_IMAGE, | |
714 } | |
715 | |
716 enum | |
717 { | |
718 FILE_MAP_COPY = SECTION_QUERY, | |
719 FILE_MAP_WRITE = SECTION_MAP_WRITE, | |
720 FILE_MAP_READ = SECTION_MAP_READ, | |
721 FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS, | |
722 } | |
723 | |
724 | |
725 // | |
726 // Define access rights to files and directories | |
727 // | |
728 | |
729 // | |
730 // The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in | |
731 // devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these | |
732 // constants *MUST* always be in sync. | |
733 // The values are redefined in devioctl.h because they must be available to | |
734 // both DOS and NT. | |
735 // | |
736 | |
737 enum | |
738 { | |
739 FILE_READ_DATA = ( 0x0001 ), // file & pipe | |
740 FILE_LIST_DIRECTORY = ( 0x0001 ), // directory | |
741 | |
742 FILE_WRITE_DATA = ( 0x0002 ), // file & pipe | |
743 FILE_ADD_FILE = ( 0x0002 ), // directory | |
744 | |
745 FILE_APPEND_DATA = ( 0x0004 ), // file | |
746 FILE_ADD_SUBDIRECTORY = ( 0x0004 ), // directory | |
747 FILE_CREATE_PIPE_INSTANCE = ( 0x0004 ), // named pipe | |
748 | |
749 FILE_READ_EA = ( 0x0008 ), // file & directory | |
750 | |
751 FILE_WRITE_EA = ( 0x0010 ), // file & directory | |
752 | |
753 FILE_EXECUTE = ( 0x0020 ), // file | |
754 FILE_TRAVERSE = ( 0x0020 ), // directory | |
755 | |
756 FILE_DELETE_CHILD = ( 0x0040 ), // directory | |
757 | |
758 FILE_READ_ATTRIBUTES = ( 0x0080 ), // all | |
759 | |
760 FILE_WRITE_ATTRIBUTES = ( 0x0100 ), // all | |
761 | |
762 FILE_ALL_ACCESS = cast(int)(STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF), | |
763 | |
764 FILE_GENERIC_READ = cast(int)(STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE), | |
765 | |
766 FILE_GENERIC_WRITE = cast(int)(STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE), | |
767 | |
768 FILE_GENERIC_EXECUTE = cast(int)(STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE), | |
769 } | |
770 | |
771 export | |
772 { | |
773 BOOL FreeResource(HGLOBAL hResData); | |
774 LPVOID LockResource(HGLOBAL hResData); | |
775 BOOL GlobalUnlock(HGLOBAL hMem); | |
776 HGLOBAL GlobalFree(HGLOBAL hMem); | |
777 UINT GlobalCompact(DWORD dwMinFree); | |
778 void GlobalFix(HGLOBAL hMem); | |
779 void GlobalUnfix(HGLOBAL hMem); | |
780 LPVOID GlobalWire(HGLOBAL hMem); | |
781 BOOL GlobalUnWire(HGLOBAL hMem); | |
782 void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer); | |
783 HLOCAL LocalAlloc(UINT uFlags, UINT uBytes); | |
784 HLOCAL LocalReAlloc(HLOCAL hMem, UINT uBytes, UINT uFlags); | |
785 LPVOID LocalLock(HLOCAL hMem); | |
786 HLOCAL LocalHandle(LPCVOID pMem); | |
787 BOOL LocalUnlock(HLOCAL hMem); | |
788 UINT LocalSize(HLOCAL hMem); | |
789 UINT LocalFlags(HLOCAL hMem); | |
790 HLOCAL LocalFree(HLOCAL hMem); | |
791 UINT LocalShrink(HLOCAL hMem, UINT cbNewSize); | |
792 UINT LocalCompact(UINT uMinFree); | |
793 BOOL FlushInstructionCache(HANDLE hProcess, LPCVOID lpBaseAddress, DWORD dwSize); | |
794 LPVOID VirtualAlloc(LPVOID lpAddress, DWORD dwSize, DWORD flAllocationType, DWORD flProtect); | |
795 BOOL VirtualFree(LPVOID lpAddress, DWORD dwSize, DWORD dwFreeType); | |
796 BOOL VirtualProtect(LPVOID lpAddress, DWORD dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); | |
797 DWORD VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, DWORD dwLength); | |
798 LPVOID VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD flAllocationType, DWORD flProtect); | |
799 BOOL VirtualFreeEx(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD dwFreeType); | |
800 BOOL VirtualProtectEx(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); | |
801 DWORD VirtualQueryEx(HANDLE hProcess, LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, DWORD dwLength); | |
802 } | |
803 | |
804 struct SYSTEMTIME | |
805 { | |
806 WORD wYear; | |
807 WORD wMonth; | |
808 WORD wDayOfWeek; | |
809 WORD wDay; | |
810 WORD wHour; | |
811 WORD wMinute; | |
812 WORD wSecond; | |
813 WORD wMilliseconds; | |
814 } | |
815 | |
816 struct TIME_ZONE_INFORMATION { | |
817 LONG Bias; | |
818 WCHAR StandardName[ 32 ]; | |
819 SYSTEMTIME StandardDate; | |
820 LONG StandardBias; | |
821 WCHAR DaylightName[ 32 ]; | |
822 SYSTEMTIME DaylightDate; | |
823 LONG DaylightBias; | |
824 } | |
825 | |
826 enum | |
827 { | |
828 TIME_ZONE_ID_UNKNOWN = 0, | |
829 TIME_ZONE_ID_STANDARD = 1, | |
830 TIME_ZONE_ID_DAYLIGHT = 2, | |
831 } | |
832 | |
833 export void GetSystemTime(SYSTEMTIME* lpSystemTime); | |
834 export BOOL GetFileTime(HANDLE hFile, FILETIME *lpCreationTime, FILETIME *lpLastAccessTime, FILETIME *lpLastWriteTime); | |
835 export void GetSystemTimeAsFileTime(FILETIME* lpSystemTimeAsFileTime); | |
836 export BOOL SetSystemTime(SYSTEMTIME* lpSystemTime); | |
837 export BOOL SetFileTime(HANDLE hFile, in FILETIME *lpCreationTime, in FILETIME *lpLastAccessTime, in FILETIME *lpLastWriteTime); | |
838 export void GetLocalTime(SYSTEMTIME* lpSystemTime); | |
839 export BOOL SetLocalTime(SYSTEMTIME* lpSystemTime); | |
840 export BOOL SystemTimeToTzSpecificLocalTime(TIME_ZONE_INFORMATION* lpTimeZoneInformation, SYSTEMTIME* lpUniversalTime, SYSTEMTIME* lpLocalTime); | |
841 export DWORD GetTimeZoneInformation(TIME_ZONE_INFORMATION* lpTimeZoneInformation); | |
842 export BOOL SetTimeZoneInformation(TIME_ZONE_INFORMATION* lpTimeZoneInformation); | |
843 | |
844 export BOOL SystemTimeToFileTime(in SYSTEMTIME *lpSystemTime, FILETIME* lpFileTime); | |
845 export BOOL FileTimeToLocalFileTime(in FILETIME *lpFileTime, FILETIME* lpLocalFileTime); | |
846 export BOOL LocalFileTimeToFileTime(in FILETIME *lpLocalFileTime, FILETIME* lpFileTime); | |
847 export BOOL FileTimeToSystemTime(in FILETIME *lpFileTime, SYSTEMTIME* lpSystemTime); | |
848 export LONG CompareFileTime(in FILETIME *lpFileTime1, in FILETIME *lpFileTime2); | |
849 export BOOL FileTimeToDosDateTime(in FILETIME *lpFileTime, WORD* lpFatDate, WORD* lpFatTime); | |
850 export BOOL DosDateTimeToFileTime(WORD wFatDate, WORD wFatTime, FILETIME* lpFileTime); | |
851 export DWORD GetTickCount(); | |
852 export BOOL SetSystemTimeAdjustment(DWORD dwTimeAdjustment, BOOL bTimeAdjustmentDisabled); | |
853 export BOOL GetSystemTimeAdjustment(DWORD* lpTimeAdjustment, DWORD* lpTimeIncrement, BOOL* lpTimeAdjustmentDisabled); | |
854 export DWORD FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, void* *Arguments);export DWORD FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, void* *Arguments); | |
855 | |
856 enum | |
857 { | |
858 FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100, | |
859 FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200, | |
860 FORMAT_MESSAGE_FROM_STRING = 0x00000400, | |
861 FORMAT_MESSAGE_FROM_HMODULE = 0x00000800, | |
862 FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000, | |
863 FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000, | |
864 FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF, | |
865 }; | |
866 | |
867 | |
868 // | |
869 // Language IDs. | |
870 // | |
871 // The following two combinations of primary language ID and | |
872 // sublanguage ID have special semantics: | |
873 // | |
874 // Primary Language ID Sublanguage ID Result | |
875 // ------------------- --------------- ------------------------ | |
876 // LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral | |
877 // LANG_NEUTRAL SUBLANG_DEFAULT User default language | |
878 // LANG_NEUTRAL SUBLANG_SYS_DEFAULT System default language | |
879 // | |
880 | |
881 // | |
882 // Primary language IDs. | |
883 // | |
884 | |
885 enum | |
886 { | |
887 LANG_NEUTRAL = 0x00, | |
888 | |
889 LANG_AFRIKAANS = 0x36, | |
890 LANG_ALBANIAN = 0x1c, | |
891 LANG_ARABIC = 0x01, | |
892 LANG_BASQUE = 0x2d, | |
893 LANG_BELARUSIAN = 0x23, | |
894 LANG_BULGARIAN = 0x02, | |
895 LANG_CATALAN = 0x03, | |
896 LANG_CHINESE = 0x04, | |
897 LANG_CROATIAN = 0x1a, | |
898 LANG_CZECH = 0x05, | |
899 LANG_DANISH = 0x06, | |
900 LANG_DUTCH = 0x13, | |
901 LANG_ENGLISH = 0x09, | |
902 LANG_ESTONIAN = 0x25, | |
903 LANG_FAEROESE = 0x38, | |
904 LANG_FARSI = 0x29, | |
905 LANG_FINNISH = 0x0b, | |
906 LANG_FRENCH = 0x0c, | |
907 LANG_GERMAN = 0x07, | |
908 LANG_GREEK = 0x08, | |
909 LANG_HEBREW = 0x0d, | |
910 LANG_HUNGARIAN = 0x0e, | |
911 LANG_ICELANDIC = 0x0f, | |
912 LANG_INDONESIAN = 0x21, | |
913 LANG_ITALIAN = 0x10, | |
914 LANG_JAPANESE = 0x11, | |
915 LANG_KOREAN = 0x12, | |
916 LANG_LATVIAN = 0x26, | |
917 LANG_LITHUANIAN = 0x27, | |
918 LANG_NORWEGIAN = 0x14, | |
919 LANG_POLISH = 0x15, | |
920 LANG_PORTUGUESE = 0x16, | |
921 LANG_ROMANIAN = 0x18, | |
922 LANG_RUSSIAN = 0x19, | |
923 LANG_SERBIAN = 0x1a, | |
924 LANG_SLOVAK = 0x1b, | |
925 LANG_SLOVENIAN = 0x24, | |
926 LANG_SPANISH = 0x0a, | |
927 LANG_SWEDISH = 0x1d, | |
928 LANG_THAI = 0x1e, | |
929 LANG_TURKISH = 0x1f, | |
930 LANG_UKRAINIAN = 0x22, | |
931 LANG_VIETNAMESE = 0x2a, | |
932 } | |
933 // | |
934 // Sublanguage IDs. | |
935 // | |
936 // The name immediately following SUBLANG_ dictates which primary | |
937 // language ID that sublanguage ID can be combined with to form a | |
938 // valid language ID. | |
939 // | |
940 enum | |
941 { | |
942 SUBLANG_NEUTRAL = 0x00, // language neutral | |
943 SUBLANG_DEFAULT = 0x01, // user default | |
944 SUBLANG_SYS_DEFAULT = 0x02, // system default | |
945 | |
946 SUBLANG_ARABIC_SAUDI_ARABIA = 0x01, // Arabic (Saudi Arabia) | |
947 SUBLANG_ARABIC_IRAQ = 0x02, // Arabic (Iraq) | |
948 SUBLANG_ARABIC_EGYPT = 0x03, // Arabic (Egypt) | |
949 SUBLANG_ARABIC_LIBYA = 0x04, // Arabic (Libya) | |
950 SUBLANG_ARABIC_ALGERIA = 0x05, // Arabic (Algeria) | |
951 SUBLANG_ARABIC_MOROCCO = 0x06, // Arabic (Morocco) | |
952 SUBLANG_ARABIC_TUNISIA = 0x07, // Arabic (Tunisia) | |
953 SUBLANG_ARABIC_OMAN = 0x08, // Arabic (Oman) | |
954 SUBLANG_ARABIC_YEMEN = 0x09, // Arabic (Yemen) | |
955 SUBLANG_ARABIC_SYRIA = 0x0a, // Arabic (Syria) | |
956 SUBLANG_ARABIC_JORDAN = 0x0b, // Arabic (Jordan) | |
957 SUBLANG_ARABIC_LEBANON = 0x0c, // Arabic (Lebanon) | |
958 SUBLANG_ARABIC_KUWAIT = 0x0d, // Arabic (Kuwait) | |
959 SUBLANG_ARABIC_UAE = 0x0e, // Arabic (U.A.E) | |
960 SUBLANG_ARABIC_BAHRAIN = 0x0f, // Arabic (Bahrain) | |
961 SUBLANG_ARABIC_QATAR = 0x10, // Arabic (Qatar) | |
962 SUBLANG_CHINESE_TRADITIONAL = 0x01, // Chinese (Taiwan) | |
963 SUBLANG_CHINESE_SIMPLIFIED = 0x02, // Chinese (PR China) | |
964 SUBLANG_CHINESE_HONGKONG = 0x03, // Chinese (Hong Kong) | |
965 SUBLANG_CHINESE_SINGAPORE = 0x04, // Chinese (Singapore) | |
966 SUBLANG_DUTCH = 0x01, // Dutch | |
967 SUBLANG_DUTCH_BELGIAN = 0x02, // Dutch (Belgian) | |
968 SUBLANG_ENGLISH_US = 0x01, // English (USA) | |
969 SUBLANG_ENGLISH_UK = 0x02, // English (UK) | |
970 SUBLANG_ENGLISH_AUS = 0x03, // English (Australian) | |
971 SUBLANG_ENGLISH_CAN = 0x04, // English (Canadian) | |
972 SUBLANG_ENGLISH_NZ = 0x05, // English (New Zealand) | |
973 SUBLANG_ENGLISH_EIRE = 0x06, // English (Irish) | |
974 SUBLANG_ENGLISH_SOUTH_AFRICA = 0x07, // English (South Africa) | |
975 SUBLANG_ENGLISH_JAMAICA = 0x08, // English (Jamaica) | |
976 SUBLANG_ENGLISH_CARIBBEAN = 0x09, // English (Caribbean) | |
977 SUBLANG_ENGLISH_BELIZE = 0x0a, // English (Belize) | |
978 SUBLANG_ENGLISH_TRINIDAD = 0x0b, // English (Trinidad) | |
979 SUBLANG_FRENCH = 0x01, // French | |
980 SUBLANG_FRENCH_BELGIAN = 0x02, // French (Belgian) | |
981 SUBLANG_FRENCH_CANADIAN = 0x03, // French (Canadian) | |
982 SUBLANG_FRENCH_SWISS = 0x04, // French (Swiss) | |
983 SUBLANG_FRENCH_LUXEMBOURG = 0x05, // French (Luxembourg) | |
984 SUBLANG_GERMAN = 0x01, // German | |
985 SUBLANG_GERMAN_SWISS = 0x02, // German (Swiss) | |
986 SUBLANG_GERMAN_AUSTRIAN = 0x03, // German (Austrian) | |
987 SUBLANG_GERMAN_LUXEMBOURG = 0x04, // German (Luxembourg) | |
988 SUBLANG_GERMAN_LIECHTENSTEIN = 0x05, // German (Liechtenstein) | |
989 SUBLANG_ITALIAN = 0x01, // Italian | |
990 SUBLANG_ITALIAN_SWISS = 0x02, // Italian (Swiss) | |
991 SUBLANG_KOREAN = 0x01, // Korean (Extended Wansung) | |
992 SUBLANG_KOREAN_JOHAB = 0x02, // Korean (Johab) | |
993 SUBLANG_NORWEGIAN_BOKMAL = 0x01, // Norwegian (Bokmal) | |
994 SUBLANG_NORWEGIAN_NYNORSK = 0x02, // Norwegian (Nynorsk) | |
995 SUBLANG_PORTUGUESE = 0x02, // Portuguese | |
996 SUBLANG_PORTUGUESE_BRAZILIAN = 0x01, // Portuguese (Brazilian) | |
997 SUBLANG_SERBIAN_LATIN = 0x02, // Serbian (Latin) | |
998 SUBLANG_SERBIAN_CYRILLIC = 0x03, // Serbian (Cyrillic) | |
999 SUBLANG_SPANISH = 0x01, // Spanish (Castilian) | |
1000 SUBLANG_SPANISH_MEXICAN = 0x02, // Spanish (Mexican) | |
1001 SUBLANG_SPANISH_MODERN = 0x03, // Spanish (Modern) | |
1002 SUBLANG_SPANISH_GUATEMALA = 0x04, // Spanish (Guatemala) | |
1003 SUBLANG_SPANISH_COSTA_RICA = 0x05, // Spanish (Costa Rica) | |
1004 SUBLANG_SPANISH_PANAMA = 0x06, // Spanish (Panama) | |
1005 SUBLANG_SPANISH_DOMINICAN_REPUBLIC = 0x07, // Spanish (Dominican Republic) | |
1006 SUBLANG_SPANISH_VENEZUELA = 0x08, // Spanish (Venezuela) | |
1007 SUBLANG_SPANISH_COLOMBIA = 0x09, // Spanish (Colombia) | |
1008 SUBLANG_SPANISH_PERU = 0x0a, // Spanish (Peru) | |
1009 SUBLANG_SPANISH_ARGENTINA = 0x0b, // Spanish (Argentina) | |
1010 SUBLANG_SPANISH_ECUADOR = 0x0c, // Spanish (Ecuador) | |
1011 SUBLANG_SPANISH_CHILE = 0x0d, // Spanish (Chile) | |
1012 SUBLANG_SPANISH_URUGUAY = 0x0e, // Spanish (Uruguay) | |
1013 SUBLANG_SPANISH_PARAGUAY = 0x0f, // Spanish (Paraguay) | |
1014 SUBLANG_SPANISH_BOLIVIA = 0x10, // Spanish (Bolivia) | |
1015 SUBLANG_SPANISH_EL_SALVADOR = 0x11, // Spanish (El Salvador) | |
1016 SUBLANG_SPANISH_HONDURAS = 0x12, // Spanish (Honduras) | |
1017 SUBLANG_SPANISH_NICARAGUA = 0x13, // Spanish (Nicaragua) | |
1018 SUBLANG_SPANISH_PUERTO_RICO = 0x14, // Spanish (Puerto Rico) | |
1019 SUBLANG_SWEDISH = 0x01, // Swedish | |
1020 SUBLANG_SWEDISH_FINLAND = 0x02, // Swedish (Finland) | |
1021 } | |
1022 // | |
1023 // Sorting IDs. | |
1024 // | |
1025 | |
1026 enum | |
1027 { | |
1028 SORT_DEFAULT = 0x0, // sorting default | |
1029 | |
1030 SORT_JAPANESE_XJIS = 0x0, // Japanese XJIS order | |
1031 SORT_JAPANESE_UNICODE = 0x1, // Japanese Unicode order | |
1032 | |
1033 SORT_CHINESE_BIG5 = 0x0, // Chinese BIG5 order | |
1034 SORT_CHINESE_PRCP = 0x0, // PRC Chinese Phonetic order | |
1035 SORT_CHINESE_UNICODE = 0x1, // Chinese Unicode order | |
1036 SORT_CHINESE_PRC = 0x2, // PRC Chinese Stroke Count order | |
1037 | |
1038 SORT_KOREAN_KSC = 0x0, // Korean KSC order | |
1039 SORT_KOREAN_UNICODE = 0x1, // Korean Unicode order | |
1040 | |
1041 SORT_GERMAN_PHONE_BOOK = 0x1, // German Phone Book order | |
1042 } | |
1043 | |
1044 // end_r_winnt | |
1045 | |
1046 // | |
1047 // A language ID is a 16 bit value which is the combination of a | |
1048 // primary language ID and a secondary language ID. The bits are | |
1049 // allocated as follows: | |
1050 // | |
1051 // +-----------------------+-------------------------+ | |
1052 // | Sublanguage ID | Primary Language ID | | |
1053 // +-----------------------+-------------------------+ | |
1054 // 15 10 9 0 bit | |
1055 // | |
1056 // | |
1057 // Language ID creation/extraction macros: | |
1058 // | |
1059 // MAKELANGID - construct language id from a primary language id and | |
1060 // a sublanguage id. | |
1061 // PRIMARYLANGID - extract primary language id from a language id. | |
1062 // SUBLANGID - extract sublanguage id from a language id. | |
1063 // | |
1064 | |
1065 int MAKELANGID(int p, int s) { return ((cast(WORD)s) << 10) | cast(WORD)p; } | |
1066 WORD PRIMARYLANGID(int lgid) { return cast(WORD)(lgid & 0x3ff); } | |
1067 WORD SUBLANGID(int lgid) { return cast(WORD)(lgid >> 10); } | |
1068 | |
1069 | |
1070 struct FLOATING_SAVE_AREA { | |
1071 DWORD ControlWord; | |
1072 DWORD StatusWord; | |
1073 DWORD TagWord; | |
1074 DWORD ErrorOffset; | |
1075 DWORD ErrorSelector; | |
1076 DWORD DataOffset; | |
1077 DWORD DataSelector; | |
1078 BYTE RegisterArea[80 ]; | |
1079 DWORD Cr0NpxState; | |
1080 } | |
1081 | |
1082 enum | |
1083 { | |
1084 SIZE_OF_80387_REGISTERS = 80, | |
1085 // | |
1086 // The following flags control the contents of the CONTEXT structure. | |
1087 // | |
1088 CONTEXT_i386 = 0x00010000, // this assumes that i386 and | |
1089 CONTEXT_i486 = 0x00010000, // i486 have identical context records | |
1090 | |
1091 CONTEXT_CONTROL = (CONTEXT_i386 | 0x00000001), // SS:SP, CS:IP, FLAGS, BP | |
1092 CONTEXT_INTEGER = (CONTEXT_i386 | 0x00000002), // AX, BX, CX, DX, SI, DI | |
1093 CONTEXT_SEGMENTS = (CONTEXT_i386 | 0x00000004), // DS, ES, FS, GS | |
1094 CONTEXT_FLOATING_POINT = (CONTEXT_i386 | 0x00000008), // 387 state | |
1095 CONTEXT_DEBUG_REGISTERS = (CONTEXT_i386 | 0x00000010), // DB 0-3,6,7 | |
1096 | |
1097 CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS), | |
1098 } | |
1099 | |
1100 struct CONTEXT | |
1101 { | |
1102 | |
1103 // | |
1104 // The flags values within this flag control the contents of | |
1105 // a CONTEXT record. | |
1106 // | |
1107 // If the context record is used as an input parameter, then | |
1108 // for each portion of the context record controlled by a flag | |
1109 // whose value is set, it is assumed that that portion of the | |
1110 // context record contains valid context. If the context record | |
1111 // is being used to modify a threads context, then only that | |
1112 // portion of the threads context will be modified. | |
1113 // | |
1114 // If the context record is used as an IN OUT parameter to capture | |
1115 // the context of a thread, then only those portions of the thread's | |
1116 // context corresponding to set flags will be returned. | |
1117 // | |
1118 // The context record is never used as an OUT only parameter. | |
1119 // | |
1120 | |
1121 DWORD ContextFlags; | |
1122 | |
1123 // | |
1124 // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is | |
1125 // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT | |
1126 // included in CONTEXT_FULL. | |
1127 // | |
1128 | |
1129 DWORD Dr0; | |
1130 DWORD Dr1; | |
1131 DWORD Dr2; | |
1132 DWORD Dr3; | |
1133 DWORD Dr6; | |
1134 DWORD Dr7; | |
1135 | |
1136 // | |
1137 // This section is specified/returned if the | |
1138 // ContextFlags word contians the flag CONTEXT_FLOATING_POINT. | |
1139 // | |
1140 | |
1141 FLOATING_SAVE_AREA FloatSave; | |
1142 | |
1143 // | |
1144 // This section is specified/returned if the | |
1145 // ContextFlags word contians the flag CONTEXT_SEGMENTS. | |
1146 // | |
1147 | |
1148 DWORD SegGs; | |
1149 DWORD SegFs; | |
1150 DWORD SegEs; | |
1151 DWORD SegDs; | |
1152 | |
1153 // | |
1154 // This section is specified/returned if the | |
1155 // ContextFlags word contians the flag CONTEXT_INTEGER. | |
1156 // | |
1157 | |
1158 DWORD Edi; | |
1159 DWORD Esi; | |
1160 DWORD Ebx; | |
1161 DWORD Edx; | |
1162 DWORD Ecx; | |
1163 DWORD Eax; | |
1164 | |
1165 // | |
1166 // This section is specified/returned if the | |
1167 // ContextFlags word contians the flag CONTEXT_CONTROL. | |
1168 // | |
1169 | |
1170 DWORD Ebp; | |
1171 DWORD Eip; | |
1172 DWORD SegCs; // MUST BE SANITIZED | |
1173 DWORD EFlags; // MUST BE SANITIZED | |
1174 DWORD Esp; | |
1175 DWORD SegSs; | |
1176 } | |
1177 | |
1178 enum | |
1179 { | |
1180 THREAD_BASE_PRIORITY_LOWRT = 15, // value that gets a thread to LowRealtime-1 | |
1181 THREAD_BASE_PRIORITY_MAX = 2, // maximum thread base priority boost | |
1182 THREAD_BASE_PRIORITY_MIN = -2, // minimum thread base priority boost | |
1183 THREAD_BASE_PRIORITY_IDLE = -15, // value that gets a thread to idle | |
1184 | |
1185 THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN, | |
1186 THREAD_PRIORITY_BELOW_NORMAL = (THREAD_PRIORITY_LOWEST+1), | |
1187 THREAD_PRIORITY_NORMAL = 0, | |
1188 THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX, | |
1189 THREAD_PRIORITY_ABOVE_NORMAL = (THREAD_PRIORITY_HIGHEST-1), | |
1190 THREAD_PRIORITY_ERROR_RETURN = int.max, | |
1191 | |
1192 THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT, | |
1193 THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE, | |
1194 } | |
1195 | |
1196 export HANDLE GetCurrentThread(); | |
1197 export BOOL GetProcessTimes(HANDLE hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime); | |
1198 export HANDLE GetCurrentProcess(); | |
1199 export DWORD GetCurrentProcessId(); | |
1200 export BOOL DuplicateHandle (HANDLE sourceProcess, HANDLE sourceThread, | |
1201 HANDLE targetProcessHandle, HANDLE *targetHandle, DWORD access, | |
1202 BOOL inheritHandle, DWORD options); | |
1203 export DWORD GetCurrentThreadId(); | |
1204 export BOOL SetThreadPriority(HANDLE hThread, int nPriority); | |
1205 export BOOL SetThreadPriorityBoost(HANDLE hThread, BOOL bDisablePriorityBoost); | |
1206 export BOOL GetThreadPriorityBoost(HANDLE hThread, PBOOL pDisablePriorityBoost); | |
1207 export BOOL GetThreadTimes(HANDLE hThread, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime); | |
1208 export int GetThreadPriority(HANDLE hThread); | |
1209 export BOOL GetThreadContext(HANDLE hThread, CONTEXT* lpContext); | |
1210 export BOOL SetThreadContext(HANDLE hThread, CONTEXT* lpContext); | |
1211 export DWORD SuspendThread(HANDLE hThread); | |
1212 export DWORD ResumeThread(HANDLE hThread); | |
1213 export DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); | |
1214 export DWORD WaitForMultipleObjects(DWORD nCount, HANDLE *lpHandles, BOOL bWaitAll, DWORD dwMilliseconds); | |
1215 export void Sleep(DWORD dwMilliseconds); | |
1216 | |
1217 // Synchronization | |
1218 | |
1219 export | |
1220 { | |
1221 LONG InterlockedIncrement(LPLONG lpAddend); | |
1222 LONG InterlockedDecrement(LPLONG lpAddend); | |
1223 LONG InterlockedExchange(LPLONG Target, LONG Value); | |
1224 LONG InterlockedExchangeAdd(LPLONG Addend, LONG Value); | |
1225 PVOID InterlockedCompareExchange(PVOID *Destination, PVOID Exchange, PVOID Comperand); | |
1226 | |
1227 void InitializeCriticalSection(CRITICAL_SECTION * lpCriticalSection); | |
1228 void EnterCriticalSection(CRITICAL_SECTION * lpCriticalSection); | |
1229 BOOL TryEnterCriticalSection(CRITICAL_SECTION * lpCriticalSection); | |
1230 void LeaveCriticalSection(CRITICAL_SECTION * lpCriticalSection); | |
1231 void DeleteCriticalSection(CRITICAL_SECTION * lpCriticalSection); | |
1232 | |
1233 } | |
1234 | |
1235 | |
1236 | |
1237 export BOOL QueryPerformanceCounter(long* lpPerformanceCount); | |
1238 export BOOL QueryPerformanceFrequency(long* lpFrequency); | |
1239 | |
1240 enum | |
1241 { | |
1242 WM_NOTIFY = 0x004E, | |
1243 WM_INPUTLANGCHANGEREQUEST = 0x0050, | |
1244 WM_INPUTLANGCHANGE = 0x0051, | |
1245 WM_TCARD = 0x0052, | |
1246 WM_HELP = 0x0053, | |
1247 WM_USERCHANGED = 0x0054, | |
1248 WM_NOTIFYFORMAT = 0x0055, | |
1249 | |
1250 NFR_ANSI = 1, | |
1251 NFR_UNICODE = 2, | |
1252 NF_QUERY = 3, | |
1253 NF_REQUERY = 4, | |
1254 | |
1255 WM_CONTEXTMENU = 0x007B, | |
1256 WM_STYLECHANGING = 0x007C, | |
1257 WM_STYLECHANGED = 0x007D, | |
1258 WM_DISPLAYCHANGE = 0x007E, | |
1259 WM_GETICON = 0x007F, | |
1260 WM_SETICON = 0x0080, | |
1261 | |
1262 | |
1263 | |
1264 WM_NCCREATE = 0x0081, | |
1265 WM_NCDESTROY = 0x0082, | |
1266 WM_NCCALCSIZE = 0x0083, | |
1267 WM_NCHITTEST = 0x0084, | |
1268 WM_NCPAINT = 0x0085, | |
1269 WM_NCACTIVATE = 0x0086, | |
1270 WM_GETDLGCODE = 0x0087, | |
1271 | |
1272 WM_NCMOUSEMOVE = 0x00A0, | |
1273 WM_NCLBUTTONDOWN = 0x00A1, | |
1274 WM_NCLBUTTONUP = 0x00A2, | |
1275 WM_NCLBUTTONDBLCLK = 0x00A3, | |
1276 WM_NCRBUTTONDOWN = 0x00A4, | |
1277 WM_NCRBUTTONUP = 0x00A5, | |
1278 WM_NCRBUTTONDBLCLK = 0x00A6, | |
1279 WM_NCMBUTTONDOWN = 0x00A7, | |
1280 WM_NCMBUTTONUP = 0x00A8, | |
1281 WM_NCMBUTTONDBLCLK = 0x00A9, | |
1282 | |
1283 WM_KEYFIRST = 0x0100, | |
1284 WM_KEYDOWN = 0x0100, | |
1285 WM_KEYUP = 0x0101, | |
1286 WM_CHAR = 0x0102, | |
1287 WM_DEADCHAR = 0x0103, | |
1288 WM_SYSKEYDOWN = 0x0104, | |
1289 WM_SYSKEYUP = 0x0105, | |
1290 WM_SYSCHAR = 0x0106, | |
1291 WM_SYSDEADCHAR = 0x0107, | |
1292 WM_KEYLAST = 0x0108, | |
1293 | |
1294 | |
1295 WM_IME_STARTCOMPOSITION = 0x010D, | |
1296 WM_IME_ENDCOMPOSITION = 0x010E, | |
1297 WM_IME_COMPOSITION = 0x010F, | |
1298 WM_IME_KEYLAST = 0x010F, | |
1299 | |
1300 | |
1301 WM_INITDIALOG = 0x0110, | |
1302 WM_COMMAND = 0x0111, | |
1303 WM_SYSCOMMAND = 0x0112, | |
1304 WM_TIMER = 0x0113, | |
1305 WM_HSCROLL = 0x0114, | |
1306 WM_VSCROLL = 0x0115, | |
1307 WM_INITMENU = 0x0116, | |
1308 WM_INITMENUPOPUP = 0x0117, | |
1309 WM_MENUSELECT = 0x011F, | |
1310 WM_MENUCHAR = 0x0120, | |
1311 WM_ENTERIDLE = 0x0121, | |
1312 | |
1313 WM_CTLCOLORMSGBOX = 0x0132, | |
1314 WM_CTLCOLOREDIT = 0x0133, | |
1315 WM_CTLCOLORLISTBOX = 0x0134, | |
1316 WM_CTLCOLORBTN = 0x0135, | |
1317 WM_CTLCOLORDLG = 0x0136, | |
1318 WM_CTLCOLORSCROLLBAR = 0x0137, | |
1319 WM_CTLCOLORSTATIC = 0x0138, | |
1320 | |
1321 | |
1322 | |
1323 WM_MOUSEFIRST = 0x0200, | |
1324 WM_MOUSEMOVE = 0x0200, | |
1325 WM_LBUTTONDOWN = 0x0201, | |
1326 WM_LBUTTONUP = 0x0202, | |
1327 WM_LBUTTONDBLCLK = 0x0203, | |
1328 WM_RBUTTONDOWN = 0x0204, | |
1329 WM_RBUTTONUP = 0x0205, | |
1330 WM_RBUTTONDBLCLK = 0x0206, | |
1331 WM_MBUTTONDOWN = 0x0207, | |
1332 WM_MBUTTONUP = 0x0208, | |
1333 WM_MBUTTONDBLCLK = 0x0209, | |
1334 | |
1335 | |
1336 | |
1337 WM_MOUSELAST = 0x0209, | |
1338 | |
1339 | |
1340 | |
1341 | |
1342 | |
1343 | |
1344 | |
1345 | |
1346 WM_PARENTNOTIFY = 0x0210, | |
1347 MENULOOP_WINDOW = 0, | |
1348 MENULOOP_POPUP = 1, | |
1349 WM_ENTERMENULOOP = 0x0211, | |
1350 WM_EXITMENULOOP = 0x0212, | |
1351 | |
1352 | |
1353 WM_NEXTMENU = 0x0213, | |
1354 } | |
1355 | |
1356 enum | |
1357 { | |
1358 /* | |
1359 * Dialog Box Command IDs | |
1360 */ | |
1361 IDOK = 1, | |
1362 IDCANCEL = 2, | |
1363 IDABORT = 3, | |
1364 IDRETRY = 4, | |
1365 IDIGNORE = 5, | |
1366 IDYES = 6, | |
1367 IDNO = 7, | |
1368 | |
1369 IDCLOSE = 8, | |
1370 IDHELP = 9, | |
1371 | |
1372 | |
1373 // end_r_winuser | |
1374 | |
1375 | |
1376 | |
1377 /* | |
1378 * Control Manager Structures and Definitions | |
1379 */ | |
1380 | |
1381 | |
1382 | |
1383 // begin_r_winuser | |
1384 | |
1385 /* | |
1386 * Edit Control Styles | |
1387 */ | |
1388 ES_LEFT = 0x0000, | |
1389 ES_CENTER = 0x0001, | |
1390 ES_RIGHT = 0x0002, | |
1391 ES_MULTILINE = 0x0004, | |
1392 ES_UPPERCASE = 0x0008, | |
1393 ES_LOWERCASE = 0x0010, | |
1394 ES_PASSWORD = 0x0020, | |
1395 ES_AUTOVSCROLL = 0x0040, | |
1396 ES_AUTOHSCROLL = 0x0080, | |
1397 ES_NOHIDESEL = 0x0100, | |
1398 ES_OEMCONVERT = 0x0400, | |
1399 ES_READONLY = 0x0800, | |
1400 ES_WANTRETURN = 0x1000, | |
1401 | |
1402 ES_NUMBER = 0x2000, | |
1403 | |
1404 | |
1405 // end_r_winuser | |
1406 | |
1407 | |
1408 | |
1409 /* | |
1410 * Edit Control Notification Codes | |
1411 */ | |
1412 EN_SETFOCUS = 0x0100, | |
1413 EN_KILLFOCUS = 0x0200, | |
1414 EN_CHANGE = 0x0300, | |
1415 EN_UPDATE = 0x0400, | |
1416 EN_ERRSPACE = 0x0500, | |
1417 EN_MAXTEXT = 0x0501, | |
1418 EN_HSCROLL = 0x0601, | |
1419 EN_VSCROLL = 0x0602, | |
1420 | |
1421 | |
1422 /* Edit control EM_SETMARGIN parameters */ | |
1423 EC_LEFTMARGIN = 0x0001, | |
1424 EC_RIGHTMARGIN = 0x0002, | |
1425 EC_USEFONTINFO = 0xffff, | |
1426 | |
1427 | |
1428 | |
1429 | |
1430 // begin_r_winuser | |
1431 | |
1432 /* | |
1433 * Edit Control Messages | |
1434 */ | |
1435 EM_GETSEL = 0x00B0, | |
1436 EM_SETSEL = 0x00B1, | |
1437 EM_GETRECT = 0x00B2, | |
1438 EM_SETRECT = 0x00B3, | |
1439 EM_SETRECTNP = 0x00B4, | |
1440 EM_SCROLL = 0x00B5, | |
1441 EM_LINESCROLL = 0x00B6, | |
1442 EM_SCROLLCARET = 0x00B7, | |
1443 EM_GETMODIFY = 0x00B8, | |
1444 EM_SETMODIFY = 0x00B9, | |
1445 EM_GETLINECOUNT = 0x00BA, | |
1446 EM_LINEINDEX = 0x00BB, | |
1447 EM_SETHANDLE = 0x00BC, | |
1448 EM_GETHANDLE = 0x00BD, | |
1449 EM_GETTHUMB = 0x00BE, | |
1450 EM_LINELENGTH = 0x00C1, | |
1451 EM_REPLACESEL = 0x00C2, | |
1452 EM_GETLINE = 0x00C4, | |
1453 EM_LIMITTEXT = 0x00C5, | |
1454 EM_CANUNDO = 0x00C6, | |
1455 EM_UNDO = 0x00C7, | |
1456 EM_FMTLINES = 0x00C8, | |
1457 EM_LINEFROMCHAR = 0x00C9, | |
1458 EM_SETTABSTOPS = 0x00CB, | |
1459 EM_SETPASSWORDCHAR = 0x00CC, | |
1460 EM_EMPTYUNDOBUFFER = 0x00CD, | |
1461 EM_GETFIRSTVISIBLELINE = 0x00CE, | |
1462 EM_SETREADONLY = 0x00CF, | |
1463 EM_SETWORDBREAKPROC = 0x00D0, | |
1464 EM_GETWORDBREAKPROC = 0x00D1, | |
1465 EM_GETPASSWORDCHAR = 0x00D2, | |
1466 | |
1467 EM_SETMARGINS = 0x00D3, | |
1468 EM_GETMARGINS = 0x00D4, | |
1469 EM_SETLIMITTEXT = EM_LIMITTEXT, /* ;win40 Name change */ | |
1470 EM_GETLIMITTEXT = 0x00D5, | |
1471 EM_POSFROMCHAR = 0x00D6, | |
1472 EM_CHARFROMPOS = 0x00D7, | |
1473 | |
1474 | |
1475 | |
1476 // end_r_winuser | |
1477 | |
1478 | |
1479 /* | |
1480 * EDITWORDBREAKPROC code values | |
1481 */ | |
1482 WB_LEFT = 0, | |
1483 WB_RIGHT = 1, | |
1484 WB_ISDELIMITER = 2, | |
1485 | |
1486 // begin_r_winuser | |
1487 | |
1488 /* | |
1489 * Button Control Styles | |
1490 */ | |
1491 BS_PUSHBUTTON = 0x00000000, | |
1492 BS_DEFPUSHBUTTON = 0x00000001, | |
1493 BS_CHECKBOX = 0x00000002, | |
1494 BS_AUTOCHECKBOX = 0x00000003, | |
1495 BS_RADIOBUTTON = 0x00000004, | |
1496 BS_3STATE = 0x00000005, | |
1497 BS_AUTO3STATE = 0x00000006, | |
1498 BS_GROUPBOX = 0x00000007, | |
1499 BS_USERBUTTON = 0x00000008, | |
1500 BS_AUTORADIOBUTTON = 0x00000009, | |
1501 BS_OWNERDRAW = 0x0000000B, | |
1502 BS_LEFTTEXT = 0x00000020, | |
1503 | |
1504 BS_TEXT = 0x00000000, | |
1505 BS_ICON = 0x00000040, | |
1506 BS_BITMAP = 0x00000080, | |
1507 BS_LEFT = 0x00000100, | |
1508 BS_RIGHT = 0x00000200, | |
1509 BS_CENTER = 0x00000300, | |
1510 BS_TOP = 0x00000400, | |
1511 BS_BOTTOM = 0x00000800, | |
1512 BS_VCENTER = 0x00000C00, | |
1513 BS_PUSHLIKE = 0x00001000, | |
1514 BS_MULTILINE = 0x00002000, | |
1515 BS_NOTIFY = 0x00004000, | |
1516 BS_FLAT = 0x00008000, | |
1517 BS_RIGHTBUTTON = BS_LEFTTEXT, | |
1518 | |
1519 | |
1520 | |
1521 /* | |
1522 * User Button Notification Codes | |
1523 */ | |
1524 BN_CLICKED = 0, | |
1525 BN_PAINT = 1, | |
1526 BN_HILITE = 2, | |
1527 BN_UNHILITE = 3, | |
1528 BN_DISABLE = 4, | |
1529 BN_DOUBLECLICKED = 5, | |
1530 | |
1531 BN_PUSHED = BN_HILITE, | |
1532 BN_UNPUSHED = BN_UNHILITE, | |
1533 BN_DBLCLK = BN_DOUBLECLICKED, | |
1534 BN_SETFOCUS = 6, | |
1535 BN_KILLFOCUS = 7, | |
1536 | |
1537 /* | |
1538 * Button Control Messages | |
1539 */ | |
1540 BM_GETCHECK = 0x00F0, | |
1541 BM_SETCHECK = 0x00F1, | |
1542 BM_GETSTATE = 0x00F2, | |
1543 BM_SETSTATE = 0x00F3, | |
1544 BM_SETSTYLE = 0x00F4, | |
1545 | |
1546 BM_CLICK = 0x00F5, | |
1547 BM_GETIMAGE = 0x00F6, | |
1548 BM_SETIMAGE = 0x00F7, | |
1549 | |
1550 BST_UNCHECKED = 0x0000, | |
1551 BST_CHECKED = 0x0001, | |
1552 BST_INDETERMINATE = 0x0002, | |
1553 BST_PUSHED = 0x0004, | |
1554 BST_FOCUS = 0x0008, | |
1555 | |
1556 | |
1557 /* | |
1558 * Static Control Constants | |
1559 */ | |
1560 SS_LEFT = 0x00000000, | |
1561 SS_CENTER = 0x00000001, | |
1562 SS_RIGHT = 0x00000002, | |
1563 SS_ICON = 0x00000003, | |
1564 SS_BLACKRECT = 0x00000004, | |
1565 SS_GRAYRECT = 0x00000005, | |
1566 SS_WHITERECT = 0x00000006, | |
1567 SS_BLACKFRAME = 0x00000007, | |
1568 SS_GRAYFRAME = 0x00000008, | |
1569 SS_WHITEFRAME = 0x00000009, | |
1570 SS_USERITEM = 0x0000000A, | |
1571 SS_SIMPLE = 0x0000000B, | |
1572 SS_LEFTNOWORDWRAP = 0x0000000C, | |
1573 | |
1574 SS_OWNERDRAW = 0x0000000D, | |
1575 SS_BITMAP = 0x0000000E, | |
1576 SS_ENHMETAFILE = 0x0000000F, | |
1577 SS_ETCHEDHORZ = 0x00000010, | |
1578 SS_ETCHEDVERT = 0x00000011, | |
1579 SS_ETCHEDFRAME = 0x00000012, | |
1580 SS_TYPEMASK = 0x0000001F, | |
1581 | |
1582 SS_NOPREFIX = 0x00000080, /* Don't do "&" character translation */ | |
1583 | |
1584 SS_NOTIFY = 0x00000100, | |
1585 SS_CENTERIMAGE = 0x00000200, | |
1586 SS_RIGHTJUST = 0x00000400, | |
1587 SS_REALSIZEIMAGE = 0x00000800, | |
1588 SS_SUNKEN = 0x00001000, | |
1589 SS_ENDELLIPSIS = 0x00004000, | |
1590 SS_PATHELLIPSIS = 0x00008000, | |
1591 SS_WORDELLIPSIS = 0x0000C000, | |
1592 SS_ELLIPSISMASK = 0x0000C000, | |
1593 | |
1594 | |
1595 // end_r_winuser | |
1596 | |
1597 | |
1598 /* | |
1599 * Static Control Mesages | |
1600 */ | |
1601 STM_SETICON = 0x0170, | |
1602 STM_GETICON = 0x0171, | |
1603 | |
1604 STM_SETIMAGE = 0x0172, | |
1605 STM_GETIMAGE = 0x0173, | |
1606 STN_CLICKED = 0, | |
1607 STN_DBLCLK = 1, | |
1608 STN_ENABLE = 2, | |
1609 STN_DISABLE = 3, | |
1610 | |
1611 STM_MSGMAX = 0x0174, | |
1612 } | |
1613 | |
1614 | |
1615 enum | |
1616 { | |
1617 /* | |
1618 * Window Messages | |
1619 */ | |
1620 | |
1621 WM_NULL = 0x0000, | |
1622 WM_CREATE = 0x0001, | |
1623 WM_DESTROY = 0x0002, | |
1624 WM_MOVE = 0x0003, | |
1625 WM_SIZE = 0x0005, | |
1626 | |
1627 WM_ACTIVATE = 0x0006, | |
1628 /* | |
1629 * WM_ACTIVATE state values | |
1630 */ | |
1631 WA_INACTIVE = 0, | |
1632 WA_ACTIVE = 1, | |
1633 WA_CLICKACTIVE = 2, | |
1634 | |
1635 WM_SETFOCUS = 0x0007, | |
1636 WM_KILLFOCUS = 0x0008, | |
1637 WM_ENABLE = 0x000A, | |
1638 WM_SETREDRAW = 0x000B, | |
1639 WM_SETTEXT = 0x000C, | |
1640 WM_GETTEXT = 0x000D, | |
1641 WM_GETTEXTLENGTH = 0x000E, | |
1642 WM_PAINT = 0x000F, | |
1643 WM_CLOSE = 0x0010, | |
1644 WM_QUERYENDSESSION = 0x0011, | |
1645 WM_QUIT = 0x0012, | |
1646 WM_QUERYOPEN = 0x0013, | |
1647 WM_ERASEBKGND = 0x0014, | |
1648 WM_SYSCOLORCHANGE = 0x0015, | |
1649 WM_ENDSESSION = 0x0016, | |
1650 WM_SHOWWINDOW = 0x0018, | |
1651 WM_WININICHANGE = 0x001A, | |
1652 | |
1653 WM_SETTINGCHANGE = WM_WININICHANGE, | |
1654 | |
1655 | |
1656 | |
1657 WM_DEVMODECHANGE = 0x001B, | |
1658 WM_ACTIVATEAPP = 0x001C, | |
1659 WM_FONTCHANGE = 0x001D, | |
1660 WM_TIMECHANGE = 0x001E, | |
1661 WM_CANCELMODE = 0x001F, | |
1662 WM_SETCURSOR = 0x0020, | |
1663 WM_MOUSEACTIVATE = 0x0021, | |
1664 WM_CHILDACTIVATE = 0x0022, | |
1665 WM_QUEUESYNC = 0x0023, | |
1666 | |
1667 WM_GETMINMAXINFO = 0x0024, | |
1668 } | |
1669 | |
1670 struct RECT | |
1671 { | |
1672 LONG left; | |
1673 LONG top; | |
1674 LONG right; | |
1675 LONG bottom; | |
1676 } | |
1677 alias RECT* PRECT, NPRECT, LPRECT; | |
1678 | |
1679 struct PAINTSTRUCT { | |
1680 HDC hdc; | |
1681 BOOL fErase; | |
1682 RECT rcPaint; | |
1683 BOOL fRestore; | |
1684 BOOL fIncUpdate; | |
1685 BYTE rgbReserved[32]; | |
1686 } | |
1687 alias PAINTSTRUCT* PPAINTSTRUCT, NPPAINTSTRUCT, LPPAINTSTRUCT; | |
1688 | |
1689 // flags for GetDCEx() | |
1690 | |
1691 enum | |
1692 { | |
1693 DCX_WINDOW = 0x00000001, | |
1694 DCX_CACHE = 0x00000002, | |
1695 DCX_NORESETATTRS = 0x00000004, | |
1696 DCX_CLIPCHILDREN = 0x00000008, | |
1697 DCX_CLIPSIBLINGS = 0x00000010, | |
1698 DCX_PARENTCLIP = 0x00000020, | |
1699 DCX_EXCLUDERGN = 0x00000040, | |
1700 DCX_INTERSECTRGN = 0x00000080, | |
1701 DCX_EXCLUDEUPDATE = 0x00000100, | |
1702 DCX_INTERSECTUPDATE = 0x00000200, | |
1703 DCX_LOCKWINDOWUPDATE = 0x00000400, | |
1704 DCX_VALIDATE = 0x00200000, | |
1705 } | |
1706 | |
1707 export | |
1708 { | |
1709 BOOL UpdateWindow(HWND hWnd); | |
1710 HWND SetActiveWindow(HWND hWnd); | |
1711 HWND GetForegroundWindow(); | |
1712 BOOL PaintDesktop(HDC hdc); | |
1713 BOOL SetForegroundWindow(HWND hWnd); | |
1714 HWND WindowFromDC(HDC hDC); | |
1715 HDC GetDC(HWND hWnd); | |
1716 HDC GetDCEx(HWND hWnd, HRGN hrgnClip, DWORD flags); | |
1717 HDC GetWindowDC(HWND hWnd); | |
1718 int ReleaseDC(HWND hWnd, HDC hDC); | |
1719 HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint); | |
1720 BOOL EndPaint(HWND hWnd, PAINTSTRUCT *lpPaint); | |
1721 BOOL GetUpdateRect(HWND hWnd, LPRECT lpRect, BOOL bErase); | |
1722 int GetUpdateRgn(HWND hWnd, HRGN hRgn, BOOL bErase); | |
1723 int SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw); | |
1724 int GetWindowRgn(HWND hWnd, HRGN hRgn); | |
1725 int ExcludeUpdateRgn(HDC hDC, HWND hWnd); | |
1726 BOOL InvalidateRect(HWND hWnd, RECT *lpRect, BOOL bErase); | |
1727 BOOL ValidateRect(HWND hWnd, RECT *lpRect); | |
1728 BOOL InvalidateRgn(HWND hWnd, HRGN hRgn, BOOL bErase); | |
1729 BOOL ValidateRgn(HWND hWnd, HRGN hRgn); | |
1730 BOOL RedrawWindow(HWND hWnd, RECT *lprcUpdate, HRGN hrgnUpdate, UINT flags); | |
1731 } | |
1732 | |
1733 // flags for RedrawWindow() | |
1734 enum | |
1735 { | |
1736 RDW_INVALIDATE = 0x0001, | |
1737 RDW_INTERNALPAINT = 0x0002, | |
1738 RDW_ERASE = 0x0004, | |
1739 RDW_VALIDATE = 0x0008, | |
1740 RDW_NOINTERNALPAINT = 0x0010, | |
1741 RDW_NOERASE = 0x0020, | |
1742 RDW_NOCHILDREN = 0x0040, | |
1743 RDW_ALLCHILDREN = 0x0080, | |
1744 RDW_UPDATENOW = 0x0100, | |
1745 RDW_ERASENOW = 0x0200, | |
1746 RDW_FRAME = 0x0400, | |
1747 RDW_NOFRAME = 0x0800, | |
1748 } | |
1749 | |
1750 export | |
1751 { | |
1752 BOOL GetClientRect(HWND hWnd, LPRECT lpRect); | |
1753 BOOL GetWindowRect(HWND hWnd, LPRECT lpRect); | |
1754 BOOL AdjustWindowRect(LPRECT lpRect, DWORD dwStyle, BOOL bMenu); | |
1755 BOOL AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle); | |
1756 HFONT CreateFontA(int, int, int, int, int, DWORD, | |
1757 DWORD, DWORD, DWORD, DWORD, DWORD, | |
1758 DWORD, DWORD, LPCSTR); | |
1759 HFONT CreateFontW(int, int, int, int, int, DWORD, | |
1760 DWORD, DWORD, DWORD, DWORD, DWORD, | |
1761 DWORD, DWORD, LPCWSTR); | |
1762 } | |
1763 | |
1764 enum | |
1765 { | |
1766 OUT_DEFAULT_PRECIS = 0, | |
1767 OUT_STRING_PRECIS = 1, | |
1768 OUT_CHARACTER_PRECIS = 2, | |
1769 OUT_STROKE_PRECIS = 3, | |
1770 OUT_TT_PRECIS = 4, | |
1771 OUT_DEVICE_PRECIS = 5, | |
1772 OUT_RASTER_PRECIS = 6, | |
1773 OUT_TT_ONLY_PRECIS = 7, | |
1774 OUT_OUTLINE_PRECIS = 8, | |
1775 OUT_SCREEN_OUTLINE_PRECIS = 9, | |
1776 | |
1777 CLIP_DEFAULT_PRECIS = 0, | |
1778 CLIP_CHARACTER_PRECIS = 1, | |
1779 CLIP_STROKE_PRECIS = 2, | |
1780 CLIP_MASK = 0xf, | |
1781 CLIP_LH_ANGLES = (1<<4), | |
1782 CLIP_TT_ALWAYS = (2<<4), | |
1783 CLIP_EMBEDDED = (8<<4), | |
1784 | |
1785 DEFAULT_QUALITY = 0, | |
1786 DRAFT_QUALITY = 1, | |
1787 PROOF_QUALITY = 2, | |
1788 | |
1789 NONANTIALIASED_QUALITY = 3, | |
1790 ANTIALIASED_QUALITY = 4, | |
1791 | |
1792 | |
1793 DEFAULT_PITCH = 0, | |
1794 FIXED_PITCH = 1, | |
1795 VARIABLE_PITCH = 2, | |
1796 | |
1797 MONO_FONT = 8, | |
1798 | |
1799 | |
1800 ANSI_CHARSET = 0, | |
1801 DEFAULT_CHARSET = 1, | |
1802 SYMBOL_CHARSET = 2, | |
1803 SHIFTJIS_CHARSET = 128, | |
1804 HANGEUL_CHARSET = 129, | |
1805 GB2312_CHARSET = 134, | |
1806 CHINESEBIG5_CHARSET = 136, | |
1807 OEM_CHARSET = 255, | |
1808 | |
1809 JOHAB_CHARSET = 130, | |
1810 HEBREW_CHARSET = 177, | |
1811 ARABIC_CHARSET = 178, | |
1812 GREEK_CHARSET = 161, | |
1813 TURKISH_CHARSET = 162, | |
1814 VIETNAMESE_CHARSET = 163, | |
1815 THAI_CHARSET = 222, | |
1816 EASTEUROPE_CHARSET = 238, | |
1817 RUSSIAN_CHARSET = 204, | |
1818 | |
1819 MAC_CHARSET = 77, | |
1820 BALTIC_CHARSET = 186, | |
1821 | |
1822 FS_LATIN1 = 0x00000001L, | |
1823 FS_LATIN2 = 0x00000002L, | |
1824 FS_CYRILLIC = 0x00000004L, | |
1825 FS_GREEK = 0x00000008L, | |
1826 FS_TURKISH = 0x00000010L, | |
1827 FS_HEBREW = 0x00000020L, | |
1828 FS_ARABIC = 0x00000040L, | |
1829 FS_BALTIC = 0x00000080L, | |
1830 FS_VIETNAMESE = 0x00000100L, | |
1831 FS_THAI = 0x00010000L, | |
1832 FS_JISJAPAN = 0x00020000L, | |
1833 FS_CHINESESIMP = 0x00040000L, | |
1834 FS_WANSUNG = 0x00080000L, | |
1835 FS_CHINESETRAD = 0x00100000L, | |
1836 FS_JOHAB = 0x00200000L, | |
1837 FS_SYMBOL = cast(int)0x80000000L, | |
1838 | |
1839 | |
1840 /* Font Families */ | |
1841 FF_DONTCARE = (0<<4), /* Don't care or don't know. */ | |
1842 FF_ROMAN = (1<<4), /* Variable stroke width, serifed. */ | |
1843 /* Times Roman, Century Schoolbook, etc. */ | |
1844 FF_SWISS = (2<<4), /* Variable stroke width, sans-serifed. */ | |
1845 /* Helvetica, Swiss, etc. */ | |
1846 FF_MODERN = (3<<4), /* Constant stroke width, serifed or sans-serifed. */ | |
1847 /* Pica, Elite, Courier, etc. */ | |
1848 FF_SCRIPT = (4<<4), /* Cursive, etc. */ | |
1849 FF_DECORATIVE = (5<<4), /* Old English, etc. */ | |
1850 | |
1851 /* Font Weights */ | |
1852 FW_DONTCARE = 0, | |
1853 FW_THIN = 100, | |
1854 FW_EXTRALIGHT = 200, | |
1855 FW_LIGHT = 300, | |
1856 FW_NORMAL = 400, | |
1857 FW_MEDIUM = 500, | |
1858 FW_SEMIBOLD = 600, | |
1859 FW_BOLD = 700, | |
1860 FW_EXTRABOLD = 800, | |
1861 FW_HEAVY = 900, | |
1862 | |
1863 FW_ULTRALIGHT = FW_EXTRALIGHT, | |
1864 FW_REGULAR = FW_NORMAL, | |
1865 FW_DEMIBOLD = FW_SEMIBOLD, | |
1866 FW_ULTRABOLD = FW_EXTRABOLD, | |
1867 FW_BLACK = FW_HEAVY, | |
1868 | |
1869 PANOSE_COUNT = 10, | |
1870 PAN_FAMILYTYPE_INDEX = 0, | |
1871 PAN_SERIFSTYLE_INDEX = 1, | |
1872 PAN_WEIGHT_INDEX = 2, | |
1873 PAN_PROPORTION_INDEX = 3, | |
1874 PAN_CONTRAST_INDEX = 4, | |
1875 PAN_STROKEVARIATION_INDEX = 5, | |
1876 PAN_ARMSTYLE_INDEX = 6, | |
1877 PAN_LETTERFORM_INDEX = 7, | |
1878 PAN_MIDLINE_INDEX = 8, | |
1879 PAN_XHEIGHT_INDEX = 9, | |
1880 | |
1881 PAN_CULTURE_LATIN = 0, | |
1882 } | |
1883 | |
1884 struct RGBQUAD { | |
1885 BYTE rgbBlue; | |
1886 BYTE rgbGreen; | |
1887 BYTE rgbRed; | |
1888 BYTE rgbReserved; | |
1889 } | |
1890 alias RGBQUAD* LPRGBQUAD; | |
1891 | |
1892 struct BITMAPINFOHEADER | |
1893 { | |
1894 DWORD biSize; | |
1895 LONG biWidth; | |
1896 LONG biHeight; | |
1897 WORD biPlanes; | |
1898 WORD biBitCount; | |
1899 DWORD biCompression; | |
1900 DWORD biSizeImage; | |
1901 LONG biXPelsPerMeter; | |
1902 LONG biYPelsPerMeter; | |
1903 DWORD biClrUsed; | |
1904 DWORD biClrImportant; | |
1905 } | |
1906 alias BITMAPINFOHEADER* LPBITMAPINFOHEADER, PBITMAPINFOHEADER; | |
1907 | |
1908 struct BITMAPINFO { | |
1909 BITMAPINFOHEADER bmiHeader; | |
1910 RGBQUAD bmiColors[1]; | |
1911 } | |
1912 alias BITMAPINFO* LPBITMAPINFO, PBITMAPINFO; | |
1913 | |
1914 struct PALETTEENTRY { | |
1915 BYTE peRed; | |
1916 BYTE peGreen; | |
1917 BYTE peBlue; | |
1918 BYTE peFlags; | |
1919 } | |
1920 alias PALETTEENTRY* PPALETTEENTRY, LPPALETTEENTRY; | |
1921 | |
1922 struct LOGPALETTE { | |
1923 WORD palVersion; | |
1924 WORD palNumEntries; | |
1925 PALETTEENTRY palPalEntry[1]; | |
1926 } | |
1927 alias LOGPALETTE* PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; | |
1928 | |
1929 /* Pixel format descriptor */ | |
1930 struct PIXELFORMATDESCRIPTOR | |
1931 { | |
1932 WORD nSize; | |
1933 WORD nVersion; | |
1934 DWORD dwFlags; | |
1935 BYTE iPixelType; | |
1936 BYTE cColorBits; | |
1937 BYTE cRedBits; | |
1938 BYTE cRedShift; | |
1939 BYTE cGreenBits; | |
1940 BYTE cGreenShift; | |
1941 BYTE cBlueBits; | |
1942 BYTE cBlueShift; | |
1943 BYTE cAlphaBits; | |
1944 BYTE cAlphaShift; | |
1945 BYTE cAccumBits; | |
1946 BYTE cAccumRedBits; | |
1947 BYTE cAccumGreenBits; | |
1948 BYTE cAccumBlueBits; | |
1949 BYTE cAccumAlphaBits; | |
1950 BYTE cDepthBits; | |
1951 BYTE cStencilBits; | |
1952 BYTE cAuxBuffers; | |
1953 BYTE iLayerType; | |
1954 BYTE bReserved; | |
1955 DWORD dwLayerMask; | |
1956 DWORD dwVisibleMask; | |
1957 DWORD dwDamageMask; | |
1958 } | |
1959 alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; | |
1960 | |
1961 | |
1962 export | |
1963 { | |
1964 BOOL RoundRect(HDC, int, int, int, int, int, int); | |
1965 BOOL ResizePalette(HPALETTE, UINT); | |
1966 int SaveDC(HDC); | |
1967 int SelectClipRgn(HDC, HRGN); | |
1968 int ExtSelectClipRgn(HDC, HRGN, int); | |
1969 int SetMetaRgn(HDC); | |
1970 HGDIOBJ SelectObject(HDC, HGDIOBJ); | |
1971 HPALETTE SelectPalette(HDC, HPALETTE, BOOL); | |
1972 COLORREF SetBkColor(HDC, COLORREF); | |
1973 int SetBkMode(HDC, int); | |
1974 LONG SetBitmapBits(HBITMAP, DWORD, void *); | |
1975 UINT SetBoundsRect(HDC, RECT *, UINT); | |
1976 int SetDIBits(HDC, HBITMAP, UINT, UINT, void *, BITMAPINFO *, UINT); | |
1977 int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, | |
1978 int, UINT, UINT, void *, BITMAPINFO *, UINT); | |
1979 DWORD SetMapperFlags(HDC, DWORD); | |
1980 int SetGraphicsMode(HDC hdc, int iMode); | |
1981 int SetMapMode(HDC, int); | |
1982 HMETAFILE SetMetaFileBitsEx(UINT, BYTE *); | |
1983 UINT SetPaletteEntries(HPALETTE, UINT, UINT, PALETTEENTRY *); | |
1984 COLORREF SetPixel(HDC, int, int, COLORREF); | |
1985 BOOL SetPixelV(HDC, int, int, COLORREF); | |
1986 BOOL SetPixelFormat(HDC, int, PIXELFORMATDESCRIPTOR *); | |
1987 int SetPolyFillMode(HDC, int); | |
1988 BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); | |
1989 BOOL SetRectRgn(HRGN, int, int, int, int); | |
1990 int StretchDIBits(HDC, int, int, int, int, int, int, int, int, | |
1991 void *, BITMAPINFO *, UINT, DWORD); | |
1992 int SetROP2(HDC, int); | |
1993 int SetStretchBltMode(HDC, int); | |
1994 UINT SetSystemPaletteUse(HDC, UINT); | |
1995 int SetTextCharacterExtra(HDC, int); | |
1996 COLORREF SetTextColor(HDC, COLORREF); | |
1997 UINT SetTextAlign(HDC, UINT); | |
1998 BOOL SetTextJustification(HDC, int, int); | |
1999 BOOL UpdateColors(HDC); | |
2000 } | |
2001 | |
2002 /* Text Alignment Options */ | |
2003 enum | |
2004 { | |
2005 TA_NOUPDATECP = 0, | |
2006 TA_UPDATECP = 1, | |
2007 | |
2008 TA_LEFT = 0, | |
2009 TA_RIGHT = 2, | |
2010 TA_CENTER = 6, | |
2011 | |
2012 TA_TOP = 0, | |
2013 TA_BOTTOM = 8, | |
2014 TA_BASELINE = 24, | |
2015 | |
2016 TA_RTLREADING = 256, | |
2017 TA_MASK = (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING), | |
2018 } | |
2019 | |
2020 struct POINT | |
2021 { | |
2022 LONG x; | |
2023 LONG y; | |
2024 } | |
2025 alias POINT* PPOINT, NPPOINT, LPPOINT; | |
2026 | |
2027 | |
2028 export | |
2029 { | |
2030 BOOL MoveToEx(HDC, int, int, LPPOINT); | |
2031 BOOL TextOutA(HDC, int, int, LPCSTR, int); | |
2032 BOOL TextOutW(HDC, int, int, LPCWSTR, int); | |
2033 } | |
2034 | |
2035 export void PostQuitMessage(int nExitCode); | |
2036 export LRESULT DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); | |
2037 export HMODULE GetModuleHandleA(LPCSTR lpModuleName); | |
2038 | |
2039 alias LRESULT (* WNDPROC)(HWND, UINT, WPARAM, LPARAM); | |
2040 | |
2041 struct WNDCLASSEXA { | |
2042 UINT cbSize; | |
2043 /* Win 3.x */ | |
2044 UINT style; | |
2045 WNDPROC lpfnWndProc; | |
2046 int cbClsExtra; | |
2047 int cbWndExtra; | |
2048 HINSTANCE hInstance; | |
2049 HICON hIcon; | |
2050 HCURSOR hCursor; | |
2051 HBRUSH hbrBackground; | |
2052 LPCSTR lpszMenuName; | |
2053 LPCSTR lpszClassName; | |
2054 /* Win 4.0 */ | |
2055 HICON hIconSm; | |
2056 } | |
2057 alias WNDCLASSEXA* PWNDCLASSEXA, NPWNDCLASSEXA, LPWNDCLASSEXA; | |
2058 | |
2059 | |
2060 struct WNDCLASSA { | |
2061 UINT style; | |
2062 WNDPROC lpfnWndProc; | |
2063 int cbClsExtra; | |
2064 int cbWndExtra; | |
2065 HINSTANCE hInstance; | |
2066 HICON hIcon; | |
2067 HCURSOR hCursor; | |
2068 HBRUSH hbrBackground; | |
2069 LPCSTR lpszMenuName; | |
2070 LPCSTR lpszClassName; | |
2071 } | |
2072 alias WNDCLASSA* PWNDCLASSA, NPWNDCLASSA, LPWNDCLASSA; | |
2073 alias WNDCLASSA WNDCLASS; | |
2074 | |
2075 /* | |
2076 * Window Styles | |
2077 */ | |
2078 enum : uint | |
2079 { | |
2080 WS_OVERLAPPED = 0x00000000, | |
2081 WS_POPUP = 0x80000000, | |
2082 WS_CHILD = 0x40000000, | |
2083 WS_MINIMIZE = 0x20000000, | |
2084 WS_VISIBLE = 0x10000000, | |
2085 WS_DISABLED = 0x08000000, | |
2086 WS_CLIPSIBLINGS = 0x04000000, | |
2087 WS_CLIPCHILDREN = 0x02000000, | |
2088 WS_MAXIMIZE = 0x01000000, | |
2089 WS_CAPTION = 0x00C00000, /* WS_BORDER | WS_DLGFRAME */ | |
2090 WS_BORDER = 0x00800000, | |
2091 WS_DLGFRAME = 0x00400000, | |
2092 WS_VSCROLL = 0x00200000, | |
2093 WS_HSCROLL = 0x00100000, | |
2094 WS_SYSMENU = 0x00080000, | |
2095 WS_THICKFRAME = 0x00040000, | |
2096 WS_GROUP = 0x00020000, | |
2097 WS_TABSTOP = 0x00010000, | |
2098 | |
2099 WS_MINIMIZEBOX = 0x00020000, | |
2100 WS_MAXIMIZEBOX = 0x00010000, | |
2101 | |
2102 WS_TILED = WS_OVERLAPPED, | |
2103 WS_ICONIC = WS_MINIMIZE, | |
2104 WS_SIZEBOX = WS_THICKFRAME, | |
2105 | |
2106 /* | |
2107 * Common Window Styles | |
2108 */ | |
2109 WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX), | |
2110 WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, | |
2111 WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU), | |
2112 WS_CHILDWINDOW = (WS_CHILD), | |
2113 } | |
2114 | |
2115 /* | |
2116 * Class styles | |
2117 */ | |
2118 enum | |
2119 { | |
2120 CS_VREDRAW = 0x0001, | |
2121 CS_HREDRAW = 0x0002, | |
2122 CS_KEYCVTWINDOW = 0x0004, | |
2123 CS_DBLCLKS = 0x0008, | |
2124 CS_OWNDC = 0x0020, | |
2125 CS_CLASSDC = 0x0040, | |
2126 CS_PARENTDC = 0x0080, | |
2127 CS_NOKEYCVT = 0x0100, | |
2128 CS_NOCLOSE = 0x0200, | |
2129 CS_SAVEBITS = 0x0800, | |
2130 CS_BYTEALIGNCLIENT = 0x1000, | |
2131 CS_BYTEALIGNWINDOW = 0x2000, | |
2132 CS_GLOBALCLASS = 0x4000, | |
2133 | |
2134 | |
2135 CS_IME = 0x00010000, | |
2136 } | |
2137 | |
2138 export | |
2139 { | |
2140 HICON LoadIconA(HINSTANCE hInstance, LPCSTR lpIconName); | |
2141 HICON LoadIconW(HINSTANCE hInstance, LPCWSTR lpIconName); | |
2142 HCURSOR LoadCursorA(HINSTANCE hInstance, LPCSTR lpCursorName); | |
2143 HCURSOR LoadCursorW(HINSTANCE hInstance, LPCWSTR lpCursorName); | |
2144 } | |
2145 | |
2146 | |
2147 enum : LPSTR | |
2148 { | |
2149 IDI_APPLICATION = cast(LPSTR)(32512), | |
2150 | |
2151 IDC_ARROW = cast(LPSTR)(32512), | |
2152 IDC_CROSS = cast(LPSTR)(32515), | |
2153 } | |
2154 | |
2155 | |
2156 /* | |
2157 * Color Types | |
2158 */ | |
2159 enum | |
2160 { | |
2161 CTLCOLOR_MSGBOX = 0, | |
2162 CTLCOLOR_EDIT = 1, | |
2163 CTLCOLOR_LISTBOX = 2, | |
2164 CTLCOLOR_BTN = 3, | |
2165 CTLCOLOR_DLG = 4, | |
2166 CTLCOLOR_SCROLLBAR = 5, | |
2167 CTLCOLOR_STATIC = 6, | |
2168 CTLCOLOR_MAX = 7, | |
2169 | |
2170 COLOR_SCROLLBAR = 0, | |
2171 COLOR_BACKGROUND = 1, | |
2172 COLOR_ACTIVECAPTION = 2, | |
2173 COLOR_INACTIVECAPTION = 3, | |
2174 COLOR_MENU = 4, | |
2175 COLOR_WINDOW = 5, | |
2176 COLOR_WINDOWFRAME = 6, | |
2177 COLOR_MENUTEXT = 7, | |
2178 COLOR_WINDOWTEXT = 8, | |
2179 COLOR_CAPTIONTEXT = 9, | |
2180 COLOR_ACTIVEBORDER = 10, | |
2181 COLOR_INACTIVEBORDER = 11, | |
2182 COLOR_APPWORKSPACE = 12, | |
2183 COLOR_HIGHLIGHT = 13, | |
2184 COLOR_HIGHLIGHTTEXT = 14, | |
2185 COLOR_BTNFACE = 15, | |
2186 COLOR_BTNSHADOW = 16, | |
2187 COLOR_GRAYTEXT = 17, | |
2188 COLOR_BTNTEXT = 18, | |
2189 COLOR_INACTIVECAPTIONTEXT = 19, | |
2190 COLOR_BTNHIGHLIGHT = 20, | |
2191 | |
2192 | |
2193 COLOR_3DDKSHADOW = 21, | |
2194 COLOR_3DLIGHT = 22, | |
2195 COLOR_INFOTEXT = 23, | |
2196 COLOR_INFOBK = 24, | |
2197 | |
2198 COLOR_DESKTOP = COLOR_BACKGROUND, | |
2199 COLOR_3DFACE = COLOR_BTNFACE, | |
2200 COLOR_3DSHADOW = COLOR_BTNSHADOW, | |
2201 COLOR_3DHIGHLIGHT = COLOR_BTNHIGHLIGHT, | |
2202 COLOR_3DHILIGHT = COLOR_BTNHIGHLIGHT, | |
2203 COLOR_BTNHILIGHT = COLOR_BTNHIGHLIGHT, | |
2204 } | |
2205 | |
2206 enum : int | |
2207 { | |
2208 CW_USEDEFAULT = cast(int)0x80000000 | |
2209 } | |
2210 | |
2211 /* | |
2212 * Special value for CreateWindow, et al. | |
2213 */ | |
2214 enum : HWND | |
2215 { | |
2216 HWND_DESKTOP = cast(HWND)0, | |
2217 } | |
2218 | |
2219 export ATOM RegisterClassA(WNDCLASSA *lpWndClass); | |
2220 | |
2221 export HWND CreateWindowExA( | |
2222 DWORD dwExStyle, | |
2223 LPCSTR lpClassName, | |
2224 LPCSTR lpWindowName, | |
2225 DWORD dwStyle, | |
2226 int X, | |
2227 int Y, | |
2228 int nWidth, | |
2229 int nHeight, | |
2230 HWND hWndParent , | |
2231 HMENU hMenu, | |
2232 HINSTANCE hInstance, | |
2233 LPVOID lpParam); | |
2234 | |
2235 | |
2236 HWND CreateWindowA( | |
2237 LPCSTR lpClassName, | |
2238 LPCSTR lpWindowName, | |
2239 DWORD dwStyle, | |
2240 int X, | |
2241 int Y, | |
2242 int nWidth, | |
2243 int nHeight, | |
2244 HWND hWndParent , | |
2245 HMENU hMenu, | |
2246 HINSTANCE hInstance, | |
2247 LPVOID lpParam) | |
2248 { | |
2249 return CreateWindowExA(0, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); | |
2250 } | |
2251 | |
2252 /* | |
2253 * Message structure | |
2254 */ | |
2255 struct MSG { | |
2256 HWND hwnd; | |
2257 UINT message; | |
2258 WPARAM wParam; | |
2259 LPARAM lParam; | |
2260 DWORD time; | |
2261 POINT pt; | |
2262 } | |
2263 alias MSG* PMSG, NPMSG, LPMSG; | |
2264 | |
2265 export | |
2266 { | |
2267 BOOL GetMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); | |
2268 BOOL TranslateMessage(MSG *lpMsg); | |
2269 LONG DispatchMessageA(MSG *lpMsg); | |
2270 BOOL PeekMessageA(MSG *lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg); | |
2271 HWND GetFocus(); | |
2272 } | |
2273 | |
2274 export DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, LPSTR lpDst, DWORD nSize); | |
2275 | |
2276 export | |
2277 { | |
2278 BOOL IsValidCodePage(UINT CodePage); | |
2279 UINT GetACP(); | |
2280 UINT GetOEMCP(); | |
2281 //BOOL GetCPInfo(UINT CodePage, LPCPINFO lpCPInfo); | |
2282 BOOL IsDBCSLeadByte(BYTE TestChar); | |
2283 BOOL IsDBCSLeadByteEx(UINT CodePage, BYTE TestChar); | |
2284 int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar); | |
2285 int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar); | |
2286 } | |
2287 | |
2288 export HANDLE CreateFileMappingA(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName); | |
2289 export HANDLE CreateFileMappingW(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName); | |
2290 | |
2291 export BOOL GetMailslotInfo(HANDLE hMailslot, LPDWORD lpMaxMessageSize, LPDWORD lpNextSize, LPDWORD lpMessageCount, LPDWORD lpReadTimeout); | |
2292 export BOOL SetMailslotInfo(HANDLE hMailslot, DWORD lReadTimeout); | |
2293 export LPVOID MapViewOfFile(HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, DWORD dwNumberOfBytesToMap); | |
2294 export LPVOID MapViewOfFileEx(HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, DWORD dwNumberOfBytesToMap, LPVOID lpBaseAddress); | |
2295 export BOOL FlushViewOfFile(LPCVOID lpBaseAddress, DWORD dwNumberOfBytesToFlush); | |
2296 export BOOL UnmapViewOfFile(LPCVOID lpBaseAddress); | |
2297 | |
2298 export HGDIOBJ GetStockObject(int); | |
2299 export BOOL ShowWindow(HWND hWnd, int nCmdShow); | |
2300 | |
2301 /* Stock Logical Objects */ | |
2302 enum | |
2303 { WHITE_BRUSH = 0, | |
2304 LTGRAY_BRUSH = 1, | |
2305 GRAY_BRUSH = 2, | |
2306 DKGRAY_BRUSH = 3, | |
2307 BLACK_BRUSH = 4, | |
2308 NULL_BRUSH = 5, | |
2309 HOLLOW_BRUSH = NULL_BRUSH, | |
2310 WHITE_PEN = 6, | |
2311 BLACK_PEN = 7, | |
2312 NULL_PEN = 8, | |
2313 OEM_FIXED_FONT = 10, | |
2314 ANSI_FIXED_FONT = 11, | |
2315 ANSI_VAR_FONT = 12, | |
2316 SYSTEM_FONT = 13, | |
2317 DEVICE_DEFAULT_FONT = 14, | |
2318 DEFAULT_PALETTE = 15, | |
2319 SYSTEM_FIXED_FONT = 16, | |
2320 DEFAULT_GUI_FONT = 17, | |
2321 STOCK_LAST = 17, | |
2322 } | |
2323 | |
2324 /* | |
2325 * ShowWindow() Commands | |
2326 */ | |
2327 enum | |
2328 { SW_HIDE = 0, | |
2329 SW_SHOWNORMAL = 1, | |
2330 SW_NORMAL = 1, | |
2331 SW_SHOWMINIMIZED = 2, | |
2332 SW_SHOWMAXIMIZED = 3, | |
2333 SW_MAXIMIZE = 3, | |
2334 SW_SHOWNOACTIVATE = 4, | |
2335 SW_SHOW = 5, | |
2336 SW_MINIMIZE = 6, | |
2337 SW_SHOWMINNOACTIVE = 7, | |
2338 SW_SHOWNA = 8, | |
2339 SW_RESTORE = 9, | |
2340 SW_SHOWDEFAULT = 10, | |
2341 SW_MAX = 10, | |
2342 } | |
2343 | |
2344 struct TEXTMETRICA | |
2345 { | |
2346 LONG tmHeight; | |
2347 LONG tmAscent; | |
2348 LONG tmDescent; | |
2349 LONG tmInternalLeading; | |
2350 LONG tmExternalLeading; | |
2351 LONG tmAveCharWidth; | |
2352 LONG tmMaxCharWidth; | |
2353 LONG tmWeight; | |
2354 LONG tmOverhang; | |
2355 LONG tmDigitizedAspectX; | |
2356 LONG tmDigitizedAspectY; | |
2357 BYTE tmFirstChar; | |
2358 BYTE tmLastChar; | |
2359 BYTE tmDefaultChar; | |
2360 BYTE tmBreakChar; | |
2361 BYTE tmItalic; | |
2362 BYTE tmUnderlined; | |
2363 BYTE tmStruckOut; | |
2364 BYTE tmPitchAndFamily; | |
2365 BYTE tmCharSet; | |
2366 } | |
2367 | |
2368 export BOOL GetTextMetricsA(HDC, TEXTMETRICA*); | |
2369 | |
2370 /* | |
2371 * Scroll Bar Constants | |
2372 */ | |
2373 enum | |
2374 { SB_HORZ = 0, | |
2375 SB_VERT = 1, | |
2376 SB_CTL = 2, | |
2377 SB_BOTH = 3, | |
2378 } | |
2379 | |
2380 /* | |
2381 * Scroll Bar Commands | |
2382 */ | |
2383 enum | |
2384 { SB_LINEUP = 0, | |
2385 SB_LINELEFT = 0, | |
2386 SB_LINEDOWN = 1, | |
2387 SB_LINERIGHT = 1, | |
2388 SB_PAGEUP = 2, | |
2389 SB_PAGELEFT = 2, | |
2390 SB_PAGEDOWN = 3, | |
2391 SB_PAGERIGHT = 3, | |
2392 SB_THUMBPOSITION = 4, | |
2393 SB_THUMBTRACK = 5, | |
2394 SB_TOP = 6, | |
2395 SB_LEFT = 6, | |
2396 SB_BOTTOM = 7, | |
2397 SB_RIGHT = 7, | |
2398 SB_ENDSCROLL = 8, | |
2399 } | |
2400 | |
2401 export int SetScrollPos(HWND hWnd, int nBar, int nPos, BOOL bRedraw); | |
2402 export int GetScrollPos(HWND hWnd, int nBar); | |
2403 export BOOL SetScrollRange(HWND hWnd, int nBar, int nMinPos, int nMaxPos, BOOL bRedraw); | |
2404 export BOOL GetScrollRange(HWND hWnd, int nBar, LPINT lpMinPos, LPINT lpMaxPos); | |
2405 export BOOL ShowScrollBar(HWND hWnd, int wBar, BOOL bShow); | |
2406 export BOOL EnableScrollBar(HWND hWnd, UINT wSBflags, UINT wArrows); | |
2407 | |
2408 /* | |
2409 * LockWindowUpdate API | |
2410 */ | |
2411 | |
2412 export BOOL LockWindowUpdate(HWND hWndLock); | |
2413 export BOOL ScrollWindow(HWND hWnd, int XAmount, int YAmount, RECT* lpRect, RECT* lpClipRect); | |
2414 export BOOL ScrollDC(HDC hDC, int dx, int dy, RECT* lprcScroll, RECT* lprcClip, HRGN hrgnUpdate, LPRECT lprcUpdate); | |
2415 export int ScrollWindowEx(HWND hWnd, int dx, int dy, RECT* prcScroll, RECT* prcClip, HRGN hrgnUpdate, LPRECT prcUpdate, UINT flags); | |
2416 | |
2417 /* | |
2418 * Virtual Keys, Standard Set | |
2419 */ | |
2420 enum | |
2421 { VK_LBUTTON = 0x01, | |
2422 VK_RBUTTON = 0x02, | |
2423 VK_CANCEL = 0x03, | |
2424 VK_MBUTTON = 0x04, /* NOT contiguous with L & RBUTTON */ | |
2425 | |
2426 VK_BACK = 0x08, | |
2427 VK_TAB = 0x09, | |
2428 | |
2429 VK_CLEAR = 0x0C, | |
2430 VK_RETURN = 0x0D, | |
2431 | |
2432 VK_SHIFT = 0x10, | |
2433 VK_CONTROL = 0x11, | |
2434 VK_MENU = 0x12, | |
2435 VK_PAUSE = 0x13, | |
2436 VK_CAPITAL = 0x14, | |
2437 | |
2438 | |
2439 VK_ESCAPE = 0x1B, | |
2440 | |
2441 VK_SPACE = 0x20, | |
2442 VK_PRIOR = 0x21, | |
2443 VK_NEXT = 0x22, | |
2444 VK_END = 0x23, | |
2445 VK_HOME = 0x24, | |
2446 VK_LEFT = 0x25, | |
2447 VK_UP = 0x26, | |
2448 VK_RIGHT = 0x27, | |
2449 VK_DOWN = 0x28, | |
2450 VK_SELECT = 0x29, | |
2451 VK_PRINT = 0x2A, | |
2452 VK_EXECUTE = 0x2B, | |
2453 VK_SNAPSHOT = 0x2C, | |
2454 VK_INSERT = 0x2D, | |
2455 VK_DELETE = 0x2E, | |
2456 VK_HELP = 0x2F, | |
2457 | |
2458 /* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */ | |
2459 /* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */ | |
2460 | |
2461 VK_LWIN = 0x5B, | |
2462 VK_RWIN = 0x5C, | |
2463 VK_APPS = 0x5D, | |
2464 | |
2465 VK_NUMPAD0 = 0x60, | |
2466 VK_NUMPAD1 = 0x61, | |
2467 VK_NUMPAD2 = 0x62, | |
2468 VK_NUMPAD3 = 0x63, | |
2469 VK_NUMPAD4 = 0x64, | |
2470 VK_NUMPAD5 = 0x65, | |
2471 VK_NUMPAD6 = 0x66, | |
2472 VK_NUMPAD7 = 0x67, | |
2473 VK_NUMPAD8 = 0x68, | |
2474 VK_NUMPAD9 = 0x69, | |
2475 VK_MULTIPLY = 0x6A, | |
2476 VK_ADD = 0x6B, | |
2477 VK_SEPARATOR = 0x6C, | |
2478 VK_SUBTRACT = 0x6D, | |
2479 VK_DECIMAL = 0x6E, | |
2480 VK_DIVIDE = 0x6F, | |
2481 VK_F1 = 0x70, | |
2482 VK_F2 = 0x71, | |
2483 VK_F3 = 0x72, | |
2484 VK_F4 = 0x73, | |
2485 VK_F5 = 0x74, | |
2486 VK_F6 = 0x75, | |
2487 VK_F7 = 0x76, | |
2488 VK_F8 = 0x77, | |
2489 VK_F9 = 0x78, | |
2490 VK_F10 = 0x79, | |
2491 VK_F11 = 0x7A, | |
2492 VK_F12 = 0x7B, | |
2493 VK_F13 = 0x7C, | |
2494 VK_F14 = 0x7D, | |
2495 VK_F15 = 0x7E, | |
2496 VK_F16 = 0x7F, | |
2497 VK_F17 = 0x80, | |
2498 VK_F18 = 0x81, | |
2499 VK_F19 = 0x82, | |
2500 VK_F20 = 0x83, | |
2501 VK_F21 = 0x84, | |
2502 VK_F22 = 0x85, | |
2503 VK_F23 = 0x86, | |
2504 VK_F24 = 0x87, | |
2505 | |
2506 VK_NUMLOCK = 0x90, | |
2507 VK_SCROLL = 0x91, | |
2508 | |
2509 /* | |
2510 * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. | |
2511 * Used only as parameters to GetAsyncKeyState() and GetKeyState(). | |
2512 * No other API or message will distinguish left and right keys in this way. | |
2513 */ | |
2514 VK_LSHIFT = 0xA0, | |
2515 VK_RSHIFT = 0xA1, | |
2516 VK_LCONTROL = 0xA2, | |
2517 VK_RCONTROL = 0xA3, | |
2518 VK_LMENU = 0xA4, | |
2519 VK_RMENU = 0xA5, | |
2520 | |
2521 | |
2522 VK_PROCESSKEY = 0xE5, | |
2523 | |
2524 | |
2525 VK_ATTN = 0xF6, | |
2526 VK_CRSEL = 0xF7, | |
2527 VK_EXSEL = 0xF8, | |
2528 VK_EREOF = 0xF9, | |
2529 VK_PLAY = 0xFA, | |
2530 VK_ZOOM = 0xFB, | |
2531 VK_NONAME = 0xFC, | |
2532 VK_PA1 = 0xFD, | |
2533 VK_OEM_CLEAR = 0xFE, | |
2534 } | |
2535 | |
2536 export LRESULT SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); | |
2537 | |
2538 alias UINT (*LPOFNHOOKPROC) (HWND, UINT, WPARAM, LPARAM); | |
2539 | |
2540 struct OPENFILENAMEA { | |
2541 DWORD lStructSize; | |
2542 HWND hwndOwner; | |
2543 HINSTANCE hInstance; | |
2544 LPCSTR lpstrFilter; | |
2545 LPSTR lpstrCustomFilter; | |
2546 DWORD nMaxCustFilter; | |
2547 DWORD nFilterIndex; | |
2548 LPSTR lpstrFile; | |
2549 DWORD nMaxFile; | |
2550 LPSTR lpstrFileTitle; | |
2551 DWORD nMaxFileTitle; | |
2552 LPCSTR lpstrInitialDir; | |
2553 LPCSTR lpstrTitle; | |
2554 DWORD Flags; | |
2555 WORD nFileOffset; | |
2556 WORD nFileExtension; | |
2557 LPCSTR lpstrDefExt; | |
2558 LPARAM lCustData; | |
2559 LPOFNHOOKPROC lpfnHook; | |
2560 LPCSTR lpTemplateName; | |
2561 } | |
2562 alias OPENFILENAMEA *LPOPENFILENAMEA; | |
2563 | |
2564 struct OPENFILENAMEW { | |
2565 DWORD lStructSize; | |
2566 HWND hwndOwner; | |
2567 HINSTANCE hInstance; | |
2568 LPCWSTR lpstrFilter; | |
2569 LPWSTR lpstrCustomFilter; | |
2570 DWORD nMaxCustFilter; | |
2571 DWORD nFilterIndex; | |
2572 LPWSTR lpstrFile; | |
2573 DWORD nMaxFile; | |
2574 LPWSTR lpstrFileTitle; | |
2575 DWORD nMaxFileTitle; | |
2576 LPCWSTR lpstrInitialDir; | |
2577 LPCWSTR lpstrTitle; | |
2578 DWORD Flags; | |
2579 WORD nFileOffset; | |
2580 WORD nFileExtension; | |
2581 LPCWSTR lpstrDefExt; | |
2582 LPARAM lCustData; | |
2583 LPOFNHOOKPROC lpfnHook; | |
2584 LPCWSTR lpTemplateName; | |
2585 } | |
2586 alias OPENFILENAMEW *LPOPENFILENAMEW; | |
2587 | |
2588 BOOL GetOpenFileNameA(LPOPENFILENAMEA); | |
2589 BOOL GetOpenFileNameW(LPOPENFILENAMEW); | |
2590 | |
2591 BOOL GetSaveFileNameA(LPOPENFILENAMEA); | |
2592 BOOL GetSaveFileNameW(LPOPENFILENAMEW); | |
2593 | |
2594 short GetFileTitleA(LPCSTR, LPSTR, WORD); | |
2595 short GetFileTitleW(LPCWSTR, LPWSTR, WORD); | |
2596 | |
2597 enum | |
2598 { | |
2599 PM_NOREMOVE = 0x0000, | |
2600 PM_REMOVE = 0x0001, | |
2601 PM_NOYIELD = 0x0002, | |
2602 } | |
2603 | |
2604 /* Bitmap Header Definition */ | |
2605 struct BITMAP | |
2606 { | |
2607 LONG bmType; | |
2608 LONG bmWidth; | |
2609 LONG bmHeight; | |
2610 LONG bmWidthBytes; | |
2611 WORD bmPlanes; | |
2612 WORD bmBitsPixel; | |
2613 LPVOID bmBits; | |
2614 } | |
2615 alias BITMAP* PBITMAP, NPBITMAP, LPBITMAP; | |
2616 | |
2617 | |
2618 export HDC CreateCompatibleDC(HDC); | |
2619 | |
2620 export int GetObjectA(HGDIOBJ, int, LPVOID); | |
2621 export int GetObjectW(HGDIOBJ, int, LPVOID); | |
2622 export BOOL DeleteDC(HDC); | |
2623 | |
2624 struct LOGFONTA | |
2625 { | |
2626 LONG lfHeight; | |
2627 LONG lfWidth; | |
2628 LONG lfEscapement; | |
2629 LONG lfOrientation; | |
2630 LONG lfWeight; | |
2631 BYTE lfItalic; | |
2632 BYTE lfUnderline; | |
2633 BYTE lfStrikeOut; | |
2634 BYTE lfCharSet; | |
2635 BYTE lfOutPrecision; | |
2636 BYTE lfClipPrecision; | |
2637 BYTE lfQuality; | |
2638 BYTE lfPitchAndFamily; | |
2639 CHAR lfFaceName[32 ]; | |
2640 } | |
2641 alias LOGFONTA* PLOGFONTA, NPLOGFONTA, LPLOGFONTA; | |
2642 | |
2643 export HMENU LoadMenuA(HINSTANCE hInstance, LPCSTR lpMenuName); | |
2644 export HMENU LoadMenuW(HINSTANCE hInstance, LPCWSTR lpMenuName); | |
2645 | |
2646 export HMENU GetSubMenu(HMENU hMenu, int nPos); | |
2647 | |
2648 export HBITMAP LoadBitmapA(HINSTANCE hInstance, LPCSTR lpBitmapName); | |
2649 export HBITMAP LoadBitmapW(HINSTANCE hInstance, LPCWSTR lpBitmapName); | |
2650 | |
2651 LPSTR MAKEINTRESOURCEA(int i) { return cast(LPSTR)(cast(DWORD)(cast(WORD)(i))); } | |
2652 | |
2653 export HFONT CreateFontIndirectA(LOGFONTA *); | |
2654 | |
2655 export BOOL MessageBeep(UINT uType); | |
2656 export int ShowCursor(BOOL bShow); | |
2657 export BOOL SetCursorPos(int X, int Y); | |
2658 export HCURSOR SetCursor(HCURSOR hCursor); | |
2659 export BOOL GetCursorPos(LPPOINT lpPoint); | |
2660 export BOOL ClipCursor( RECT *lpRect); | |
2661 export BOOL GetClipCursor(LPRECT lpRect); | |
2662 export HCURSOR GetCursor(); | |
2663 export BOOL CreateCaret(HWND hWnd, HBITMAP hBitmap , int nWidth, int nHeight); | |
2664 export UINT GetCaretBlinkTime(); | |
2665 export BOOL SetCaretBlinkTime(UINT uMSeconds); | |
2666 export BOOL DestroyCaret(); | |
2667 export BOOL HideCaret(HWND hWnd); | |
2668 export BOOL ShowCaret(HWND hWnd); | |
2669 export BOOL SetCaretPos(int X, int Y); | |
2670 export BOOL GetCaretPos(LPPOINT lpPoint); | |
2671 export BOOL ClientToScreen(HWND hWnd, LPPOINT lpPoint); | |
2672 export BOOL ScreenToClient(HWND hWnd, LPPOINT lpPoint); | |
2673 export int MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints); | |
2674 export HWND WindowFromPoint(POINT Point); | |
2675 export HWND ChildWindowFromPoint(HWND hWndParent, POINT Point); | |
2676 | |
2677 | |
2678 export BOOL TrackPopupMenu(HMENU hMenu, UINT uFlags, int x, int y, | |
2679 int nReserved, HWND hWnd, RECT *prcRect); | |
2680 | |
2681 align (2) struct DLGTEMPLATE { | |
2682 DWORD style; | |
2683 DWORD dwExtendedStyle; | |
2684 WORD cdit; | |
2685 short x; | |
2686 short y; | |
2687 short cx; | |
2688 short cy; | |
2689 } | |
2690 alias DLGTEMPLATE *LPDLGTEMPLATEA; | |
2691 alias DLGTEMPLATE *LPDLGTEMPLATEW; | |
2692 | |
2693 | |
2694 alias LPDLGTEMPLATEA LPDLGTEMPLATE; | |
2695 | |
2696 alias DLGTEMPLATE *LPCDLGTEMPLATEA; | |
2697 alias DLGTEMPLATE *LPCDLGTEMPLATEW; | |
2698 | |
2699 | |
2700 alias LPCDLGTEMPLATEA LPCDLGTEMPLATE; | |
2701 | |
2702 | |
2703 export int DialogBoxParamA(HINSTANCE hInstance, LPCSTR lpTemplateName, | |
2704 HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam); | |
2705 export int DialogBoxIndirectParamA(HINSTANCE hInstance, | |
2706 LPCDLGTEMPLATEA hDialogTemplate, HWND hWndParent, DLGPROC lpDialogFunc, | |
2707 LPARAM dwInitParam); | |
2708 | |
2709 enum : DWORD | |
2710 { | |
2711 SRCCOPY = cast(DWORD)0x00CC0020, /* dest = source */ | |
2712 SRCPAINT = cast(DWORD)0x00EE0086, /* dest = source OR dest */ | |
2713 SRCAND = cast(DWORD)0x008800C6, /* dest = source AND dest */ | |
2714 SRCINVERT = cast(DWORD)0x00660046, /* dest = source XOR dest */ | |
2715 SRCERASE = cast(DWORD)0x00440328, /* dest = source AND (NOT dest) */ | |
2716 NOTSRCCOPY = cast(DWORD)0x00330008, /* dest = (NOT source) */ | |
2717 NOTSRCERASE = cast(DWORD)0x001100A6, /* dest = (NOT src) AND (NOT dest) */ | |
2718 MERGECOPY = cast(DWORD)0x00C000CA, /* dest = (source AND pattern) */ | |
2719 MERGEPAINT = cast(DWORD)0x00BB0226, /* dest = (NOT source) OR dest */ | |
2720 PATCOPY = cast(DWORD)0x00F00021, /* dest = pattern */ | |
2721 PATPAINT = cast(DWORD)0x00FB0A09, /* dest = DPSnoo */ | |
2722 PATINVERT = cast(DWORD)0x005A0049, /* dest = pattern XOR dest */ | |
2723 DSTINVERT = cast(DWORD)0x00550009, /* dest = (NOT dest) */ | |
2724 BLACKNESS = cast(DWORD)0x00000042, /* dest = BLACK */ | |
2725 WHITENESS = cast(DWORD)0x00FF0062, /* dest = WHITE */ | |
2726 } | |
2727 | |
2728 enum | |
2729 { | |
2730 SND_SYNC = 0x0000, /* play synchronously (default) */ | |
2731 SND_ASYNC = 0x0001, /* play asynchronously */ | |
2732 SND_NODEFAULT = 0x0002, /* silence (!default) if sound not found */ | |
2733 SND_MEMORY = 0x0004, /* pszSound points to a memory file */ | |
2734 SND_LOOP = 0x0008, /* loop the sound until next sndPlaySound */ | |
2735 SND_NOSTOP = 0x0010, /* don't stop any currently playing sound */ | |
2736 | |
2737 SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */ | |
2738 SND_ALIAS = 0x00010000, /* name is a registry alias */ | |
2739 SND_ALIAS_ID = 0x00110000, /* alias is a predefined ID */ | |
2740 SND_FILENAME = 0x00020000, /* name is file name */ | |
2741 SND_RESOURCE = 0x00040004, /* name is resource name or atom */ | |
2742 | |
2743 SND_PURGE = 0x0040, /* purge non-static events for task */ | |
2744 SND_APPLICATION = 0x0080, /* look for application specific association */ | |
2745 | |
2746 | |
2747 SND_ALIAS_START = 0, /* alias base */ | |
2748 } | |
2749 | |
2750 export BOOL PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); | |
2751 export BOOL PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound); | |
2752 | |
2753 export int GetClipBox(HDC, LPRECT); | |
2754 export int GetClipRgn(HDC, HRGN); | |
2755 export int GetMetaRgn(HDC, HRGN); | |
2756 export HGDIOBJ GetCurrentObject(HDC, UINT); | |
2757 export BOOL GetCurrentPositionEx(HDC, LPPOINT); | |
2758 export int GetDeviceCaps(HDC, int); | |
2759 | |
2760 struct LOGPEN | |
2761 { | |
2762 UINT lopnStyle; | |
2763 POINT lopnWidth; | |
2764 COLORREF lopnColor; | |
2765 } | |
2766 alias LOGPEN* PLOGPEN, NPLOGPEN, LPLOGPEN; | |
2767 | |
2768 enum | |
2769 { | |
2770 PS_SOLID = 0, | |
2771 PS_DASH = 1, /* ------- */ | |
2772 PS_DOT = 2, /* ....... */ | |
2773 PS_DASHDOT = 3, /* _._._._ */ | |
2774 PS_DASHDOTDOT = 4, /* _.._.._ */ | |
2775 PS_NULL = 5, | |
2776 PS_INSIDEFRAME = 6, | |
2777 PS_USERSTYLE = 7, | |
2778 PS_ALTERNATE = 8, | |
2779 PS_STYLE_MASK = 0x0000000F, | |
2780 | |
2781 PS_ENDCAP_ROUND = 0x00000000, | |
2782 PS_ENDCAP_SQUARE = 0x00000100, | |
2783 PS_ENDCAP_FLAT = 0x00000200, | |
2784 PS_ENDCAP_MASK = 0x00000F00, | |
2785 | |
2786 PS_JOIN_ROUND = 0x00000000, | |
2787 PS_JOIN_BEVEL = 0x00001000, | |
2788 PS_JOIN_MITER = 0x00002000, | |
2789 PS_JOIN_MASK = 0x0000F000, | |
2790 | |
2791 PS_COSMETIC = 0x00000000, | |
2792 PS_GEOMETRIC = 0x00010000, | |
2793 PS_TYPE_MASK = 0x000F0000, | |
2794 } | |
2795 | |
2796 export HPALETTE CreatePalette(LOGPALETTE *); | |
2797 export HPEN CreatePen(int, int, COLORREF); | |
2798 export HPEN CreatePenIndirect(LOGPEN *); | |
2799 export HRGN CreatePolyPolygonRgn(POINT *, INT *, int, int); | |
2800 export HBRUSH CreatePatternBrush(HBITMAP); | |
2801 export HRGN CreateRectRgn(int, int, int, int); | |
2802 export HRGN CreateRectRgnIndirect(RECT *); | |
2803 export HRGN CreateRoundRectRgn(int, int, int, int, int, int); | |
2804 export BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); | |
2805 export BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); | |
2806 | |
2807 COLORREF RGB(int r, int g, int b) | |
2808 { | |
2809 return cast(COLORREF) | |
2810 ((cast(BYTE)r|(cast(WORD)(cast(BYTE)g)<<8))|((cast(DWORD)cast(BYTE)b)<<16)); | |
2811 } | |
2812 | |
2813 export BOOL LineTo(HDC, int, int); | |
2814 export BOOL DeleteObject(HGDIOBJ); | |
2815 export int FillRect(HDC hDC, RECT *lprc, HBRUSH hbr); | |
2816 | |
2817 | |
2818 export BOOL EndDialog(HWND hDlg, int nResult); | |
2819 export HWND GetDlgItem(HWND hDlg, int nIDDlgItem); | |
2820 | |
2821 export BOOL SetDlgItemInt(HWND hDlg, int nIDDlgItem, UINT uValue, BOOL bSigned); | |
2822 export UINT GetDlgItemInt(HWND hDlg, int nIDDlgItem, BOOL *lpTranslated, | |
2823 BOOL bSigned); | |
2824 | |
2825 export BOOL SetDlgItemTextA(HWND hDlg, int nIDDlgItem, LPCSTR lpString); | |
2826 export BOOL SetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPCWSTR lpString); | |
2827 | |
2828 export UINT GetDlgItemTextA(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount); | |
2829 export UINT GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount); | |
2830 | |
2831 export BOOL CheckDlgButton(HWND hDlg, int nIDButton, UINT uCheck); | |
2832 export BOOL CheckRadioButton(HWND hDlg, int nIDFirstButton, int nIDLastButton, | |
2833 int nIDCheckButton); | |
2834 | |
2835 export UINT IsDlgButtonChecked(HWND hDlg, int nIDButton); | |
2836 | |
2837 export HWND SetFocus(HWND hWnd); | |
2838 | |
2839 export int wsprintfA(LPSTR, LPCSTR, ...); | |
2840 export int wsprintfW(LPWSTR, LPCWSTR, ...); | |
2841 | |
2842 enum : uint | |
2843 { | |
2844 INFINITE = uint.max, | |
2845 WAIT_OBJECT_0 = 0, | |
2846 WAIT_ABANDONED_0 = 0x80, | |
2847 WAIT_TIMEOUT = 0x102, | |
2848 WAIT_IO_COMPLETION = 0xc0, | |
2849 WAIT_ABANDONED = 0x80, | |
2850 WAIT_FAILED = uint.max, | |
2851 } | |
2852 | |
2853 export HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName); | |
2854 export HANDLE OpenSemaphoreA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCTSTR lpName); | |
2855 export BOOL ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); | |
2856 | |
2857 struct COORD { | |
2858 SHORT X; | |
2859 SHORT Y; | |
2860 } | |
2861 alias COORD *PCOORD; | |
2862 | |
2863 struct SMALL_RECT { | |
2864 SHORT Left; | |
2865 SHORT Top; | |
2866 SHORT Right; | |
2867 SHORT Bottom; | |
2868 } | |
2869 alias SMALL_RECT *PSMALL_RECT; | |
2870 | |
2871 struct KEY_EVENT_RECORD { | |
2872 BOOL bKeyDown; | |
2873 WORD wRepeatCount; | |
2874 WORD wVirtualKeyCode; | |
2875 WORD wVirtualScanCode; | |
2876 union { | |
2877 WCHAR UnicodeChar; | |
2878 CHAR AsciiChar; | |
2879 } | |
2880 DWORD dwControlKeyState; | |
2881 } | |
2882 alias KEY_EVENT_RECORD *PKEY_EVENT_RECORD; | |
2883 | |
2884 // | |
2885 // ControlKeyState flags | |
2886 // | |
2887 | |
2888 enum | |
2889 { | |
2890 RIGHT_ALT_PRESSED = 0x0001, // the right alt key is pressed. | |
2891 LEFT_ALT_PRESSED = 0x0002, // the left alt key is pressed. | |
2892 RIGHT_CTRL_PRESSED = 0x0004, // the right ctrl key is pressed. | |
2893 LEFT_CTRL_PRESSED = 0x0008, // the left ctrl key is pressed. | |
2894 SHIFT_PRESSED = 0x0010, // the shift key is pressed. | |
2895 NUMLOCK_ON = 0x0020, // the numlock light is on. | |
2896 SCROLLLOCK_ON = 0x0040, // the scrolllock light is on. | |
2897 CAPSLOCK_ON = 0x0080, // the capslock light is on. | |
2898 ENHANCED_KEY = 0x0100, // the key is enhanced. | |
2899 } | |
2900 | |
2901 struct MOUSE_EVENT_RECORD { | |
2902 COORD dwMousePosition; | |
2903 DWORD dwButtonState; | |
2904 DWORD dwControlKeyState; | |
2905 DWORD dwEventFlags; | |
2906 } | |
2907 alias MOUSE_EVENT_RECORD *PMOUSE_EVENT_RECORD; | |
2908 | |
2909 // | |
2910 // ButtonState flags | |
2911 // | |
2912 enum | |
2913 { | |
2914 FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001, | |
2915 RIGHTMOST_BUTTON_PRESSED = 0x0002, | |
2916 FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004, | |
2917 FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008, | |
2918 FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010, | |
2919 } | |
2920 | |
2921 // | |
2922 // EventFlags | |
2923 // | |
2924 | |
2925 enum | |
2926 { | |
2927 MOUSE_MOVED = 0x0001, | |
2928 DOUBLE_CLICK = 0x0002, | |
2929 } | |
2930 | |
2931 struct WINDOW_BUFFER_SIZE_RECORD { | |
2932 COORD dwSize; | |
2933 } | |
2934 alias WINDOW_BUFFER_SIZE_RECORD *PWINDOW_BUFFER_SIZE_RECORD; | |
2935 | |
2936 struct MENU_EVENT_RECORD { | |
2937 UINT dwCommandId; | |
2938 } | |
2939 alias MENU_EVENT_RECORD *PMENU_EVENT_RECORD; | |
2940 | |
2941 struct FOCUS_EVENT_RECORD { | |
2942 BOOL bSetFocus; | |
2943 } | |
2944 alias FOCUS_EVENT_RECORD *PFOCUS_EVENT_RECORD; | |
2945 | |
2946 struct INPUT_RECORD { | |
2947 WORD EventType; | |
2948 union { | |
2949 KEY_EVENT_RECORD KeyEvent; | |
2950 MOUSE_EVENT_RECORD MouseEvent; | |
2951 WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; | |
2952 MENU_EVENT_RECORD MenuEvent; | |
2953 FOCUS_EVENT_RECORD FocusEvent; | |
2954 } | |
2955 } | |
2956 alias INPUT_RECORD *PINPUT_RECORD; | |
2957 | |
2958 // | |
2959 // EventType flags: | |
2960 // | |
2961 | |
2962 enum | |
2963 { | |
2964 KEY_EVENT = 0x0001, // Event contains key event record | |
2965 MOUSE_EVENT = 0x0002, // Event contains mouse event record | |
2966 WINDOW_BUFFER_SIZE_EVENT = 0x0004, // Event contains window change event record | |
2967 MENU_EVENT = 0x0008, // Event contains menu event record | |
2968 FOCUS_EVENT = 0x0010, // event contains focus change | |
2969 } | |
2970 | |
2971 struct CHAR_INFO { | |
2972 union { | |
2973 WCHAR UnicodeChar; | |
2974 CHAR AsciiChar; | |
2975 } | |
2976 WORD Attributes; | |
2977 } | |
2978 alias CHAR_INFO *PCHAR_INFO; | |
2979 | |
2980 // | |
2981 // Attributes flags: | |
2982 // | |
2983 | |
2984 enum | |
2985 { | |
2986 FOREGROUND_BLUE = 0x0001, // text color contains blue. | |
2987 FOREGROUND_GREEN = 0x0002, // text color contains green. | |
2988 FOREGROUND_RED = 0x0004, // text color contains red. | |
2989 FOREGROUND_INTENSITY = 0x0008, // text color is intensified. | |
2990 BACKGROUND_BLUE = 0x0010, // background color contains blue. | |
2991 BACKGROUND_GREEN = 0x0020, // background color contains green. | |
2992 BACKGROUND_RED = 0x0040, // background color contains red. | |
2993 BACKGROUND_INTENSITY = 0x0080, // background color is intensified. | |
2994 } | |
2995 | |
2996 struct CONSOLE_SCREEN_BUFFER_INFO { | |
2997 COORD dwSize; | |
2998 COORD dwCursorPosition; | |
2999 WORD wAttributes; | |
3000 SMALL_RECT srWindow; | |
3001 COORD dwMaximumWindowSize; | |
3002 } | |
3003 alias CONSOLE_SCREEN_BUFFER_INFO *PCONSOLE_SCREEN_BUFFER_INFO; | |
3004 | |
3005 struct CONSOLE_CURSOR_INFO { | |
3006 DWORD dwSize; | |
3007 BOOL bVisible; | |
3008 } | |
3009 alias CONSOLE_CURSOR_INFO *PCONSOLE_CURSOR_INFO; | |
3010 | |
3011 enum | |
3012 { | |
3013 ENABLE_PROCESSED_INPUT = 0x0001, | |
3014 ENABLE_LINE_INPUT = 0x0002, | |
3015 ENABLE_ECHO_INPUT = 0x0004, | |
3016 ENABLE_WINDOW_INPUT = 0x0008, | |
3017 ENABLE_MOUSE_INPUT = 0x0010, | |
3018 } | |
3019 | |
3020 enum | |
3021 { | |
3022 ENABLE_PROCESSED_OUTPUT = 0x0001, | |
3023 ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002, | |
3024 } | |
3025 | |
3026 BOOL PeekConsoleInputA(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead); | |
3027 BOOL PeekConsoleInputW(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead); | |
3028 BOOL ReadConsoleInputA(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead); | |
3029 BOOL ReadConsoleInputW(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead); | |
3030 BOOL WriteConsoleInputA(HANDLE hConsoleInput, in INPUT_RECORD *lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsWritten); | |
3031 BOOL WriteConsoleInputW(HANDLE hConsoleInput, in INPUT_RECORD *lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsWritten); | |
3032 BOOL ReadConsoleOutputA(HANDLE hConsoleOutput, PCHAR_INFO lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpReadRegion); | |
3033 BOOL ReadConsoleOutputW(HANDLE hConsoleOutput, PCHAR_INFO lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpReadRegion); | |
3034 BOOL WriteConsoleOutputA(HANDLE hConsoleOutput, in CHAR_INFO *lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpWriteRegion); | |
3035 BOOL WriteConsoleOutputW(HANDLE hConsoleOutput, in CHAR_INFO *lpBuffer, COORD dwBufferSize, COORD dwBufferCoord, PSMALL_RECT lpWriteRegion); | |
3036 BOOL ReadConsoleOutputCharacterA(HANDLE hConsoleOutput, LPSTR lpCharacter, DWORD nLength, COORD dwReadCoord, LPDWORD lpNumberOfCharsRead); | |
3037 BOOL ReadConsoleOutputCharacterW(HANDLE hConsoleOutput, LPWSTR lpCharacter, DWORD nLength, COORD dwReadCoord, LPDWORD lpNumberOfCharsRead); | |
3038 BOOL ReadConsoleOutputAttribute(HANDLE hConsoleOutput, LPWORD lpAttribute, DWORD nLength, COORD dwReadCoord, LPDWORD lpNumberOfAttrsRead); | |
3039 BOOL WriteConsoleOutputCharacterA(HANDLE hConsoleOutput, LPCSTR lpCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten); | |
3040 BOOL WriteConsoleOutputCharacterW(HANDLE hConsoleOutput, LPCWSTR lpCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten); | |
3041 BOOL WriteConsoleOutputAttribute(HANDLE hConsoleOutput, in WORD *lpAttribute, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfAttrsWritten); | |
3042 BOOL FillConsoleOutputCharacterA(HANDLE hConsoleOutput, CHAR cCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten); | |
3043 BOOL FillConsoleOutputCharacterW(HANDLE hConsoleOutput, WCHAR cCharacter, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten); | |
3044 BOOL FillConsoleOutputAttribute(HANDLE hConsoleOutput, WORD wAttribute, DWORD nLength, COORD dwWriteCoord, LPDWORD lpNumberOfAttrsWritten); | |
3045 BOOL GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode); | |
3046 BOOL GetNumberOfConsoleInputEvents(HANDLE hConsoleInput, LPDWORD lpNumberOfEvents); | |
3047 BOOL GetConsoleScreenBufferInfo(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo); | |
3048 COORD GetLargestConsoleWindowSize( HANDLE hConsoleOutput); | |
3049 BOOL GetConsoleCursorInfo(HANDLE hConsoleOutput, PCONSOLE_CURSOR_INFO lpConsoleCursorInfo); | |
3050 BOOL GetNumberOfConsoleMouseButtons( LPDWORD lpNumberOfMouseButtons); | |
3051 BOOL SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode); | |
3052 BOOL SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput); | |
3053 BOOL FlushConsoleInputBuffer(HANDLE hConsoleInput); | |
3054 BOOL SetConsoleScreenBufferSize(HANDLE hConsoleOutput, COORD dwSize); | |
3055 BOOL SetConsoleCursorPosition(HANDLE hConsoleOutput, COORD dwCursorPosition); | |
3056 BOOL SetConsoleCursorInfo(HANDLE hConsoleOutput, in CONSOLE_CURSOR_INFO *lpConsoleCursorInfo); | |
3057 BOOL ScrollConsoleScreenBufferA(HANDLE hConsoleOutput, in SMALL_RECT *lpScrollRectangle, in SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, in CHAR_INFO *lpFill); | |
3058 BOOL ScrollConsoleScreenBufferW(HANDLE hConsoleOutput, in SMALL_RECT *lpScrollRectangle, in SMALL_RECT *lpClipRectangle, COORD dwDestinationOrigin, in CHAR_INFO *lpFill); | |
3059 BOOL SetConsoleWindowInfo(HANDLE hConsoleOutput, BOOL bAbsolute, in SMALL_RECT *lpConsoleWindow); | |
3060 BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes); | |
3061 alias BOOL(*PHANDLER_ROUTINE)(DWORD CtrlType); | |
3062 BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, BOOL Add); | |
3063 BOOL GenerateConsoleCtrlEvent( DWORD dwCtrlEvent, DWORD dwProcessGroupId); | |
3064 BOOL AllocConsole(); | |
3065 BOOL FreeConsole(); | |
3066 DWORD GetConsoleTitleA(LPSTR lpConsoleTitle, DWORD nSize); | |
3067 DWORD GetConsoleTitleW(LPWSTR lpConsoleTitle, DWORD nSize); | |
3068 BOOL SetConsoleTitleA(LPCSTR lpConsoleTitle); | |
3069 BOOL SetConsoleTitleW(LPCWSTR lpConsoleTitle); | |
3070 BOOL ReadConsoleA(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead, LPDWORD lpNumberOfCharsRead, LPVOID lpReserved); | |
3071 BOOL ReadConsoleW(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead, LPDWORD lpNumberOfCharsRead, LPVOID lpReserved); | |
3072 BOOL WriteConsoleA(HANDLE hConsoleOutput, in void *lpBuffer, DWORD nNumberOfCharsToWrite, LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved); | |
3073 BOOL WriteConsoleW(HANDLE hConsoleOutput, in void *lpBuffer, DWORD nNumberOfCharsToWrite, LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved); | |
3074 HANDLE CreateConsoleScreenBuffer(DWORD dwDesiredAccess, DWORD dwShareMode, in SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwFlags, LPVOID lpScreenBufferData); | |
3075 UINT GetConsoleCP(); | |
3076 BOOL SetConsoleCP( UINT wCodePageID); | |
3077 UINT GetConsoleOutputCP(); | |
3078 BOOL SetConsoleOutputCP(UINT wCodePageID); | |
3079 | |
3080 enum | |
3081 { | |
3082 CONSOLE_TEXTMODE_BUFFER = 1, | |
3083 } | |
3084 | |
3085 enum | |
3086 { | |
3087 SM_CXSCREEN = 0, | |
3088 SM_CYSCREEN = 1, | |
3089 SM_CXVSCROLL = 2, | |
3090 SM_CYHSCROLL = 3, | |
3091 SM_CYCAPTION = 4, | |
3092 SM_CXBORDER = 5, | |
3093 SM_CYBORDER = 6, | |
3094 SM_CXDLGFRAME = 7, | |
3095 SM_CYDLGFRAME = 8, | |
3096 SM_CYVTHUMB = 9, | |
3097 SM_CXHTHUMB = 10, | |
3098 SM_CXICON = 11, | |
3099 SM_CYICON = 12, | |
3100 SM_CXCURSOR = 13, | |
3101 SM_CYCURSOR = 14, | |
3102 SM_CYMENU = 15, | |
3103 SM_CXFULLSCREEN = 16, | |
3104 SM_CYFULLSCREEN = 17, | |
3105 SM_CYKANJIWINDOW = 18, | |
3106 SM_MOUSEPRESENT = 19, | |
3107 SM_CYVSCROLL = 20, | |
3108 SM_CXHSCROLL = 21, | |
3109 SM_DEBUG = 22, | |
3110 SM_SWAPBUTTON = 23, | |
3111 SM_RESERVED1 = 24, | |
3112 SM_RESERVED2 = 25, | |
3113 SM_RESERVED3 = 26, | |
3114 SM_RESERVED4 = 27, | |
3115 SM_CXMIN = 28, | |
3116 SM_CYMIN = 29, | |
3117 SM_CXSIZE = 30, | |
3118 SM_CYSIZE = 31, | |
3119 SM_CXFRAME = 32, | |
3120 SM_CYFRAME = 33, | |
3121 SM_CXMINTRACK = 34, | |
3122 SM_CYMINTRACK = 35, | |
3123 SM_CXDOUBLECLK = 36, | |
3124 SM_CYDOUBLECLK = 37, | |
3125 SM_CXICONSPACING = 38, | |
3126 SM_CYICONSPACING = 39, | |
3127 SM_MENUDROPALIGNMENT = 40, | |
3128 SM_PENWINDOWS = 41, | |
3129 SM_DBCSENABLED = 42, | |
3130 SM_CMOUSEBUTTONS = 43, | |
3131 | |
3132 | |
3133 SM_CXFIXEDFRAME = SM_CXDLGFRAME, | |
3134 SM_CYFIXEDFRAME = SM_CYDLGFRAME, | |
3135 SM_CXSIZEFRAME = SM_CXFRAME, | |
3136 SM_CYSIZEFRAME = SM_CYFRAME, | |
3137 | |
3138 SM_SECURE = 44, | |
3139 SM_CXEDGE = 45, | |
3140 SM_CYEDGE = 46, | |
3141 SM_CXMINSPACING = 47, | |
3142 SM_CYMINSPACING = 48, | |
3143 SM_CXSMICON = 49, | |
3144 SM_CYSMICON = 50, | |
3145 SM_CYSMCAPTION = 51, | |
3146 SM_CXSMSIZE = 52, | |
3147 SM_CYSMSIZE = 53, | |
3148 SM_CXMENUSIZE = 54, | |
3149 SM_CYMENUSIZE = 55, | |
3150 SM_ARRANGE = 56, | |
3151 SM_CXMINIMIZED = 57, | |
3152 SM_CYMINIMIZED = 58, | |
3153 SM_CXMAXTRACK = 59, | |
3154 SM_CYMAXTRACK = 60, | |
3155 SM_CXMAXIMIZED = 61, | |
3156 SM_CYMAXIMIZED = 62, | |
3157 SM_NETWORK = 63, | |
3158 SM_CLEANBOOT = 67, | |
3159 SM_CXDRAG = 68, | |
3160 SM_CYDRAG = 69, | |
3161 SM_SHOWSOUNDS = 70, | |
3162 SM_CXMENUCHECK = 71, | |
3163 SM_CYMENUCHECK = 72, | |
3164 SM_SLOWMACHINE = 73, | |
3165 SM_MIDEASTENABLED = 74, | |
3166 SM_CMETRICS = 75, | |
3167 } | |
3168 | |
3169 int GetSystemMetrics(int nIndex); | |
3170 | |
3171 enum : DWORD | |
3172 { | |
3173 STILL_ACTIVE = (0x103), | |
3174 } | |
3175 | |
3176 DWORD TlsAlloc(); | |
3177 LPVOID TlsGetValue(DWORD); | |
3178 BOOL TlsSetValue(DWORD, LPVOID); | |
3179 BOOL TlsFree(DWORD); | |
3180 | |
3181 } |