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