1 module tango.sys.win32.Macros; 2 3 /* 4 Module: Windows Utilities 5 Author: Trevor Parscal 6 */ 7 8 /+ Imports +/ 9 public 10 { 11 import tango.sys.win32.Types; 12 } 13 private 14 { 15 import tango.stdc.string; 16 import tango.sys.win32.UserGdi; 17 } 18 19 20 /+ Functions +/ 21 ushort MAKEWORD(ubyte A, ubyte B) 22 { 23 return cast(ushort)(A | (B << 8)); 24 } 25 uint MAKELONG(ushort A, ushort B) 26 { 27 return cast(uint)(A | (B << 16)); 28 } 29 ushort HIWORD(uint L) 30 { 31 return cast(ushort)(L >> 16); 32 } 33 ushort LOWORD(uint L) 34 { 35 return cast(ushort)(L & 0xFFFF); 36 } 37 ubyte HIBYTE(ushort W) 38 { 39 return cast(ubyte)(W >> 8); 40 } 41 ubyte LOBYTE(ushort W) 42 { 43 return cast(ubyte)(W & 0xFF); 44 } 45 HANDLE GlobalDiscard(HANDLE h) 46 { 47 return GlobalReAlloc(h, 0, GMEM_MOVEABLE); 48 } 49 HANDLE LocalDiscard(HANDLE h) 50 { 51 return LocalReAlloc(h, 0, LMEM_MOVEABLE); 52 } 53 BOOL SUCCEEDED(HRESULT Status) 54 { 55 return (cast(int)Status & 0x80000000) == 0; 56 } 57 BOOL FAILED(HRESULT Status) 58 { 59 return (cast(int)Status & 0x80000000) != 0; 60 } 61 BOOL IS_ERROR(HRESULT Status) 62 { 63 return (cast(int)Status >> 31) == SEVERITY_ERROR; 64 } 65 int HRESULT_CODE(HRESULT hr) 66 { 67 return cast(int)hr & 0xFFFF; 68 } 69 int HRESULT_FACILITY(HRESULT hr) 70 { 71 return (cast(int)hr >> 16) & 0x1FFF; 72 } 73 int HRESULT_SEVERITY(HRESULT hr) 74 { 75 return (cast(int)hr >> 31) & 0x1; 76 } 77 HRESULT MAKE_HRESULT(int sev, int fac, int code) 78 { 79 return cast(HRESULT)((sev << 31) | (fac << 16) | code); 80 } 81 HRESULT HRESULT_FROM_WIN32(int x) 82 { 83 return cast(HRESULT) (x ? (x & 0xFFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0); 84 } 85 //HRESULT HRESULT_FROM_NT(int x) 86 //{ 87 // return x | FACILITY_NT_BIT; 88 //} 89 DWORD MAKEROP4(DWORD fore, DWORD back) 90 { 91 return ((back << 8) & 0xFF000000) | fore; 92 } 93 ubyte GetKValue(COLORREF cmyk) 94 { 95 return cast(ubyte)(cmyk & 0xFF); 96 } 97 ubyte GetYValue(COLORREF cmyk) 98 { 99 return cast(ubyte)((cmyk >> 8) & 0xFF); 100 } 101 ubyte GetMValue(COLORREF cmyk) 102 { 103 return cast(ubyte)((cmyk >> 16) & 0xFF); 104 } 105 ubyte GetCValue(COLORREF cmyk) 106 { 107 return cast(ubyte)((cmyk >> 24) & 0xFF); 108 } 109 COLORREF CMYK(ubyte c, ubyte m, ubyte y, ubyte k) 110 { 111 return k | (y << 8) | (m << 16) | (c << 24); 112 } 113 COLORREF RGB(ubyte r, ubyte g, ubyte b) 114 { 115 return r | (g << 8) | (b << 16); 116 } 117 COLORREF PALETTERGB(ubyte r, ubyte g, ubyte b) 118 { 119 return 0x02000000 | RGB(r, g, b); 120 } 121 COLORREF PALETTEINDEX(ushort i) 122 { 123 return 0x01000000 | i; 124 } 125 ubyte GetRValue(COLORREF rgb) 126 { 127 return cast(ubyte)(rgb & 0xFF); 128 } 129 ubyte GetGValue(COLORREF rgb) 130 { 131 return cast(ubyte)((rgb >> 8) & 0xFF); 132 } 133 ubyte GetBValue(COLORREF rgb) 134 { 135 return cast(ubyte)((rgb >> 16) & 0xFF); 136 } 137 WPARAM MAKEWPARAM(ushort l, ushort h) 138 { 139 return MAKELONG(l, h); 140 } 141 LPARAM MAKELPARAM(ushort l, ushort h) 142 { 143 return MAKELONG(l, h); 144 } 145 LRESULT MAKELRESULT(ushort l, ushort h) 146 { 147 return MAKELONG(l, h); 148 } 149 BOOL ExitWindows(DWORD dwReserved, UINT uReserved) 150 { 151 return ExitWindowsEx(EWX_LOGOFF, 0); 152 } 153 HWND CreateWindowA(LPCSTR b, LPCSTR c, DWORD d, int e, 154 int f, int g, int h, HWND i, HMENU j, HINST k, POINTER l) 155 { 156 return CreateWindowExA(0, b, c, d, e, f, g, h, i, j, k, l); 157 } 158 HWND CreateWindowW(LPCWSTR b, LPCWSTR c, DWORD d, int e, 159 int f, int g, int h, HWND i, HMENU j, HINST k, POINTER l) 160 { 161 return CreateWindowExW(0, b, c, d, e, f, g, h, i, j, k, l); 162 } 163 HWND CreateDialogA(HINST a, LPCSTR b, HWND c, DLGPROC d) 164 { 165 return CreateDialogParamA(a, b, c, d, 0); 166 } 167 HWND CreateDialogW(HINST a, LPCWSTR b, HWND c, DLGPROC d) 168 { 169 return CreateDialogParamW(a, b, c, d, 0); 170 } 171 HWND CreateDialogIndirectA(HINST a, LPCDLGTEMPLATE b, HWND c, DLGPROC d) 172 { 173 return CreateDialogIndirectParamA(a, b, c, d, 0); 174 } 175 HWND CreateDialogIndirectW(HINST a, LPCDLGTEMPLATE b, HWND c, DLGPROC d) 176 { 177 return CreateDialogIndirectParamW(a, b, c, d, 0); 178 } 179 int DialogBoxA(HINST a, LPCSTR b, HWND c, DLGPROC d) 180 { 181 return DialogBoxParamA(a, b, c, d, 0); 182 } 183 int DialogBoxW(HINST a, LPCWSTR b, HWND c, DLGPROC d) 184 { 185 return DialogBoxParamW(a, b, c, d, 0); 186 } 187 int DialogBoxIndirectA(HINST a, LPCDLGTEMPLATE b, HWND c, DLGPROC d) 188 { 189 return DialogBoxIndirectParamA(a, b, c, d, 0); 190 } 191 int DialogBoxIndirectW(HINST a, LPCDLGTEMPLATE b, HWND c, DLGPROC d) 192 { 193 return DialogBoxIndirectParamW(a, b, c, d, 0); 194 } 195 void ZeroMemory(void* dest, uint len) 196 { 197 memset(dest, 0, len); 198 } 199 void FillMemory(void* dest, uint len, ubyte c) 200 { 201 memset(dest, c, len); 202 } 203 void MoveMemory(void* dest, const(void)* src, uint len) 204 { 205 memmove(dest, src, len); 206 } 207 void CopyMemory(void* dest, const(void)* src, uint len) 208 { 209 memcpy(dest, src, len); 210 }