Added hlink.idl.
diff --git a/dlls/uuid/uuid.c b/dlls/uuid/uuid.c
index 229a6c6..f38a55d 100644
--- a/dlls/uuid/uuid.c
+++ b/dlls/uuid/uuid.c
@@ -61,6 +61,7 @@
#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 a9587fd..d657a93 100644
--- a/include/.cvsignore
+++ b/include/.cvsignore
@@ -11,6 +11,7 @@
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 e2f7445..8ef0728 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -16,6 +16,7 @@
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 0000000..e478090
--- /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);
+}