implement a ordinal 167 and 171

György 'Nog' Jeney nog at sdf.lonestar.org
Fri Dec 13 10:22:34 CST 2002


ChangeLog:
 * dlls/shlwapi/ordinal.c
 * dlls/shlwapi/shlwapi.spec
   - Implement ordinals 167 and 171
   - Add stubs for ordinals 282 and 406

nog.

-------------- next part --------------
--- ../cleanwine/dlls/shlwapi/shlwapi.spec	2002-12-10 19:04:27.000000000 +0200
+++ dlls/shlwapi/shlwapi.spec	2002-12-13 17:51:21.000000000 +0200
@@ -279,7 +279,7 @@
 279 stub @
 280 stub @
 281 stdcall @(ptr ptr ptr ptr) SHLWAPI_281
-282 stub @
+282 stdcall @(ptr ptr ptr ptr) SHLWAPI_282
 283 stub @
 284 stdcall @(ptr ptr ptr) SHLWAPI_284
 285 stub @
@@ -403,7 +403,7 @@
 403 stdcall @(ptr) SHLWAPI_403
 404 stdcall ColorHLSToRGB(long long long) ColorHLSToRGB
 405 stub @
-406 stub @
+406 stdcall @(ptr ptr ptr ptr ptr ptr) SHLWAPI_406
 407 stub @
 408 stub @
 409 stub @
--- ../cleanwine/dlls/shlwapi/ordinal.c	2002-12-11 08:17:09.000000000 +0200
+++ dlls/shlwapi/ordinal.c	2002-12-13 18:00:06.000000000 +0200
@@ -976,7 +976,7 @@
 /*************************************************************************
  *      @	[SHLWAPI.167]
  *
- * Change a windows parent.
+ * Change a window's parent.
  *
  * PARAMS
  *  hWnd       [I] Window to change parent of
@@ -987,11 +987,23 @@
  *
  * NOTES
  *  If hWndParent is NULL (desktop), the window style is changed to WS_POPUP.
+ *  If hWndParent is NOT NULL then we set the WS_CHILD style.
  */
 DWORD WINAPI SHLWAPI_167(HWND hWnd, HWND hWndParent)
 {
-	FIXME("%p,%p\n", hWnd, hWndParent);
-	return 0;
+  TRACE("%p, %p\n", hWnd, hWndParent);
+
+  if(GetParent(hWnd) == hWndParent)
+    return 0;
+
+  SetParent(hWnd, hWndParent);
+
+  if(hWndParent)
+    SHLWAPI_165(hWnd, GWL_STYLE, WS_CHILD, WS_CHILD);
+  else
+    SHLWAPI_165(hWnd, GWL_STYLE, WS_POPUP, WS_POPUP);
+
+  return 0;
 }
 
 /*************************************************************************
@@ -1100,12 +1112,40 @@
 /*************************************************************************
  *      @		[SHLWAPI.171]
  *
- * _SHIsSameObject
+ * Check the two interfaces if they come from the same object.
+ *
+ * PARAMS
+ *   lpInt1 [I]: Interface to check against lpInt2.
+ *   lpInt2 [I]: Interface to check against lpInt1.
+ *
+ * RETURNS
+ *   TRUE: Interfaces come from the same object.
+ *   FALSE: Interfaces come from different objects.
  */
-BOOL WINAPI SHLWAPI_171(LPVOID x, LPVOID y)
+BOOL WINAPI SHLWAPI_171(IUnknown* lpInt1, IUnknown* lpInt2)
 {
-	FIXME("%p %p\n",x,y);
-	return 0;
+  LPVOID lpUnknown1, lpUnknown2;
+
+  TRACE("%p %p\n", lpInt1, lpInt2);
+
+  if (!lpInt1 || !lpInt2)
+    return FALSE;
+
+  if (lpInt1 == lpInt2)
+    return TRUE;
+
+  if (!SUCCEEDED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown,
+                                       (LPVOID *)&lpUnknown1)))
+    return FALSE;
+
+  if (!SUCCEEDED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown,
+                                       (LPVOID *)&lpUnknown2)))
+    return FALSE;
+
+  if (lpUnknown1 == lpUnknown2)
+    return TRUE;
+  
+  return FALSE;
 }
 
 /*************************************************************************
@@ -2055,6 +2095,18 @@
 }
 
 /*************************************************************************
+ *      @       [SHLWAPI.282]
+ *
+ * This function seems to be a forward to SHLWAPI.281 (whatever THAT
+ * function does...).
+ */
+HRESULT WINAPI SHLWAPI_282(LPVOID w, LPVOID x, LPVOID y, LPVOID z)
+{
+  FIXME("%p %p %p %p\n", w, x, y, z);
+  return E_FAIL;
+}
+
+/*************************************************************************
  *      @	[SHLWAPI.284]
  *
  * _IConnectionPoint_SimpleInvoke
@@ -2529,6 +2581,15 @@
 }
 
 /*************************************************************************
+ *      @       [SHLWAPI.406]
+ */
+DWORD WINAPI SHLWAPI_406(LPVOID u, LPVOID v, LPVOID w, LPVOID x, LPVOID y, LPVOID z)
+{
+  FIXME("%p %p %p %p %p %p\n", u, v, w, x, y, z);
+  return 0;
+}
+
+/*************************************************************************
  *      @	[SHLWAPI.413]
  *
  * Function unknown seems to always to return 0



More information about the wine-patches mailing list