Mercurial > projects > dynamin
comparison dynamin/c/windows.d @ 0:aa4efef0f0b1
Initial commit of code.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Mon, 15 Jun 2009 22:10:48 -0500 |
parents | |
children | c41eb8d907b2 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:aa4efef0f0b1 |
---|---|
1 module dynamin.c.windows; | |
2 | |
3 /* | |
4 * A binding to at least the part of the Windows API that Dynamin uses. This | |
5 * binding is obviously very incomplete but does contain several functions | |
6 * that the standard Windows binding does not contain. | |
7 */ | |
8 | |
9 version(Windows) { | |
10 } else { | |
11 static assert(0); | |
12 } | |
13 | |
14 version(build) { pragma(link, gdi32, comdlg32, shell32, ole32, winmm); } | |
15 | |
16 extern(Windows): | |
17 | |
18 version = UNICODE; | |
19 alias char* LPSTR; | |
20 alias wchar* LPWSTR; | |
21 alias char* LPCSTR; | |
22 alias wchar* LPCWSTR; | |
23 version(UNICODE) { | |
24 alias wchar TCHAR; | |
25 alias LPWSTR LPTSTR; | |
26 alias LPCWSTR LPCTSTR; | |
27 } else { | |
28 alias char TCHAR; | |
29 alias LPSTR LPTSTR; | |
30 alias LPCSTR LPCTSTR; | |
31 } | |
32 | |
33 alias VOID* HANDLE; | |
34 alias HANDLE HBITMAP; | |
35 alias HANDLE HBRUSH; | |
36 alias HANDLE HICON; | |
37 alias HICON HCURSOR; | |
38 alias HANDLE HDC; | |
39 alias HANDLE HGDIOBJ; | |
40 alias HANDLE HGLOBAL; | |
41 alias int HFILE; | |
42 alias HANDLE HFONT; | |
43 alias HANDLE HINSTANCE; | |
44 alias HANDLE HKEY; | |
45 alias HANDLE HMENU; | |
46 alias HINSTANCE HMODULE; | |
47 alias int HRESULT; | |
48 alias HANDLE HRGN; | |
49 alias HANDLE HTHEME; | |
50 alias HANDLE HWND; | |
51 | |
52 version(Win64) { | |
53 alias int HALF_PTR; | |
54 alias uint UHALF_PTR; | |
55 alias long INT_PTR; | |
56 alias ulong UINT_PTR; | |
57 alias long LONG_PTR; | |
58 alias ulong ULONG_PTR; | |
59 } else { | |
60 alias short HALF_PTR; | |
61 alias ushort UHALF_PTR; | |
62 alias int INT_PTR; | |
63 alias uint UINT_PTR; | |
64 alias int LONG_PTR; | |
65 alias uint ULONG_PTR; | |
66 } | |
67 | |
68 alias INT_PTR function() FARPROC; | |
69 alias int BOOL; | |
70 alias ubyte BYTE; | |
71 alias char CHAR; | |
72 alias wchar WCHAR; | |
73 alias uint DWORD; | |
74 alias ulong DWORDLONG; | |
75 alias uint DWORD32; | |
76 alias ulong DWORD64; | |
77 alias float FLOAT; | |
78 alias int INT; | |
79 alias int INT32; | |
80 alias long INT64; | |
81 alias int LONG; | |
82 alias int LONG32; | |
83 alias long LONG64; | |
84 alias UINT_PTR WPARAM; | |
85 alias LONG_PTR LPARAM; | |
86 alias LONG_PTR LRESULT; | |
87 alias char UCHAR; | |
88 alias uint UINT; | |
89 alias uint UINT32; | |
90 alias ulong UINT64; | |
91 alias uint ULONG; | |
92 alias uint ULONG32; | |
93 alias ulong ULONG64; | |
94 alias short SHORT; | |
95 alias ushort USHORT; | |
96 alias void VOID; | |
97 alias ushort WORD; | |
98 alias WORD ATOM; | |
99 alias ULONG_PTR SIZE_T; | |
100 alias DWORD COLORREF; | |
101 alias LONG NTSTATUS; | |
102 | |
103 const HRESULT S_OK = 0; | |
104 const HRESULT S_FALSE = 1; | |
105 const HRESULT NOERROR = 0; | |
106 | |
107 const int MAX_PATH = 260; | |
108 | |
109 alias UINT_PTR function(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) LPOFNHOOKPROC; | |
110 alias LRESULT function(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) WNDPROC; | |
111 alias int function(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) BFFCALLBACK; | |
112 | |
113 public import tango.sys.win32.Macros; | |
114 //public import tango.sys.win32.UserGdi : LOWORD, HIWORD, RGB; | |
115 | |
116 WORD MAKEWORD(BYTE a, BYTE b) { return cast(WORD)a | cast(WORD)b << 8; } | |
117 LONG MAKELONG(WORD a, WORD b) { return cast(WORD)a | cast(WORD)b << 16; } | |
118 BYTE LOBYTE(WORD w) { return cast(BYTE)(w & 0xff); } | |
119 BYTE HIBYTE(WORD w) { return cast(BYTE)(w >> 8); } | |
120 LPWSTR MAKEINTRESOURCE(int i) { return cast(LPWSTR)cast(WORD)i; } | |
121 BYTE GetRValue(DWORD rgb) { return LOBYTE(rgb); } | |
122 BYTE GetGValue(DWORD rgb) { return LOBYTE(cast(WORD)rgb >> 8); } | |
123 BYTE GetBValue(DWORD rgb) { return LOBYTE(rgb >> 16); } | |
124 | |
125 int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); | |
126 int MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType); | |
127 | |
128 DWORD GetLastError(); | |
129 | |
130 int MultiByteToWideChar( | |
131 UINT CodePage, | |
132 DWORD dwFlags, | |
133 LPCSTR lpMultiByteStr, | |
134 int cbMultiByte, | |
135 LPWSTR lpWideCharStr, | |
136 int cchWideChar); | |
137 | |
138 int WideCharToMultiByte( | |
139 UINT CodePage, | |
140 DWORD dwFlags, | |
141 LPCWSTR lpWideCharStr, | |
142 int cchWideChar, | |
143 LPSTR lpMultiByteStr, | |
144 int cbMultiByte, | |
145 LPCSTR lpDefaultChar, | |
146 BOOL* lpUsedDefaultChar); | |
147 | |
148 //{{{ memory functions | |
149 HANDLE GetProcessHeap(); | |
150 | |
151 VOID* HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes); | |
152 | |
153 VOID* HeapReAlloc(HANDLE hHeap, DWORD dwFlags, VOID* lpMem, SIZE_T dwBytes); | |
154 | |
155 BOOL HeapFree(HANDLE hHeap, DWORD dwFlags, VOID* lpMem); | |
156 | |
157 SIZE_T HeapSize(HANDLE hHeap, DWORD dwFlags, /*const*/ VOID* lpMem); | |
158 | |
159 enum { | |
160 HEAP_ZERO_MEMORY = 0x0008, | |
161 HEAP_REALLOC_IN_PLACE_ONLY = 0x0010 | |
162 } | |
163 | |
164 HGLOBAL GlobalAlloc(UINT uFlags, SIZE_T dwBytes); | |
165 | |
166 HGLOBAL GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags); | |
167 | |
168 HGLOBAL GlobalFree(HGLOBAL hMem); | |
169 | |
170 VOID* GlobalLock(HGLOBAL hMem); | |
171 | |
172 BOOL GlobalUnlock(HGLOBAL hMem); | |
173 | |
174 enum { | |
175 GMEM_FIXED = 0x0000, | |
176 GMEM_MOVEABLE = 0x0002, | |
177 GMEM_ZEROINIT = 0x0040, | |
178 GPTR = 0x0040, | |
179 GHND = 0x0042 | |
180 } | |
181 //}}} | |
182 | |
183 //{{{ window functions | |
184 enum { | |
185 CS_VREDRAW = 0x0001, | |
186 CS_HREDRAW = 0x0002, | |
187 CS_DBLCLKS = 0x0008, | |
188 CS_OWNDC = 0x0020, | |
189 CS_CLASSDC = 0x0040, | |
190 CS_PARENTDC = 0x0080, | |
191 CS_NOCLOSE = 0x0200, | |
192 CS_SAVEBITS = 0x0800, | |
193 CS_BYTEALIGNCLIENT = 0x1000, | |
194 CS_BYTEALIGNWINDOW = 0x2000, | |
195 CS_GLOBALCLASS = 0x4000, | |
196 //Windows XP required | |
197 CS_DROPSHADOW = 0x00020000 | |
198 | |
199 } | |
200 ATOM RegisterClassExA(/*const*/ WNDCLASSEX* lpwcx); | |
201 ATOM RegisterClassExW(/*const*/ WNDCLASSEX* lpwcx); | |
202 | |
203 LRESULT DefWindowProcW(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); | |
204 | |
205 //{{{ window styles | |
206 enum { | |
207 WS_OVERLAPPED = 0x00000000, | |
208 WS_MAXIMIZEBOX = 0x00010000, | |
209 WS_TABSTOP = 0x00010000, | |
210 WS_GROUP = 0x00020000, | |
211 WS_MINIMIZEBOX = 0x00020000, | |
212 WS_THICKFRAME = 0x00040000, | |
213 WS_SYSMENU = 0x00080000, | |
214 WS_HSCROLL = 0x00100000, | |
215 WS_VSCROLL = 0x00200000, | |
216 WS_DLGFRAME = 0x00400000, | |
217 WS_BORDER = 0x00800000, | |
218 WS_CAPTION = 0x00C00000, | |
219 WS_MAXIMIZE = 0x01000000, | |
220 WS_CLIPCHILDREN = 0x02000000, | |
221 WS_CLIPSIBLINGS = 0x04000000, | |
222 WS_DISABLED = 0x08000000, | |
223 WS_VISIBLE = 0x10000000, | |
224 WS_MINIMIZE = 0x20000000, | |
225 WS_CHILD = 0x40000000, | |
226 WS_POPUP = 0x80000000, | |
227 WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | | |
228 WS_CAPTION | | |
229 WS_SYSMENU | | |
230 WS_THICKFRAME | | |
231 WS_MINIMIZEBOX | | |
232 WS_MAXIMIZEBOX, | |
233 WS_POPUPWINDOW = WS_POPUP | | |
234 WS_BORDER | | |
235 WS_SYSMENU, | |
236 WS_CHILDWINDOW = WS_CHILD, | |
237 WS_TILED = WS_OVERLAPPED, | |
238 WS_ICONIC = WS_MINIMIZE, | |
239 WS_SIZEBOX = WS_THICKFRAME, | |
240 WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW | |
241 } | |
242 //}}} | |
243 | |
244 //{{{ extended window styles | |
245 enum { | |
246 WS_EX_DLGMODALFRAME = 0x00000001, | |
247 WS_EX_TOPMOST = 0x00000008, | |
248 WS_EX_TOOLWINDOW = 0x00000080, | |
249 WS_EX_WINDOWEDGE = 0x00000100, | |
250 WS_EX_CLIENTEDGE = 0x00000200, | |
251 WS_EX_CONTROLPARENT = 0x00010000, | |
252 WS_EX_STATICEDGE = 0x00020000, | |
253 WS_EX_APPWINDOW = 0x00040000, | |
254 WS_EX_LAYERED = 0x00080000, | |
255 WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE, | |
256 WS_EX_COMPOSITED = 0x02000000 | |
257 } | |
258 //}}} | |
259 | |
260 //{{{ CreateWindowEx() | |
261 HWND CreateWindowExA( | |
262 DWORD dwExStyle, | |
263 LPCSTR lpClassName, | |
264 LPCSTR lpWindowName, | |
265 DWORD dwStyle, | |
266 int x, | |
267 int y, | |
268 int nWidth, | |
269 int nHeight, | |
270 HWND hWndParent, | |
271 HMENU hMenu, | |
272 HINSTANCE hInstance, | |
273 VOID* lpParam); | |
274 HWND CreateWindowExW( | |
275 DWORD dwExStyle, | |
276 LPCWSTR lpClassName, | |
277 LPCWSTR lpWindowName, | |
278 DWORD dwStyle, | |
279 int x, | |
280 int y, | |
281 int nWidth, | |
282 int nHeight, | |
283 HWND hWndParent, | |
284 HMENU hMenu, | |
285 HINSTANCE hInstance, | |
286 VOID* lpParam); | |
287 //}}} | |
288 | |
289 BOOL DestroyWindow(HWND hWnd); | |
290 | |
291 BOOL ClientToScreen(HWND hWnd, POINT* lpPoint); | |
292 | |
293 BOOL ScreenToClient(HWND hWnd, POINT* lpPoint); | |
294 | |
295 //{{{ messages | |
296 enum { | |
297 WM_NULL = 0x0000, | |
298 WM_CREATE = 0x0001, | |
299 WM_DESTROY = 0x0002, | |
300 WM_MOVE = 0x0003, | |
301 WM_SIZE = 0x0005, | |
302 WM_ACTIVATE = 0x0006, | |
303 WM_SETFOCUS = 0x0007, | |
304 WM_KILLFOCUS = 0x0008, | |
305 WM_ENABLE = 0x000A, | |
306 WM_SETREDRAW = 0x000B, | |
307 WM_SETTEXT = 0x000C, | |
308 WM_GETTEXT = 0x000D, | |
309 WM_GETTEXTLENGTH = 0x000E, | |
310 WM_PAINT = 0x000F, | |
311 WM_CLOSE = 0x0010, | |
312 WM_QUERYENDSESSION = 0x0011, | |
313 WM_QUERYOPEN = 0x0013, | |
314 WM_ENDSESSION = 0x0016, | |
315 WM_QUIT = 0x0012, | |
316 WM_ERASEBKGND = 0x0014, | |
317 WM_SYSCOLORCHANGE = 0x0015, | |
318 WM_SHOWWINDOW = 0x0018, | |
319 WM_WININICHANGE = 0x001A, | |
320 WM_SETTINGCHANGE = WM_WININICHANGE, | |
321 WM_DEVMODECHANGE = 0x001B, | |
322 WM_ACTIVATEAPP = 0x001C, | |
323 WM_FONTCHANGE = 0x001D, | |
324 WM_TIMECHANGE = 0x001E, | |
325 WM_CANCELMODE = 0x001F, | |
326 WM_SETCURSOR = 0x0020, | |
327 WM_MOUSEACTIVATE = 0x0021, | |
328 WM_CHILDACTIVATE = 0x0022, | |
329 WM_QUEUESYNC = 0x0023, | |
330 WM_GETMINMAXINFO = 0x0024, | |
331 WM_PAINTICON = 0x0026, | |
332 WM_ICONERASEBKGND = 0x0027, | |
333 WM_NEXTDLGCTL = 0x0028, | |
334 WM_SPOOLERSTATUS = 0x002A, | |
335 WM_DRAWITEM = 0x002B, | |
336 WM_MEASUREITEM = 0x002C, | |
337 WM_DELETEITEM = 0x002D, | |
338 WM_VKEYTOITEM = 0x002E, | |
339 WM_CHARTOITEM = 0x002F, | |
340 WM_SETFONT = 0x0030, | |
341 WM_GETFONT = 0x0031, | |
342 WM_SETHOTKEY = 0x0032, | |
343 WM_GETHOTKEY = 0x0033, | |
344 WM_QUERYDRAGICON = 0x0037, | |
345 WM_COMPAREITEM = 0x0039, | |
346 WM_GETOBJECT = 0x003D, | |
347 WM_COMPACTING = 0x0041, | |
348 WM_WINDOWPOSCHANGING = 0x0046, | |
349 WM_WINDOWPOSCHANGED = 0x0047, | |
350 WM_POWER = 0x0048, | |
351 WM_COPYDATA = 0x004A, | |
352 WM_CANCELJOURNAL = 0x004B, | |
353 WM_NOTIFY = 0x004E, | |
354 WM_INPUTLANGCHANGEREQUEST = 0x0050, | |
355 WM_INPUTLANGCHANGE = 0x0051, | |
356 WM_TCARD = 0x0052, | |
357 WM_HELP = 0x0053, | |
358 WM_USERCHANGED = 0x0054, | |
359 WM_NOTIFYFORMAT = 0x0055, | |
360 WM_CONTEXTMENU = 0x007B, | |
361 WM_STYLECHANGING = 0x007C, | |
362 WM_STYLECHANGED = 0x007D, | |
363 WM_DISPLAYCHANGE = 0x007E, | |
364 WM_GETICON = 0x007F, | |
365 WM_SETICON = 0x0080, | |
366 WM_NCCREATE = 0x0081, | |
367 WM_NCDESTROY = 0x0082, | |
368 WM_NCCALCSIZE = 0x0083, | |
369 WM_NCHITTEST = 0x0084, | |
370 WM_NCPAINT = 0x0085, | |
371 WM_NCACTIVATE = 0x0086, | |
372 WM_GETDLGCODE = 0x0087, | |
373 WM_SYNCPAINT = 0x0088, | |
374 WM_NCMOUSEMOVE = 0x00A0, | |
375 WM_NCLBUTTONDOWN = 0x00A1, | |
376 WM_NCLBUTTONUP = 0x00A2, | |
377 WM_NCLBUTTONDBLCLK = 0x00A3, | |
378 WM_NCRBUTTONDOWN = 0x00A4, | |
379 WM_NCRBUTTONUP = 0x00A5, | |
380 WM_NCRBUTTONDBLCLK = 0x00A6, | |
381 WM_NCMBUTTONDOWN = 0x00A7, | |
382 WM_NCMBUTTONUP = 0x00A8, | |
383 WM_NCMBUTTONDBLCLK = 0x00A9, | |
384 WM_NCXBUTTONDOWN = 0x00AB, | |
385 WM_NCXBUTTONUP = 0x00AC, | |
386 WM_NCXBUTTONDBLCLK = 0x00AD, | |
387 WM_INPUT = 0x00FF, | |
388 WM_KEYDOWN = 0x0100, | |
389 WM_KEYUP = 0x0101, | |
390 WM_CHAR = 0x0102, | |
391 WM_DEADCHAR = 0x0103, | |
392 WM_SYSKEYDOWN = 0x0104, | |
393 WM_SYSKEYUP = 0x0105, | |
394 WM_SYSCHAR = 0x0106, | |
395 WM_SYSDEADCHAR = 0x0107, | |
396 WM_UNICHAR = 0x0109, | |
397 WM_IME_STARTCOMPOSITION = 0x010D, | |
398 WM_IME_ENDCOMPOSITION = 0x010E, | |
399 WM_IME_COMPOSITION = 0x010F, | |
400 WM_IME_KEYLAST = 0x010F, | |
401 WM_INITDIALOG = 0x0110, | |
402 WM_COMMAND = 0x0111, | |
403 WM_SYSCOMMAND = 0x0112, | |
404 WM_TIMER = 0x0113, | |
405 WM_HSCROLL = 0x0114, | |
406 WM_VSCROLL = 0x0115, | |
407 WM_INITMENU = 0x0116, | |
408 WM_INITMENUPOPUP = 0x0117, | |
409 WM_MENUSELECT = 0x011F, | |
410 WM_MENUCHAR = 0x0120, | |
411 WM_ENTERIDLE = 0x0121, | |
412 WM_MENURBUTTONUP = 0x0122, | |
413 WM_MENUDRAG = 0x0123, | |
414 WM_MENUGETOBJECT = 0x0124, | |
415 WM_UNINITMENUPOPUP = 0x0125, | |
416 WM_MENUCOMMAND = 0x0126, | |
417 WM_CHANGEUISTATE = 0x0127, | |
418 WM_UPDATEUISTATE = 0x0128, | |
419 WM_QUERYUISTATE = 0x0129, | |
420 WM_CTLCOLORMSGBOX = 0x0132, | |
421 WM_CTLCOLOREDIT = 0x0133, | |
422 WM_CTLCOLORLISTBOX = 0x0134, | |
423 WM_CTLCOLORBTN = 0x0135, | |
424 WM_CTLCOLORDLG = 0x0136, | |
425 WM_CTLCOLORSCROLLBAR = 0x0137, | |
426 WM_CTLCOLORSTATIC = 0x0138, | |
427 WM_MOUSEFIRST = 0x0200, | |
428 WM_MOUSEMOVE = 0x0200, | |
429 WM_LBUTTONDOWN = 0x0201, | |
430 WM_LBUTTONUP = 0x0202, | |
431 WM_LBUTTONDBLCLK = 0x0203, | |
432 WM_RBUTTONDOWN = 0x0204, | |
433 WM_RBUTTONUP = 0x0205, | |
434 WM_RBUTTONDBLCLK = 0x0206, | |
435 WM_MBUTTONDOWN = 0x0207, | |
436 WM_MBUTTONUP = 0x0208, | |
437 WM_MBUTTONDBLCLK = 0x0209, | |
438 WM_MOUSEWHEEL = 0x020A, | |
439 WM_XBUTTONDOWN = 0x020B, | |
440 WM_XBUTTONUP = 0x020C, | |
441 WM_XBUTTONDBLCLK = 0x020D, | |
442 WM_PARENTNOTIFY = 0x0210, | |
443 WM_ENTERMENULOOP = 0x0211, | |
444 WM_EXITMENULOOP = 0x0212, | |
445 WM_NEXTMENU = 0x0213, | |
446 WM_SIZING = 0x0214, | |
447 WM_CAPTURECHANGED = 0x0215, | |
448 WM_MOVING = 0x0216, | |
449 WM_POWERBROADCAST = 0x0218, | |
450 WM_DEVICECHANGE = 0x0219, | |
451 WM_MDICREATE = 0x0220, | |
452 WM_MDIDESTROY = 0x0221, | |
453 WM_MDIACTIVATE = 0x0222, | |
454 WM_MDIRESTORE = 0x0223, | |
455 WM_MDINEXT = 0x0224, | |
456 WM_MDIMAXIMIZE = 0x0225, | |
457 WM_MDITILE = 0x0226, | |
458 WM_MDICASCADE = 0x0227, | |
459 WM_MDIICONARRANGE = 0x0228, | |
460 WM_MDIGETACTIVE = 0x0229, | |
461 WM_MDISETMENU = 0x0230, | |
462 WM_ENTERSIZEMOVE = 0x0231, | |
463 WM_EXITSIZEMOVE = 0x0232, | |
464 WM_DROPFILES = 0x0233, | |
465 WM_MDIREFRESHMENU = 0x0234, | |
466 WM_IME_SETCONTEXT = 0x0281, | |
467 WM_IME_NOTIFY = 0x0282, | |
468 WM_IME_CONTROL = 0x0283, | |
469 WM_IME_COMPOSITIONFULL = 0x0284, | |
470 WM_IME_SELECT = 0x0285, | |
471 WM_IME_CHAR = 0x0286, | |
472 WM_IME_REQUEST = 0x0288, | |
473 WM_IME_KEYDOWN = 0x0290, | |
474 WM_IME_KEYUP = 0x0291, | |
475 WM_MOUSEHOVER = 0x02A1, | |
476 WM_MOUSELEAVE = 0x02A3, | |
477 WM_NCMOUSEHOVER = 0x02A0, | |
478 WM_NCMOUSELEAVE = 0x02A2, | |
479 WM_WTSSESSION_CHANGE = 0x02B1, | |
480 WM_TABLET_FIRST = 0x02C0, | |
481 WM_TABLET_LAST = 0x02DF, | |
482 WM_CUT = 0x0300, | |
483 WM_COPY = 0x0301, | |
484 WM_PASTE = 0x0302, | |
485 WM_CLEAR = 0x0303, | |
486 WM_UNDO = 0x0304, | |
487 WM_RENDERFORMAT = 0x0305, | |
488 WM_RENDERALLFORMATS = 0x0306, | |
489 WM_DESTROYCLIPBOARD = 0x0307, | |
490 WM_DRAWCLIPBOARD = 0x0308, | |
491 WM_PAINTCLIPBOARD = 0x0309, | |
492 WM_VSCROLLCLIPBOARD = 0x030A, | |
493 WM_SIZECLIPBOARD = 0x030B, | |
494 WM_ASKCBFORMATNAME = 0x030C, | |
495 WM_CHANGECBCHAIN = 0x030D, | |
496 WM_HSCROLLCLIPBOARD = 0x030E, | |
497 WM_QUERYNEWPALETTE = 0x030F, | |
498 WM_PALETTEISCHANGING = 0x0310, | |
499 WM_PALETTECHANGED = 0x0311, | |
500 WM_HOTKEY = 0x0312, | |
501 WM_PRINT = 0x0317, | |
502 WM_PRINTCLIENT = 0x0318, | |
503 WM_APPCOMMAND = 0x0319, | |
504 WM_THEMECHANGED = 0x031A, | |
505 WM_HANDHELDFIRST = 0x0358, | |
506 WM_HANDHELDLAST = 0x035F, | |
507 WM_AFXFIRST = 0x0360, | |
508 WM_AFXLAST = 0x037F, | |
509 WM_PENWINFIRST = 0x0380, | |
510 WM_PENWINLAST = 0x038F, | |
511 WM_APP = 0x8000, | |
512 WM_USER = 0x0400 | |
513 } | |
514 enum { | |
515 PBT_APMQUERYSUSPEND = 0x0000, | |
516 PBT_APMQUERYSTANDBY = 0x0001, | |
517 PBT_APMQUERYSUSPENDFAILED = 0x0002, | |
518 PBT_APMQUERYSTANDBYFAILED = 0x0003, | |
519 PBT_APMSUSPEND = 0x0004, | |
520 PBT_APMSTANDBY = 0x0005, | |
521 PBT_APMRESUMECRITICAL = 0x0006, | |
522 PBT_APMRESUMESUSPEND = 0x0007, | |
523 PBT_APMRESUMESTANDBY = 0x0008, | |
524 PBTF_APMRESUMEFROMFAILURE = 0x00000001, | |
525 PBT_APMBATTERYLOW = 0x0009, | |
526 PBT_APMPOWERSTATUSCHANGE = 0x000A, | |
527 PBT_APMOEMEVENT = 0x000B, | |
528 PBT_APMRESUMEAUTOMATIC = 0x0012 | |
529 } | |
530 //}}} | |
531 | |
532 enum { | |
533 MK_LBUTTON = 0x0001, | |
534 MK_RBUTTON = 0x0002, | |
535 MK_SHIFT = 0x0004, | |
536 MK_CONTROL = 0x0008, | |
537 MK_MBUTTON = 0x0010, | |
538 MK_XBUTTON1 = 0x0020, | |
539 MK_XBUTTON2 = 0x0040 | |
540 } | |
541 | |
542 enum { | |
543 WMSZ_LEFT = 1, | |
544 WMSZ_RIGHT = 2, | |
545 WMSZ_TOP = 3, | |
546 WMSZ_TOPLEFT = 4, | |
547 WMSZ_TOPRIGHT = 5, | |
548 WMSZ_BOTTOM = 6, | |
549 WMSZ_BOTTOMLEFT = 7, | |
550 WMSZ_BOTTOMRIGHT = 8 | |
551 } | |
552 | |
553 enum { | |
554 SIZE_RESTORED = 0, | |
555 SIZE_MINIMIZED = 1, | |
556 SIZE_MAXIMIZED = 2, | |
557 SIZE_MAXSHOW = 3, | |
558 SIZE_MAXHIDE = 4 | |
559 } | |
560 | |
561 enum { | |
562 SW_HIDE = 0, | |
563 SW_SHOWNORMAL = 1, | |
564 SW_NORMAL = 1, | |
565 SW_SHOWMINIMIZED = 2, | |
566 SW_SHOWMAXIMIZED = 3, | |
567 SW_MAXIMIZE = 3, | |
568 SW_SHOWNOACTIVATE = 4, | |
569 SW_SHOW = 5, | |
570 SW_MINIMIZE = 6, | |
571 SW_SHOWMINNOACTIVE = 7, | |
572 SW_SHOWNA = 8, | |
573 SW_RESTORE = 9, | |
574 SW_SHOWDEFAULT = 10, | |
575 SW_FORCEMINIMIZE = 11, | |
576 SW_MAX = 11 | |
577 } | |
578 | |
579 enum { | |
580 GWL_STYLE = -16, | |
581 GWL_EXSTYLE = -20 | |
582 } | |
583 | |
584 DWORD GetClassLongA(HWND hWnd, int nIndex); | |
585 DWORD GetClassLongW(HWND hWnd, int nIndex); | |
586 | |
587 DWORD SetClassLongA(HWND hWnd, int nIndex, LONG dwNewLong); | |
588 DWORD SetClassLongW(HWND hWnd, int nIndex, LONG dwNewLong); | |
589 | |
590 ULONG_PTR GetClassLongPtrA(HWND hWnd, int nIndex); | |
591 ULONG_PTR GetClassLongPtrW(HWND hWnd, int nIndex); | |
592 | |
593 ULONG_PTR SetClassLongPtrA(HWND hWnd, int nIndex, LONG_PTR dwNewLong); | |
594 ULONG_PTR SetClassLongPtrW(HWND hWnd, int nIndex, LONG_PTR dwNewLong); | |
595 | |
596 LONG GetWindowLongA(HWND hWnd, int nIndex); | |
597 LONG GetWindowLongW(HWND hWnd, int nIndex); | |
598 | |
599 LONG SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong); | |
600 LONG SetWindowLongW(HWND hWnd, int nIndex, LONG dwNewLong); | |
601 | |
602 LONG_PTR GetWindowLongPtrA(HWND hWnd, int nIndex); | |
603 LONG_PTR GetWindowLongPtrW(HWND hWnd, int nIndex); | |
604 | |
605 LONG_PTR SetWindowLongPtrA(HWND hWnd, int nIndex, LONG_PTR dwNewLong); | |
606 LONG_PTR SetWindowLongPtrW(HWND hWnd, int nIndex, LONG_PTR dwNewLong); | |
607 | |
608 BOOL ShowWindow(HWND hWnd, int nCmdShow); | |
609 | |
610 //Windows 98 required | |
611 BOOL AnimateWindow(HWND hWnd, DWORD dwTime, DWORD dwFlags); | |
612 | |
613 BOOL IsWindowVisible(HWND hWnd); | |
614 | |
615 BOOL IsWindow(HWND hWnd); | |
616 | |
617 BOOL GetWindowRect(HWND hWnd, RECT* lpRect); | |
618 | |
619 BOOL GetClientRect(HWND hWnd, RECT* lpRect); | |
620 | |
621 enum { | |
622 SWP_NOSIZE = 0x0001, | |
623 SWP_NOMOVE = 0x0002, | |
624 SWP_NOZORDER = 0x0004, | |
625 SWP_NOACTIVATE = 0x0010, | |
626 SWP_FRAMECHANGED = 0x0020 | |
627 } | |
628 | |
629 BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags); | |
630 | |
631 BOOL MoveWindow(HWND hWnd, int x, int y, int nWidth, int nHeight, BOOL bRepaint); | |
632 | |
633 int SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw); | |
634 | |
635 enum { | |
636 ULW_COLORKEY = 0x00000001, | |
637 ULW_ALPHA = 0x00000002, | |
638 ULW_OPAQUE = 0x00000004 | |
639 } | |
640 | |
641 BOOL UpdateLayeredWindow( | |
642 HWND hWnd, | |
643 HDC hdcDst, | |
644 POINT* pptDst, | |
645 SIZE* psize, | |
646 HDC hdcSrc, | |
647 POINT* pptSrc, | |
648 COLORREF crKey, | |
649 BLENDFUNCTION* pblend, | |
650 DWORD dwFlags); | |
651 | |
652 HWND SetParent(HWND hWndChild, HWND hWndNewParent); | |
653 | |
654 HWND GetParent(HWND hWnd); | |
655 | |
656 BOOL IsChild(HWND hWndParent, HWND hWnd); | |
657 | |
658 BOOL EnableWindow(HWND hWnd, BOOL bEnable); | |
659 | |
660 enum { | |
661 GW_HWNDFIRST = 0, | |
662 GW_HWNDLAST = 1, | |
663 GW_HWNDNEXT = 2, | |
664 GW_HWNDPREV = 3, | |
665 GW_OWNER = 4, | |
666 GW_CHILD = 5 | |
667 } | |
668 | |
669 HWND GetWindow(HWND hWnd, UINT uCmd); | |
670 | |
671 BOOL GetWindowInfo(HWND hwnd, WINDOWINFO* pwi); | |
672 | |
673 int GetWindowTextLength(HWND hWnd); | |
674 | |
675 int GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount); | |
676 int GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount); | |
677 | |
678 BOOL SetWindowTextA(HWND hWnd, LPCSTR lpString); | |
679 BOOL SetWindowTextW(HWND hWnd, LPCWSTR lpString); | |
680 | |
681 UINT GetWindowModuleFileNameA(HWND hWnd, LPSTR lpszFileName, UINT cchFileNameMax); | |
682 UINT GetWindowModuleFileNameW(HWND hWnd, LPWSTR lpszFileName, UINT cchFileNameMax); | |
683 | |
684 BOOL SetPropA(HWND hWnd, LPCSTR lpString, HANDLE hData); | |
685 BOOL SetPropW(HWND hWnd, LPCWSTR lpString, HANDLE hData); | |
686 | |
687 HANDLE GetPropA(HWND hWnd, LPCSTR lpString); | |
688 HANDLE GetPropW(HWND hWnd, LPCWSTR lpString); | |
689 | |
690 HANDLE RemovePropA(HWND hWnd, LPCSTR lpString); | |
691 HANDLE RemovePropW(HWND hWnd, LPCWSTR lpString); | |
692 | |
693 DWORD CommDlgExtendedError(); | |
694 enum { FNERR_BUFFERTOOSMALL = 0x3003 } | |
695 | |
696 enum { | |
697 OFN_READONLY = 0x00000001, | |
698 OFN_OVERWRITEPROMPT = 0x00000002, | |
699 OFN_HIDEREADONLY = 0x00000004, | |
700 OFN_NOCHANGEDIR = 0x00000008, | |
701 OFN_SHOWHELP = 0x00000010, | |
702 OFN_ENABLEHOOK = 0x00000020, | |
703 OFN_ENABLETEMPLATE = 0x00000040, | |
704 OFN_ENABLETEMPLATEHANDLE = 0x00000080, | |
705 OFN_NOVALIDATE = 0x00000100, | |
706 OFN_ALLOWMULTISELECT = 0x00000200, | |
707 OFN_EXTENSIONDIFFERENT = 0x00000400, | |
708 OFN_PATHMUSTEXIST = 0x00000800, | |
709 OFN_FILEMUSTEXIST = 0x00001000, | |
710 OFN_CREATEPROMPT = 0x00002000, | |
711 OFN_SHAREAWARE = 0x00004000, | |
712 OFN_NOREADONLYRETURN = 0x00008000, | |
713 OFN_NOTESTFILECREATE = 0x00010000, | |
714 OFN_NONETWORKBUTTON = 0x00020000, | |
715 OFN_NOLONGNAMES = 0x00040000, | |
716 OFN_EXPLORER = 0x00080000, | |
717 OFN_NODEREFERENCELINKS = 0x00100000, | |
718 OFN_LONGNAMES = 0x00200000, | |
719 OFN_ENABLEINCLUDENOTIFY = 0x00400000, | |
720 OFN_ENABLESIZING = 0x00800000, | |
721 OFN_DONTADDTORECENT = 0x02000000, | |
722 OFN_FORCESHOWHIDDEN = 0x10000000 | |
723 } | |
724 | |
725 BOOL GetOpenFileNameA(OPENFILENAME* lpofn); | |
726 BOOL GetOpenFileNameW(OPENFILENAME* lpofn); | |
727 | |
728 BOOL GetSaveFileNameA(OPENFILENAME* lpofn); | |
729 BOOL GetSaveFileNameW(OPENFILENAME* lpofn); | |
730 | |
731 //}}} | |
732 | |
733 //{{{ painting functions | |
734 BOOL InvalidateRect(HWND hWnd, RECT* lpRect, BOOL bErase); | |
735 | |
736 BOOL ValidateRect(HWND hWnd, RECT* lpRect); | |
737 | |
738 BOOL UpdateWindow(HWND hWnd); | |
739 | |
740 HWND WindowFromDC(HDC hdc); | |
741 | |
742 HDC BeginPaint(HWND hWnd, PAINTSTRUCT* lpPaint); | |
743 | |
744 BOOL EndPaint(HWND hWnd, PAINTSTRUCT* lpPaint); | |
745 //}}} | |
746 | |
747 //{{{ device context functions | |
748 HDC GetDC(HWND hWnd); | |
749 | |
750 int ReleaseDC(HWND hWnd, HDC hDC); | |
751 | |
752 HDC CreateCompatibleDC(HDC hdc); | |
753 | |
754 BOOL DeleteDC(HDC hdc); | |
755 | |
756 HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hObject); | |
757 | |
758 BOOL DeleteObject(HGDIOBJ hObject); | |
759 | |
760 int GetObjectW(HANDLE h, int c, VOID* pv); | |
761 | |
762 HBITMAP CreateCompatibleBitmap(HDC hdc, int cx, int cy); | |
763 | |
764 HBITMAP CreateDIBSection( | |
765 HDC hdc, | |
766 BITMAPINFO* lpbmi, | |
767 UINT usage, | |
768 VOID** ppvBits, | |
769 HANDLE hSection, | |
770 DWORD offset); | |
771 | |
772 int GetDIBits(HDC hdc, HBITMAP hbm, UINT start, UINT cLines, VOID* lpvBits, BITMAPINFO* lpbmi, UINT usage); | |
773 | |
774 enum { | |
775 DIB_RGB_COLORS = 0 | |
776 } | |
777 enum { | |
778 BI_RGB = 0 | |
779 } | |
780 | |
781 enum { | |
782 SRCCOPY = 0x00CC0020 | |
783 } | |
784 | |
785 BOOL BitBlt(HDC hdc, int x, int y, int cx, int cy, HDC hdcSrc, int x1, int y1, DWORD rop); | |
786 | |
787 enum { | |
788 AC_SRC_OVER = 0x00, | |
789 AC_SRC_ALPHA = 0x01 | |
790 } | |
791 | |
792 int EnumFontFamiliesExA( | |
793 HDC hdc, LOGFONT* lpLogfont, | |
794 FONTENUMPROCA lpProc, LPARAM lParam, DWORD dwFlags); | |
795 int EnumFontFamiliesExW( | |
796 HDC hdc, LOGFONT* lpLogfont, | |
797 FONTENUMPROCW lpProc, LPARAM lParam, DWORD dwFlags); | |
798 | |
799 alias int function(ENUMLOGFONTEX*, TEXTMETRIC*, DWORD, LPARAM) FONTENUMPROCA; | |
800 alias int function(ENUMLOGFONTEX*, TEXTMETRIC*, DWORD, LPARAM) FONTENUMPROCW; | |
801 //}}} | |
802 | |
803 //{{{ message functions | |
804 BOOL GetMessageA(MSG* lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); | |
805 BOOL GetMessageW(MSG* lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); | |
806 | |
807 BOOL TranslateMessage(MSG* lpMsg); | |
808 | |
809 LRESULT DispatchMessageA(MSG* lpMsg); | |
810 LRESULT DispatchMessageW(MSG* lpMsg); | |
811 | |
812 BOOL PostMessage(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); | |
813 | |
814 void PostQuitMessage(int nExitCode); | |
815 | |
816 LRESULT SendMessage(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); | |
817 //}}} | |
818 | |
819 //{{{ clipboard functions | |
820 enum { | |
821 CF_TEXT = 1, | |
822 CF_BITMAP = 2, | |
823 CF_METAFILEPICT = 3, | |
824 CF_SYLK = 4, | |
825 CF_DIF = 5, | |
826 CF_TIFF = 6, | |
827 CF_OEMTEXT = 7, | |
828 CF_DIB = 8, | |
829 CF_PALETTE = 9, | |
830 CF_PENDATA = 10, | |
831 CF_RIFF = 11, | |
832 CF_WAVE = 12, | |
833 CF_UNICODETEXT = 13, | |
834 CF_ENHMETAFILE = 14, | |
835 CF_HDROP = 15, | |
836 CF_LOCALE = 16 | |
837 } | |
838 | |
839 BOOL OpenClipboard(HWND hWndNewOwner); | |
840 | |
841 BOOL CloseClipboard(); | |
842 | |
843 BOOL IsClipboardFormatAvailable(UINT format); | |
844 | |
845 HANDLE GetClipboardData(UINT uFormat); | |
846 | |
847 HANDLE SetClipboardData(UINT uFormat, HANDLE hMem); | |
848 | |
849 BOOL EmptyClipboard(); | |
850 //}}} | |
851 | |
852 //{{{ mouse functions | |
853 enum { | |
854 XBUTTON1 = 0x0001, | |
855 XBUTTON2 = 0x0002 | |
856 } | |
857 | |
858 HWND SetCapture(HWND hWnd); | |
859 | |
860 BOOL ReleaseCapture(); | |
861 | |
862 enum { | |
863 TME_HOVER = 0x00000001, | |
864 TME_LEAVE = 0x00000002, | |
865 TME_NONCLIENT = 0x00000010 | |
866 } | |
867 BOOL TrackMouseEvent(TRACKMOUSEEVENT* lpEventTrack); | |
868 | |
869 HCURSOR SetCursor(HCURSOR hCursor); | |
870 | |
871 BOOL GetCursorPos(POINT* lpPoint); | |
872 //}}} | |
873 | |
874 //{{{ keyboard functions | |
875 //{{{ keys | |
876 enum { | |
877 VK_LBUTTON = 0x01, | |
878 VK_RBUTTON = 0x02, | |
879 VK_CANCEL = 0x03, | |
880 VK_MBUTTON = 0x04, | |
881 VK_XBUTTON1 = 0x05, | |
882 VK_XBUTTON2 = 0x06, | |
883 VK_BACK = 0x08, | |
884 VK_TAB = 0x09, | |
885 VK_CLEAR = 0x0C, | |
886 VK_RETURN = 0x0D, | |
887 VK_SHIFT = 0x10, | |
888 VK_CONTROL = 0x11, | |
889 VK_MENU = 0x12, | |
890 VK_PAUSE = 0x13, | |
891 VK_CAPITAL = 0x14, | |
892 VK_KANA = 0x15, | |
893 VK_HANGEUL = 0x15, | |
894 VK_HANGUL = 0x15, | |
895 VK_JUNJA = 0x17, | |
896 VK_FINAL = 0x18, | |
897 VK_HANJA = 0x19, | |
898 VK_KANJI = 0x19, | |
899 VK_ESCAPE = 0x1B, | |
900 VK_CONVERT = 0x1C, | |
901 VK_NONCONVERT = 0x1D, | |
902 VK_ACCEPT = 0x1E, | |
903 VK_MODECHANGE = 0x1F, | |
904 VK_SPACE = 0x20, | |
905 VK_PRIOR = 0x21, | |
906 VK_NEXT = 0x22, | |
907 VK_END = 0x23, | |
908 VK_HOME = 0x24, | |
909 VK_LEFT = 0x25, | |
910 VK_UP = 0x26, | |
911 VK_RIGHT = 0x27, | |
912 VK_DOWN = 0x28, | |
913 VK_SELECT = 0x29, | |
914 VK_PRINT = 0x2A, | |
915 VK_EXECUTE = 0x2B, | |
916 VK_SNAPSHOT = 0x2C, | |
917 VK_INSERT = 0x2D, | |
918 VK_DELETE = 0x2E, | |
919 VK_HELP = 0x2F, | |
920 VK_LWIN = 0x5B, | |
921 VK_RWIN = 0x5C, | |
922 VK_APPS = 0x5D, | |
923 VK_SLEEP = 0x5F, | |
924 VK_NUMPAD0 = 0x60, | |
925 VK_NUMPAD1 = 0x61, | |
926 VK_NUMPAD2 = 0x62, | |
927 VK_NUMPAD3 = 0x63, | |
928 VK_NUMPAD4 = 0x64, | |
929 VK_NUMPAD5 = 0x65, | |
930 VK_NUMPAD6 = 0x66, | |
931 VK_NUMPAD7 = 0x67, | |
932 VK_NUMPAD8 = 0x68, | |
933 VK_NUMPAD9 = 0x69, | |
934 VK_MULTIPLY = 0x6A, | |
935 VK_ADD = 0x6B, | |
936 VK_SEPARATOR = 0x6C, | |
937 VK_SUBTRACT = 0x6D, | |
938 VK_DECIMAL = 0x6E, | |
939 VK_DIVIDE = 0x6F, | |
940 VK_F1 = 0x70, | |
941 VK_F2 = 0x71, | |
942 VK_F3 = 0x72, | |
943 VK_F4 = 0x73, | |
944 VK_F5 = 0x74, | |
945 VK_F6 = 0x75, | |
946 VK_F7 = 0x76, | |
947 VK_F8 = 0x77, | |
948 VK_F9 = 0x78, | |
949 VK_F10 = 0x79, | |
950 VK_F11 = 0x7A, | |
951 VK_F12 = 0x7B, | |
952 VK_F13 = 0x7C, | |
953 VK_F14 = 0x7D, | |
954 VK_F15 = 0x7E, | |
955 VK_F16 = 0x7F, | |
956 VK_F17 = 0x80, | |
957 VK_F18 = 0x81, | |
958 VK_F19 = 0x82, | |
959 VK_F20 = 0x83, | |
960 VK_F21 = 0x84, | |
961 VK_F22 = 0x85, | |
962 VK_F23 = 0x86, | |
963 VK_F24 = 0x87, | |
964 VK_NUMLOCK = 0x90, | |
965 VK_SCROLL = 0x91, | |
966 VK_OEM_NEC_EQUAL = 0x92, | |
967 VK_OEM_FJ_JISHO = 0x92, | |
968 VK_OEM_FJ_MASSHOU = 0x93, | |
969 VK_OEM_FJ_TOUROKU = 0x94, | |
970 VK_OEM_FJ_LOYA = 0x95, | |
971 VK_OEM_FJ_ROYA = 0x96, | |
972 VK_LSHIFT = 0xA0, | |
973 VK_RSHIFT = 0xA1, | |
974 VK_LCONTROL = 0xA2, | |
975 VK_RCONTROL = 0xA3, | |
976 VK_LMENU = 0xA4, | |
977 VK_RMENU = 0xA5, | |
978 VK_BROWSER_BACK = 0xA6, | |
979 VK_BROWSER_FORWARD = 0xA7, | |
980 VK_BROWSER_REFRESH = 0xA8, | |
981 VK_BROWSER_STOP = 0xA9, | |
982 VK_BROWSER_SEARCH = 0xAA, | |
983 VK_BROWSER_FAVORITES = 0xAB, | |
984 VK_BROWSER_HOME = 0xAC, | |
985 VK_VOLUME_MUTE = 0xAD, | |
986 VK_VOLUME_DOWN = 0xAE, | |
987 VK_VOLUME_UP = 0xAF, | |
988 VK_MEDIA_NEXT_TRACK = 0xB0, | |
989 VK_MEDIA_PREV_TRACK = 0xB1, | |
990 VK_MEDIA_STOP = 0xB2, | |
991 VK_MEDIA_PLAY_PAUSE = 0xB3, | |
992 VK_LAUNCH_MAIL = 0xB4, | |
993 VK_LAUNCH_MEDIA_SELECT = 0xB5, | |
994 VK_LAUNCH_APP1 = 0xB6, | |
995 VK_LAUNCH_APP2 = 0xB7, | |
996 VK_OEM_1 = 0xBA, | |
997 VK_OEM_PLUS = 0xBB, | |
998 VK_OEM_COMMA = 0xBC, | |
999 VK_OEM_MINUS = 0xBD, | |
1000 VK_OEM_PERIOD = 0xBE, | |
1001 VK_OEM_2 = 0xBF, | |
1002 VK_OEM_3 = 0xC0, | |
1003 VK_OEM_4 = 0xDB, | |
1004 VK_OEM_5 = 0xDC, | |
1005 VK_OEM_6 = 0xDD, | |
1006 VK_OEM_7 = 0xDE, | |
1007 VK_OEM_8 = 0xDF, | |
1008 VK_OEM_AX = 0xE1, | |
1009 VK_OEM_102 = 0xE2, | |
1010 VK_ICO_HELP = 0xE3, | |
1011 VK_ICO_00 = 0xE4, | |
1012 VK_PROCESSKEY = 0xE5, | |
1013 VK_ICO_CLEAR = 0xE6, | |
1014 VK_PACKET = 0xE7, | |
1015 VK_OEM_RESET = 0xE9, | |
1016 VK_OEM_JUMP = 0xEA, | |
1017 VK_OEM_PA1 = 0xEB, | |
1018 VK_OEM_PA2 = 0xEC, | |
1019 VK_OEM_PA3 = 0xED, | |
1020 VK_OEM_WSCTRL = 0xEE, | |
1021 VK_OEM_CUSEL = 0xEF, | |
1022 VK_OEM_ATTN = 0xF0, | |
1023 VK_OEM_FINISH = 0xF1, | |
1024 VK_OEM_COPY = 0xF2, | |
1025 VK_OEM_AUTO = 0xF3, | |
1026 VK_OEM_ENLW = 0xF4, | |
1027 VK_OEM_BACKTAB = 0xF5, | |
1028 VK_ATTN = 0xF6, | |
1029 VK_CRSEL = 0xF7, | |
1030 VK_EXSEL = 0xF8, | |
1031 VK_EREOF = 0xF9, | |
1032 VK_PLAY = 0xFA, | |
1033 VK_ZOOM = 0xFB, | |
1034 VK_NONAME = 0xFC, | |
1035 VK_PA1 = 0xFD, | |
1036 VK_OEM_CLEAR = 0xFE | |
1037 } | |
1038 //}}} | |
1039 | |
1040 SHORT GetKeyState(int nVirtKey); | |
1041 //}}} | |
1042 | |
1043 //{{{ system functions | |
1044 //const LPTSTR IDC_ARROW = cast(LPTSTR)32512u; | |
1045 //const LPTSTR IDC_IBEAM = cast(LPTSTR)32513u; | |
1046 //const LPTSTR IDC_WAIT = cast(LPTSTR)32514u; | |
1047 //const LPTSTR IDC_CROSS = cast(LPTSTR)32515u; | |
1048 //const LPTSTR IDC_UPARROW = cast(LPTSTR)32516u; | |
1049 //const LPTSTR IDC_SIZE = cast(LPTSTR)32640u; | |
1050 //const LPTSTR IDC_ICON = cast(LPTSTR)32641u; | |
1051 //const LPTSTR IDC_SIZENWSE = cast(LPTSTR)32642u; | |
1052 //const LPTSTR IDC_SIZENESW = cast(LPTSTR)32643u; | |
1053 //const LPTSTR IDC_SIZEWE = cast(LPTSTR)32644u; | |
1054 //const LPTSTR IDC_SIZENS = cast(LPTSTR)32645u; | |
1055 //const LPTSTR IDC_SIZEALL = cast(LPTSTR)32646u; | |
1056 //const LPTSTR IDC_NO = cast(LPTSTR)32648u; | |
1057 //const LPTSTR IDC_HAND = cast(LPTSTR)32649u; | |
1058 //const LPTSTR IDC_APPSTARTING = cast(LPTSTR)32650u; | |
1059 //const LPTSTR IDC_HELP = cast(LPTSTR)32651u; | |
1060 | |
1061 //const LPTSTR IDI_APPLICATION = cast(LPTSTR)32512; | |
1062 //const LPTSTR IDI_HAND = cast(LPTSTR)32513; | |
1063 //const LPTSTR IDI_QUESTION = cast(LPTSTR)32514; | |
1064 //const LPTSTR IDI_EXCLAMATION = cast(LPTSTR)32515; | |
1065 //const LPTSTR IDI_ASTERISK = cast(LPTSTR)32516; | |
1066 //const LPTSTR IDI_WINLOGO = cast(LPTSTR)32517; | |
1067 //const LPTSTR IDI_WARNING = IDI_EXCLAMATION; | |
1068 //const LPTSTR IDI_ERROR = IDI_HAND; | |
1069 //const LPTSTR IDI_INFORMATION = IDI_ASTERISK; | |
1070 | |
1071 enum { | |
1072 OIC_SAMPLE = 32512, | |
1073 OIC_HAND = 32513, | |
1074 OIC_QUES = 32514, | |
1075 OIC_BANG = 32515, | |
1076 OIC_NOTE = 32516, | |
1077 OIC_WINLOGO = 32517, | |
1078 OIC_WARNING = OIC_BANG, | |
1079 OIC_ERROR = OIC_HAND, | |
1080 OIC_INFORMATION = OIC_NOTE | |
1081 } | |
1082 | |
1083 enum { | |
1084 OCR_NORMAL = 32512, | |
1085 OCR_IBEAM = 32513, | |
1086 OCR_WAIT = 32514, | |
1087 OCR_CROSS = 32515, | |
1088 OCR_UP = 32516, | |
1089 OCR_SIZENWSE = 32642, | |
1090 OCR_SIZENESW = 32643, | |
1091 OCR_SIZEWE = 32644, | |
1092 OCR_SIZENS = 32645, | |
1093 OCR_SIZEALL = 32646, | |
1094 OCR_NO = 32648, | |
1095 OCR_HAND = 32649, | |
1096 OCR_APPSTARTING = 32650 | |
1097 } | |
1098 | |
1099 enum { | |
1100 IMAGE_BITMAP = 0, | |
1101 IMAGE_ICON = 1, | |
1102 IMAGE_CURSOR = 2 | |
1103 } | |
1104 | |
1105 enum { | |
1106 LR_DEFAULTCOLOR = 0x0000, | |
1107 LR_MONOCHROME = 0x0001, | |
1108 LR_COLOR = 0x0002, | |
1109 LR_COPYRETURNORG = 0x0004, | |
1110 LR_COPYDELETEORG = 0x0008, | |
1111 LR_LOADFROMFILE = 0x0010, | |
1112 LR_LOADTRANSPARENT = 0x0020, | |
1113 LR_DEFAULTSIZE = 0x0040, | |
1114 LR_VGACOLOR = 0x0080, | |
1115 LR_LOADMAP3DCOLORS = 0x1000, | |
1116 LR_CREATEDIBSECTION = 0x2000, | |
1117 LR_COPYFROMRESOURCE = 0x4000, | |
1118 LR_SHARED = 0x8000 | |
1119 } | |
1120 | |
1121 HANDLE LoadImageA( | |
1122 HINSTANCE hInst, | |
1123 LPCSTR name, | |
1124 UINT type, | |
1125 int cx, | |
1126 int cy, | |
1127 UINT fuLoad); | |
1128 HANDLE LoadImageW( | |
1129 HINSTANCE hInst, | |
1130 LPCWSTR name, | |
1131 UINT type, | |
1132 int cx, | |
1133 int cy, | |
1134 UINT fuLoad); | |
1135 | |
1136 HICON CreateIconFromResource( | |
1137 BYTE* presbits, | |
1138 DWORD dwResSize, | |
1139 BOOL fIcon, | |
1140 DWORD dwVer); | |
1141 | |
1142 enum { | |
1143 SPI_GETNONCLIENTMETRICS = 0x0029, | |
1144 SPI_GETWORKAREA = 0x0030, | |
1145 SPI_GETWHEELSCROLLLINES = 0x0068 | |
1146 } | |
1147 | |
1148 BOOL SystemParametersInfoA(UINT uiAction, UINT uiParam, VOID* pvParam, UINT fWinIni); | |
1149 BOOL SystemParametersInfoW(UINT uiAction, UINT uiParam, VOID* pvParam, UINT fWinIni); | |
1150 | |
1151 enum { | |
1152 COLOR_SCROLLBAR = 0, | |
1153 COLOR_BACKGROUND = 1, | |
1154 COLOR_ACTIVECAPTION = 2, | |
1155 COLOR_INACTIVECAPTION = 3, | |
1156 COLOR_MENU = 4, | |
1157 COLOR_WINDOW = 5, | |
1158 COLOR_WINDOWFRAME = 6, | |
1159 COLOR_MENUTEXT = 7, | |
1160 COLOR_WINDOWTEXT = 8, | |
1161 COLOR_CAPTIONTEXT = 9, | |
1162 COLOR_ACTIVEBORDER = 10, | |
1163 COLOR_INACTIVEBORDER = 11, | |
1164 COLOR_APPWORKSPACE = 12, | |
1165 COLOR_HIGHLIGHT = 13, | |
1166 COLOR_HIGHLIGHTTEXT = 14, | |
1167 COLOR_BTNFACE = 15, | |
1168 COLOR_BTNSHADOW = 16, | |
1169 COLOR_GRAYTEXT = 17, | |
1170 COLOR_BTNTEXT = 18, | |
1171 COLOR_INACTIVECAPTIONTEXT = 19, | |
1172 COLOR_BTNHIGHLIGHT = 20, | |
1173 | |
1174 COLOR_3DDKSHADOW = 21, | |
1175 COLOR_3DLIGHT = 22, | |
1176 COLOR_INFOTEXT = 23, | |
1177 COLOR_INFOBK = 24, | |
1178 | |
1179 COLOR_HOTLIGHT = 26, | |
1180 COLOR_GRADIENTACTIVECAPTION = 27, | |
1181 COLOR_GRADIENTINACTIVECAPTION = 28, | |
1182 COLOR_MENUHILIGHT = 29, | |
1183 COLOR_MENUBAR = 30, | |
1184 | |
1185 COLOR_DESKTOP = COLOR_BACKGROUND, | |
1186 COLOR_3DFACE = COLOR_BTNFACE, | |
1187 COLOR_3DSHADOW = COLOR_BTNSHADOW, | |
1188 COLOR_3DHIGHLIGHT = COLOR_BTNHIGHLIGHT, | |
1189 COLOR_3DHILIGHT = COLOR_BTNHIGHLIGHT, | |
1190 COLOR_BTNHILIGHT = COLOR_BTNHIGHLIGHT | |
1191 } | |
1192 | |
1193 DWORD GetSysColor(int nIndex); | |
1194 | |
1195 enum { | |
1196 SM_CXSCREEN = 0, | |
1197 SM_CYSCREEN = 1, | |
1198 SM_CXVSCROLL = 2, | |
1199 SM_CYHSCROLL = 3, | |
1200 SM_CYCAPTION = 4, | |
1201 SM_CXBORDER = 5, | |
1202 SM_CYBORDER = 6, | |
1203 SM_CXDLGFRAME = 7, | |
1204 SM_CYDLGFRAME = 8, | |
1205 SM_CYVTHUMB = 9, | |
1206 SM_CXHTHUMB = 10, | |
1207 SM_CXICON = 11, | |
1208 SM_CYICON = 12, | |
1209 SM_CXCURSOR = 13, | |
1210 SM_CYCURSOR = 14, | |
1211 SM_CYMENU = 15, | |
1212 SM_CXFULLSCREEN = 16, | |
1213 SM_CYFULLSCREEN = 17, | |
1214 SM_CYKANJIWINDOW = 18, | |
1215 SM_MOUSEPRESENT = 19, | |
1216 SM_CYVSCROLL = 20, | |
1217 SM_CXHSCROLL = 21, | |
1218 SM_DEBUG = 22, | |
1219 SM_SWAPBUTTON = 23, | |
1220 SM_RESERVED1 = 24, | |
1221 SM_RESERVED2 = 25, | |
1222 SM_RESERVED3 = 26, | |
1223 SM_RESERVED4 = 27, | |
1224 SM_CXMIN = 28, | |
1225 SM_CYMIN = 29, | |
1226 SM_CXSIZE = 30, | |
1227 SM_CYSIZE = 31, | |
1228 SM_CXFRAME = 32, | |
1229 SM_CYFRAME = 33, | |
1230 SM_CXMINTRACK = 34, | |
1231 SM_CYMINTRACK = 35, | |
1232 SM_CXDOUBLECLK = 36, | |
1233 SM_CYDOUBLECLK = 37, | |
1234 SM_CXICONSPACING = 38, | |
1235 SM_CYICONSPACING = 39, | |
1236 SM_MENUDROPALIGNMENT = 40, | |
1237 SM_PENWINDOWS = 41, | |
1238 SM_DBCSENABLED = 42, | |
1239 SM_CMOUSEBUTTONS = 43, | |
1240 SM_CXFIXEDFRAME = SM_CXDLGFRAME, | |
1241 SM_CYFIXEDFRAME = SM_CYDLGFRAME, | |
1242 SM_CXSIZEFRAME = SM_CXFRAME, | |
1243 SM_CYSIZEFRAME = SM_CYFRAME, | |
1244 SM_SECURE = 44, | |
1245 SM_CXEDGE = 45, | |
1246 SM_CYEDGE = 46, | |
1247 SM_CXMINSPACING = 47, | |
1248 SM_CYMINSPACING = 48, | |
1249 SM_CXSMICON = 49, | |
1250 SM_CYSMICON = 50, | |
1251 SM_CYSMCAPTION = 51, | |
1252 SM_CXSMSIZE = 52, | |
1253 SM_CYSMSIZE = 53, | |
1254 SM_CXMENUSIZE = 54, | |
1255 SM_CYMENUSIZE = 55, | |
1256 SM_ARRANGE = 56, | |
1257 SM_CXMINIMIZED = 57, | |
1258 SM_CYMINIMIZED = 58, | |
1259 SM_CXMAXTRACK = 59, | |
1260 SM_CYMAXTRACK = 60, | |
1261 SM_CXMAXIMIZED = 61, | |
1262 SM_CYMAXIMIZED = 62, | |
1263 SM_NETWORK = 63, | |
1264 SM_CLEANBOOT = 67, | |
1265 SM_CXDRAG = 68, | |
1266 SM_CYDRAG = 69, | |
1267 SM_SHOWSOUNDS = 70, | |
1268 SM_CXMENUCHECK = 71, | |
1269 SM_CYMENUCHECK = 72, | |
1270 SM_SLOWMACHINE = 73, | |
1271 SM_MIDEASTENABLED = 74, | |
1272 SM_MOUSEWHEELPRESENT = 75, | |
1273 SM_XVIRTUALSCREEN = 76, | |
1274 SM_YVIRTUALSCREEN = 77, | |
1275 SM_CXVIRTUALSCREEN = 78, | |
1276 SM_CYVIRTUALSCREEN = 79, | |
1277 SM_CMONITORS = 80, | |
1278 SM_SAMEDISPLAYFORMAT = 81, | |
1279 SM_IMMENABLED = 82, | |
1280 SM_CXFOCUSBORDER = 83, | |
1281 SM_CYFOCUSBORDER = 84, | |
1282 SM_TABLETPC = 86, | |
1283 SM_MEDIACENTER = 87, | |
1284 SM_STARTER = 88, | |
1285 SM_SERVERR2 = 89 | |
1286 } | |
1287 | |
1288 int GetSystemMetrics(int nIndex); | |
1289 | |
1290 VOID GetSystemInfo(SYSTEM_INFO* lpSystemInfo); | |
1291 | |
1292 BOOL GetVersionExA(OSVERSIONINFO* lpVersionInformation); | |
1293 BOOL GetVersionExW(OSVERSIONINFO* lpVersionInformation); | |
1294 | |
1295 HMODULE GetModuleHandleA(LPCSTR lpModuleName); | |
1296 HMODULE GetModuleHandleW(LPCWSTR lpModuleName); | |
1297 | |
1298 HMODULE LoadLibraryA(LPCSTR lpLibFileName); | |
1299 HMODULE LoadLibraryW(LPCWSTR lpLibFileName); | |
1300 | |
1301 FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName); | |
1302 | |
1303 //Requires Internet Explorer 4.0 (but will work on Windows 95 with IE 4) | |
1304 BOOL SHGetSpecialFolderPathA(HWND hWndOwner, LPSTR lpszPath, int nFolder, BOOL fCreate); | |
1305 BOOL SHGetSpecialFolderPathW(HWND hWndOwner, LPWSTR lpszPath, int nFolder, BOOL fCreate); | |
1306 | |
1307 BOOL QueryPerformanceFrequency(ulong* lpFrequency); | |
1308 | |
1309 BOOL QueryPerformanceCounter(ulong* lpPerformanceCount); | |
1310 | |
1311 VOID GetSystemTimeAsFileTime(FILETIME* lpSystemTimeAsFileTime); | |
1312 | |
1313 BOOL SystemTimeToFileTime(SYSTEMTIME* lpSystemTime, FILETIME* lpFileTime); | |
1314 | |
1315 HANDLE GetCurrentThread(); | |
1316 | |
1317 VOID Sleep(DWORD dwMilliseconds); | |
1318 | |
1319 BOOL GetProcessAffinityMask( | |
1320 HANDLE hProcess, | |
1321 ULONG_PTR* lpProcessAffinityMask, | |
1322 ULONG_PTR* lpSystemAffinityMask); | |
1323 | |
1324 ULONG_PTR SetThreadAffinityMask(HANDLE hThread, ULONG_PTR dwThreadAffinityMask); | |
1325 //}}} | |
1326 | |
1327 //{{{ file functions | |
1328 | |
1329 BOOL GetFileSizeEx(HANDLE hFile, long* lpFileSize); | |
1330 | |
1331 BOOL ReadFile( | |
1332 HANDLE hFile, | |
1333 VOID* lpBuffer, | |
1334 DWORD nNumberOfBytesToRead, | |
1335 DWORD* lpNumberOfBytesRead, | |
1336 OVERLAPPED* lpOverlapped); | |
1337 | |
1338 BOOL WriteFile( | |
1339 HANDLE hFile, | |
1340 VOID* lpBuffer, | |
1341 DWORD nNumberOfBytesToWrite, | |
1342 DWORD* lpNumberOfBytesWritten, | |
1343 OVERLAPPED* lpOverlapped); | |
1344 //}}} | |
1345 | |
1346 //{{{ console functions | |
1347 BOOL AllocConsole(); | |
1348 | |
1349 BOOL FreeConsole(); | |
1350 | |
1351 BOOL GetConsoleMode(HANDLE hConsoleHandle, DWORD* lpMode); | |
1352 | |
1353 BOOL SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode); | |
1354 | |
1355 DWORD GetConsoleTitleA(LPSTR lpConsoleTitle, DWORD nSize); | |
1356 DWORD GetConsoleTitleW(LPWSTR lpConsoleTitle, DWORD nSize); | |
1357 | |
1358 BOOL SetConsoleTitleA(LPCSTR lpConsoleTitle); | |
1359 BOOL SetConsoleTitleW(LPCWSTR lpConsoleTitle); | |
1360 | |
1361 BOOL ReadConsoleA( | |
1362 HANDLE hConsoleInput, | |
1363 LPSTR lpBuffer, | |
1364 DWORD nNumberOfCharsToRead, | |
1365 DWORD* lpNumberOfCharsRead, | |
1366 VOID* lpReserved); | |
1367 BOOL ReadConsoleW( | |
1368 HANDLE hConsoleInput, | |
1369 LPWSTR lpBuffer, | |
1370 DWORD nNumberOfCharsToRead, | |
1371 DWORD* lpNumberOfCharsRead, | |
1372 VOID* lpReserved); | |
1373 | |
1374 BOOL WriteConsoleA( | |
1375 HANDLE hConsoleOutput, | |
1376 LPCSTR lpBuffer, | |
1377 DWORD nNumberOfCharsToWrite, | |
1378 DWORD* lpNumberOfCharsWritten, | |
1379 VOID* lpReserved); | |
1380 BOOL WriteConsoleW( | |
1381 HANDLE hConsoleOutput, | |
1382 LPCWSTR lpBuffer, | |
1383 DWORD nNumberOfCharsToWrite, | |
1384 DWORD* lpNumberOfCharsWritten, | |
1385 VOID* lpReserved); | |
1386 | |
1387 enum { | |
1388 FOREGROUND_BLUE = 0x0001, | |
1389 FOREGROUND_GREEN = 0x0002, | |
1390 FOREGROUND_RED = 0x0004, | |
1391 FOREGROUND_INTENSITY = 0x0008, | |
1392 BACKGROUND_BLUE = 0x0010, | |
1393 BACKGROUND_GREEN = 0x0020, | |
1394 BACKGROUND_RED = 0x0040, | |
1395 BACKGROUND_INTENSITY = 0x0080 | |
1396 } | |
1397 | |
1398 BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes); | |
1399 | |
1400 BOOL GetConsoleScreenBufferInfo( | |
1401 HANDLE hConsoleOutput, | |
1402 CONSOLE_SCREEN_BUFFER_INFO* lpConsoleScreenBufferInfo); | |
1403 | |
1404 BOOL SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput); | |
1405 | |
1406 enum { | |
1407 STD_INPUT_HANDLE = -10, | |
1408 STD_OUTPUT_HANDLE = -11, | |
1409 STD_ERROR_HANDLE = -12 | |
1410 } | |
1411 | |
1412 HANDLE GetStdHandle(DWORD nStdHandle); | |
1413 | |
1414 UINT GetConsoleCP(); | |
1415 | |
1416 UINT GetConsoleOutputCP(); | |
1417 | |
1418 //}}} | |
1419 | |
1420 //{{{ COM functions | |
1421 enum { | |
1422 COINIT_APARTMENTTHREADED = 0x2, | |
1423 } | |
1424 | |
1425 HRESULT CoInitializeEx(VOID* pvReserved, DWORD dwCoInit); | |
1426 void CoUninitialize(); | |
1427 | |
1428 VOID* CoTaskMemAlloc(SIZE_T cb); | |
1429 VOID* CoTaskMemRealloc(VOID* pv, SIZE_T cb); | |
1430 void CoTaskMemFree(VOID* pv); | |
1431 | |
1432 enum { | |
1433 BIF_RETURNONLYFSDIRS = 0x0001, | |
1434 BIF_EDITBOX = 0x0010, | |
1435 BIF_NEWDIALOGSTYLE = 0x0040, | |
1436 BIF_USENEWUI = (BIF_NEWDIALOGSTYLE | BIF_EDITBOX) | |
1437 } | |
1438 | |
1439 ITEMIDLIST* SHBrowseForFolderA(BROWSEINFO* lpbi); | |
1440 ITEMIDLIST* SHBrowseForFolderW(BROWSEINFO* lpbi); | |
1441 | |
1442 BOOL SHGetPathFromIDListA(ITEMIDLIST* pidl, LPSTR pszPath); | |
1443 BOOL SHGetPathFromIDListW(ITEMIDLIST* pidl, LPWSTR pszPath); | |
1444 | |
1445 HRESULT SHGetFolderPathA(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPSTR pszPath); | |
1446 HRESULT SHGetFolderPathW(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath); | |
1447 | |
1448 HRESULT SHGetDesktopFolder(IShellFolder** ppshf); | |
1449 | |
1450 struct GUID { | |
1451 align(1): | |
1452 uint Data1; | |
1453 ushort Data2; | |
1454 ushort Data3; | |
1455 ubyte[8] Data4; | |
1456 } | |
1457 alias GUID IID; | |
1458 alias GUID CLSID; | |
1459 | |
1460 // I can't get this #!@#! COM stuff working... | |
1461 interface IUnknown { | |
1462 extern(Windows): | |
1463 HRESULT QueryInterface(IID* riid, void** ppvObject); | |
1464 ULONG AddRef(); | |
1465 ULONG Release(); | |
1466 } | |
1467 alias void* LPBC; | |
1468 interface IShellFolder : IUnknown { | |
1469 extern(Windows): | |
1470 HRESULT ParseDisplayName( | |
1471 HWND hwnd, | |
1472 LPBC pbc, | |
1473 wchar* pszDisplayName, | |
1474 ULONG* pchEaten, | |
1475 ITEMIDLIST** ppidl, | |
1476 ULONG* pdwAttributes); | |
1477 | |
1478 //other methods omitted | |
1479 } | |
1480 //}}} | |
1481 | |
1482 //{{{ Multimedia functions | |
1483 alias uint MMRESULT; | |
1484 alias HANDLE HWAVEOUT; | |
1485 struct TIMECAPS { | |
1486 UINT wPeriodMin; | |
1487 UINT wPeriodMax; | |
1488 } | |
1489 DWORD timeGetTime(); | |
1490 MMRESULT timeGetDevCaps(TIMECAPS* ptc, UINT cbtc); | |
1491 MMRESULT timeBeginPeriod(UINT uPeriod); | |
1492 MMRESULT timeEndPeriod(UINT uPeriod); | |
1493 | |
1494 struct WAVEHDR { | |
1495 LPSTR lpData; | |
1496 DWORD dwBufferLength; | |
1497 DWORD dwBytesRecorded; | |
1498 ULONG_PTR dwUser; | |
1499 DWORD dwFlags; | |
1500 DWORD dwLoops; | |
1501 WAVEHDR* lpNext; | |
1502 ULONG_PTR reserved; | |
1503 } | |
1504 enum { | |
1505 WHDR_DONE = 0x00000001, | |
1506 WHDR_PREPARED = 0x00000002, | |
1507 WHDR_BEGINLOOP = 0x00000004, | |
1508 WHDR_ENDLOOP = 0x00000008, | |
1509 WHDR_INQUEUE = 0x00000010 | |
1510 } | |
1511 alias uint MMVERSION; | |
1512 struct WAVEOUTCAPSW { | |
1513 WORD wMid; | |
1514 WORD wPid; | |
1515 MMVERSION vDriverVersion; | |
1516 WCHAR[32] szPname; | |
1517 DWORD dwFormats; | |
1518 WORD wChannels; | |
1519 WORD wReserved1; | |
1520 DWORD dwSupport; | |
1521 } | |
1522 struct MMTIME { | |
1523 UINT wType; | |
1524 union _u { | |
1525 DWORD ms; | |
1526 DWORD sample; | |
1527 DWORD cb; | |
1528 DWORD ticks; | |
1529 | |
1530 struct _smpte { | |
1531 BYTE hour; | |
1532 BYTE min; | |
1533 BYTE sec; | |
1534 BYTE frame; | |
1535 BYTE fps; | |
1536 BYTE dummy; | |
1537 BYTE pad[2]; | |
1538 } | |
1539 _smpte smpte; | |
1540 | |
1541 struct _midi { | |
1542 DWORD songptrpos; | |
1543 } | |
1544 _midi midi; | |
1545 } | |
1546 _u u; | |
1547 } | |
1548 enum { | |
1549 TIME_MS = 0x0001, | |
1550 TIME_SAMPLES = 0x0002, | |
1551 TIME_BYTES = 0x0004, | |
1552 TIME_SMPTE = 0x0008, | |
1553 TIME_MIDI = 0x0010, | |
1554 TIME_TICKS = 0x0020 | |
1555 } | |
1556 struct WAVEFORMATEX { | |
1557 WORD wFormatTag; | |
1558 WORD nChannels; | |
1559 DWORD nSamplesPerSec; | |
1560 DWORD nAvgBytesPerSec; | |
1561 WORD nBlockAlign; | |
1562 WORD wBitsPerSample; | |
1563 WORD cbSize; | |
1564 | |
1565 } | |
1566 | |
1567 MMRESULT waveOutGetVolume(HWAVEOUT hwo, DWORD* pdwVolume); | |
1568 MMRESULT waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume); | |
1569 MMRESULT waveOutOpen( | |
1570 HWAVEOUT* phwo, | |
1571 UINT uDeviceID, | |
1572 WAVEFORMATEX* pwfx, | |
1573 ULONG_PTR dwCallback, | |
1574 ULONG_PTR dwInstance, | |
1575 DWORD fdwOpen); | |
1576 MMRESULT waveOutClose(HWAVEOUT hwo); | |
1577 MMRESULT waveOutPrepareHeader(HWAVEOUT hwo, WAVEHDR* pwh, UINT cbwh); | |
1578 MMRESULT waveOutUnprepareHeader(HWAVEOUT hwo, WAVEHDR* pwh, UINT cbwh); | |
1579 MMRESULT waveOutWrite(HWAVEOUT hwo, WAVEHDR* pwh, UINT cbwh); | |
1580 MMRESULT waveOutPause(HWAVEOUT hwo); | |
1581 MMRESULT waveOutRestart(HWAVEOUT hwo); | |
1582 MMRESULT waveOutReset(HWAVEOUT hwo); | |
1583 MMRESULT waveOutBreakLoop(HWAVEOUT hwo); | |
1584 MMRESULT waveOutGetPosition(HWAVEOUT hwo, MMTIME* pmmt, UINT cbmmt); | |
1585 MMRESULT waveOutGetPitch(HWAVEOUT hwo, DWORD* pdwPitch); | |
1586 MMRESULT waveOutSetPitch(HWAVEOUT hwo, DWORD dwPitch); | |
1587 MMRESULT waveOutGetPlaybackRate(HWAVEOUT hwo, DWORD* pdwRate); | |
1588 MMRESULT waveOutSetPlaybackRate(HWAVEOUT hwo, DWORD dwRate); | |
1589 | |
1590 //}}} | |
1591 | |
1592 version(UNICODE) { | |
1593 alias RegisterClassExW RegisterClassEx; | |
1594 alias CreateWindowExW CreateWindowEx; | |
1595 alias DefWindowProcW DefWindowProc; | |
1596 alias GetWindowLongW GetWindowLong; | |
1597 alias SetWindowLongW SetWindowLong; | |
1598 alias GetWindowLongPtrW GetWindowLongPtr; | |
1599 alias SetWindowLongPtrW SetWindowLongPtr; | |
1600 alias GetWindowTextW GetWindowText; | |
1601 alias SetWindowTextW SetWindowText; | |
1602 alias GetWindowModuleFileNameW GetWindowModuleFileName; | |
1603 alias SetPropW SetProp; | |
1604 alias GetPropW GetProp; | |
1605 alias RemovePropW RemoveProp; | |
1606 alias GetOpenFileNameW GetOpenFileName; | |
1607 alias GetSaveFileNameW GetSaveFileName; | |
1608 alias GetMessageW GetMessage; | |
1609 alias DispatchMessageW DispatchMessage; | |
1610 alias LoadImageW LoadImage; | |
1611 alias GetObjectW GetObject; | |
1612 alias EnumFontFamiliesExW EnumFontFamiliesEx; | |
1613 alias SystemParametersInfoW SystemParametersInfo; | |
1614 alias GetVersionExW GetVersionEx; | |
1615 alias GetModuleHandleW GetModuleHandle; | |
1616 alias LoadLibraryW LoadLibrary; | |
1617 alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; | |
1618 alias GetConsoleTitleW GetConsoleTitle; | |
1619 alias SetConsoleTitleW SetConsoleTitle; | |
1620 alias ReadConsoleW ReadConsole; | |
1621 alias WriteConsoleW WriteConsole; | |
1622 alias SHBrowseForFolderW SHBrowseForFolder; | |
1623 alias SHGetPathFromIDListW SHGetPathFromIDList; | |
1624 alias SHGetFolderPathW SHGetFolderPath; | |
1625 | |
1626 alias LOGFONTW LOGFONT; | |
1627 alias NONCLIENTMETRICSW NONCLIENTMETRICS; | |
1628 alias ENUMLOGFONTEXW ENUMLOGFONTEX; | |
1629 alias TEXTMETRICW TEXTMETRIC; | |
1630 alias OSVERSIONINFOW OSVERSIONINFO; | |
1631 } else { | |
1632 alias RegisterClassExA RegisterClassEx; | |
1633 alias CreateWindowExA CreateWindowEx; | |
1634 alias DefWindowProcA DefWindowProc; | |
1635 alias GetWindowLongA GetWindowLong; | |
1636 alias SetWindowLongA SetWindowLong; | |
1637 alias GetWindowLongPtrA GetWindowLongPtr; | |
1638 alias SetWindowLongPtrA SetWindowLongPtr; | |
1639 alias GetWindowTextA GetWindowText; | |
1640 alias SetWindowTextA SetWindowText; | |
1641 alias GetWindowModuleFileNameA GetWindowModuleFileName; | |
1642 alias SetPropA SetProp; | |
1643 alias GetPropA GetProp; | |
1644 alias RemovePropA RemoveProp; | |
1645 alias GetOpenFileNameA GetOpenFileName; | |
1646 alias GetSaveFileNameA GetSaveFileName; | |
1647 alias GetMessageA GetMessage; | |
1648 alias DispatchMessageA DispatchMessage; | |
1649 alias LoadImageA LoadImage; | |
1650 alias EnumFontFamiliesExA EnumFontFamiliesEx; | |
1651 alias SystemParametersInfoA SystemParametersInfo; | |
1652 alias GetVersionExA GetVersionEx; | |
1653 alias GetModuleHandleA GetModuleHandle; | |
1654 alias LoadLibraryA LoadLibrary; | |
1655 alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; | |
1656 alias GetConsoleTitleA GetConsoleTitle; | |
1657 alias SetConsoleTitleA SetConsoleTitle; | |
1658 alias ReadConsoleA ReadConsole; | |
1659 alias WriteConsoleA WriteConsole; | |
1660 alias SHBrowseForFolderA SHBrowseForFolder; | |
1661 alias SHGetPathFromIDListA SHGetPathFromIDList; | |
1662 alias SHGetFolderPathA SHGetFolderPath; | |
1663 } | |
1664 | |
1665 struct POINT { | |
1666 LONG x; | |
1667 LONG y; | |
1668 } | |
1669 struct SIZE { | |
1670 LONG cx; | |
1671 LONG cy; | |
1672 } | |
1673 struct RECT { | |
1674 LONG left; | |
1675 LONG top; | |
1676 LONG right; | |
1677 LONG bottom; | |
1678 } | |
1679 struct BLENDFUNCTION { | |
1680 BYTE BlendOp; | |
1681 BYTE BlendFlags; | |
1682 BYTE SourceConstantAlpha; | |
1683 BYTE AlphaFormat; | |
1684 } | |
1685 const int LF_FACESIZE = 32; | |
1686 struct LOGFONTW { | |
1687 LONG lfHeight; | |
1688 LONG lfWidth; | |
1689 LONG lfEscapement; | |
1690 LONG lfOrientation; | |
1691 LONG lfWeight; | |
1692 BYTE lfItalic; | |
1693 BYTE lfUnderline; | |
1694 BYTE lfStrikeOut; | |
1695 BYTE lfCharSet; | |
1696 BYTE lfOutPrecision; | |
1697 BYTE lfClipPrecision; | |
1698 BYTE lfQuality; | |
1699 BYTE lfPitchAndFamily; | |
1700 WCHAR[LF_FACESIZE] lfFaceName; | |
1701 } | |
1702 struct NONCLIENTMETRICSW { | |
1703 UINT cbSize; | |
1704 int iBorderWidth; | |
1705 int iScrollWidth; | |
1706 int iScrollHeight; | |
1707 int iCaptionWidth; | |
1708 int iCaptionHeight; | |
1709 LOGFONTW lfCaptionFont; | |
1710 int iSmCaptionWidth; | |
1711 int iSmCaptionHeight; | |
1712 LOGFONTW lfSmCaptionFont; | |
1713 int iMenuWidth; | |
1714 int iMenuHeight; | |
1715 LOGFONTW lfMenuFont; | |
1716 LOGFONTW lfStatusFont; | |
1717 LOGFONTW lfMessageFont; | |
1718 } | |
1719 const int LF_FULLFACESIZE = 64; | |
1720 struct ENUMLOGFONTEXW { | |
1721 LOGFONT elfLogFont; | |
1722 WCHAR[LF_FULLFACESIZE] elfFullName; | |
1723 WCHAR[LF_FACESIZE] elfStyle; | |
1724 WCHAR[LF_FACESIZE] elfScript; | |
1725 } | |
1726 struct TEXTMETRICW { | |
1727 LONG tmHeight; | |
1728 LONG tmAscent; | |
1729 LONG tmDescent; | |
1730 LONG tmInternalLeading; | |
1731 LONG tmExternalLeading; | |
1732 LONG tmAveCharWidth; | |
1733 LONG tmMaxCharWidth; | |
1734 LONG tmWeight; | |
1735 LONG tmOverhang; | |
1736 LONG tmDigitizedAspectX; | |
1737 LONG tmDigitizedAspectY; | |
1738 WCHAR tmFirstChar; | |
1739 WCHAR tmLastChar; | |
1740 WCHAR tmDefaultChar; | |
1741 WCHAR tmBreakChar; | |
1742 BYTE tmItalic; | |
1743 BYTE tmUnderlined; | |
1744 BYTE tmStruckOut; | |
1745 BYTE tmPitchAndFamily; | |
1746 BYTE tmCharSet; | |
1747 } | |
1748 struct RGBQUAD { | |
1749 BYTE rgbBlue; | |
1750 BYTE rgbGreen; | |
1751 BYTE rgbRed; | |
1752 BYTE rgbReserved; | |
1753 } | |
1754 struct BITMAPINFO { | |
1755 BITMAPINFOHEADER bmiHeader; | |
1756 RGBQUAD[1] bmiColors; | |
1757 } | |
1758 struct BITMAPINFOHEADER { | |
1759 DWORD biSize; | |
1760 LONG biWidth; | |
1761 LONG biHeight; | |
1762 WORD biPlanes; | |
1763 WORD biBitCount; | |
1764 DWORD biCompression; | |
1765 DWORD biSizeImage; | |
1766 LONG biXPelsPerMeter; | |
1767 LONG biYPelsPerMeter; | |
1768 DWORD biClrUsed; | |
1769 DWORD biClrImportant; | |
1770 } | |
1771 struct DIBSECTION { | |
1772 BITMAP dsBm; | |
1773 BITMAPINFOHEADER dsBmih; | |
1774 DWORD[3] dsBitfields; | |
1775 HANDLE dshSection; | |
1776 DWORD dsOffset; | |
1777 } | |
1778 struct BITMAP { | |
1779 LONG bmType; | |
1780 LONG bmWidth; | |
1781 LONG bmHeight; | |
1782 LONG bmWidthBytes; | |
1783 WORD bmPlanes; | |
1784 WORD bmBitsPixel; | |
1785 VOID* bmBits; | |
1786 } | |
1787 struct MSG { | |
1788 HWND hWnd; | |
1789 UINT message; | |
1790 WPARAM wParam; | |
1791 LPARAM lParam; | |
1792 DWORD time; | |
1793 POINT pt; | |
1794 } | |
1795 struct WNDCLASSEX { | |
1796 UINT cbSize; | |
1797 UINT style; | |
1798 WNDPROC lpfnWndProc; | |
1799 int cbClsExtra; | |
1800 int cbWndExtra; | |
1801 HINSTANCE hInstance; | |
1802 HICON hIcon; | |
1803 HCURSOR hCursor; | |
1804 HBRUSH hbrBackground; | |
1805 LPCTSTR lpszMenuName; | |
1806 LPCTSTR lpszClassName; | |
1807 HICON hIconSm; | |
1808 } | |
1809 struct WINDOWINFO { | |
1810 DWORD cbSize; | |
1811 RECT rcWindow; | |
1812 RECT rcClient; | |
1813 DWORD dwStyle; | |
1814 DWORD dwExStyle; | |
1815 DWORD dwWindowStatus; | |
1816 UINT cxWindowBorders; | |
1817 UINT cyWindowBorders; | |
1818 ATOM atomWindowType; | |
1819 WORD wCreatorVersion; | |
1820 } | |
1821 struct PAINTSTRUCT { | |
1822 HDC hdc; | |
1823 BOOL fErase; | |
1824 RECT rcPaint; | |
1825 BOOL fRestore; | |
1826 BOOL fIncUpdate; | |
1827 BYTE[32] rgbReserved; | |
1828 } | |
1829 struct TRACKMOUSEEVENT { | |
1830 DWORD cbSize; | |
1831 DWORD dwFlags; | |
1832 HWND hWndTrack; | |
1833 DWORD dwHoverTime; | |
1834 } | |
1835 struct OPENFILENAME { | |
1836 DWORD lStructSize; | |
1837 HWND hWndOwner; | |
1838 HINSTANCE hInstance; | |
1839 LPCTSTR lpstrFilter; | |
1840 LPTSTR lpstrCustomFilter; | |
1841 DWORD nMaxCustFilter; | |
1842 DWORD nFilterIndex; | |
1843 LPTSTR lpstrFile; | |
1844 DWORD nMaxFile; | |
1845 LPTSTR lpstrFileTitle; | |
1846 DWORD nMaxFileTitle; | |
1847 LPCTSTR lpstrInitialDir; | |
1848 LPCTSTR lpstrTitle; | |
1849 DWORD Flags; | |
1850 WORD nFileOffset; | |
1851 WORD nFileExtension; | |
1852 LPCTSTR lpstrDefExt; | |
1853 LPARAM lCustData; | |
1854 LPOFNHOOKPROC lpfnHook; | |
1855 LPCTSTR lpTemplateName; | |
1856 // if(_WIN32_WINNT >= 0x0500) | |
1857 //void* pvReserved; | |
1858 //DWORD dwReserved; | |
1859 //DWORD FlagsEx; | |
1860 } | |
1861 struct SHITEMID { | |
1862 USHORT cb; | |
1863 BYTE[1] abID; | |
1864 } | |
1865 struct ITEMIDLIST { | |
1866 SHITEMID mkid; | |
1867 } | |
1868 struct BROWSEINFO { | |
1869 HWND hwndOwner; | |
1870 ITEMIDLIST* pidlRoot; | |
1871 LPTSTR pszDisplayName; | |
1872 LPCTSTR lpszTitle; | |
1873 UINT ulFlags; | |
1874 BFFCALLBACK lpfn; | |
1875 LPARAM lParam; | |
1876 int iImage; | |
1877 } | |
1878 struct OVERLAPPED { | |
1879 ULONG_PTR Internal; | |
1880 ULONG_PTR InternalHigh; | |
1881 union { | |
1882 struct { | |
1883 DWORD Offset; | |
1884 DWORD OffsetHigh; | |
1885 } | |
1886 | |
1887 VOID* Pointer; | |
1888 } | |
1889 | |
1890 HANDLE hEvent; | |
1891 } | |
1892 struct OSVERSIONINFOW { | |
1893 DWORD dwOSVersionInfoSize; | |
1894 DWORD dwMajorVersion; | |
1895 DWORD dwMinorVersion; | |
1896 DWORD dwBuildNumber; | |
1897 DWORD dwPlatformId; | |
1898 WCHAR[128] szCSDVersion; | |
1899 } | |
1900 struct SYSTEM_INFO { | |
1901 WORD wProcessorArchitecture; | |
1902 WORD wReserved; | |
1903 DWORD dwPageSize; | |
1904 VOID* lpMinimumApplicationAddress; | |
1905 VOID* lpMaximumApplicationAddress; | |
1906 ULONG_PTR dwActiveProcessorMask; | |
1907 DWORD dwNumberOfProcessors; | |
1908 DWORD dwProcessorType; | |
1909 DWORD dwAllocationGranularity; | |
1910 WORD wProcessorLevel; | |
1911 WORD wProcessorRevision; | |
1912 } | |
1913 struct CONSOLE_SCREEN_BUFFER_INFO { | |
1914 COORD dwSize; | |
1915 COORD dwCursorPosition; | |
1916 WORD wAttributes; | |
1917 SMALL_RECT srWindow; | |
1918 COORD dwMaximumWindowSize; | |
1919 } | |
1920 struct FILETIME { | |
1921 DWORD dwLowDateTime; | |
1922 DWORD dwHighDateTime; | |
1923 } | |
1924 struct SYSTEMTIME { | |
1925 WORD wYear; | |
1926 WORD wMonth; | |
1927 WORD wDayOfWeek; | |
1928 WORD wDay; | |
1929 WORD wHour; | |
1930 WORD wMinute; | |
1931 WORD wSecond; | |
1932 WORD wMilliseconds; | |
1933 } | |
1934 struct COORD { | |
1935 SHORT X; | |
1936 SHORT Y; | |
1937 } | |
1938 struct SMALL_RECT { | |
1939 SHORT Left; | |
1940 SHORT Top; | |
1941 SHORT Right; | |
1942 SHORT Bottom; | |
1943 } | |
1944 |