On this page
Graphics.Win32.Window
Copyright | (c) Alastair Reid 1997-2003 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | Esa Ilari Vuokko <ei@vuokko.info> |
Stability | provisional |
Portability | portable |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Description
A collection of FFI declarations for interfacing with Win32.
type ClassName = LPCTSTR Source
mkClassName :: String -> ClassName Source
type ClassStyle = UINT Source
cS_VREDRAW :: ClassStyle Source
cS_HREDRAW :: ClassStyle Source
cS_CLASSDC :: ClassStyle Source
cS_PARENTDC :: ClassStyle Source
cS_SAVEBITS :: ClassStyle Source
cS_DBLCLKS :: ClassStyle Source
cS_BYTEALIGNCLIENT :: ClassStyle Source
cS_BYTEALIGNWINDOW :: ClassStyle Source
cS_NOCLOSE :: ClassStyle Source
cS_GLOBALCLASS :: ClassStyle Source
type WNDCLASS = (ClassStyle, HINSTANCE, Maybe HICON, Maybe HCURSOR, Maybe HBRUSH, Maybe LPCTSTR, ClassName) Source
withWNDCLASS :: WNDCLASS -> (Ptr WNDCLASS -> IO a) -> IO a Source
genericWndProc_p :: FunPtr WindowClosure Source
registerClass :: WNDCLASS -> IO (Maybe ATOM) Source
c_RegisterClass :: Ptr WNDCLASS -> IO ATOM Source
unregisterClass :: ClassName -> HINSTANCE -> IO () Source
type WindowStyle = DWORD Source
wS_OVERLAPPED :: WindowStyle Source
wS_POPUP :: WindowStyle Source
wS_CHILD :: WindowStyle Source
wS_CLIPSIBLINGS :: WindowStyle Source
wS_CLIPCHILDREN :: WindowStyle Source
wS_VISIBLE :: WindowStyle Source
wS_DISABLED :: WindowStyle Source
wS_MINIMIZE :: WindowStyle Source
wS_MAXIMIZE :: WindowStyle Source
wS_CAPTION :: WindowStyle Source
wS_BORDER :: WindowStyle Source
wS_DLGFRAME :: WindowStyle Source
wS_VSCROLL :: WindowStyle Source
wS_HSCROLL :: WindowStyle Source
wS_SYSMENU :: WindowStyle Source
type WindowStyleEx = DWORD Source
wS_THICKFRAME :: WindowStyle Source
wS_MINIMIZEBOX :: WindowStyle Source
wS_EX_DLGMODALFRAME :: WindowStyleEx Source
wS_MAXIMIZEBOX :: WindowStyle Source
wS_EX_NOPARENTNOTIFY :: WindowStyleEx Source
wS_GROUP :: WindowStyle Source
wS_EX_TOPMOST :: WindowStyleEx Source
wS_TABSTOP :: WindowStyle Source
wS_EX_ACCEPTFILES :: WindowStyleEx Source
wS_OVERLAPPEDWINDOW :: WindowStyle Source
wS_EX_TRANSPARENT :: WindowStyleEx Source
wS_POPUPWINDOW :: WindowStyle Source
wS_EX_MDICHILD :: WindowStyleEx Source
wS_CHILDWINDOW :: WindowStyle Source
wS_EX_TOOLWINDOW :: WindowStyleEx Source
wS_TILED :: WindowStyle Source
wS_EX_WINDOWEDGE :: WindowStyleEx Source
wS_ICONIC :: WindowStyle Source
wS_EX_CLIENTEDGE :: WindowStyleEx Source
wS_SIZEBOX :: WindowStyle Source
wS_EX_CONTEXTHELP :: WindowStyleEx Source
wS_TILEDWINDOW :: WindowStyle Source
wS_EX_RIGHT :: WindowStyleEx Source
wS_EX_LEFT :: WindowStyleEx Source
wS_EX_RTLREADING :: WindowStyleEx Source
wS_EX_LTRREADING :: WindowStyleEx Source
wS_EX_LEFTSCROLLBAR :: WindowStyleEx Source
wS_EX_RIGHTSCROLLBAR :: WindowStyleEx Source
wS_EX_CONTROLPARENT :: WindowStyleEx Source
wS_EX_STATICEDGE :: WindowStyleEx Source
maybePos :: Maybe Pos -> Pos Source
wS_EX_APPWINDOW :: WindowStyleEx Source
wS_EX_OVERLAPPEDWINDOW :: WindowStyleEx Source
type WindowClosure = HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT Source
wS_EX_PALETTEWINDOW :: WindowStyleEx Source
mkWindowClosure :: WindowClosure -> IO (FunPtr WindowClosure) Source
setWindowClosure :: HWND -> WindowClosure -> IO (Maybe (FunPtr WindowClosure)) Source
The standard C wndproc for every window class registered by registerClass
is a C function pointer provided with this library. It in turn delegates to a Haskell function pointer stored in gWLP_USERDATA
. This action creates that function pointer. All Haskell function pointers must be freed in order to allow the objects they close over to be garbage collected. Consequently, if you are replacing a window closure previously set via this method or indirectly with createWindow
or createWindowEx
you must free it. This action returns a function pointer to the old window closure for you to free. The current window closure is freed automatically by defWindowProc
when it receives wM_NCDESTROY
.
c_SetWindowLongPtr :: HWND -> INT -> Ptr LONG -> IO (Ptr LONG) Source
c_GetWindowLongPtr :: HANDLE -> INT -> IO LONG_PTR Source
createWindow :: ClassName -> String -> WindowStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HINSTANCE -> WindowClosure -> IO HWND Source
Creates a window with a default extended window style. If you create many windows over the life of your program, WindowClosure may leak memory. Be sure to delegate to defWindowProc
for wM_NCDESTROY
and see defWindowProc
and setWindowClosure
for details.
createWindowEx :: WindowStyle -> ClassName -> String -> WindowStyle -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe Pos -> Maybe HWND -> Maybe HMENU -> HINSTANCE -> WindowClosure -> IO HWND Source
Creates a window and allows your to specify the extended window style. If you create many windows over the life of your program, WindowClosure may leak memory. Be sure to delegate to defWindowProc
for wM_NCDESTROY
and see defWindowProc
and setWindowClosure
for details.
c_CreateWindowEx :: WindowStyle -> ClassName -> LPCTSTR -> WindowStyle -> Pos -> Pos -> Pos -> Pos -> HWND -> HMENU -> HINSTANCE -> LPVOID -> IO HWND Source
defWindowProc :: Maybe HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT Source
Delegates to the Win32 default window procedure. If you are using a window created by createWindow
, createWindowEx
or on which you have called setWindowClosure
, please note that the window will leak memory once it is destroyed unless you call freeWindowProc
when it receives wM_NCDESTROY
. If you wish to do this, instead of using this function directly, you can delegate to defWindowProcSafe
which will handle it for you. As an alternative, you can manually retrieve the window closure function pointer and free it after the window has been destroyed. Check the implementation of freeWindowProc
for a guide.
defWindowProcSafe :: Maybe HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT Source
Delegates to the standard default window procedure, but if it receives the wM_NCDESTROY
message it first frees the window closure to allow the closure and any objects it closes over to be garbage collected. wM_NCDESTROY
is the last message a window receives prior to being deleted.
c_DefWindowProc :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT Source
freeWindowProc :: HWND -> IO () Source
Frees a function pointer to the window closure which has been set directly by setWindowClosure
or indirectly by createWindowEx
. You should call this function in your window closure's wM_NCDESTROY
case unless you delegate that case to defWindowProc
(e.g. as part of the default).
getClientRect :: HWND -> IO RECT Source
c_GetClientRect :: HWND -> Ptr RECT -> IO Bool Source
getWindowRect :: HWND -> IO RECT Source
c_GetWindowRect :: HWND -> Ptr RECT -> IO Bool Source
invalidateRect :: Maybe HWND -> Maybe LPRECT -> Bool -> IO () Source
c_InvalidateRect :: HWND -> LPRECT -> Bool -> IO Bool Source
screenToClient :: HWND -> POINT -> IO POINT Source
c_ScreenToClient :: HWND -> Ptr POINT -> IO Bool Source
clientToScreen :: HWND -> POINT -> IO POINT Source
c_ClientToScreen :: HWND -> Ptr POINT -> IO Bool Source
setWindowText :: HWND -> String -> IO () Source
c_SetWindowText :: HWND -> LPCTSTR -> IO Bool Source
getWindowText :: HWND -> Int -> IO String Source
c_GetWindowText :: HWND -> LPTSTR -> Int -> IO Int Source
getWindowTextLength :: HWND -> IO Int Source
c_GetWindowTextLength :: HWND -> IO Int Source
type PAINTSTRUCT = (HDC, Bool, RECT) Source
type LPPAINTSTRUCT = Addr Source
sizeofPAINTSTRUCT :: DWORD Source
allocaPAINTSTRUCT :: (LPPAINTSTRUCT -> IO a) -> IO a Source
beginPaint :: HWND -> LPPAINTSTRUCT -> IO HDC Source
c_BeginPaint :: HWND -> LPPAINTSTRUCT -> IO HDC Source
endPaint :: HWND -> LPPAINTSTRUCT -> IO () Source
type ShowWindowControl = DWORD Source
sW_HIDE :: ShowWindowControl Source
sW_SHOWNORMAL :: ShowWindowControl Source
sW_SHOWMINIMIZED :: ShowWindowControl Source
sW_SHOWMAXIMIZED :: ShowWindowControl Source
sW_MAXIMIZE :: ShowWindowControl Source
sW_SHOWNOACTIVATE :: ShowWindowControl Source
sW_SHOW :: ShowWindowControl Source
sW_MINIMIZE :: ShowWindowControl Source
showWindow :: HWND -> ShowWindowControl -> IO Bool Source
sW_SHOWMINNOACTIVE :: ShowWindowControl Source
isWindowVisible :: HWND -> IO Bool Source
sW_SHOWNA :: ShowWindowControl Source
sW_RESTORE :: ShowWindowControl Source
adjustWindowRect :: RECT -> WindowStyle -> Bool -> IO RECT Source
c_AdjustWindowRect :: Ptr RECT -> WindowStyle -> Bool -> IO Bool Source
adjustWindowRectEx :: RECT -> WindowStyle -> Bool -> WindowStyleEx -> IO RECT Source
c_AdjustWindowRectEx :: Ptr RECT -> WindowStyle -> Bool -> WindowStyleEx -> IO Bool Source
arrangeIconicWindows :: HWND -> IO () Source
c_ArrangeIconicWindows :: HWND -> IO Bool Source
beginDeferWindowPos :: Int -> IO HDWP Source
c_BeginDeferWindowPos :: Int -> IO HDWP Source
bringWindowToTop :: HWND -> IO () Source
c_BringWindowToTop :: HWND -> IO Bool Source
childWindowFromPoint :: HWND -> POINT -> IO (Maybe HWND) Source
childWindowFromPointEx :: HWND -> POINT -> DWORD -> IO (Maybe HWND) Source
closeWindow :: HWND -> IO () Source
deferWindowPos :: HDWP -> HWND -> HWND -> Int -> Int -> Int -> Int -> SetWindowPosFlags -> IO HDWP Source
c_DeferWindowPos :: HDWP -> HWND -> HWND -> Int -> Int -> Int -> Int -> SetWindowPosFlags -> IO HDWP Source
destroyWindow :: HWND -> IO () Source
c_DestroyWindow :: HWND -> IO Bool Source
endDeferWindowPos :: HDWP -> IO () Source
c_EndDeferWindowPos :: HDWP -> IO Bool Source
findWindow :: Maybe String -> Maybe String -> IO (Maybe HWND) Source
findWindowByName :: String -> IO (Maybe HWND) Source
Deprecated: Use 'findWindow Nothing' instead.
c_FindWindow :: LPCTSTR -> LPCTSTR -> IO HWND Source
findWindowEx :: Maybe HWND -> Maybe HWND -> Maybe String -> Maybe String -> IO (Maybe HWND) Source
c_FindWindowEx :: HWND -> HWND -> LPCTSTR -> LPCTSTR -> IO HWND Source
flashWindow :: HWND -> Bool -> IO Bool Source
moveWindow :: HWND -> Int -> Int -> Int -> Int -> Bool -> IO () Source
c_MoveWindow :: HWND -> Int -> Int -> Int -> Int -> Bool -> IO Bool Source
getDesktopWindow :: IO HWND Source
getForegroundWindow :: IO HWND Source
getParent :: HWND -> IO HWND Source
c_GetParent :: HWND -> IO HWND Source
getTopWindow :: HWND -> IO HWND Source
c_GetTopWindow :: HWND -> IO HWND Source
type SetWindowPosFlags = UINT Source
sWP_NOSIZE :: SetWindowPosFlags Source
sWP_NOMOVE :: SetWindowPosFlags Source
sWP_NOZORDER :: SetWindowPosFlags Source
sWP_NOREDRAW :: SetWindowPosFlags Source
sWP_NOACTIVATE :: SetWindowPosFlags Source
sWP_FRAMECHANGED :: SetWindowPosFlags Source
sWP_SHOWWINDOW :: SetWindowPosFlags Source
sWP_HIDEWINDOW :: SetWindowPosFlags Source
sWP_NOCOPYBITS :: SetWindowPosFlags Source
sWP_NOOWNERZORDER :: SetWindowPosFlags Source
type GetDCExFlags = DWORD Source
sWP_NOSENDCHANGING :: SetWindowPosFlags Source
dCX_WINDOW :: GetDCExFlags Source
sWP_DRAWFRAME :: SetWindowPosFlags Source
dCX_CACHE :: GetDCExFlags Source
sWP_NOREPOSITION :: SetWindowPosFlags Source
dCX_CLIPCHILDREN :: GetDCExFlags Source
dCX_CLIPSIBLINGS :: GetDCExFlags Source
dCX_PARENTCLIP :: GetDCExFlags Source
dCX_EXCLUDERGN :: GetDCExFlags Source
dCX_INTERSECTRGN :: GetDCExFlags Source
getDCEx :: HWND -> HRGN -> GetDCExFlags -> IO HDC Source
dCX_LOCKWINDOWUPDATE :: GetDCExFlags Source
c_GetDCEx :: HWND -> PRGN -> GetDCExFlags -> IO HDC Source
getDC :: Maybe HWND -> IO HDC Source
c_GetDC :: HWND -> IO HDC Source
getWindowDC :: Maybe HWND -> IO HDC Source
c_GetWindowDC :: HWND -> IO HDC Source
releaseDC :: Maybe HWND -> HDC -> IO () Source
c_ReleaseDC :: HWND -> HDC -> IO Bool Source
getDCOrgEx :: HDC -> IO POINT Source
c_GetDCOrgEx :: HDC -> Ptr POINT -> IO Bool Source
hideCaret :: HWND -> IO () Source
c_HideCaret :: HWND -> IO Bool Source
showCaret :: HWND -> IO () Source
c_ShowCaret :: HWND -> IO Bool Source
createCaret :: HWND -> HBITMAP -> Maybe INT -> Maybe INT -> IO () Source
c_CreateCaret :: HWND -> HBITMAP -> INT -> INT -> IO Bool Source
destroyCaret :: IO () Source
c_DestroyCaret :: IO Bool Source
getCaretPos :: IO POINT Source
c_GetCaretPos :: Ptr POINT -> IO Bool Source
setCaretPos :: POINT -> IO () Source
c_SetCaretPos :: LONG -> LONG -> IO Bool Source
allocaMessage :: (LPMSG -> IO a) -> IO a Source
getMessage :: LPMSG -> Maybe HWND -> IO Bool Source
c_GetMessage :: LPMSG -> HWND -> UINT -> UINT -> IO LONG Source
peekMessage :: LPMSG -> Maybe HWND -> UINT -> UINT -> UINT -> IO () Source
c_PeekMessage :: LPMSG -> HWND -> UINT -> UINT -> UINT -> IO LONG Source
translateMessage :: LPMSG -> IO BOOL Source
updateWindow :: HWND -> IO () Source
c_UpdateWindow :: HWND -> IO Bool Source
dispatchMessage :: LPMSG -> IO LONG Source
sendMessage :: HWND -> WindowMessage -> WPARAM -> LPARAM -> IO LRESULT Source
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.4.2/docs/libraries/Win32-2.12.0.0/Graphics-Win32-Window.html