diff --git a/dlls/uuid/uuid.c b/dlls/uuid/uuid.c index 229a6c64160..f38a55d3535 100644 --- a/dlls/uuid/uuid.c +++ b/dlls/uuid/uuid.c @@ -61,6 +61,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0); #include "xmldom.h" #include "downloadmgr.h" #include "objsel.h" +#include "hlink.h" /* FIXME: cguids declares GUIDs but does not define their values */ diff --git a/include/.cvsignore b/include/.cvsignore index a9587fdc28e..d657a9317cc 100644 --- a/include/.cvsignore +++ b/include/.cvsignore @@ -11,6 +11,7 @@ dispex.h docobj.h downloadmgr.h exdisp.h +hlink.h mediaobj.h mimeinfo.h mlang.h diff --git a/include/Makefile.in b/include/Makefile.in index e2f7445fda8..8ef0728cf6b 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -16,6 +16,7 @@ IDL_SRCS = \ docobj.idl \ downloadmgr.idl \ exdisp.idl \ + hlink.idl \ mediaobj.idl \ mimeinfo.idl \ mlang.idl \ diff --git a/include/hlink.idl b/include/hlink.idl new file mode 100644 index 00000000000..e4780905352 --- /dev/null +++ b/include/hlink.idl @@ -0,0 +1,351 @@ +/* + * Copyright 2005 Jacek Caban + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +import "urlmon.idl"; + +interface IHlinkSite; +interface IHlinkBrowseContext; + +/***************************************************************************** + * IHlink interface + */ +[ + object, + uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHlink: IUnknown +{ + typedef [unique] IHlink *LPHLINK; + + typedef enum { + HLNF_INTERNALJUMP = 0x00000001, + HLNF_OPENINNEWWINDOW = 0x00000002, + HLNF_NAVIGATINGBACK = 0x00000004, + HLNF_NAVIGATINGFORWARD = 0x00000008, + HLNF_NAVIGATINGTOSTACKITEM = 0x00000010, + HLNF_CREATENOHISTORY = 0x00000020 + } HLNF; + + typedef enum { + HLINKGETREF_DEFAULT = 0, + HLINKGETREF_ABSOLUTE = 1, + HLINKGETREF_RELATIVE = 2, + } HLINKGETREF; + + typedef enum { + HLFNAMEF_DEFAULT = 0x00000000, + HLFNAMEF_TRYCACHE = 0x00000001, + HLFNAMEF_TRYPRETTYTARGET = 0x00000002, + HLFNAMEF_TRYFULLTARGET = 0x00000004, + HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008 + } HLFNAMEF; + + typedef enum { + HLINKMISC_RELATIVE = 0x00000001, + } HLINKMISC; + + typedef enum { + HLINKSETF_TARGET = 0x00000001, + HLINKSETF_LOCATION = 0x00000002 + } HLINKSETF; + + HRESULT SetHlinkSite( + [in, unique] IHlinkSite *pihlSite, + [in] DWORD dwSiteData); + + HRESULT GetHlinkSite( + [out] IHlinkSite **ppihlSite, + [out] DWORD *pdwSiteData); + + HRESULT SetMonikerReference( + [in] DWORD grfHLSETF, + [in, unique] IMoniker *pimkTarget, + [in, unique] LPCWSTR pwzLocation); + + HRESULT GetMonikerReference( + [in] DWORD dwWhichRef, + [out] IMoniker **ppimkTarget, + [out] LPWSTR *ppwzLocation); + + HRESULT SetStringReference( + [in] DWORD grfHLSETF, + [in, unique] LPCWSTR pwzTarget, + [in, unique] LPCWSTR pwzLocation); + + HRESULT GetStringReference( + [in] DWORD dwWhichRef, + [out] LPWSTR *ppwzTarget, + [out] LPWSTR *ppwzLocation); + + HRESULT SetFriendlyName( + [in, unique] LPCWSTR pwzFriendlyName); + + HRESULT GetFriendlyName( + [in] DWORD grfHLFNAMEF, + [out] LPWSTR *ppwzFriendlyName); + + HRESULT SetTargetFrameName( + [in, unique] LPCWSTR pwzTargetFrameName); + + HRESULT GetTargetFrameName( + [out] LPWSTR *ppwzTargetFrameName); + + HRESULT GetMiscStatus( + [out] DWORD *pdwStatus); + + HRESULT Navigate( + [in] DWORD grfHLNF, + [in, unique] LPBC pibc, + [in, unique] IBindStatusCallback *pibsc, + [in, unique] IHlinkBrowseContext *pihlbc); + + HRESULT SetAdditionalParams( + [in, unique] LPCWSTR pwzAdditionalParams); + + HRESULT GetAdditionalParams( + [out] LPWSTR *ppwzAdditionalParams); +} + +/***************************************************************************** + * IHlink interface + */ +[ + object, + uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHlinkSite: IUnknown +{ + typedef [unique] IHlinkSite *LPHLINKSITE; + + typedef enum { + HLINKWHICHMK_CONTAINER = 1, + HLINKWHICHMK_BASE = 2, + } HLINKWHICHMK; + + HRESULT QueryService( + [in] DWORD dwSiteData, + [in] REFGUID guidService, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppiunk); + + HRESULT GetMoniker( + [in] DWORD dwSiteData, + [in] DWORD dwAssign, + [in] DWORD dwWhich, + [out] IMoniker **ppimk); + + HRESULT ReadyToNavigate( + [in] DWORD dwSiteData, + [in] DWORD dwReserved); + + HRESULT OnNavigationComplete( + [in] DWORD dwSiteData, + [in] DWORD dwreserved, + [in] HRESULT hrError, + [in, unique] LPCWSTR pwzError); +} + +/***************************************************************************** + * IEnumHLITEM interface + */ +[ + local, + object, + uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IEnumHLITEM : IUnknown +{ + typedef [unique] IEnumHLITEM *LPENUMHLITEM; + + typedef struct tagHLITEM { + ULONG uHLID; + LPWSTR pwzFriendlyName; + } HLITEM; + typedef [unique] HLITEM *LPHLITEM; + + HRESULT Next( + [in] ULONG celt, + [out] HLITEM *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [out] IEnumHLITEM **ppienumhlitem); +} + +/***************************************************************************** + * IHlinkBrowseContext interface + */ +[ + local, + object, + uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHlinkBrowseContext : IUnknown +{ + typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT; + + enum { + HLTB_DOCKEDLEFT = 0, + HLTB_DOCKEDTOP = 1, + HLTB_DOCKEDRIGHT = 2, + HLTB_DOCKEDBOTTOM = 3, + HLTB_FLOATING = 4 + }; + + typedef struct _tagHLTBINFO { + ULONG uDockType; + RECT rcTbPos; + } HLTBINFO; + + enum { + HLBWIF_HASFRAMEWNDINFO = 0x00000001, + HLBWIF_HASDOCWNDINFO = 0x00000002, + HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004, + HLBWIF_DOCWNDMAXIMIZED = 0x00000008, + HLBWIF_HASWEBTOOLBARINFO = 0x00000010, + HLBWIF_WEBTOOLBARHIDDEN = 0x00000020 + }; + + typedef struct _tagHLBWINFO { + ULONG cbSize; + DWORD grfHLBWIF; + RECT rcFramePos; + RECT rcDocPos; + HLTBINFO hltbinfo; + } HLBWINFO; + + typedef [unique] HLBWINFO *LPHLBWINFO; + + enum { + HLID_INVALID = 0x00000000, + HLID_PREVIOUS = 0xFFFFFFFF, + HLID_NEXT = 0xFFFFFFFE, + HLID_CURRENT = 0xFFFFFFFD, + HLID_STACKBOTTOM = 0xFFFFFFFC, + HLID_STACKTOP = 0xFFFFFFFB + }; + + enum { + HLQF_ISVALID = 0x00000001, + HLQF_ISCURRENT = 0x00000002 + }; + + HRESULT Register( + [in] DWORD reserved, + [in, unique] IUnknown *piunk, + [in, unique] IMoniker *pimk, + [out] DWORD *pdwRegister); + + HRESULT GetObject( + [in, unique] IMoniker *pimk, + [in] BOOL fBindIfRootRegistered, + [out] IUnknown **ppiunk); + + HRESULT Revoke( + [in] DWORD dwRegister); + + HRESULT SetBrowseWindowInfo( + [in, unique] HLBWINFO *phlbwi); + + HRESULT GetBrowseWindowInfo( + [out] HLBWINFO *phlbwi); + + HRESULT SetInitialHlink( + [in, unique] IMoniker * pimkTarget, + [in, unique] LPCWSTR pwzLocation, + [in, unique] LPCWSTR pwzFriendlyName); + + HRESULT OnNavigateHlink( + [in] DWORD grfHLNF, + [in, unique] IMoniker *pimkTarget, + [in, unique] LPCWSTR pwzLocation, + [in, unique] LPCWSTR pwzFriendlyName, + [out] ULONG *puHLID); + + HRESULT UpdateHlink( + [in] ULONG uHLID, + [in, unique] IMoniker *pimkTarget, + [in, unique] LPCWSTR pwzLocation, + [in, unique] LPCWSTR pwzFriendlyName); + + HRESULT EnumNavigationStack( + [in] DWORD dwReserved, + [in] DWORD grfHLFNAMEF, + [out] IEnumHLITEM **ppienumhlitem); + + HRESULT QueryHlink( + [in] DWORD grfHLQF, + [in] ULONG uHLID); + + HRESULT GetHlink( + [in] ULONG uHLID, + [out] IHlink **ppihl); + + HRESULT SetCurrentHlink( + [in] ULONG uHLID); + + HRESULT Clone( + [in, unique] IUnknown *piunkOuter, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppiunkObj); + + HRESULT Close( + [in] DWORD reserved); +} + + +/***************************************************************************** + * IHlinkTarget interface + */ +[ + object, + uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B), + pointer_default(unique) +] +interface IHlinkTarget : IUnknown +{ + typedef [unique] IHlinkTarget *LPHLINKTARGET; + + HRESULT SetBrowseContext( + [in, unique] IHlinkBrowseContext *pihlbc); + + HRESULT GetBrowseContext( + [out] IHlinkBrowseContext **ppihlbc); + + HRESULT Navigate( + [in] DWORD grfHLNF, + [in, unique] LPCWSTR pwzJumpLocation); + + HRESULT GetMoniker( + [in,unique] LPCWSTR pwzLocation, + [in] DWORD dwAssign, + [out] IMoniker **ppimkLocation); + + HRESULT GetFriendlyName( + [in,unique] LPCWSTR pwzLocation, + [out] LPWSTR *ppwzFriendlyName); +}