From 5925043d346dfafae1f7bebf25899dc42ee6523a Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 31 Aug 2009 09:58:27 -0500 Subject: [PATCH] update windows.* for change --- .../dragdrop-listener.factor | 9 ++++++--- basis/windows/errors/errors.factor | 2 ++ basis/windows/shell32/shell32.factor | 20 +++++++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/basis/windows/dragdrop-listener/dragdrop-listener.factor b/basis/windows/dragdrop-listener/dragdrop-listener.factor index e9c4930b64..91dfddbbff 100644 --- a/basis/windows/dragdrop-listener/dragdrop-listener.factor +++ b/basis/windows/dragdrop-listener/dragdrop-listener.factor @@ -1,16 +1,19 @@ -USING: windows.com windows.com.wrapper combinators -windows.kernel32 windows.ole32 windows.shell32 kernel accessors +USING: alien.strings io.encodings.utf16n windows.com +windows.com.wrapper combinators windows.kernel32 windows.ole32 +windows.shell32 kernel accessors prettyprint namespaces ui.tools.listener ui.tools.workspace alien.c-types alien sequences math ; IN: windows.dragdrop-listener +<< "WCHAR" require-c-arrays >> + : filenames-from-hdrop ( hdrop -- filenames ) dup HEX: FFFFFFFF f 0 DragQueryFile ! get count of files [ 2dup f 0 DragQueryFile 1 + ! get size of filename buffer dup "WCHAR" [ swap DragQueryFile drop ] keep - alien>u16-string + utf16n alien>string ] with map ; : filenames-from-data-object ( data-object -- filenames ) diff --git a/basis/windows/errors/errors.factor b/basis/windows/errors/errors.factor index 8bdbb9f1e9..5551d34028 100644 --- a/basis/windows/errors/errors.factor +++ b/basis/windows/errors/errors.factor @@ -4,6 +4,8 @@ io.encodings.string io.encodings.utf16n alien.strings arrays literals ; IN: windows.errors +<< "TCHAR" require-c-arrays >> + CONSTANT: ERROR_SUCCESS 0 CONSTANT: ERROR_INVALID_FUNCTION 1 CONSTANT: ERROR_FILE_NOT_FOUND 2 diff --git a/basis/windows/shell32/shell32.factor b/basis/windows/shell32/shell32.factor index 016f5ab149..a1915fff16 100644 --- a/basis/windows/shell32/shell32.factor +++ b/basis/windows/shell32/shell32.factor @@ -1,9 +1,10 @@ ! Copyright (C) 2006, 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.c-types alien.strings alien.syntax -combinators io.encodings.utf16n io.files io.pathnames kernel -windows.errors windows.com windows.com.syntax windows.user32 -windows.ole32 windows ; +classes.struct combinators io.encodings.utf16n io.files +io.pathnames kernel windows.errors windows.com +windows.com.syntax windows.user32 windows.ole32 windows +specialized-arrays.ushort ; IN: windows.shell32 CONSTANT: CSIDL_DESKTOP HEX: 00 @@ -90,7 +91,7 @@ ALIAS: ShellExecute ShellExecuteW : shell32-directory ( n -- str ) f swap f SHGFP_TYPE_DEFAULT - MAX_UNICODE_PATH "ushort" + MAX_UNICODE_PATH [ SHGetFolderPath drop ] keep utf16n alien>string ; : desktop ( -- str ) @@ -194,10 +195,13 @@ CONSTANT: STRRET_WSTR 0 CONSTANT: STRRET_OFFSET 1 CONSTANT: STRRET_CSTR 2 -C-UNION: STRRET-union "LPWSTR" "LPSTR" "UINT" "char[260]" ; -C-STRUCT: STRRET - { "int" "uType" } - { "STRRET-union" "union" } ; +UNION-STRUCT: STRRET-union + { pOleStr LPWSTR } + { uOffset UINT } + { cStr char[260] } ; +STRUCT: STRRET + { uType int } + { value STRRET-union } ; COM-INTERFACE: IEnumIDList IUnknown {000214F2-0000-0000-C000-000000000046} HRESULT Next ( ULONG celt, LPITEMIDLIST* rgelt, ULONG* pceltFetched ) -- 2.34.1