blob: 6fdcf2d1278f2e2cb51b1ff8854a7acbe9e103a2 [file] [log] [blame]
hsc2hs can't detect values at compile-time if those are
declared as pointers: https://github.com/haskell/win32/issues/88
This patch is a huge hack: we encode absolute vaues from <windows.h>
diff --git a/Graphics/Win32/GDI/Types.hsc b/Graphics/Win32/GDI/Types.hsc
index c363530..8643cee 100644
--- a/Graphics/Win32/GDI/Types.hsc
+++ b/Graphics/Win32/GDI/Types.hsc
@@ -216,10 +216,10 @@ type HWND = HANDLE
type MbHWND = Maybe HWND
#{enum HWND, castUINTPtrToPtr
- , hWND_BOTTOM = (UINT_PTR)HWND_BOTTOM
- , hWND_NOTOPMOST = (UINT_PTR)HWND_NOTOPMOST
- , hWND_TOP = (UINT_PTR)HWND_TOP
- , hWND_TOPMOST = (UINT_PTR)HWND_TOPMOST
+ , hWND_BOTTOM = (UINT_PTR)(INT_PTR)(1)
+ , hWND_NOTOPMOST = (UINT_PTR)(INT_PTR)(-2)
+ , hWND_TOP = (UINT_PTR)(INT_PTR)(0)
+ , hWND_TOPMOST = (UINT_PTR)(INT_PTR)(-1)
}
type HMENU = HANDLE
diff --git a/Graphics/Win32/Misc.hsc b/Graphics/Win32/Misc.hsc
index 1248b5a..c791a20 100644
--- a/Graphics/Win32/Misc.hsc
+++ b/Graphics/Win32/Misc.hsc
@@ -67,23 +67,23 @@ foreign import WINDOWS_CCONV unsafe "windows.h LoadIconW"
c_LoadIcon :: HINSTANCE -> Icon -> IO HICON
#{enum Cursor, castUINTPtrToPtr
- , iDC_ARROW = (UINT_PTR)IDC_ARROW
- , iDC_IBEAM = (UINT_PTR)IDC_IBEAM
- , iDC_WAIT = (UINT_PTR)IDC_WAIT
- , iDC_CROSS = (UINT_PTR)IDC_CROSS
- , iDC_UPARROW = (UINT_PTR)IDC_UPARROW
- , iDC_SIZENWSE = (UINT_PTR)IDC_SIZENWSE
- , iDC_SIZENESW = (UINT_PTR)IDC_SIZENESW
- , iDC_SIZEWE = (UINT_PTR)IDC_SIZEWE
- , iDC_SIZENS = (UINT_PTR)IDC_SIZENS
+ , iDC_ARROW = (UINT_PTR)(32512)
+ , iDC_IBEAM = (UINT_PTR)(32513)
+ , iDC_WAIT = (UINT_PTR)(32514)
+ , iDC_CROSS = (UINT_PTR)(32515)
+ , iDC_UPARROW = (UINT_PTR)(32516)
+ , iDC_SIZENWSE = (UINT_PTR)(32642)
+ , iDC_SIZENESW = (UINT_PTR)(32643)
+ , iDC_SIZEWE = (UINT_PTR)(32644)
+ , iDC_SIZENS = (UINT_PTR)(32645)
}
#{enum Icon, castUINTPtrToPtr
- , iDI_APPLICATION = (UINT_PTR)IDI_APPLICATION
- , iDI_HAND = (UINT_PTR)IDI_HAND
- , iDI_QUESTION = (UINT_PTR)IDI_QUESTION
- , iDI_EXCLAMATION = (UINT_PTR)IDI_EXCLAMATION
- , iDI_ASTERISK = (UINT_PTR)IDI_ASTERISK
+ , iDI_APPLICATION = (UINT_PTR)(32512)
+ , iDI_HAND = (UINT_PTR)(32513)
+ , iDI_QUESTION = (UINT_PTR)(32514)
+ , iDI_EXCLAMATION = (UINT_PTR)(32515)
+ , iDI_ASTERISK = (UINT_PTR)(32516)
}
----------------------------------------------------------------
diff --git a/Graphics/Win32/Resource.hsc b/Graphics/Win32/Resource.hsc
index e8ad565..ca58fa2 100644
--- a/Graphics/Win32/Resource.hsc
+++ b/Graphics/Win32/Resource.hsc
@@ -61,23 +61,23 @@ foreign import WINDOWS_CCONV unsafe "windows.h EndUpdateResourceW"
type ResourceType = LPCTSTR
#{enum ResourceType, castUINTPtrToPtr
- , rT_ACCELERATOR = (UINT_PTR)RT_ACCELERATOR // Accelerator table
- , rT_ANICURSOR = (UINT_PTR)RT_ANICURSOR // Animated cursor
- , rT_ANIICON = (UINT_PTR)RT_ANIICON // Animated icon
- , rT_BITMAP = (UINT_PTR)RT_BITMAP // Bitmap resource
- , rT_CURSOR = (UINT_PTR)RT_CURSOR // Hardware-dependent cursor resource
- , rT_DIALOG = (UINT_PTR)RT_DIALOG // Dialog box
- , rT_FONT = (UINT_PTR)RT_FONT // Font resource
- , rT_FONTDIR = (UINT_PTR)RT_FONTDIR // Font directory resource
- , rT_GROUP_CURSOR = (UINT_PTR)RT_GROUP_CURSOR // Hardware-independent cursor resource
- , rT_GROUP_ICON = (UINT_PTR)RT_GROUP_ICON // Hardware-independent icon resource
- , rT_HTML = (UINT_PTR)RT_HTML // HTML document
- , rT_ICON = (UINT_PTR)RT_ICON // Hardware-dependent icon resource
- , rT_MENU = (UINT_PTR)RT_MENU // Menu resource
- , rT_MESSAGETABLE = (UINT_PTR)RT_MESSAGETABLE // Message-table entry
- , rT_RCDATA = (UINT_PTR)RT_RCDATA // Application-defined resource (raw data)
- , rT_STRING = (UINT_PTR)RT_STRING // String-table entry
- , rT_VERSION = (UINT_PTR)RT_VERSION // Version resource
+ , rT_ACCELERATOR = (UINT_PTR)(9)
+ , rT_ANICURSOR = (UINT_PTR)(21)
+ , rT_ANIICON = (UINT_PTR)(22)
+ , rT_BITMAP = (UINT_PTR)(2)
+ , rT_CURSOR = (UINT_PTR)(1)
+ , rT_DIALOG = (UINT_PTR)(5)
+ , rT_FONT = (UINT_PTR)(8)
+ , rT_FONTDIR = (UINT_PTR)(7)
+ , rT_GROUP_CURSOR = (UINT_PTR)(1 + DIFFERENCE)
+ , rT_GROUP_ICON = (UINT_PTR)(3 + DIFFERENCE)
+ , rT_HTML = (UINT_PTR)(23)
+ , rT_ICON = (UINT_PTR)(3)
+ , rT_MENU = (UINT_PTR)(4)
+ , rT_MESSAGETABLE = (UINT_PTR)(11)
+ , rT_RCDATA = (UINT_PTR)(10)
+ , rT_STRING = (UINT_PTR)(6)
+ , rT_VERSION = (UINT_PTR)(16)
}
findResource :: HMODULE -> String -> ResourceType -> IO HRSRC
diff --git a/Graphics/Win32/Window/PostMessage.hsc b/Graphics/Win32/Window/PostMessage.hsc
index 7f4c9f0..609f3f6 100644
--- a/Graphics/Win32/Window/PostMessage.hsc
+++ b/Graphics/Win32/Window/PostMessage.hsc
@@ -41,7 +41,7 @@ foreign import WINDOWS_CCONV "windows.h PostThreadMessageW"
c_PostThreadMessage :: DWORD -> WindowMessage -> WPARAM -> LPARAM -> IO BOOL
#{enum HWND, castUINTPtrToPtr
- , hWND_BROADCAST = (UINT_PTR)HWND_BROADCAST
+ , hWND_BROADCAST = (UINT_PTR)(0xffff)
}
foreign import WINDOWS_CCONV "windows.h InSendMessage"
diff --git a/System/Win32/Registry.hsc b/System/Win32/Registry.hsc
index afbb011..c7edfc1 100644
--- a/System/Win32/Registry.hsc
+++ b/System/Win32/Registry.hsc
@@ -80,11 +80,11 @@ import System.Win32.Types (castUINTPtrToPtr, failUnlessSuccessOr, maybePtr)
#include <windows.h>
#{enum HKEY, (unsafePerformIO . newForeignHANDLE . castUINTPtrToPtr)
- , hKEY_CLASSES_ROOT = (UINT_PTR)HKEY_CLASSES_ROOT
- , hKEY_CURRENT_CONFIG = (UINT_PTR)HKEY_CURRENT_CONFIG
- , hKEY_CURRENT_USER = (UINT_PTR)HKEY_CURRENT_USER
- , hKEY_LOCAL_MACHINE = (UINT_PTR)HKEY_LOCAL_MACHINE
- , hKEY_USERS = (UINT_PTR)HKEY_USERS
+ , hKEY_CLASSES_ROOT = (UINT_PTR)(0x80000000)
+ , hKEY_CURRENT_CONFIG = (UINT_PTR)(0x80000005)
+ , hKEY_CURRENT_USER = (UINT_PTR)(0x80000001)
+ , hKEY_LOCAL_MACHINE = (UINT_PTR)(0x80000002)
+ , hKEY_USERS = (UINT_PTR)(0x80000003)
}
-- , PKEYERFORMANCE_DATA NT only
-- , HKEY_DYN_DATA 95/98 only