Mikołaj Zalewski : shell32: autocomplete: Add stub IAutoCompleteDropDown interface.
Alexandre Julliard
julliard at winehq.org
Thu Sep 18 07:56:04 CDT 2008
Module: wine
Branch: master
Commit: a4fd5a1f40b2dc136ab009b029a97fb7a1871f40
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a4fd5a1f40b2dc136ab009b029a97fb7a1871f40
Author: Mikołaj Zalewski <mikolaj at zalewski.pl>
Date: Wed Sep 17 21:42:36 2008 +0200
shell32: autocomplete: Add stub IAutoCompleteDropDown interface.
---
dlls/shell32/autocomplete.c | 86 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 83 insertions(+), 3 deletions(-)
diff --git a/dlls/shell32/autocomplete.c b/dlls/shell32/autocomplete.c
index a026e8b..2437793 100644
--- a/dlls/shell32/autocomplete.c
+++ b/dlls/shell32/autocomplete.c
@@ -62,6 +62,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
typedef struct
{
const IAutoComplete2Vtbl *lpVtbl;
+ const IAutoCompleteDropDownVtbl *lpDropDownVtbl;
LONG ref;
BOOL enabled;
HWND hwndEdit;
@@ -75,13 +76,20 @@ typedef struct
} IAutoCompleteImpl;
static const IAutoComplete2Vtbl acvt;
+static const IAutoCompleteDropDownVtbl acdropdownvt;
/*
converts This to an interface pointer
*/
#define _IUnknown_(This) (IUnknown*)&(This->lpVtbl)
-#define _IAutoComplete2_(This) (IAutoComplete2*)&(This->lpvtbl)
+#define _IAutoComplete2_(This) (IAutoComplete2*)&(This->lpVtbl)
+#define _IAutoCompleteDropDown_(This) (IAutoCompleteDropDown*)&(This->lpDropDownVtbl)
+
+static inline IAutoCompleteImpl *impl_from_IAutoCompleteDropDown(IAutoCompleteDropDown *iface)
+{
+ return (IAutoCompleteImpl *)((char *)iface - FIELD_OFFSET(IAutoCompleteImpl, lpDropDownVtbl));
+}
static LRESULT APIENTRY ACEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static LRESULT APIENTRY ACLBoxSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
@@ -102,6 +110,7 @@ HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVO
lpac->ref = 1;
lpac->lpVtbl = &acvt;
+ lpac->lpDropDownVtbl = &acdropdownvt;
lpac->enabled = TRUE;
lpac->enumstr = NULL;
lpac->options = ACO_AUTOAPPEND;
@@ -139,6 +148,10 @@ static HRESULT WINAPI IAutoComplete2_fnQueryInterface(
{
*ppvObj = (IAutoComplete2*)This;
}
+ else if (IsEqualIID(riid, &IID_IAutoCompleteDropDown))
+ {
+ *ppvObj = _IAutoCompleteDropDown_(This);
+ }
if (*ppvObj)
{
@@ -146,7 +159,7 @@ static HRESULT WINAPI IAutoComplete2_fnQueryInterface(
TRACE("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj);
return S_OK;
}
- TRACE("-- Interface: E_NOINTERFACE\n");
+ WARN("unsupported interface: %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
}
@@ -334,7 +347,42 @@ static HRESULT WINAPI IAutoComplete2_fnSetOptions(
}
/**************************************************************************
- * IAutoComplete2_fnVTable
+ * IAutoCompleteDropDown_fnGetDropDownStatus
+ */
+static HRESULT WINAPI IAutoCompleteDropDown_fnGetDropDownStatus(
+ IAutoCompleteDropDown *iface,
+ DWORD *pdwFlags,
+ LPWSTR *ppwszString)
+{
+ IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+
+ FIXME("(%p) -> (%p, %p): stub\n", This, pdwFlags, ppwszString);
+
+ if (pdwFlags)
+ *pdwFlags = 0;
+ if (ppwszString)
+ *ppwszString = NULL;
+
+ return E_NOTIMPL;
+}
+
+/**************************************************************************
+ * IAutoCompleteDropDown_fnResetEnumarator
+ */
+static HRESULT WINAPI IAutoCompleteDropDown_fnResetEnumerator(
+ IAutoCompleteDropDown *iface)
+{
+ IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+
+ FIXME("(%p): stub\n", This);
+
+ return E_NOTIMPL;
+}
+
+
+
+/**************************************************************************
+ * IAutoComplete2 VTable
*/
static const IAutoComplete2Vtbl acvt =
{
@@ -348,6 +396,38 @@ static const IAutoComplete2Vtbl acvt =
IAutoComplete2_fnGetOptions,
};
+
+static HRESULT WINAPI IAutoCompleteDropDown_fnQueryInterface(IAutoCompleteDropDown *iface,
+ REFIID riid, LPVOID *ppvObj)
+{
+ IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+ return IAutoComplete2_fnQueryInterface(_IAutoComplete2_(This), riid, ppvObj);
+}
+
+static ULONG WINAPI IAutoCompleteDropDown_fnAddRef(IAutoCompleteDropDown *iface)
+{
+ IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+ return IAutoComplete2_fnAddRef(_IAutoComplete2_(This));
+}
+
+static ULONG WINAPI IAutoCompleteDropDown_fnRelease(IAutoCompleteDropDown *iface)
+{
+ IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+ return IAutoComplete2_fnRelease(_IAutoComplete2_(This));
+}
+
+/**************************************************************************
+ * IAutoCompleteDropDown VTable
+ */
+static const IAutoCompleteDropDownVtbl acdropdownvt =
+{
+ IAutoCompleteDropDown_fnQueryInterface,
+ IAutoCompleteDropDown_fnAddRef,
+ IAutoCompleteDropDown_fnRelease,
+ IAutoCompleteDropDown_fnGetDropDownStatus,
+ IAutoCompleteDropDown_fnResetEnumerator,
+};
+
/*
Window procedure for autocompletion
*/
More information about the wine-cvs
mailing list