factor/contrib/win32/kernel32.factor

60 lines
1.5 KiB
Factor

USING: alien kernel errors ;
IN: win32-api
LIBRARY: kernel32
! FUNCTION: MAKEINTRESOURCEA
! FUNCTION: MAKEINTRESOURCEW
! : MAKEINTRESOURCE \ MAKEINTRESOURCEW \ MAKEINTRESOURCEA unicode-exec ;
! #define IS_INTRESOURCE(_r) (((ULONG_PTR)(_r) >> 16) == 0)
! #define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
! #define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))
! FUNCTION: DWORD FormatMessage(
! DWORD dwFlags,
! LPCVOID lpSource,
! DWORD dwMessageId,
! DWORD dwLanguageId,
! LPTSTR lpBuffer,
! DWORD nSize,
! va_list* Arguments
! ) ;
FUNCTION: HMODULE GetModuleHandleA ( char* lpModulename ) ;
FUNCTION: HMODULE GetModuleHandleW ( char* lpModulename ) ;
: GetModuleHandle \ GetModuleHandleW \ GetModuleHandleA unicode-exec ;
! FUNCTION: HMODULE GetModuleHandleEx (
! DWORD dwFlags,
! LPCTSTR lpModulename,
! HMODULE* phModule ) ;
FUNCTION: DWORD GetLastError ( ) ;
: (win32-error) ( id -- string )
"char*" f "error_message" [ "int" ] alien-invoke ;
: win32-error ( -- )
GetLastError dup 0 = [ (win32-error) throw ] unless drop ;
: GHND HEX: 40 ; inline
: GMEM_FIXED 0 ; inline
: GMEM_MOVEABLE 2 ; inline
: GMEM_ZEROINIT HEX: 40 ; inline
: GPTR HEX: 40 ; inline
FUNCTION: HGLOBAL GlobalAlloc ( UINT uFlags, SIZE_T dwBytes ) ;
FUNCTION: LPVOID GlobalLock ( HGLOBAL hMem ) ;
! FUNCTION: char* GlobalLock ( HGLOBAL hMem ) ;
FUNCTION: BOOL GlobalUnlock ( HGLOBAL hMem ) ;