[PATCH] shell32: autocomplete: implement GetDropDownStatus

Mikołaj Zalewski mikolaj at zalewski.pl
Wed Sep 17 14:42:46 CDT 2008


---
 dlls/shell32/autocomplete.c |   31 ++++++++++++++++++++++++++-----
 1 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/dlls/shell32/autocomplete.c b/dlls/shell32/autocomplete.c
index fb3d0fc..d6b50c4 100644
--- a/dlls/shell32/autocomplete.c
+++ b/dlls/shell32/autocomplete.c
@@ -360,15 +360,36 @@ static HRESULT WINAPI IAutoCompleteDropDown_fnGetDropDownStatus(
     LPWSTR *ppwszString)
 {
     IAutoCompleteImpl *This = impl_from_IAutoCompleteDropDown(iface);
+    BOOL dropped;
 
-    FIXME("(%p) -> (%p, %p): stub\n", This, pdwFlags, ppwszString);
+    TRACE("(%p) -> (%p, %p)\n", This, pdwFlags, ppwszString);
+
+    dropped = IsWindowVisible(This->hwndListBox);
 
     if (pdwFlags)
-        *pdwFlags = 0;
-    if (ppwszString)
-        *ppwszString = NULL;
+        *pdwFlags = (dropped ? ACDD_VISIBLE : 0);
+
+    if (ppwszString) {
+        if (dropped) {
+            int sel;
+
+            sel = SendMessageW(This->hwndListBox, LB_GETCURSEL, 0, 0);
+            if (sel >= 0)
+            {
+                DWORD len;
+
+                len = SendMessageW(This->hwndListBox, LB_GETTEXTLEN, sel, 0);
+                *ppwszString = CoTaskMemAlloc((len+1)*sizeof(WCHAR));
+                SendMessageW(This->hwndListBox, LB_GETTEXT, sel, (LPARAM)*ppwszString);
+            }
+            else
+                *ppwszString = NULL;
+        }
+        else
+            *ppwszString = NULL;
+    }
 
-    return E_NOTIMPL;
+    return S_OK;
 }
 
 /**************************************************************************
-- 
1.5.4


--------------010504000302040706060801--



More information about the wine-patches mailing list