crypt32: Set last error on alloc failure.
[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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "urlmon.idl";
20
21 interface IHlink;
22 interface IHlinkSite;
23 interface IHlinkFrame;
24 interface IHlinkBrowseContext;
25
26 cpp_quote("HRESULT WINAPI HlinkCreateFromMoniker(IMoniker*, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
27 cpp_quote("HRESULT WINAPI HlinkCreateFromString(LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IUnknown*, REFIID, void**);")
28 cpp_quote("HRESULT WINAPI HlinkCreateFromData(IDataObject*, IHlinkSite*, DWORD dwSiteData, IUnknown*, REFIID, void**);")
29 cpp_quote("HRESULT WINAPI HlinkCreateExtensionServices(LPCWSTR, HWND, LPCWSTR, LPCWSTR, IUnknown*, REFIID, void**);")
30 cpp_quote("HRESULT WINAPI HlinkQueryCreateFromData(IDataObject*);")
31 cpp_quote("HRESULT WINAPI HlinkClone(IHlink*, REFIID, IHlinkSite*, DWORD, void **);")
32 cpp_quote("HRESULT WINAPI HlinkCreateBrowseContext(IUnknown*, REFIID, void **);")
33 cpp_quote("HRESULT WINAPI HlinkNavigateToStringReference(LPCWSTR, LPCWSTR, IHlinkSite*, DWORD, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
34 cpp_quote("HRESULT WINAPI HlinkNavigate(IHlink*, IHlinkFrame*, DWORD, LPBC, IBindStatusCallback*, IHlinkBrowseContext*);")
35 cpp_quote("HRESULT WINAPI HlinkOnNavigate(IHlinkFrame*, IHlinkBrowseContext*, DWORD, IMoniker*, LPCWSTR, LPCWSTR, ULONG*);")
36 cpp_quote("HRESULT WINAPI HlinkIsShortcut(LPCWSTR);")
37 cpp_quote("HRESULT WINAPI HlinkTranslateURL(LPCWSTR,DWORD,LPWSTR*);")
38
39 cpp_quote("#define SID_SHlinkFrame IID_IHlinkFrame")
40
41 /*****************************************************************************
42  *    IHlink interface
43  */
44 [
45     object,
46     uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
47     pointer_default(unique)
48 ]
49 interface IHlink: IUnknown
50 {
51     typedef [unique] IHlink *LPHLINK;
52
53     typedef enum {
54         HLNF_INTERNALJUMP          = 0x00000001,
55         HLNF_OPENINNEWWINDOW       = 0x00000002,
56         HLNF_NAVIGATINGBACK        = 0x00000004,
57         HLNF_NAVIGATINGFORWARD     = 0x00000008,
58         HLNF_NAVIGATINGTOSTACKITEM = 0x00000010,
59         HLNF_CREATENOHISTORY       = 0x00000020
60     } HLNF;
61
62     typedef enum {
63         HLINKGETREF_DEFAULT  = 0,
64         HLINKGETREF_ABSOLUTE = 1,
65         HLINKGETREF_RELATIVE = 2,
66     } HLINKGETREF;
67
68     typedef enum {
69         HLFNAMEF_DEFAULT          = 0x00000000,
70         HLFNAMEF_TRYCACHE         = 0x00000001,
71         HLFNAMEF_TRYPRETTYTARGET  = 0x00000002,
72         HLFNAMEF_TRYFULLTARGET    = 0x00000004,
73         HLFNAMEF_TRYWIN95SHORTCUT = 0x00000008
74     } HLFNAMEF;
75
76     typedef enum {
77         HLINKMISC_RELATIVE = 0x00000001,
78     } HLINKMISC;
79
80     typedef enum {
81         HLINKSETF_TARGET   = 0x00000001,
82         HLINKSETF_LOCATION = 0x00000002
83     } HLINKSETF;
84
85     HRESULT SetHlinkSite(
86         [in, unique] IHlinkSite *pihlSite,
87         [in] DWORD dwSiteData);
88
89     HRESULT GetHlinkSite(
90         [out] IHlinkSite **ppihlSite,
91         [out] DWORD *pdwSiteData);
92
93     HRESULT SetMonikerReference(
94         [in] DWORD grfHLSETF,
95         [in, unique] IMoniker *pimkTarget,
96         [in, unique] LPCWSTR pwzLocation);
97
98     HRESULT GetMonikerReference(
99         [in]  DWORD dwWhichRef,
100         [out] IMoniker **ppimkTarget,
101         [out] LPWSTR *ppwzLocation);
102
103     HRESULT SetStringReference(
104         [in] DWORD grfHLSETF,
105         [in, unique] LPCWSTR pwzTarget,
106         [in, unique] LPCWSTR pwzLocation);
107
108     HRESULT GetStringReference(
109         [in]  DWORD dwWhichRef,
110         [out] LPWSTR *ppwzTarget,
111         [out] LPWSTR *ppwzLocation);
112
113     HRESULT SetFriendlyName(
114         [in, unique] LPCWSTR pwzFriendlyName);
115
116     HRESULT GetFriendlyName(
117         [in]  DWORD grfHLFNAMEF,
118         [out] LPWSTR *ppwzFriendlyName);
119
120     HRESULT SetTargetFrameName(
121         [in, unique] LPCWSTR pwzTargetFrameName);
122
123     HRESULT GetTargetFrameName(
124         [out] LPWSTR *ppwzTargetFrameName);
125
126     HRESULT GetMiscStatus(
127         [out] DWORD *pdwStatus);
128
129     HRESULT Navigate(
130         [in] DWORD grfHLNF,
131         [in, unique] LPBC pibc,
132         [in, unique] IBindStatusCallback *pibsc,
133         [in, unique] IHlinkBrowseContext *pihlbc);
134
135     HRESULT SetAdditionalParams(
136         [in, unique] LPCWSTR pwzAdditionalParams);
137
138     HRESULT GetAdditionalParams(
139         [out] LPWSTR *ppwzAdditionalParams);
140 }
141
142 /*****************************************************************************
143  *    IHlink interface
144  */
145 [
146     object,
147     uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
148     pointer_default(unique)
149 ]
150 interface IHlinkSite: IUnknown
151 {
152     typedef [unique] IHlinkSite *LPHLINKSITE;
153
154     typedef enum {
155         HLINKWHICHMK_CONTAINER = 1,
156         HLINKWHICHMK_BASE      = 2,
157     } HLINKWHICHMK;
158
159     HRESULT QueryService(
160         [in] DWORD dwSiteData,
161         [in] REFGUID guidService,
162         [in] REFIID riid,
163         [out, iid_is(riid)] IUnknown **ppiunk);
164
165     HRESULT GetMoniker(
166         [in] DWORD dwSiteData,
167         [in] DWORD dwAssign,
168         [in] DWORD dwWhich,
169         [out] IMoniker **ppimk);
170
171     HRESULT ReadyToNavigate(
172         [in] DWORD dwSiteData,
173         [in] DWORD dwReserved);
174
175     HRESULT OnNavigationComplete(
176         [in] DWORD dwSiteData,
177         [in] DWORD dwreserved,
178         [in] HRESULT hrError,
179         [in, unique] LPCWSTR pwzError);
180 }
181
182 /*****************************************************************************
183  *    IEnumHLITEM interface
184  */
185 [
186     local,
187     object,
188     uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
189     pointer_default(unique)
190 ]
191 interface IEnumHLITEM : IUnknown
192 {
193     typedef [unique] IEnumHLITEM *LPENUMHLITEM;
194
195     typedef struct tagHLITEM {
196         ULONG  uHLID;
197         LPWSTR pwzFriendlyName;
198     } HLITEM;
199     typedef [unique] HLITEM *LPHLITEM;
200
201     HRESULT Next(
202         [in]  ULONG celt,
203         [out] HLITEM *rgelt,
204         [out] ULONG *pceltFetched);
205
206     HRESULT Skip(
207         [in] ULONG celt);
208
209     HRESULT Reset();
210
211     HRESULT Clone(
212         [out] IEnumHLITEM **ppienumhlitem);
213 }
214
215 /*****************************************************************************
216  *    IHlinkBrowseContext interface
217  */
218 [
219     local,
220     object,
221     uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
222     pointer_default(unique)
223 ]
224 interface IHlinkBrowseContext : IUnknown
225 {
226     typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
227
228     enum {
229         HLTB_DOCKEDLEFT    = 0,
230         HLTB_DOCKEDTOP     = 1,
231         HLTB_DOCKEDRIGHT   = 2,
232         HLTB_DOCKEDBOTTOM  = 3,
233         HLTB_FLOATING      = 4
234     };
235
236     typedef struct _tagHLTBINFO {
237         ULONG uDockType;
238         RECT  rcTbPos;
239     } HLTBINFO;
240
241     enum {
242         HLBWIF_HASFRAMEWNDINFO   = 0x00000001,
243         HLBWIF_HASDOCWNDINFO     = 0x00000002,
244         HLBWIF_FRAMEWNDMAXIMIZED = 0x00000004,
245         HLBWIF_DOCWNDMAXIMIZED   = 0x00000008,
246         HLBWIF_HASWEBTOOLBARINFO = 0x00000010,
247         HLBWIF_WEBTOOLBARHIDDEN  = 0x00000020
248     };
249
250     typedef struct _tagHLBWINFO {
251         ULONG    cbSize;
252         DWORD    grfHLBWIF;
253         RECT     rcFramePos;
254         RECT     rcDocPos;
255         HLTBINFO hltbinfo;
256     } HLBWINFO;
257
258     typedef [unique] HLBWINFO *LPHLBWINFO;
259
260     enum {
261         HLID_INVALID     = 0x00000000,
262         HLID_PREVIOUS    = 0xFFFFFFFF,
263         HLID_NEXT        = 0xFFFFFFFE,
264         HLID_CURRENT     = 0xFFFFFFFD,
265         HLID_STACKBOTTOM = 0xFFFFFFFC,
266         HLID_STACKTOP    = 0xFFFFFFFB
267     };
268
269     enum {
270         HLQF_ISVALID   = 0x00000001,
271         HLQF_ISCURRENT = 0x00000002
272     };
273
274     HRESULT Register(
275         [in] DWORD reserved,
276         [in, unique] IUnknown *piunk,
277         [in, unique] IMoniker *pimk,
278         [out] DWORD *pdwRegister);
279
280 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
281 cpp_quote("#undef GetObject")
282 cpp_quote("#endif")
283
284     HRESULT GetObject(
285         [in, unique] IMoniker *pimk,
286         [in] BOOL fBindIfRootRegistered,
287         [out] IUnknown **ppiunk);
288
289     HRESULT Revoke(
290         [in] DWORD dwRegister);
291
292     HRESULT SetBrowseWindowInfo(
293         [in, unique] HLBWINFO *phlbwi);
294
295     HRESULT GetBrowseWindowInfo(
296         [out] HLBWINFO *phlbwi);
297
298     HRESULT SetInitialHlink(
299         [in, unique] IMoniker * pimkTarget,
300         [in, unique] LPCWSTR pwzLocation,
301         [in, unique] LPCWSTR pwzFriendlyName);
302
303     HRESULT OnNavigateHlink(
304         [in] DWORD grfHLNF,
305         [in, unique] IMoniker *pimkTarget,
306         [in, unique] LPCWSTR pwzLocation,
307         [in, unique] LPCWSTR pwzFriendlyName,
308         [out] ULONG *puHLID);
309
310     HRESULT UpdateHlink(
311         [in] ULONG uHLID,
312         [in, unique] IMoniker *pimkTarget,
313         [in, unique] LPCWSTR pwzLocation,
314         [in, unique] LPCWSTR pwzFriendlyName);
315
316     HRESULT EnumNavigationStack(
317         [in] DWORD dwReserved,
318         [in] DWORD grfHLFNAMEF,
319         [out] IEnumHLITEM **ppienumhlitem);
320
321     HRESULT QueryHlink(
322         [in] DWORD grfHLQF,
323         [in] ULONG uHLID);
324
325     HRESULT GetHlink(
326         [in] ULONG uHLID,
327         [out] IHlink **ppihl);
328
329     HRESULT SetCurrentHlink(
330         [in] ULONG uHLID);
331
332     HRESULT Clone(
333         [in, unique] IUnknown *piunkOuter,
334         [in] REFIID riid,
335         [out, iid_is(riid)] IUnknown **ppiunkObj);
336
337     HRESULT Close(
338         [in] DWORD reserved);
339 }
340
341
342 /*****************************************************************************
343  *    IHlinkTarget interface
344  */
345 [
346     object,
347     uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
348     pointer_default(unique)
349 ]
350 interface IHlinkTarget : IUnknown
351 {
352     typedef [unique] IHlinkTarget *LPHLINKTARGET;
353
354     HRESULT SetBrowseContext(
355         [in, unique] IHlinkBrowseContext *pihlbc);
356
357     HRESULT GetBrowseContext(
358         [out] IHlinkBrowseContext **ppihlbc);
359
360     HRESULT Navigate(
361         [in] DWORD grfHLNF,
362         [in, unique] LPCWSTR pwzJumpLocation);
363
364     HRESULT GetMoniker(
365         [in,unique]  LPCWSTR pwzLocation,
366         [in] DWORD dwAssign,
367         [out] IMoniker **ppimkLocation);
368
369     HRESULT GetFriendlyName(
370         [in,unique]  LPCWSTR pwzLocation,
371         [out] LPWSTR *ppwzFriendlyName);
372 }
373
374 /*****************************************************************************
375  *    IHlinkFrame interface
376  */
377 [
378     object,
379     uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
380     pointer_default(unique)
381 ]
382
383 interface IHlinkFrame : IUnknown
384 {
385     typedef IHlinkFrame *LPHLINKFRAME;
386
387     HRESULT SetBrowseContext( 
388         [in, unique] IHlinkBrowseContext * pihlbc);
389     HRESULT GetBrowseContext( 
390         [out] IHlinkBrowseContext ** ppihlbc);
391     HRESULT Navigate( 
392         [in] DWORD grfHLNF, 
393         [in, unique] LPBC pbc, 
394         [in, unique] IBindStatusCallback *pibsc, 
395         [in, unique] IHlink *pihlNavigate);
396     HRESULT OnNavigate( 
397         [in] DWORD grfHLNF, 
398         [in, unique] IMoniker *pimkTarget, 
399         [in, unique] LPCWSTR pwzLocation, 
400         [in, unique] LPCWSTR pwzFriendlyName, 
401         [in] DWORD dwreserved);
402     HRESULT UpdateHlink( 
403         [in] ULONG uHLID, 
404         [in, unique] IMoniker *pimkTarget, 
405         [in, unique] LPCWSTR pwzLocation, 
406         [in, unique] LPCWSTR pwzFriendlyName);
407 }