Added hlink.idl.
[wine] / include / hlink.idl
1 /*
2  * Copyright 2005 Jacek Caban
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 import "urlmon.idl";
20
21 interface IHlinkSite;
22 interface IHlinkBrowseContext;
23
24 /*****************************************************************************
25  *    IHlink interface
26  */
27 [
28     object,
29     uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
30     pointer_default(unique)
31 ]
32 interface IHlink: IUnknown
33 {
34     typedef [unique] IHlink *LPHLINK;
35
36     typedef enum {
37         HLNF_INTERNALJUMP          = 0x00000001,
38         HLNF_OPENINNEWWINDOW       = 0x00000002,
39         HLNF_NAVIGATINGBACK        = 0x00000004,
40         HLNF_NAVIGATINGFORWARD     = 0x00000008,
41         HLNF_NAVIGATINGTOSTACKITEM = 0x00000010,
42         HLNF_CREATENOHISTORY       = 0x00000020
43     } HLNF;
44
45     typedef enum {
46         HLINKGETREF_DEFAULT  = 0,
47         HLINKGETREF_ABSOLUTE = 1,
48         HLINKGETREF_RELATIVE = 2,
49     } HLINKGETREF;
50
51     typedef enum {
52         HLFNAMEF_DEFAULT          = 0x00000000,
53         HLFNAMEF_TRYCACHE         = 0x00000001,
54         HLFNAMEF_TRYPRETTYTARGET  = 0x00000002,
55         HLFNAMEF_TRYFULLTARGET    = 0x00000004,
56         HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008
57     } HLFNAMEF;
58
59     typedef enum {
60         HLINKMISC_RELATIVE = 0x00000001,
61     } HLINKMISC;
62
63     typedef enum {
64         HLINKSETF_TARGET   = 0x00000001,
65         HLINKSETF_LOCATION = 0x00000002
66     } HLINKSETF;
67
68     HRESULT SetHlinkSite(
69         [in, unique] IHlinkSite *pihlSite,
70         [in] DWORD dwSiteData);
71
72     HRESULT GetHlinkSite(
73         [out] IHlinkSite **ppihlSite,
74         [out] DWORD *pdwSiteData);
75
76     HRESULT SetMonikerReference(
77         [in] DWORD grfHLSETF,
78         [in, unique] IMoniker *pimkTarget,
79         [in, unique] LPCWSTR pwzLocation);
80
81     HRESULT GetMonikerReference(
82         [in]  DWORD dwWhichRef,
83         [out] IMoniker **ppimkTarget,
84         [out] LPWSTR *ppwzLocation);
85
86     HRESULT SetStringReference(
87         [in] DWORD grfHLSETF,
88         [in, unique] LPCWSTR pwzTarget,
89         [in, unique] LPCWSTR pwzLocation);
90
91     HRESULT GetStringReference(
92         [in]  DWORD dwWhichRef,
93         [out] LPWSTR *ppwzTarget,
94         [out] LPWSTR *ppwzLocation);
95
96     HRESULT SetFriendlyName(
97         [in, unique] LPCWSTR pwzFriendlyName);
98
99     HRESULT GetFriendlyName(
100         [in]  DWORD grfHLFNAMEF,
101         [out] LPWSTR *ppwzFriendlyName);
102
103     HRESULT SetTargetFrameName(
104         [in, unique] LPCWSTR pwzTargetFrameName);
105
106     HRESULT GetTargetFrameName(
107         [out] LPWSTR *ppwzTargetFrameName);
108
109     HRESULT GetMiscStatus(
110         [out] DWORD *pdwStatus);
111
112     HRESULT Navigate(
113         [in] DWORD grfHLNF,
114         [in, unique] LPBC pibc,
115         [in, unique] IBindStatusCallback *pibsc,
116         [in, unique] IHlinkBrowseContext *pihlbc);
117
118     HRESULT SetAdditionalParams(
119         [in, unique] LPCWSTR pwzAdditionalParams);
120
121     HRESULT GetAdditionalParams(
122         [out] LPWSTR *ppwzAdditionalParams);
123 }
124
125 /*****************************************************************************
126  *    IHlink interface
127  */
128 [
129     object,
130     uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
131     pointer_default(unique)
132 ]
133 interface IHlinkSite: IUnknown
134 {
135     typedef [unique] IHlinkSite *LPHLINKSITE;
136
137     typedef enum {
138         HLINKWHICHMK_CONTAINER = 1,
139         HLINKWHICHMK_BASE      = 2,
140     } HLINKWHICHMK;
141
142     HRESULT QueryService(
143         [in] DWORD dwSiteData,
144         [in] REFGUID guidService,
145         [in] REFIID riid,
146         [out, iid_is(riid)] IUnknown **ppiunk);
147
148     HRESULT GetMoniker(
149         [in] DWORD dwSiteData,
150         [in] DWORD dwAssign,
151         [in] DWORD dwWhich,
152         [out] IMoniker **ppimk);
153
154     HRESULT ReadyToNavigate(
155         [in] DWORD dwSiteData,
156         [in] DWORD dwReserved);
157
158     HRESULT OnNavigationComplete(
159         [in] DWORD dwSiteData,
160         [in] DWORD dwreserved,
161         [in] HRESULT hrError,
162         [in, unique] LPCWSTR pwzError);
163 }
164
165 /*****************************************************************************
166  *    IEnumHLITEM interface
167  */
168 [
169     local,
170     object,
171     uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
172     pointer_default(unique)
173 ]
174 interface IEnumHLITEM : IUnknown
175 {
176     typedef [unique] IEnumHLITEM *LPENUMHLITEM;
177
178     typedef struct tagHLITEM {
179         ULONG  uHLID;
180         LPWSTR pwzFriendlyName;
181     } HLITEM;
182     typedef [unique] HLITEM *LPHLITEM;
183
184     HRESULT Next(
185         [in]  ULONG celt,
186         [out] HLITEM *rgelt,
187         [out] ULONG *pceltFetched);
188
189     HRESULT Skip(
190         [in] ULONG celt);
191
192     HRESULT Reset();
193
194     HRESULT Clone(
195         [out] IEnumHLITEM **ppienumhlitem);
196 }
197
198 /*****************************************************************************
199  *    IHlinkBrowseContext interface
200  */
201 [
202     local,
203     object,
204     uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
205     pointer_default(unique)
206 ]
207 interface IHlinkBrowseContext : IUnknown
208 {
209     typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
210
211     enum {
212         HLTB_DOCKEDLEFT    = 0,
213         HLTB_DOCKEDTOP     = 1,
214         HLTB_DOCKEDRIGHT   = 2,
215         HLTB_DOCKEDBOTTOM  = 3,
216         HLTB_FLOATING      = 4
217     };
218
219     typedef struct _tagHLTBINFO {
220         ULONG uDockType;
221         RECT  rcTbPos;
222     } HLTBINFO;
223
224     enum {
225         HLBWIF_HASFRAMEWNDINFO   = 0x00000001,
226         HLBWIF_HASDOCWNDINFO     = 0x00000002,
227         HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004,
228         HLBWIF_DOCWNDMAXIMIZED   = 0x00000008,
229         HLBWIF_HASWEBTOOLBARINFO = 0x00000010,
230         HLBWIF_WEBTOOLBARHIDDEN  = 0x00000020
231     };
232
233     typedef struct _tagHLBWINFO {
234         ULONG    cbSize;
235         DWORD    grfHLBWIF;
236         RECT     rcFramePos;
237         RECT     rcDocPos;
238         HLTBINFO hltbinfo;
239     } HLBWINFO;
240
241     typedef [unique] HLBWINFO *LPHLBWINFO;
242
243     enum {
244         HLID_INVALID     = 0x00000000,
245         HLID_PREVIOUS    = 0xFFFFFFFF,
246         HLID_NEXT        = 0xFFFFFFFE,
247         HLID_CURRENT     = 0xFFFFFFFD,
248         HLID_STACKBOTTOM = 0xFFFFFFFC,
249         HLID_STACKTOP    = 0xFFFFFFFB
250     };
251
252     enum {
253         HLQF_ISVALID   = 0x00000001,
254         HLQF_ISCURRENT = 0x00000002
255     };
256
257     HRESULT Register(
258         [in] DWORD reserved,
259         [in, unique] IUnknown *piunk,
260         [in, unique] IMoniker *pimk,
261         [out] DWORD *pdwRegister);
262
263     HRESULT GetObject(
264         [in, unique] IMoniker *pimk,
265         [in] BOOL fBindIfRootRegistered,
266         [out] IUnknown **ppiunk);
267
268     HRESULT Revoke(
269         [in] DWORD dwRegister);
270
271     HRESULT SetBrowseWindowInfo(
272         [in, unique] HLBWINFO *phlbwi);
273
274     HRESULT GetBrowseWindowInfo(
275         [out] HLBWINFO *phlbwi);
276
277     HRESULT SetInitialHlink(
278         [in, unique] IMoniker * pimkTarget,
279         [in, unique] LPCWSTR pwzLocation,
280         [in, unique] LPCWSTR pwzFriendlyName);
281
282     HRESULT OnNavigateHlink(
283         [in] DWORD grfHLNF,
284         [in, unique] IMoniker *pimkTarget,
285         [in, unique] LPCWSTR pwzLocation,
286         [in, unique] LPCWSTR pwzFriendlyName,
287         [out] ULONG *puHLID);
288
289     HRESULT UpdateHlink(
290         [in] ULONG uHLID,
291         [in, unique] IMoniker *pimkTarget,
292         [in, unique] LPCWSTR pwzLocation,
293         [in, unique] LPCWSTR pwzFriendlyName);
294
295     HRESULT EnumNavigationStack(
296         [in] DWORD dwReserved,
297         [in] DWORD grfHLFNAMEF,
298         [out] IEnumHLITEM **ppienumhlitem);
299
300     HRESULT QueryHlink(
301         [in] DWORD grfHLQF,
302         [in] ULONG uHLID);
303
304     HRESULT GetHlink(
305         [in] ULONG uHLID,
306         [out] IHlink **ppihl);
307
308     HRESULT SetCurrentHlink(
309         [in] ULONG uHLID);
310
311     HRESULT Clone(
312         [in, unique] IUnknown *piunkOuter,
313         [in] REFIID riid,
314         [out, iid_is(riid)] IUnknown **ppiunkObj);
315
316     HRESULT Close(
317         [in] DWORD reserved);
318 }
319
320
321 /*****************************************************************************
322  *    IHlinkTarget interface
323  */
324 [
325     object,
326     uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
327     pointer_default(unique)
328 ]
329 interface IHlinkTarget : IUnknown
330 {
331     typedef [unique] IHlinkTarget *LPHLINKTARGET;
332
333     HRESULT SetBrowseContext(
334         [in, unique] IHlinkBrowseContext *pihlbc);
335
336     HRESULT GetBrowseContext(
337         [out] IHlinkBrowseContext **ppihlbc);
338
339     HRESULT Navigate(
340         [in] DWORD grfHLNF,
341         [in, unique] LPCWSTR pwzJumpLocation);
342
343     HRESULT GetMoniker(
344         [in,unique]  LPCWSTR pwzLocation,
345         [in] DWORD dwAssign,
346         [out] IMoniker **ppimkLocation);
347
348     HRESULT GetFriendlyName(
349         [in,unique]  LPCWSTR pwzLocation,
350         [out] LPWSTR *ppwzFriendlyName);
351 }