You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
6.1 KiB
145 lines
6.1 KiB
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
|