Wow! Great work, Joe.

Slava

Joe Groff wrote:
> In my git repo (git://pgdn.org/factor) I just checked in a simple  
> interface I've been working on for calling out to COM objects. Check  
> out the windows.ole32, windows.com and windows.com.syntax vocabs for  
> the goods. In a nutshell:
>
> --8<--
>
> COM-INTERFACE: IUnknown f {00000000-0000-0000-C000-000000000046}
>      HRESULT QueryInterface ( REFGUID iid, void** ppvObject )
>      ULONG AddRef ( )
>      ULONG Release ( ) ;
>
> : com-query-interface ( interface iid -- interface' )
>      f <void*>
>      [ IUnknown::QueryInterface ole32-error ] keep
>      *void* ;
>
> COM-INTERFACE: IShellFolder IUnknown {000214E6-0000-0000- 
> C000-000000000046}
>      HRESULT ParseDisplayName ( HWND hwndOwner, void* pbcReserved,  
> LPOLESTR lpszDisplayName, ULONG* pchEaten, LPITEMIDLIST* ppidl, ULONG*  
> pdwAttributes )
>      HRESULT EnumObjects ( HWND hwndOwner, SHCONTF grfFlags,  
> IEnumIDList** ppenumIDList )
>      HRESULT BindToObject ( LPCITEMIDLIST pidl, void* pbcReserved,  
> REFGUID riid, void** ppvOut )
>      HRESULT BindToStorage ( LPCITEMIDLIST pidl, void* pbcReserved,  
> REFGUID riid, void** ppvObj )
>      HRESULT CompareIDs ( LPARAM lParam, LPCITEMIDLIST pidl1,  
> LPCITEMIDLIST pidl2 )
>      HRESULT CreateViewObject ( HWND hwndOwner, REFGUID riid, void**  
> ppvOut )
>      HRESULT GetAttributesOf ( UINT cidl, LPCITEMIDLIST* apidl,  
> SFGAOF* rgfInOut )
>      HRESULT GetUIObjectOf ( HWND hwndOwner, UINT cidl, LPCITEMIDLIST*  
> apidl, REFGUID riid, UINT* prgfInOut, void** ppvOut )
>      HRESULT GetDisplayNameOf ( LPCITEMIDLIST pidl, SHGDNF uFlags,  
> STRRET* lpName )
>      HRESULT SetNameOf ( HWND hwnd, LPCITEMIDLIST pidl, LPCOLESTR  
> lpszName, SHGDNF uFlags, LPITEMIDLIST* ppidlOut ) ;
>
> FUNCTION: HRESULT SHGetDesktopFolder ( IShellFolder** ppshf ) ;
>
> f <void*> [ SHGetDesktopFolder ole32-error ] keep *void* ! Get the  
> desktop folder COM object
> IShellFolder-iid com-query-interface                     ! Ask for the  
> IShellFolder interface
> [ f f "c:\\windows\\system32" string>u16-alien "ULONG" <c-object>  
> "ITEMIDLIST" <c-object> "ULONG" <c-object>  
> [ IShellFolder::ParseDisplayName ] 3keep ] with-com-interface
>
> --8<--
>
> I haven't done anything yet to handle implementing COM interfaces in  
> Factor, asidef from some hand-rolled code in the windows.com unit  
> tests that duct-tapes together a test COM class. That'll probably be  
> my next trick.
>
> -Joe
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Factor-talk mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/factor-talk
>
>   


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to