Benjamin Arai : oleaut32: Implements OLEFontImpl_GetIDsOfNames.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jul 21 04:14:30 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: f75b9f190f368956949277983a09757d3e5b1a67
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=f75b9f190f368956949277983a09757d3e5b1a67

Author: Benjamin Arai <me at benjaminarai.com>
Date:   Wed Jul 19 18:06:14 2006 -0700

oleaut32: Implements OLEFontImpl_GetIDsOfNames.

---

 dlls/oleaut32/olefont.c |   33 +++++++++++++++++++++++++++++----
 1 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/dlls/oleaut32/olefont.c b/dlls/oleaut32/olefont.c
index 6c5ea27..8ce3e00 100644
--- a/dlls/oleaut32/olefont.c
+++ b/dlls/oleaut32/olefont.c
@@ -5,6 +5,7 @@
  * interface and the OleCreateFontIndirect API call.
  *
  * Copyright 1999 Francis Beaudet
+ * Copyright 2006 (Google) Benjamin Arai
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -1347,11 +1348,35 @@ static HRESULT WINAPI OLEFontImpl_GetIDs
   LCID        lcid,
   DISPID*     rgDispId)
 {
+  ITypeInfo * pTInfo;
+  HRESULT hres;
+
   OLEFontImpl *this = impl_from_IDispatch(iface);
-  FIXME("(%p,%s,%p,%d,%04x,%p), stub!\n", this, debugstr_guid(riid), rgszNames,
-	cNames, (int)lcid, rgDispId
-  );
-  return E_NOTIMPL;
+
+  TRACE("(%p,%s,%p,cNames=%d,lcid=%04x,%p)\n", this, debugstr_guid(riid),
+        rgszNames, cNames, (int)lcid, rgDispId);
+
+  if (cNames == 0)
+  {
+    return E_INVALIDARG;
+  }
+  else
+  {
+    /* retrieve type information */
+    hres = OLEFontImpl_GetTypeInfo(iface, 0, lcid, &pTInfo);
+
+    if (FAILED(hres))
+    {
+      ERR("GetTypeInfo failed.\n");
+      return hres;
+    }
+
+    /* convert names to DISPIDs */
+    hres = DispGetIDsOfNames (pTInfo, rgszNames, cNames, rgDispId);
+    ITypeInfo_Release(pTInfo);
+
+    return hres;
+  }
 }
 
 /************************************************************************




More information about the wine-cvs mailing list