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