15 typedef unsigned char BYTE;
16 typedef unsigned short WORD;
17 typedef unsigned long DWORD;
18 typedef unsigned int UINT;
19 typedef signed char INT8, * PINT8;
20 typedef signed short INT16, * PINT16;
21 typedef signed int INT32, * PINT32;
22 typedef signed __int64 INT64, * PINT64;
23 typedef unsigned char UINT8, * PUINT8;
24 typedef unsigned short UINT16, * PUINT16;
25 typedef unsigned int UINT32, * PUINT32;
26 typedef unsigned __int64 UINT64, * PUINT64;
27 typedef signed int LONG32, * PLONG32;
28 typedef unsigned int ULONG32, * PULONG32;
29 typedef unsigned int DWORD32, * PDWORD32;
35 typedef unsigned long ULONG;
36 typedef const wchar_t* PCWSTR, * LPCWSTR;
37 typedef const char* PCCH, * LPCCH;
38 typedef const char* LPCSTR;
43 typedef wchar_t* LPWSTR;
50 typedef ULONG_PTR SIZE_T, *PSIZE_T;
51 typedef LONG_PTR SSIZE_T, *PSSIZE_T;
52 typedef ULONG_PTR DWORD_PTR, * PDWORD_PTR;
53 typedef __int64 LONG64, * PLONG64;
54 typedef unsigned __int64 ULONG64, * PULONG64;
55 typedef unsigned __int64 DWORD64, * PDWORD64;
57 typedef LONG_PTR LPARAM;
58 typedef UINT_PTR WPARAM;
63 #define GHPL_WIN_DECLARE_HANDLE(name) typedef struct name##_gh* name
64 GHPL_WIN_DECLARE_HANDLE(
HWND);
66 GHPL_WIN_DECLARE_HANDLE(
HICON);
70 typedef struct _COORD {
74 typedef struct _SMALL_RECT {
80 typedef struct _POINTFLOAT {
83 } POINTFLOAT, * LPPOINTFLOAT;
84 typedef struct _RECT {
90 typedef struct tagPOINT {
95 typedef DWORD COLORREF;
96 typedef DWORD* LPCOLORREF;
105 using DWORD = ::DWORD;
107 using FLOAT = ::FLOAT;
109 using BOOLEAN = ::BOOLEAN;
113 using HMODULE = ::HMODULE;
115 using LPCWSTR = ::LPCWSTR;
116 using LPCSTR = ::LPCSTR;
117 using LPCCH = ::LPCCH;
118 using LPWSTR = ::LPWSTR;
119 using LONG_PTR = ::LONG_PTR;
120 using ULONG_PTR = ::ULONG_PTR;
121 using UINT_PTR = ::UINT_PTR;
122 using HRESULT = ::HRESULT;
123 using LPARAM = ::LPARAM;
124 using WPARAM = ::WPARAM;
126 using HANDLE = ::HANDLE;
130 #define GHPL_WINAPI __declspec(dllimport)
131 #define GHPL_WINGDIAPI __declspec(dllimport)
132 #define GHPL_APIENTRY __stdcall
133 #define GHPL_CALLBACK __stdcall
137 MEM_COMMIT_ = 0x1000,
138 MEM_RESERVE_ = 0x2000,
139 MEM_RESET_ = 0x80000,
140 MEM_RESET_UNDO_ = 0x100000,
141 MEM_TOP_DOWN_ = 0x100000,
142 MEM_WRITE_WATCH_ = 0x200000,
143 MEM_PHYSICAL_ = 0x400000,
144 MEM_LARGE_PAGES_ = 0x20000000,
146 PAGE_NOACCESS_ = 0x1,
147 PAGE_READONLY_ = 0x2,
148 PAGE_READWRITE_ = 0x4,
149 PAGE_WRITECOPY_ = 0x8,
150 PAGE_EXECUTE_ = 0x10,
151 PAGE_EXECUTE_READ_ = 0x20,
152 PAGE_EXECUTE_READWRITE_ = 0x40,
153 PAGE_EXECUTE_WRITECOPY_ = 0x80,
155 PAGE_NOCACHE_ = 0x200,
156 PAGE_WRITECOMBINE_ = 0x400,
157 PAGE_TARGETS_INVALID_ = 0x40000000,
158 PAGE_TARGETS_NO_UPDATE_ = 0x40000000,
160 MEM_DECOMMIT_ = 0x4000,
161 MEM_RELEASE_ = 0x8000,
163 HEAP_NO_SERIALIZE_ = 0x1,
164 HEAP_GENERATE_EXCEPTIONS_ = 0x4,
165 HEAP_ZERO_MEMORY_ = 0x8,
166 HEAP_REALLOC_IN_PLACE_ONLY_ = 0x10,
171 COINIT_MULTITHREADED_ = 0x0,
172 COINIT_APARTMENTTHREADED_ = 0x2,
173 COINIT_DISABLE_OLE1DDE_ = 0x4,
174 COINIT_SPEED_OVER_MEMORY_ = 0x8
177 static constexpr HRESULT S_OK_ = 0;
178 static constexpr HRESULT S_FALSE_ = 1;
179 static constexpr HRESULT E_NOTIMPL_ = (HRESULT)0x80004001L;
180 static constexpr HRESULT E_NOINTERFACE_ = (HRESULT)0x80004002L;
181 static constexpr HRESULT E_POINTER_ = (HRESULT)0x80004003L;
182 static constexpr HRESULT E_ABORT_ = (HRESULT)0x80004004L;
183 static constexpr HRESULT E_FAIL_ = (HRESULT)0x80004005L;
184 static constexpr HRESULT E_UNEXPECTED_ = (HRESULT)0x8000FFFFL;
185 static constexpr HRESULT E_ACCESSDENIED_ = (HRESULT)0x80070005L;
186 static constexpr HRESULT E_HANDLE_ = (HRESULT)0x80070006L;
187 static constexpr HRESULT E_OUTOFMEMORY_ = (HRESULT)0x8007000EL;
188 static constexpr HRESULT E_INVALIDARG_ = (HRESULT)0x80070057L;
190 static constexpr HRESULT RPC_E_CHANGED_MODE_ = (HRESULT)0x80010106L;
195 GHPL_WINAPI HMODULE GHPL_APIENTRY GetModuleHandleW(LPCWSTR
lpModuleName);
196 GHPL_WINAPI HMODULE GHPL_APIENTRY LoadLibraryW(LPCWSTR
lpFileName);
197 GHPL_WINAPI FARPROC GHPL_APIENTRY GetProcAddress(HMODULE
hModule, LPCSTR
lpProcName);
198 GHPL_WINAPI BOOL GHPL_APIENTRY FreeLibrary(HMODULE
hModule);
199 GHPL_WINAPI DWORD GHPL_APIENTRY GetLastError(
void);
200 GHPL_WINAPI
void GHPL_APIENTRY DebugBreak(
void);
203 GHPL_WINAPI BOOL GHPL_APIENTRY VirtualFree(LPVOID
lpAddress, SIZE_T dwSize, DWORD
dwFreeType);
204 GHPL_WINAPI HANDLE GHPL_APIENTRY GetProcessHeap(
void);
205 GHPL_WINAPI LPVOID GHPL_APIENTRY HeapAlloc(HANDLE
hHeap, DWORD dwFlags, SIZE_T
dwBytes);
206 GHPL_WINAPI BOOL GHPL_APIENTRY HeapFree(HANDLE
hHeap, DWORD dwFlags, LPVOID
lpMem);
207 GHPL_WINAPI LPVOID GHPL_APIENTRY HeapReAlloc(HANDLE
hHeap, DWORD dwFlags, LPVOID
lpMem, SIZE_T
dwBytes);
210 GHPL_WINAPI HRESULT GHPL_APIENTRY CoInitializeEx(LPVOID
pvReserved =
nullptr, DWORD
dwCoInit = COINIT_MULTITHREADED_);
211 GHPL_WINAPI
void GHPL_APIENTRY CoUninitialize();
constexpr auto bit_count
Equal to the number of bits in the type.
char CHAR
Base Windows Stuff.
void VOID
typedef char TCHAR, * PTCHAR; typedef const TCHAR* LPCTSTR;
GHPL_WINAPI HWND GHPL_APIENTRY GetActiveWindow(void)
Possible return value from CoInitializeEx.