60 lines
1.5 KiB
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 ) ;
|
|
|
|
|