module Graphics.Win32.Resource where
import System.Win32.Types
import Foreign
#include "windows_cconv.h"
beginUpdateResource :: String -> Bool -> IO HANDLE
beginUpdateResource name del =
withTString name $ \ c_name ->
failIfNull "BeginUpdateResource" $ c_BeginUpdateResource c_name del
foreign import WINDOWS_CCONV unsafe "windows.h BeginUpdateResourceW"
c_BeginUpdateResource :: LPCTSTR -> Bool -> IO HANDLE
type ResourceImageType = UINT
type HRSRC = Ptr ()
type HGLOBAL = Ptr ()
iMAGE_BITMAP :: ResourceImageType
iMAGE_BITMAP = 0
iMAGE_ICON :: ResourceImageType
iMAGE_ICON = 1
iMAGE_CURSOR :: ResourceImageType
iMAGE_CURSOR = 2
copyImage :: HANDLE -> ResourceImageType -> Int -> Int -> UINT -> IO HANDLE
copyImage h ty x y flags =
failIfNull "CopyImage" $ c_CopyImage h ty x y flags
foreign import WINDOWS_CCONV unsafe "windows.h CopyImage"
c_CopyImage :: HANDLE -> ResourceImageType -> Int -> Int -> UINT -> IO HANDLE
endUpdateResource :: HANDLE -> BOOL -> IO ()
endUpdateResource h discard =
failIfFalse_ "EndUpdateResource" $ c_EndUpdateResource h discard
foreign import WINDOWS_CCONV unsafe "windows.h EndUpdateResourceW"
c_EndUpdateResource :: HANDLE -> BOOL -> IO Bool
type ResourceType = LPCTSTR
rT_ACCELERATOR :: ResourceType
rT_ACCELERATOR = castUINTPtrToPtr 9
rT_ANICURSOR :: ResourceType
rT_ANICURSOR = castUINTPtrToPtr 21
rT_ANIICON :: ResourceType
rT_ANIICON = castUINTPtrToPtr 22
rT_BITMAP :: ResourceType
rT_BITMAP = castUINTPtrToPtr 2
rT_CURSOR :: ResourceType
rT_CURSOR = castUINTPtrToPtr 1
rT_DIALOG :: ResourceType
rT_DIALOG = castUINTPtrToPtr 5
rT_FONT :: ResourceType
rT_FONT = castUINTPtrToPtr 8
rT_FONTDIR :: ResourceType
rT_FONTDIR = castUINTPtrToPtr 7
rT_GROUP_CURSOR :: ResourceType
rT_GROUP_CURSOR = castUINTPtrToPtr 12
rT_GROUP_ICON :: ResourceType
rT_GROUP_ICON = castUINTPtrToPtr 14
rT_HTML :: ResourceType
rT_HTML = castUINTPtrToPtr 23
rT_ICON :: ResourceType
rT_ICON = castUINTPtrToPtr 3
rT_MENU :: ResourceType
rT_MENU = castUINTPtrToPtr 4
rT_MESSAGETABLE :: ResourceType
rT_MESSAGETABLE = castUINTPtrToPtr 11
rT_RCDATA :: ResourceType
rT_RCDATA = castUINTPtrToPtr 10
rT_STRING :: ResourceType
rT_STRING = castUINTPtrToPtr 6
rT_VERSION :: ResourceType
rT_VERSION = castUINTPtrToPtr 16
findResource :: HMODULE -> String -> ResourceType -> IO HRSRC
findResource hmod name ty =
withTString name $ \ c_name ->
failIfNull "FindResource" $ c_FindResource hmod c_name ty
foreign import WINDOWS_CCONV unsafe "windows.h FindResourceW"
c_FindResource :: HMODULE -> LPCTSTR -> LPCTSTR -> IO HRSRC
findResourceEx :: HMODULE -> String -> ResourceType -> WORD -> IO HRSRC
findResourceEx hmod name ty lang =
withTString name $ \ c_name ->
failIfNull "FindResourceEx" $ c_FindResourceEx hmod c_name ty lang
foreign import WINDOWS_CCONV unsafe "windows.h FindResourceExW"
c_FindResourceEx :: HMODULE -> LPCTSTR -> LPCTSTR -> WORD -> IO HRSRC
type ResourceSize = Int
lR_DEFAULTSIZE :: ResourceSize
lR_DEFAULTSIZE = 64
type LoadImageFlags = UINT
lR_DEFAULTCOLOR :: LoadImageFlags
lR_DEFAULTCOLOR = 0
lR_CREATEDIBSECTION :: LoadImageFlags
lR_CREATEDIBSECTION = 8192
lR_LOADFROMFILE :: LoadImageFlags
lR_LOADFROMFILE = 16
lR_LOADMAP3DCOLORS :: LoadImageFlags
lR_LOADMAP3DCOLORS = 4096
lR_LOADTRANSPARENT :: LoadImageFlags
lR_LOADTRANSPARENT = 32
lR_MONOCHROME :: LoadImageFlags
lR_MONOCHROME = 1
lR_SHARED :: LoadImageFlags
lR_SHARED = 32768
loadImage :: HINSTANCE -> String -> ResourceImageType -> ResourceSize -> ResourceSize -> LoadImageFlags -> IO HANDLE
loadImage inst name ty x y load =
withTString name $ \ c_name ->
failIfNull "LoadImage" $ c_LoadImage inst c_name ty x y load
foreign import WINDOWS_CCONV unsafe "windows.h LoadImageW"
c_LoadImage :: HINSTANCE -> LPCTSTR -> ResourceImageType -> ResourceSize -> ResourceSize -> LoadImageFlags -> IO HANDLE
loadResource :: HMODULE -> HRSRC -> IO HGLOBAL
loadResource hmod res =
failIfNull "LoadResource" $ c_LoadResource hmod res
foreign import WINDOWS_CCONV unsafe "windows.h LoadResource"
c_LoadResource :: HMODULE -> HRSRC -> IO HGLOBAL
lockResource :: HGLOBAL -> IO Addr
lockResource res =
failIfNull "LockResource" $ c_LockResource res
foreign import WINDOWS_CCONV unsafe "windows.h LockResource"
c_LockResource :: HGLOBAL -> IO Addr
sizeofResource :: HMODULE -> HRSRC -> IO DWORD
sizeofResource hmod res =
failIfZero "SizeofResource" $ c_SizeofResource hmod res
foreign import WINDOWS_CCONV unsafe "windows.h SizeofResource"
c_SizeofResource :: HMODULE -> HRSRC -> IO DWORD
updateResource :: HANDLE -> ResourceType -> String -> WORD -> Addr -> DWORD -> IO ()
updateResource h ty name lang p_data data_len =
withTString name $ \ c_name ->
failIfFalse_ "UpdateResource" $
c_UpdateResource h ty c_name lang p_data data_len
foreign import WINDOWS_CCONV unsafe "windows.h UpdateResourceW"
c_UpdateResource :: HANDLE -> LPCTSTR -> LPCTSTR -> WORD -> Addr -> DWORD -> IO Bool