From b7852de12f72efc3e9310480eaf9f35bf1f475f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Maxime=20Belleng=C3=A9?= Date: Mon, 19 Apr 2004 19:26:57 +0000 Subject: [PATCH] Add the IAutoComplete and IAutoComplete2 implementation (but methods stubbed for now). --- dlls/shell32/Makefile.in | 1 + dlls/shell32/autocomplete.c | 329 ++++++++++++++++++++++++++++++++++++++++++++ dlls/shell32/debughlp.c | 3 + dlls/shell32/regsvr.c | 6 + dlls/shell32/shell32_main.h | 2 + dlls/shell32/shellole.c | 1 + dlls/uuid/uuid.c | 1 + include/Makefile.in | 1 + include/shldisp.h | 245 +++++++++++++++++++++++++++++++++ include/shldisp.idl | 75 ++++++++++ include/shlguid.h | 2 + 11 files changed, 666 insertions(+) create mode 100644 dlls/shell32/autocomplete.c create mode 100644 include/shldisp.h create mode 100644 include/shldisp.idl diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in index aef7eddcd13..3ac73db41f4 100644 --- a/dlls/shell32/Makefile.in +++ b/dlls/shell32/Makefile.in @@ -13,6 +13,7 @@ SPEC_SRCS16 = $(ALTNAMES:.dll=.spec) C_SRCS = \ authors.c \ + autocomplete.c \ brsfolder.c \ changenotify.c \ classes.c \ diff --git a/dlls/shell32/autocomplete.c b/dlls/shell32/autocomplete.c new file mode 100644 index 00000000000..948c63019bf --- /dev/null +++ b/dlls/shell32/autocomplete.c @@ -0,0 +1,329 @@ +/* + * AutoComplete interfaces implementation. + * + * Copyright 2004 Maxime Bellengé + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include "wine/debug.h" +#include "windef.h" +#include "winbase.h" +#include "winreg.h" +#include "undocshell.h" +#include "shlwapi.h" +#include "winerror.h" +#include "objbase.h" + +#include "pidl.h" +#include "shlguid.h" +#include "shlobj.h" +#include "shldisp.h" +#include "debughlp.h" + +WINE_DEFAULT_DEBUG_CHANNEL(shell); + +typedef struct +{ + ICOM_VFIELD(IAutoComplete); + ICOM_VTABLE (IAutoComplete2) * lpvtblAutoComplete2; + DWORD ref; + BOOL enable; + AUTOCOMPLETEOPTIONS options; +} IAutoCompleteImpl; + +static struct ICOM_VTABLE(IAutoComplete) acvt; +static struct ICOM_VTABLE(IAutoComplete2) ac2vt; + +#define _IAutoComplete2_Offset ((int)(&(((IAutoCompleteImpl*)0)->lpvtblAutoComplete2))) +#define _ICOM_THIS_From_IAutoComplete2(class, name) class* This = (class*)(((char*)name)-_IAutoComplete2_Offset); + +/* + converts This to a interface pointer +*/ +#define _IUnknown_(This) (IUnknown*)&(This->lpVtbl) +#define _IAutoComplete2_(This) (IAutoComplete2*)&(This->lpvtblAutoComplete2) + +/************************************************************************** + * IAutoComplete_Constructor + */ +HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) +{ + IAutoCompleteImpl *lpac; + + if (pUnkOuter && !IsEqualIID (riid, &IID_IUnknown)) + return CLASS_E_NOAGGREGATION; + + lpac = (IAutoCompleteImpl*)HeapAlloc(GetProcessHeap(), + HEAP_ZERO_MEMORY, sizeof(IAutoCompleteImpl)); + if (!lpac) + return E_OUTOFMEMORY; + + lpac->ref = 1; + lpac->lpVtbl = &acvt; + lpac->lpvtblAutoComplete2 = &ac2vt; + lpac->enable = TRUE; + + if (!SUCCEEDED (IUnknown_QueryInterface (_IUnknown_ (lpac), riid, ppv))) { + IUnknown_Release (_IUnknown_ (lpac)); + return E_NOINTERFACE; + } + + TRACE("-- (%p)->\n",lpac); + + return S_OK; +} + +/************************************************************************** + * AutoComplete_QueryInterface + */ +static HRESULT WINAPI IAutoComplete_fnQueryInterface( + IAutoComplete * iface, + REFIID riid, + LPVOID *ppvObj) +{ + ICOM_THIS(IAutoCompleteImpl, iface); + + TRACE("(%p)->(\n\tIID:\t%s,%p)\n", This, shdebugstr_guid(riid), ppvObj); + *ppvObj = NULL; + + if(IsEqualIID(riid, &IID_IUnknown)) + { + *ppvObj = This; + } + else if(IsEqualIID(riid, &IID_IAutoComplete)) + { + *ppvObj = (IAutoComplete*)This; + } + else if(IsEqualIID(riid, &IID_IAutoComplete2)) + { + *ppvObj = _IAutoComplete2_ (This); + } + + if (*ppvObj) + { + IAutoComplete_AddRef((IAutoComplete*)*ppvObj); + TRACE("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj); + return S_OK; + } + TRACE("-- Interface: E_NOINTERFACE\n"); + return E_NOINTERFACE; +} + +/****************************************************************************** + * IAutoComplete_fnAddRef + */ +static ULONG WINAPI IAutoComplete_fnAddRef( + IAutoComplete * iface) +{ + ICOM_THIS(IAutoCompleteImpl,iface); + + TRACE("(%p)->(%lu)\n",This,This->ref); + return ++(This->ref); +} + +/****************************************************************************** + * IAutoComplete_fnRelease + */ +static ULONG WINAPI IAutoComplete_fnRelease( + IAutoComplete * iface) +{ + ICOM_THIS(IAutoCompleteImpl,iface); + + TRACE("(%p)->(%lu)\n",This,This->ref); + + if (!--(This->ref)) { + TRACE(" destroying IAutoComplete(%p)\n",This); + HeapFree(GetProcessHeap(), 0, This); + return 0; + } + return This->ref; +} + +/****************************************************************************** + * IAutoComplete_fnEnable + */ +static HRESULT WINAPI IAutoComplete_fnEnable( + IAutoComplete * iface, + BOOL fEnable) +{ + ICOM_THIS(IAutoCompleteImpl, iface); + + HRESULT hr = S_OK; + + TRACE("(%p)->(%s)\n", This, (fEnable)?"true":"false"); + + This->enable = fEnable; + + return hr; +} + +/****************************************************************************** + * IAutoComplete_fnInit + */ +static HRESULT WINAPI IAutoComplete_fnInit( + IAutoComplete * iface, + HWND hwndEdit, + IUnknown *punkACL, + LPCOLESTR pwzsRegKeyPath, + LPCOLESTR pwszQuickComplete) +{ + ICOM_THIS(IAutoCompleteImpl, iface); + + HRESULT hr = E_NOTIMPL; + + FIXME("(%p)->(0x%08lx, %p, %s, %s) not implemented\n", + This, (long)hwndEdit, punkACL, debugstr_w(pwzsRegKeyPath), debugstr_w(pwszQuickComplete)); + + return hr; +} + +/************************************************************************** + * IAutoComplete_fnVTable + */ +static ICOM_VTABLE (IAutoComplete) acvt = +{ + ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE + IAutoComplete_fnQueryInterface, + IAutoComplete_fnAddRef, + IAutoComplete_fnRelease, + IAutoComplete_fnInit, + IAutoComplete_fnEnable, +}; + +/************************************************************************** + * AutoComplete2_QueryInterface + */ +static HRESULT WINAPI IAutoComplete2_fnQueryInterface( + IAutoComplete2 * iface, + REFIID riid, + LPVOID *ppvObj) +{ + _ICOM_THIS_From_IAutoComplete2(IAutoCompleteImpl, iface); + + TRACE ("(%p)->(%s,%p)\n", This, shdebugstr_guid (riid), ppvObj); + + return IAutoComplete_QueryInterface((IAutoComplete*)This, riid, ppvObj); +} + +/****************************************************************************** + * IAutoComplete2_fnAddRef + */ +static ULONG WINAPI IAutoComplete2_fnAddRef( + IAutoComplete2 * iface) +{ + _ICOM_THIS_From_IAutoComplete2(IAutoCompleteImpl,iface); + + TRACE ("(%p)->(count=%lu)\n", This, This->ref); + + return IAutoComplete2_AddRef((IAutoComplete*)This); +} + +/****************************************************************************** + * IAutoComplete2_fnRelease + */ +static ULONG WINAPI IAutoComplete2_fnRelease( + IAutoComplete2 * iface) +{ + _ICOM_THIS_From_IAutoComplete2(IAutoCompleteImpl,iface); + + TRACE ("(%p)->(count=%lu)\n", This, This->ref); + + return IAutoComplete_Release((IAutoComplete*)This); +} + +/****************************************************************************** + * IAutoComplete2_fnEnable + */ +static HRESULT WINAPI IAutoComplete2_fnEnable( + IAutoComplete2 * iface, + BOOL fEnable) +{ + _ICOM_THIS_From_IAutoComplete2(IAutoCompleteImpl, iface); + + TRACE ("(%p)->(%s)\n", This, (fEnable)?"true":"false"); + + return IAutoComplete_Enable((IAutoComplete*)This, fEnable); +} + +/****************************************************************************** + * IAutoComplete2_fnInit + */ +static HRESULT WINAPI IAutoComplete2_fnInit( + IAutoComplete2 * iface, + HWND hwndEdit, + IUnknown *punkACL, + LPCOLESTR pwzsRegKeyPath, + LPCOLESTR pwszQuickComplete) +{ + _ICOM_THIS_From_IAutoComplete2(IAutoCompleteImpl, iface); + + TRACE("(%p)\n", This); + + return IAutoComplete_Init((IAutoComplete*)This, hwndEdit, punkACL, pwzsRegKeyPath, pwszQuickComplete); +} + +/************************************************************************** + * IAutoComplete_fnGetOptions + */ +static HRESULT WINAPI IAutoComplete2_fnGetOptions( + IAutoComplete2 * iface, + DWORD *pdwFlag) +{ + HRESULT hr = S_OK; + + _ICOM_THIS_From_IAutoComplete2(IAutoCompleteImpl, iface); + + TRACE("(%p) -> (%p)\n", This, pdwFlag); + + *pdwFlag = This->options; + + return hr; +} + +/************************************************************************** + * IAutoComplete_fnSetOptions + */ +static HRESULT WINAPI IAutoComplete2_fnSetOptions( + IAutoComplete2 * iface, + DWORD dwFlag) +{ + HRESULT hr = S_OK; + + _ICOM_THIS_From_IAutoComplete2(IAutoCompleteImpl, iface); + + FIXME("(%p) -> (0x%lx) not implemented\n", This, dwFlag); + + return hr; +} + +/************************************************************************** + * IAutoComplete2_fnVTable + */ +static ICOM_VTABLE (IAutoComplete2) ac2vt = +{ + ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE + IAutoComplete2_fnQueryInterface, + IAutoComplete2_fnAddRef, + IAutoComplete2_fnRelease, + IAutoComplete2_fnInit, + IAutoComplete2_fnEnable, + /* IAutoComplete2 */ + IAutoComplete2_fnSetOptions, + IAutoComplete2_fnGetOptions, +}; diff --git a/dlls/shell32/debughlp.c b/dlls/shell32/debughlp.c index 2c5ab564758..1b0609aae4f 100644 --- a/dlls/shell32/debughlp.c +++ b/dlls/shell32/debughlp.c @@ -26,6 +26,7 @@ #include "wingdi.h" #include "pidl.h" #include "shlguid.h" +#include "shldisp.h" #include "wine/debug.h" #include "debughlp.h" #include "docobj.h" @@ -299,6 +300,8 @@ static struct { {&IID_IExtractIconA, "IID_IExtractIconA"}, {&IID_IExtractIconW, "IID_IExtractIconW"}, {&IID_IDataObject, "IID_IDataObject"}, + {&IID_IAutoComplete, "IID_IAutoComplete"}, + {&IID_IAutoComplete2, "IID_IAutoComplete2"}, {NULL,NULL}}; const char * shdebugstr_guid( const struct _GUID *id ) diff --git a/dlls/shell32/regsvr.c b/dlls/shell32/regsvr.c index 396a377b28c..e3f46ddf44c 100644 --- a/dlls/shell32/regsvr.c +++ b/dlls/shell32/regsvr.c @@ -489,6 +489,12 @@ static struct regsvr_coclass const coclass_list[] = { "Apartment", SHELLEX_MAYCHANGEDEFAULTMENU }, + { &CLSID_AutoComplete, + "AutoComplete", + NULL, + "shell32.dll", + "Apartment", + }, { NULL } /* list terminator */ }; diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h index 13a8d8213c1..8132fb96800 100644 --- a/dlls/shell32/shell32_main.h +++ b/dlls/shell32/shell32_main.h @@ -97,6 +97,8 @@ HRESULT WINAPI CPanel_GetIconLocationW(LPITEMIDLIST pidl, LPWSTR szIconFile, UIN HRESULT WINAPI CPanel_ExtractIconA(LPITEMIDLIST pidl, LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize); HRESULT WINAPI CPanel_ExtractIconW(LPITEMIDLIST pidl, LPCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize); +HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv); + LPEXTRACTICONA IExtractIconA_Constructor(LPCITEMIDLIST); LPEXTRACTICONW IExtractIconW_Constructor(LPCITEMIDLIST); HRESULT CreateStreamOnFile (LPCWSTR pszFilename, DWORD grfMode, IStream ** ppstm); diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c index 5ffed9b2d42..b833158099e 100644 --- a/dlls/shell32/shellole.c +++ b/dlls/shell32/shellole.c @@ -68,6 +68,7 @@ struct { {&CLSID_ShellLink, &IShellLink_Constructor}, {&CLSID_DragDropHelper, &IDropTargetHelper_Constructor}, {&CLSID_ControlPanel, &IControlPanel_Constructor}, + {&CLSID_AutoComplete, &IAutoComplete_Constructor}, {NULL,NULL} }; diff --git a/dlls/uuid/uuid.c b/dlls/uuid/uuid.c index 494f5cf9553..ed0dd1284ab 100644 --- a/dlls/uuid/uuid.c +++ b/dlls/uuid/uuid.c @@ -48,6 +48,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0); #include "shlguid.h" #include "shlobj.h" +#include "shldisp.h" #include "comcat.h" #include "urlmon.h" diff --git a/include/Makefile.in b/include/Makefile.in index 770ebb99361..d00f93f92c5 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -18,6 +18,7 @@ IDL_SRCS = \ ocidl.idl \ oleidl.idl \ servprov.idl \ + shldisp.idl \ shobjidl.idl \ shtypes.idl \ strmif.idl \ diff --git a/include/shldisp.h b/include/shldisp.h new file mode 100644 index 00000000000..4d1a9942a8b --- /dev/null +++ b/include/shldisp.h @@ -0,0 +1,245 @@ +/*** Autogenerated by WIDL 0.1 from shldisp.idl - Do not edit ***/ +#include +#include + +#ifndef __WIDL_SHLDISP_H +#define __WIDL_SHLDISP_H +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include +#include +#include +#include +#ifndef __IAutoComplete_FWD_DEFINED__ +#define __IAutoComplete_FWD_DEFINED__ +typedef struct IAutoComplete IAutoComplete; +#endif + +typedef IAutoComplete *LPAUTOCOMPLETE; + +/***************************************************************************** + * IAutoComplete interface + */ +#ifndef __IAutoComplete_INTERFACE_DEFINED__ +#define __IAutoComplete_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAutoComplete, 0x00bb2762, 0x6a77, 0x11d0, 0xa5,0x35, 0x00,0xc0,0x4f,0xd7,0xd0,0x62); +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IAutoComplete : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE Init( + HWND hwndEdit, + IUnknown* punkACL, + LPCOLESTR pwszRegKeyPath, + LPCOLESTR pwszQuickComplete) = 0; + + virtual HRESULT STDMETHODCALLTYPE Enable( + BOOL fEnable) = 0; + +}; +#else +typedef struct IAutoCompleteVtbl IAutoCompleteVtbl; +struct IAutoComplete { + const IAutoCompleteVtbl* lpVtbl; +}; +struct IAutoCompleteVtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAutoComplete* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAutoComplete* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAutoComplete* This); + + /*** IAutoComplete methods ***/ + HRESULT (STDMETHODCALLTYPE *Init)( + IAutoComplete* This, + HWND hwndEdit, + IUnknown* punkACL, + LPCOLESTR pwszRegKeyPath, + LPCOLESTR pwszQuickComplete); + + HRESULT (STDMETHODCALLTYPE *Enable)( + IAutoComplete* This, + BOOL fEnable); + +}; + +/*** IUnknown methods ***/ +#define IAutoComplete_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAutoComplete_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAutoComplete_Release(p) (p)->lpVtbl->Release(p) +/*** IAutoComplete methods ***/ +#define IAutoComplete_Init(p,a,b,c,d) (p)->lpVtbl->Init(p,a,b,c,d) +#define IAutoComplete_Enable(p,a) (p)->lpVtbl->Enable(p,a) + +#endif + +#define IAutoComplete_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IAutoComplete methods ***/ \ + STDMETHOD_(HRESULT,Init)(THIS_ HWND hwndEdit, IUnknown* punkACL, LPCOLESTR pwszRegKeyPath, LPCOLESTR pwszQuickComplete) PURE; \ + STDMETHOD_(HRESULT,Enable)(THIS_ BOOL fEnable) PURE; + +HRESULT CALLBACK IAutoComplete_Init_Proxy( + IAutoComplete* This, + HWND hwndEdit, + IUnknown* punkACL, + LPCOLESTR pwszRegKeyPath, + LPCOLESTR pwszQuickComplete); +void __RPC_STUB IAutoComplete_Init_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAutoComplete_Enable_Proxy( + IAutoComplete* This, + BOOL fEnable); +void __RPC_STUB IAutoComplete_Enable_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAutoComplete_INTERFACE_DEFINED__ */ + +#ifndef __IAutoComplete2_FWD_DEFINED__ +#define __IAutoComplete2_FWD_DEFINED__ +typedef struct IAutoComplete2 IAutoComplete2; +#endif + +typedef IAutoComplete2 *LPAUTOCOMPLETE2; + +typedef enum _tagAUTOCOMPLETEOPTIONS { + ACO_NONE = 0x0, + ACO_AUTOSUGGEST = 0x1, + ACO_AUTOAPPEND = 0x2, + ACO_SEARCH = 0x4, + ACO_FILTERPREFIXES = 0x8, + ACO_USETAB = 0x10, + ACO_UPDOWNKEYDROPSLIST = 0x20, + ACO_RTLREADING = 0x40 +} AUTOCOMPLETEOPTIONS; + +/***************************************************************************** + * IAutoComplete2 interface + */ +#ifndef __IAutoComplete2_INTERFACE_DEFINED__ +#define __IAutoComplete2_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IAutoComplete2, 0xeac04bc0, 0x3791, 0x11d2, 0xbb,0x95, 0x00,0x60,0x97,0x7b,0x46,0x4c); +#if defined(__cplusplus) && !defined(CINTERFACE) +struct IAutoComplete2 : public IAutoComplete +{ + virtual HRESULT STDMETHODCALLTYPE SetOptions( + DWORD dwFlag) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOptions( + DWORD* pdwFlag) = 0; + +}; +#else +typedef struct IAutoComplete2Vtbl IAutoComplete2Vtbl; +struct IAutoComplete2 { + const IAutoComplete2Vtbl* lpVtbl; +}; +struct IAutoComplete2Vtbl { + ICOM_MSVTABLE_COMPAT_FIELDS + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IAutoComplete2* This, + REFIID riid, + void** ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IAutoComplete2* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IAutoComplete2* This); + + /*** IAutoComplete methods ***/ + HRESULT (STDMETHODCALLTYPE *Init)( + IAutoComplete2* This, + HWND hwndEdit, + IUnknown* punkACL, + LPCOLESTR pwszRegKeyPath, + LPCOLESTR pwszQuickComplete); + + HRESULT (STDMETHODCALLTYPE *Enable)( + IAutoComplete2* This, + BOOL fEnable); + + /*** IAutoComplete2 methods ***/ + HRESULT (STDMETHODCALLTYPE *SetOptions)( + IAutoComplete2* This, + DWORD dwFlag); + + HRESULT (STDMETHODCALLTYPE *GetOptions)( + IAutoComplete2* This, + DWORD* pdwFlag); + +}; + +/*** IUnknown methods ***/ +#define IAutoComplete2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAutoComplete2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAutoComplete2_Release(p) (p)->lpVtbl->Release(p) +/*** IAutoComplete methods ***/ +#define IAutoComplete2_Init(p,a,b,c,d) (p)->lpVtbl->Init(p,a,b,c,d) +#define IAutoComplete2_Enable(p,a) (p)->lpVtbl->Enable(p,a) +/*** IAutoComplete2 methods ***/ +#define IAutoComplete2_SetOptions(p,a) (p)->lpVtbl->SetOptions(p,a) +#define IAutoComplete2_GetOptions(p,a) (p)->lpVtbl->GetOptions(p,a) + +#endif + +#define IAutoComplete2_METHODS \ + ICOM_MSVTABLE_COMPAT_FIELDS \ + /*** IUnknown methods ***/ \ + STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \ + STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ + STDMETHOD_(ULONG,Release)(THIS) PURE; \ + /*** IAutoComplete methods ***/ \ + STDMETHOD_(HRESULT,Init)(THIS_ HWND hwndEdit, IUnknown* punkACL, LPCOLESTR pwszRegKeyPath, LPCOLESTR pwszQuickComplete) PURE; \ + STDMETHOD_(HRESULT,Enable)(THIS_ BOOL fEnable) PURE; \ + /*** IAutoComplete2 methods ***/ \ + STDMETHOD_(HRESULT,SetOptions)(THIS_ DWORD dwFlag) PURE; \ + STDMETHOD_(HRESULT,GetOptions)(THIS_ DWORD* pdwFlag) PURE; + +HRESULT CALLBACK IAutoComplete2_SetOptions_Proxy( + IAutoComplete2* This, + DWORD dwFlag); +void __RPC_STUB IAutoComplete2_SetOptions_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT CALLBACK IAutoComplete2_GetOptions_Proxy( + IAutoComplete2* This, + DWORD* pdwFlag); +void __RPC_STUB IAutoComplete2_GetOptions_Stub( + struct IRpcStubBuffer* This, + struct IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IAutoComplete2_INTERFACE_DEFINED__ */ + +#ifdef __cplusplus +} +#endif +#endif /* __WIDL_SHLDISP_H */ diff --git a/include/shldisp.idl b/include/shldisp.idl new file mode 100644 index 00000000000..bafcca4e5ea --- /dev/null +++ b/include/shldisp.idl @@ -0,0 +1,75 @@ +/* + * COM interfaces for shell objects + * + * Copyright (C) 2004 Maxime Bellengé + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +import "objidl.idl"; +import "oleidl.idl"; +import "oaidl.idl"; +import "shtypes.idl"; +import "servprov.idl"; +import "comcat.idl"; + +/***************************************************************************** + * IAutoComplete interface + */ +[ + object, + uuid(00bb2762-6a77-11d0-a535-00c04fd7d062), + pointer_default(unique) +] +interface IAutoComplete : IUnknown +{ + typedef IAutoComplete *LPAUTOCOMPLETE; + + HRESULT Init( [in] HWND hwndEdit, + [in] IUnknown *punkACL, + [in] LPCOLESTR pwszRegKeyPath, + [in] LPCOLESTR pwszQuickComplete); + + HRESULT Enable( [in] BOOL fEnable ); +} + +/***************************************************************************** + * IAutoComplete2 interface + */ +[ + object, + uuid(eac04bc0-3791-11d2-bb95-0060977b464c), + pointer_default(unique) +] +interface IAutoComplete2 : IAutoComplete +{ + typedef IAutoComplete2 *LPAUTOCOMPLETE2; + + typedef enum _tagAUTOCOMPLETEOPTIONS + { + ACO_NONE = 0x00, /* No AutoComplete */ + ACO_AUTOSUGGEST = 0x01, /* enable autosuggest dropdown */ + ACO_AUTOAPPEND = 0x02, /* enable autoappend */ + ACO_SEARCH = 0x04, /* add search entry to completion list */ + ACO_FILTERPREFIXES = 0x08, /* don't match common prefixes (www., http://, etc) */ + ACO_USETAB = 0x10, /* use tab to select autosuggest entries */ + ACO_UPDOWNKEYDROPSLIST = 0x20, /* up/down arrow key invokes autosuggest dropdown (if enabled) */ + ACO_RTLREADING = 0x40, /* enable RTL reading order for dropdown */ + } AUTOCOMPLETEOPTIONS; + + HRESULT SetOptions( [in] DWORD dwFlag); + + HRESULT GetOptions( [out] DWORD *pdwFlag); +} diff --git a/include/shlguid.h b/include/shlguid.h index 30c44359240..aa5514882fd 100644 --- a/include/shlguid.h +++ b/include/shlguid.h @@ -105,6 +105,8 @@ DEFINE_GUID(IID_IQueryAssociations, 0xc46ca590, 0x3c3f, 0x11d2, 0xbe, 0xe6, 0x00 DEFINE_GUID(CLSID_DragDropHelper, 0x4657278a, 0x411b, 0x11d2, 0x83, 0x9a, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0xd0); +DEFINE_GUID(CLSID_AutoComplete, 0x00bb2763, 0x6a77, 0x11d0, 0xa5, 0x35, 0x00, 0xc0, 0x4f, 0xd7, 0xd0, 0x62); + #define PID_FINDDATA 0 #define PID_NETRESOURCE 1 #define PID_DESCRIPTIONID 2 -- 2.11.4.GIT