gdi: Metafile records must be at least 3 words long.
[wine/hacks.git] / include / hlink.idl
blobcadaae2babcce1403b9fdab9e390cdaa7618d46b
1 /*
2 * Copyright 2005 Jacek Caban
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.
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.
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
19 import "urlmon.idl";
21 interface IHlinkSite;
22 interface IHlinkBrowseContext;
24 /*****************************************************************************
25 * IHlink interface
28 object,
29 uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
30 pointer_default(unique)
32 interface IHlink: IUnknown
34 typedef [unique] IHlink *LPHLINK;
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;
45 typedef enum {
46 HLINKGETREF_DEFAULT = 0,
47 HLINKGETREF_ABSOLUTE = 1,
48 HLINKGETREF_RELATIVE = 2,
49 } HLINKGETREF;
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;
59 typedef enum {
60 HLINKMISC_RELATIVE = 0x00000001,
61 } HLINKMISC;
63 typedef enum {
64 HLINKSETF_TARGET = 0x00000001,
65 HLINKSETF_LOCATION = 0x00000002
66 } HLINKSETF;
68 HRESULT SetHlinkSite(
69 [in, unique] IHlinkSite *pihlSite,
70 [in] DWORD dwSiteData);
72 HRESULT GetHlinkSite(
73 [out] IHlinkSite **ppihlSite,
74 [out] DWORD *pdwSiteData);
76 HRESULT SetMonikerReference(
77 [in] DWORD grfHLSETF,
78 [in, unique] IMoniker *pimkTarget,
79 [in, unique] LPCWSTR pwzLocation);
81 HRESULT GetMonikerReference(
82 [in] DWORD dwWhichRef,
83 [out] IMoniker **ppimkTarget,
84 [out] LPWSTR *ppwzLocation);
86 HRESULT SetStringReference(
87 [in] DWORD grfHLSETF,
88 [in, unique] LPCWSTR pwzTarget,
89 [in, unique] LPCWSTR pwzLocation);
91 HRESULT GetStringReference(
92 [in] DWORD dwWhichRef,
93 [out] LPWSTR *ppwzTarget,
94 [out] LPWSTR *ppwzLocation);
96 HRESULT SetFriendlyName(
97 [in, unique] LPCWSTR pwzFriendlyName);
99 HRESULT GetFriendlyName(
100 [in] DWORD grfHLFNAMEF,
101 [out] LPWSTR *ppwzFriendlyName);
103 HRESULT SetTargetFrameName(
104 [in, unique] LPCWSTR pwzTargetFrameName);
106 HRESULT GetTargetFrameName(
107 [out] LPWSTR *ppwzTargetFrameName);
109 HRESULT GetMiscStatus(
110 [out] DWORD *pdwStatus);
112 HRESULT Navigate(
113 [in] DWORD grfHLNF,
114 [in, unique] LPBC pibc,
115 [in, unique] IBindStatusCallback *pibsc,
116 [in, unique] IHlinkBrowseContext *pihlbc);
118 HRESULT SetAdditionalParams(
119 [in, unique] LPCWSTR pwzAdditionalParams);
121 HRESULT GetAdditionalParams(
122 [out] LPWSTR *ppwzAdditionalParams);
125 /*****************************************************************************
126 * IHlink interface
129 object,
130 uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
131 pointer_default(unique)
133 interface IHlinkSite: IUnknown
135 typedef [unique] IHlinkSite *LPHLINKSITE;
137 typedef enum {
138 HLINKWHICHMK_CONTAINER = 1,
139 HLINKWHICHMK_BASE = 2,
140 } HLINKWHICHMK;
142 HRESULT QueryService(
143 [in] DWORD dwSiteData,
144 [in] REFGUID guidService,
145 [in] REFIID riid,
146 [out, iid_is(riid)] IUnknown **ppiunk);
148 HRESULT GetMoniker(
149 [in] DWORD dwSiteData,
150 [in] DWORD dwAssign,
151 [in] DWORD dwWhich,
152 [out] IMoniker **ppimk);
154 HRESULT ReadyToNavigate(
155 [in] DWORD dwSiteData,
156 [in] DWORD dwReserved);
158 HRESULT OnNavigationComplete(
159 [in] DWORD dwSiteData,
160 [in] DWORD dwreserved,
161 [in] HRESULT hrError,
162 [in, unique] LPCWSTR pwzError);
165 /*****************************************************************************
166 * IEnumHLITEM interface
169 local,
170 object,
171 uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
172 pointer_default(unique)
174 interface IEnumHLITEM : IUnknown
176 typedef [unique] IEnumHLITEM *LPENUMHLITEM;
178 typedef struct tagHLITEM {
179 ULONG uHLID;
180 LPWSTR pwzFriendlyName;
181 } HLITEM;
182 typedef [unique] HLITEM *LPHLITEM;
184 HRESULT Next(
185 [in] ULONG celt,
186 [out] HLITEM *rgelt,
187 [out] ULONG *pceltFetched);
189 HRESULT Skip(
190 [in] ULONG celt);
192 HRESULT Reset();
194 HRESULT Clone(
195 [out] IEnumHLITEM **ppienumhlitem);
198 /*****************************************************************************
199 * IHlinkBrowseContext interface
202 local,
203 object,
204 uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
205 pointer_default(unique)
207 interface IHlinkBrowseContext : IUnknown
209 typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
211 enum {
212 HLTB_DOCKEDLEFT = 0,
213 HLTB_DOCKEDTOP = 1,
214 HLTB_DOCKEDRIGHT = 2,
215 HLTB_DOCKEDBOTTOM = 3,
216 HLTB_FLOATING = 4
219 typedef struct _tagHLTBINFO {
220 ULONG uDockType;
221 RECT rcTbPos;
222 } HLTBINFO;
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
233 typedef struct _tagHLBWINFO {
234 ULONG cbSize;
235 DWORD grfHLBWIF;
236 RECT rcFramePos;
237 RECT rcDocPos;
238 HLTBINFO hltbinfo;
239 } HLBWINFO;
241 typedef [unique] HLBWINFO *LPHLBWINFO;
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
252 enum {
253 HLQF_ISVALID = 0x00000001,
254 HLQF_ISCURRENT = 0x00000002
257 HRESULT Register(
258 [in] DWORD reserved,
259 [in, unique] IUnknown *piunk,
260 [in, unique] IMoniker *pimk,
261 [out] DWORD *pdwRegister);
263 HRESULT GetObject(
264 [in, unique] IMoniker *pimk,
265 [in] BOOL fBindIfRootRegistered,
266 [out] IUnknown **ppiunk);
268 HRESULT Revoke(
269 [in] DWORD dwRegister);
271 HRESULT SetBrowseWindowInfo(
272 [in, unique] HLBWINFO *phlbwi);
274 HRESULT GetBrowseWindowInfo(
275 [out] HLBWINFO *phlbwi);
277 HRESULT SetInitialHlink(
278 [in, unique] IMoniker * pimkTarget,
279 [in, unique] LPCWSTR pwzLocation,
280 [in, unique] LPCWSTR pwzFriendlyName);
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);
289 HRESULT UpdateHlink(
290 [in] ULONG uHLID,
291 [in, unique] IMoniker *pimkTarget,
292 [in, unique] LPCWSTR pwzLocation,
293 [in, unique] LPCWSTR pwzFriendlyName);
295 HRESULT EnumNavigationStack(
296 [in] DWORD dwReserved,
297 [in] DWORD grfHLFNAMEF,
298 [out] IEnumHLITEM **ppienumhlitem);
300 HRESULT QueryHlink(
301 [in] DWORD grfHLQF,
302 [in] ULONG uHLID);
304 HRESULT GetHlink(
305 [in] ULONG uHLID,
306 [out] IHlink **ppihl);
308 HRESULT SetCurrentHlink(
309 [in] ULONG uHLID);
311 HRESULT Clone(
312 [in, unique] IUnknown *piunkOuter,
313 [in] REFIID riid,
314 [out, iid_is(riid)] IUnknown **ppiunkObj);
316 HRESULT Close(
317 [in] DWORD reserved);
321 /*****************************************************************************
322 * IHlinkTarget interface
325 object,
326 uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
327 pointer_default(unique)
329 interface IHlinkTarget : IUnknown
331 typedef [unique] IHlinkTarget *LPHLINKTARGET;
333 HRESULT SetBrowseContext(
334 [in, unique] IHlinkBrowseContext *pihlbc);
336 HRESULT GetBrowseContext(
337 [out] IHlinkBrowseContext **ppihlbc);
339 HRESULT Navigate(
340 [in] DWORD grfHLNF,
341 [in, unique] LPCWSTR pwzJumpLocation);
343 HRESULT GetMoniker(
344 [in,unique] LPCWSTR pwzLocation,
345 [in] DWORD dwAssign,
346 [out] IMoniker **ppimkLocation);
348 HRESULT GetFriendlyName(
349 [in,unique] LPCWSTR pwzLocation,
350 [out] LPWSTR *ppwzFriendlyName);
353 /*****************************************************************************
354 * IHlinkFrame interface
357 object,
358 uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
359 pointer_default(unique)
362 interface IHlinkFrame : IUnknown
364 typedef IHlinkFrame *LPHLINKFRAME;
366 HRESULT SetBrowseContext(
367 [in, unique] IHlinkBrowseContext * pihlbc);
368 HRESULT GetBrowseContext(
369 [out] IHlinkBrowseContext ** ppihlbc);
370 HRESULT Navigate(
371 [in] DWORD grfHLNF,
372 [in, unique] LPBC pbc,
373 [in, unique] IBindStatusCallback *pibsc,
374 [in, unique] IHlink *pihlNavigate);
375 HRESULT OnNavigate(
376 [in] DWORD grfHLNF,
377 [in, unique] IMoniker *pimkTarget,
378 [in, unique] LPCWSTR pwzLocation,
379 [in, unique] LPCWSTR pwzFriendlyName,
380 [in] DWORD dwreserved);
381 HRESULT UpdateHlink(
382 [in] ULONG uHLID,
383 [in, unique] IMoniker *pimkTarget,
384 [in, unique] LPCWSTR pwzLocation,
385 [in, unique] LPCWSTR pwzFriendlyName);