VOID = Void
PVOID = Opaque("PVOID")
LPVOID = PVOID
-HANDLE = Opaque("HANDLE")
-HWND = Opaque("HWND")
-HDC = Opaque("HDC")
-HMONITOR = Opaque("HMONITOR")
+
+def DECLARE_HANDLE(expr):
+ return Handle(expr, IntPointer(expr))
+
+HANDLE = DECLARE_HANDLE("HANDLE")
+HWND = DECLARE_HANDLE("HWND")
+HDC = DECLARE_HANDLE("HDC")
+HMONITOR = DECLARE_HANDLE("HMONITOR")
GUID = Struct("GUID", [
(DWORD, "Data1"),
])
LPGUID = Pointer(GUID)
-#REFGUID = Alias("REFGUID", Pointer(GUID))
-REFGUID = Alias("REFGUID", GUID)
+REFGUID = Alias("REFGUID", Reference(GUID))
IID = Alias("IID", GUID)
-#REFIID = Alias("REFIID", Pointer(IID))
-REFIID = Alias("REFIID", IID)
+REFIID = Alias("REFIID", Reference(IID))
CLSID = Alias("CLSID", GUID)
-#REFCLSID = Alias("REFCLSID", Pointer(CLSID))
-REFCLSID = Alias("REFCLSID", CLSID)
+REFCLSID = Alias("REFCLSID", Reference(CLSID))
LUID = Struct("LUID", [
(DWORD, "LowPart"),
])
LPRGNDATA = Pointer(RGNDATA)
-HMODULE = Opaque("HMODULE")
+HMODULE = DECLARE_HANDLE("HMODULE")
IUnknown = Interface("IUnknown")
+FILETIME = Struct("FILETIME", [
+ (DWORD, "dwLowDateTime"),
+ (DWORD, "dwHighDateTime"),
+])
+
+COLORREF = Alias("COLORREF", DWORD)
+
+LOGFONTW = Struct("LOGFONTW", [
+ (LONG, "lfHeight"),
+ (LONG, "lfWidth"),
+ (LONG, "lfEscapement"),
+ (LONG, "lfOrientation"),
+ (LONG, "lfWeight"),
+ (BYTE, "lfItalic"),
+ (BYTE, "lfUnderline"),
+ (BYTE, "lfStrikeOut"),
+ (BYTE, "lfCharSet"),
+ (BYTE, "lfOutPrecision"),
+ (BYTE, "lfClipPrecision"),
+ (BYTE, "lfQuality"),
+ (BYTE, "lfPitchAndFamily"),
+ (WString, "lfFaceName"),
+])
+
HRESULT_com = FakeEnum(HRESULT, [
"S_OK",
"E_NOINTERFACE",