gdi32: Move the object refcount handling to the SelectObject backend functions.
[wine.git] / include / hlink.idl
blob3e3389175eab44ad5ead963ed254f6d2aedf60bb
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 import "urlmon.idl";
21 interface IHlink;
22 interface IHlinkSite;
23 interface IHlinkFrame;
24 interface IHlinkBrowseContext;
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*);")
39 cpp_quote("#define SID_SHlinkFrame IID_IHlinkFrame")
41 /*****************************************************************************
42 * IHlink interface
45 object,
46 uuid(79EAC9C3-BAF9-11CE-8C82-00AA004BA90B),
47 pointer_default(unique)
49 interface IHlink: IUnknown
51 typedef [unique] IHlink *LPHLINK;
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;
62 typedef enum {
63 HLINKGETREF_DEFAULT = 0,
64 HLINKGETREF_ABSOLUTE = 1,
65 HLINKGETREF_RELATIVE = 2,
66 } HLINKGETREF;
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;
76 typedef enum {
77 HLINKMISC_RELATIVE = 0x00000001,
78 } HLINKMISC;
80 typedef enum {
81 HLINKSETF_TARGET = 0x00000001,
82 HLINKSETF_LOCATION = 0x00000002
83 } HLINKSETF;
85 HRESULT SetHlinkSite(
86 [in, unique] IHlinkSite *pihlSite,
87 [in] DWORD dwSiteData);
89 HRESULT GetHlinkSite(
90 [out] IHlinkSite **ppihlSite,
91 [out] DWORD *pdwSiteData);
93 HRESULT SetMonikerReference(
94 [in] DWORD grfHLSETF,
95 [in, unique] IMoniker *pimkTarget,
96 [in, unique] LPCWSTR pwzLocation);
98 HRESULT GetMonikerReference(
99 [in] DWORD dwWhichRef,
100 [out] IMoniker **ppimkTarget,
101 [out] LPWSTR *ppwzLocation);
103 HRESULT SetStringReference(
104 [in] DWORD grfHLSETF,
105 [in, unique] LPCWSTR pwzTarget,
106 [in, unique] LPCWSTR pwzLocation);
108 HRESULT GetStringReference(
109 [in] DWORD dwWhichRef,
110 [out] LPWSTR *ppwzTarget,
111 [out] LPWSTR *ppwzLocation);
113 HRESULT SetFriendlyName(
114 [in, unique] LPCWSTR pwzFriendlyName);
116 HRESULT GetFriendlyName(
117 [in] DWORD grfHLFNAMEF,
118 [out] LPWSTR *ppwzFriendlyName);
120 HRESULT SetTargetFrameName(
121 [in, unique] LPCWSTR pwzTargetFrameName);
123 HRESULT GetTargetFrameName(
124 [out] LPWSTR *ppwzTargetFrameName);
126 HRESULT GetMiscStatus(
127 [out] DWORD *pdwStatus);
129 HRESULT Navigate(
130 [in] DWORD grfHLNF,
131 [in, unique] LPBC pibc,
132 [in, unique] IBindStatusCallback *pibsc,
133 [in, unique] IHlinkBrowseContext *pihlbc);
135 HRESULT SetAdditionalParams(
136 [in, unique] LPCWSTR pwzAdditionalParams);
138 HRESULT GetAdditionalParams(
139 [out] LPWSTR *ppwzAdditionalParams);
142 /*****************************************************************************
143 * IHlink interface
146 object,
147 uuid(79EAC9C2-BAF9-11CE-8C82-00AA004BA90B),
148 pointer_default(unique)
150 interface IHlinkSite: IUnknown
152 typedef [unique] IHlinkSite *LPHLINKSITE;
154 typedef enum {
155 HLINKWHICHMK_CONTAINER = 1,
156 HLINKWHICHMK_BASE = 2,
157 } HLINKWHICHMK;
159 HRESULT QueryService(
160 [in] DWORD dwSiteData,
161 [in] REFGUID guidService,
162 [in] REFIID riid,
163 [out, iid_is(riid)] IUnknown **ppiunk);
165 HRESULT GetMoniker(
166 [in] DWORD dwSiteData,
167 [in] DWORD dwAssign,
168 [in] DWORD dwWhich,
169 [out] IMoniker **ppimk);
171 HRESULT ReadyToNavigate(
172 [in] DWORD dwSiteData,
173 [in] DWORD dwReserved);
175 HRESULT OnNavigationComplete(
176 [in] DWORD dwSiteData,
177 [in] DWORD dwreserved,
178 [in] HRESULT hrError,
179 [in, unique] LPCWSTR pwzError);
182 /*****************************************************************************
183 * IEnumHLITEM interface
186 local,
187 object,
188 uuid(79EAC9C6-BAF9-11CE-8C82-00AA004BA90B),
189 pointer_default(unique)
191 interface IEnumHLITEM : IUnknown
193 typedef [unique] IEnumHLITEM *LPENUMHLITEM;
195 typedef struct tagHLITEM {
196 ULONG uHLID;
197 LPWSTR pwzFriendlyName;
198 } HLITEM;
199 typedef [unique] HLITEM *LPHLITEM;
201 HRESULT Next(
202 [in] ULONG celt,
203 [out] HLITEM *rgelt,
204 [out] ULONG *pceltFetched);
206 HRESULT Skip(
207 [in] ULONG celt);
209 HRESULT Reset();
211 HRESULT Clone(
212 [out] IEnumHLITEM **ppienumhlitem);
215 /*****************************************************************************
216 * IHlinkBrowseContext interface
219 local,
220 object,
221 uuid(79EAC9C7-BAF9-11CE-8C82-00AA004BA90B),
222 pointer_default(unique)
224 interface IHlinkBrowseContext : IUnknown
226 typedef [unique] IHlinkBrowseContext *LPHLINKBROWSECONTEXT;
228 enum {
229 HLTB_DOCKEDLEFT = 0,
230 HLTB_DOCKEDTOP = 1,
231 HLTB_DOCKEDRIGHT = 2,
232 HLTB_DOCKEDBOTTOM = 3,
233 HLTB_FLOATING = 4
236 typedef struct _tagHLTBINFO {
237 ULONG uDockType;
238 RECT rcTbPos;
239 } HLTBINFO;
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
250 typedef struct _tagHLBWINFO {
251 ULONG cbSize;
252 DWORD grfHLBWIF;
253 RECT rcFramePos;
254 RECT rcDocPos;
255 HLTBINFO hltbinfo;
256 } HLBWINFO;
258 typedef [unique] HLBWINFO *LPHLBWINFO;
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
269 enum {
270 HLQF_ISVALID = 0x00000001,
271 HLQF_ISCURRENT = 0x00000002
274 HRESULT Register(
275 [in] DWORD reserved,
276 [in, unique] IUnknown *piunk,
277 [in, unique] IMoniker *pimk,
278 [out] DWORD *pdwRegister);
280 HRESULT GetObject(
281 [in, unique] IMoniker *pimk,
282 [in] BOOL fBindIfRootRegistered,
283 [out] IUnknown **ppiunk);
285 HRESULT Revoke(
286 [in] DWORD dwRegister);
288 HRESULT SetBrowseWindowInfo(
289 [in, unique] HLBWINFO *phlbwi);
291 HRESULT GetBrowseWindowInfo(
292 [out] HLBWINFO *phlbwi);
294 HRESULT SetInitialHlink(
295 [in, unique] IMoniker * pimkTarget,
296 [in, unique] LPCWSTR pwzLocation,
297 [in, unique] LPCWSTR pwzFriendlyName);
299 HRESULT OnNavigateHlink(
300 [in] DWORD grfHLNF,
301 [in, unique] IMoniker *pimkTarget,
302 [in, unique] LPCWSTR pwzLocation,
303 [in, unique] LPCWSTR pwzFriendlyName,
304 [out] ULONG *puHLID);
306 HRESULT UpdateHlink(
307 [in] ULONG uHLID,
308 [in, unique] IMoniker *pimkTarget,
309 [in, unique] LPCWSTR pwzLocation,
310 [in, unique] LPCWSTR pwzFriendlyName);
312 HRESULT EnumNavigationStack(
313 [in] DWORD dwReserved,
314 [in] DWORD grfHLFNAMEF,
315 [out] IEnumHLITEM **ppienumhlitem);
317 HRESULT QueryHlink(
318 [in] DWORD grfHLQF,
319 [in] ULONG uHLID);
321 HRESULT GetHlink(
322 [in] ULONG uHLID,
323 [out] IHlink **ppihl);
325 HRESULT SetCurrentHlink(
326 [in] ULONG uHLID);
328 HRESULT Clone(
329 [in, unique] IUnknown *piunkOuter,
330 [in] REFIID riid,
331 [out, iid_is(riid)] IUnknown **ppiunkObj);
333 HRESULT Close(
334 [in] DWORD reserved);
338 /*****************************************************************************
339 * IHlinkTarget interface
342 object,
343 uuid(79EAC9C4-BAF9-11CE-8C82-00AA004BA90B),
344 pointer_default(unique)
346 interface IHlinkTarget : IUnknown
348 typedef [unique] IHlinkTarget *LPHLINKTARGET;
350 HRESULT SetBrowseContext(
351 [in, unique] IHlinkBrowseContext *pihlbc);
353 HRESULT GetBrowseContext(
354 [out] IHlinkBrowseContext **ppihlbc);
356 HRESULT Navigate(
357 [in] DWORD grfHLNF,
358 [in, unique] LPCWSTR pwzJumpLocation);
360 HRESULT GetMoniker(
361 [in,unique] LPCWSTR pwzLocation,
362 [in] DWORD dwAssign,
363 [out] IMoniker **ppimkLocation);
365 HRESULT GetFriendlyName(
366 [in,unique] LPCWSTR pwzLocation,
367 [out] LPWSTR *ppwzFriendlyName);
370 /*****************************************************************************
371 * IHlinkFrame interface
374 object,
375 uuid(79eac9c5-baf9-11ce-8c82-00aa004ba90b),
376 pointer_default(unique)
379 interface IHlinkFrame : IUnknown
381 typedef IHlinkFrame *LPHLINKFRAME;
383 HRESULT SetBrowseContext(
384 [in, unique] IHlinkBrowseContext * pihlbc);
385 HRESULT GetBrowseContext(
386 [out] IHlinkBrowseContext ** ppihlbc);
387 HRESULT Navigate(
388 [in] DWORD grfHLNF,
389 [in, unique] LPBC pbc,
390 [in, unique] IBindStatusCallback *pibsc,
391 [in, unique] IHlink *pihlNavigate);
392 HRESULT OnNavigate(
393 [in] DWORD grfHLNF,
394 [in, unique] IMoniker *pimkTarget,
395 [in, unique] LPCWSTR pwzLocation,
396 [in, unique] LPCWSTR pwzFriendlyName,
397 [in] DWORD dwreserved);
398 HRESULT UpdateHlink(
399 [in] ULONG uHLID,
400 [in, unique] IMoniker *pimkTarget,
401 [in, unique] LPCWSTR pwzLocation,
402 [in, unique] LPCWSTR pwzFriendlyName);