#include "mmsystem.h"
#include "objbase.h"
#include "exdisp.h"
-#include "shdeprecated.h"
#include "shlobj.h"
#include "shlwapi.h"
#include "shellapi.h"
BSTR property;
IEnumFORMATETC* pIEnumFormatEtc = NULL;
VARIANTARG var;
- HRESULT hr;
- IWebBrowserApp* pBrowser;
+ HRESULT hRet;
+ IWebBrowserApp* pBrowser = NULL;
TRACE("(%p, %p)\n", lpBC, lpUnknown);
- hr = IUnknown_QueryService(lpUnknown, &IID_IWebBrowserApp, &IID_IWebBrowserApp, (void**)&pBrowser);
- if (FAILED(hr))
- return hr;
+ /* Get An IWebBrowserApp interface from lpUnknown */
+ hRet = IUnknown_QueryService(lpUnknown, &IID_IWebBrowserApp, &IID_IWebBrowserApp, (PVOID)&pBrowser);
+ if (FAILED(hRet) || !pBrowser)
+ return E_NOINTERFACE;
V_VT(&var) = VT_EMPTY;
/* The property we get is the browsers clipboard enumerator */
property = SysAllocString(szProperty);
- hr = IWebBrowserApp_GetProperty(pBrowser, property, &var);
+ hRet = IWebBrowserApp_GetProperty(pBrowser, property, &var);
SysFreeString(property);
- if (FAILED(hr)) goto exit;
+ if (FAILED(hRet))
+ return hRet;
if (V_VT(&var) == VT_EMPTY)
{
if (!RegOpenKeyA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\Current"
"Version\\Internet Settings\\Accepted Documents", &hDocs))
- {
- hr = E_FAIL;
- goto exit;
- }
+ return E_FAIL;
/* Get count of values in key */
while (!dwRet)
/* Note: dwCount = number of items + 1; The extra item is the end node */
format = formatList = HeapAlloc(GetProcessHeap(), 0, dwCount * sizeof(FORMATETC));
if (!formatList)
- {
- RegCloseKey(hDocs);
- hr = E_OUTOFMEMORY;
- goto exit;
- }
+ return E_OUTOFMEMORY;
if (dwNumValues > 1)
{
dwRet = RegEnumValueA(hDocs, dwCount, szKeyBuff, &dwKeySize, 0, &dwType,
(PBYTE)szValueBuff, &dwValueSize);
if (!dwRet)
- {
- HeapFree(GetProcessHeap(), 0, formatList);
- RegCloseKey(hDocs);
- hr = E_FAIL;
- goto exit;
- }
+ return E_FAIL;
format->cfFormat = RegisterClipboardFormatA(szValueBuff);
format->ptd = NULL;
}
}
- RegCloseKey(hDocs);
-
/* Terminate the (maybe empty) list, last entry has a cfFormat of 0 */
format->cfFormat = 0;
format->ptd = NULL;
format->tymed = -1;
/* Create a clipboard enumerator */
- hr = CreateFormatEnumerator(dwNumValues, formatList, &pIEnumFormatEtc);
- HeapFree(GetProcessHeap(), 0, formatList);
- if (FAILED(hr)) goto exit;
+ hRet = CreateFormatEnumerator(dwNumValues, formatList, &pIEnumFormatEtc);
+
+ if (FAILED(hRet) || !pIEnumFormatEtc)
+ return hRet;
/* Set our enumerator as the browsers property */
V_VT(&var) = VT_UNKNOWN;
V_UNKNOWN(&var) = (IUnknown*)pIEnumFormatEtc;
property = SysAllocString(szProperty);
- hr = IWebBrowserApp_PutProperty(pBrowser, property, var);
+ hRet = IWebBrowserApp_PutProperty(pBrowser, property, var);
SysFreeString(property);
- if (FAILED(hr))
+ if (FAILED(hRet))
{
IEnumFORMATETC_Release(pIEnumFormatEtc);
- goto exit;
+ goto RegisterDefaultAcceptHeaders_Exit;
}
}
/* Get an IEnumFormatEtc interface from the variants value */
pIEnumFormatEtc = NULL;
- hr = IUnknown_QueryInterface(pIUnknown, &IID_IEnumFORMATETC, (void**)&pIEnumFormatEtc);
- if (hr == S_OK && pIEnumFormatEtc)
+ hRet = IUnknown_QueryInterface(pIUnknown, &IID_IEnumFORMATETC,
+ (PVOID)&pIEnumFormatEtc);
+ if (hRet == S_OK && pIEnumFormatEtc)
{
/* Clone and register the enumerator */
- hr = IEnumFORMATETC_Clone(pIEnumFormatEtc, &pClone);
- if (hr == S_OK && pClone)
+ hRet = IEnumFORMATETC_Clone(pIEnumFormatEtc, &pClone);
+ if (hRet == S_OK && pClone)
{
RegisterFormatEnumerator(lpBC, pClone, 0);
IEnumFORMATETC_Release(pClone);
}
+ /* Release the IEnumFormatEtc interface */
IEnumFORMATETC_Release(pIUnknown);
}
IUnknown_Release(V_UNKNOWN(&var));
}
-exit:
+RegisterDefaultAcceptHeaders_Exit:
IWebBrowserApp_Release(pBrowser);
- return hr;
+ return hRet;
}
/*************************************************************************
return S_OK;
}
- /* Did not find a value in the registry or the user buffer is too small */
+ /* Did not find a value in the registry or the user buffer is to small */
mylcid = GetUserDefaultLCID();
retval = LcidToRfc1766W(mylcid, mystr, mystrlen);
len = lstrlenW(mystr);
/*************************************************************************
* @ [SHLWAPI.169]
*
- * Release an interface and zero a supplied pointer.
+ * Release an interface.
*
* PARAMS
* lpUnknown [I] Object to release
* RETURNS
* Nothing.
*/
-void WINAPI IUnknown_AtomicRelease(IUnknown ** lpUnknown)
+DWORD WINAPI IUnknown_AtomicRelease(IUnknown ** lpUnknown)
{
- TRACE("(%p)\n", lpUnknown);
+ IUnknown *temp;
+
+ TRACE("(%p)\n",lpUnknown);
- if(!lpUnknown || !*lpUnknown) return;
+ if(!lpUnknown || !*((LPDWORD)lpUnknown)) return 0;
+ temp = *lpUnknown;
+ *lpUnknown = NULL;
TRACE("doing Release\n");
- IUnknown_Release(*lpUnknown);
- *lpUnknown = NULL;
+ return IUnknown_Release(temp);
}
/*************************************************************************
*/
BOOL WINAPI SHIsSameObject(IUnknown* lpInt1, IUnknown* lpInt2)
{
- IUnknown *lpUnknown1, *lpUnknown2;
- BOOL ret;
+ LPVOID lpUnknown1, lpUnknown2;
- TRACE("(%p %p)\n", lpInt1, lpInt2);
+ TRACE("%p %p\n", lpInt1, lpInt2);
if (!lpInt1 || !lpInt2)
return FALSE;
if (lpInt1 == lpInt2)
return TRUE;
- if (IUnknown_QueryInterface(lpInt1, &IID_IUnknown, (void**)&lpUnknown1) != S_OK)
+ if (FAILED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown, &lpUnknown1)))
return FALSE;
- if (IUnknown_QueryInterface(lpInt2, &IID_IUnknown, (void**)&lpUnknown2) != S_OK)
- {
- IUnknown_Release(lpUnknown1);
+ if (FAILED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown, &lpUnknown2)))
return FALSE;
- }
-
- ret = lpUnknown1 == lpUnknown2;
- IUnknown_Release(lpUnknown1);
- IUnknown_Release(lpUnknown2);
+ if (lpUnknown1 == lpUnknown2)
+ return TRUE;
- return ret;
+ return FALSE;
}
/*************************************************************************
/*************************************************************************
* @ [SHLWAPI.173]
*
- * Call a SetOwner method of IShellService from specified object.
+ * Call a method on as as yet unidentified object.
*
* PARAMS
- * iface [I] Object that supports IShellService
- * pUnk [I] Argument for the SetOwner call
+ * pUnk [I] Object supporting the unidentified interface,
+ * arg [I] Argument for the call on the object.
*
* RETURNS
- * Corresponding return value from last call or E_FAIL for null input
+ * S_OK.
*/
-HRESULT WINAPI IUnknown_SetOwner(IUnknown *iface, IUnknown *pUnk)
+HRESULT WINAPI IUnknown_SetOwner(IUnknown *pUnk, ULONG arg)
{
- IShellService *service;
- HRESULT hr;
+ static const GUID guid_173 = {
+ 0x5836fb00, 0x8187, 0x11cf, { 0xa1,0x2b,0x00,0xaa,0x00,0x4a,0xe8,0x37 }
+ };
+ IMalloc *pUnk2;
- TRACE("(%p, %p)\n", iface, pUnk);
+ TRACE("(%p,%d)\n", pUnk, arg);
- if (!iface) return E_FAIL;
-
- hr = IUnknown_QueryInterface(iface, &IID_IShellService, (void**)&service);
- if (hr == S_OK)
+ /* Note: arg may not be a ULONG and pUnk2 is for sure not an IMalloc -
+ * We use this interface as its vtable entry is compatible with the
+ * object in question.
+ * FIXME: Find out what this object is and where it should be defined.
+ */
+ if (pUnk &&
+ SUCCEEDED(IUnknown_QueryInterface(pUnk, &guid_173, (void**)&pUnk2)))
{
- hr = IShellService_SetOwner(service, pUnk);
- IShellService_Release(service);
+ IMalloc_Alloc(pUnk2, arg); /* Faked call!! */
+ IMalloc_Release(pUnk2);
}
-
- return hr;
+ return S_OK;
}
/*************************************************************************
if (!lpUnknown)
return E_FAIL;
+ /* Get an IServiceProvider interface from the object */
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IServiceProvider,
(LPVOID*)&pService);
TRACE("(IServiceProvider*)%p returned (IUnknown*)%p\n", pService, *lppOut);
+ /* Release the IServiceProvider interface */
IUnknown_Release(pService);
}
return hRet;
}
-/*************************************************************************
- * @ [SHLWAPI.484]
- *
- * Calls IOleCommandTarget::Exec() for specified service object.
- *
- * PARAMS
- * lpUnknown [I] Object to get an IServiceProvider interface from
- * service [I] Service ID for IServiceProvider_QueryService() call
- * group [I] Group ID for IOleCommandTarget::Exec() call
- * cmdId [I] Command ID for IOleCommandTarget::Exec() call
- * cmdOpt [I] Options flags for command
- * pIn [I] Input arguments for command
- * pOut [O] Output arguments for command
- *
- * RETURNS
- * Success: S_OK. lppOut contains an object providing the requested service
- * Failure: An HRESULT error code
- *
- * NOTES
- * lpUnknown is expected to support the IServiceProvider interface.
- */
-HRESULT WINAPI IUnknown_QueryServiceExec(IUnknown *lpUnknown, REFIID service,
- const GUID *group, DWORD cmdId, DWORD cmdOpt, VARIANT *pIn, VARIANT *pOut)
-{
- IOleCommandTarget *target;
- HRESULT hr;
-
- TRACE("%p %s %s %d %08x %p %p\n", lpUnknown, debugstr_guid(service),
- debugstr_guid(group), cmdId, cmdOpt, pIn, pOut);
-
- hr = IUnknown_QueryService(lpUnknown, service, &IID_IOleCommandTarget, (void**)&target);
- if (hr == S_OK)
- {
- hr = IOleCommandTarget_Exec(target, group, cmdId, cmdOpt, pIn, pOut);
- IOleCommandTarget_Release(target);
- }
-
- TRACE("<-- hr=0x%08x\n", hr);
-
- return hr;
-}
-
-/*************************************************************************
- * @ [SHLWAPI.514]
- *
- * Calls IProfferService methods to proffer/revoke specified service.
- *
- * PARAMS
- * lpUnknown [I] Object to get an IServiceProvider interface from
- * service [I] Service ID for IProfferService::Proffer/Revoke calls
- * pService [I] Service to proffer. If NULL ::Revoke is called
- * pCookie [IO] Group ID for IOleCommandTarget::Exec() call
- *
- * RETURNS
- * Success: S_OK. IProffer method returns S_OK
- * Failure: An HRESULT error code
- *
- * NOTES
- * lpUnknown is expected to support the IServiceProvider interface.
- */
-HRESULT WINAPI IUnknown_ProfferService(IUnknown *lpUnknown, REFGUID service, IServiceProvider *pService, DWORD *pCookie)
-{
- IProfferService *proffer;
- HRESULT hr;
-
- TRACE("%p %s %p %p\n", lpUnknown, debugstr_guid(service), pService, pCookie);
-
- hr = IUnknown_QueryService(lpUnknown, &IID_IProfferService, &IID_IProfferService, (void**)&proffer);
- if (hr == S_OK)
- {
- if (pService)
- hr = IProfferService_ProfferService(proffer, service, pService, pCookie);
- else
- hr = IProfferService_RevokeService(proffer, *pCookie);
-
- IProfferService_Release(proffer);
- }
-
- return hr;
-}
-
/*************************************************************************
* @ [SHLWAPI.479]
*
{
HMENU hMenu;
- TRACE("%p %s\n", hInst, debugstr_w(szName));
-
if ((hMenu = LoadMenuW(hInst, szName)))
{
if (GetSubMenu(hMenu, 0))
DWORD WINAPI SHRemoveAllSubMenus(HMENU hMenu)
{
int iItemCount = GetMenuItemCount(hMenu) - 1;
-
- TRACE("%p\n", hMenu);
-
while (iItemCount >= 0)
{
HMENU hSubMenu = GetSubMenu(hMenu, iItemCount);
*/
UINT WINAPI SHEnableMenuItem(HMENU hMenu, UINT wItemID, BOOL bEnable)
{
- TRACE("%p, %u, %d\n", hMenu, wItemID, bEnable);
return EnableMenuItem(hMenu, wItemID, bEnable ? MF_ENABLED : MF_GRAYED);
}
*/
DWORD WINAPI SHCheckMenuItem(HMENU hMenu, UINT uID, BOOL bCheck)
{
- TRACE("%p, %u, %d\n", hMenu, uID, bCheck);
return CheckMenuItem(hMenu, uID, bCheck ? MF_CHECKED : MF_UNCHECKED);
}
DWORD dwEffect = DROPEFFECT_LINK | DROPEFFECT_MOVE | DROPEFFECT_COPY;
POINTL pt = { 0, 0 };
- TRACE("%p %p 0x%08x %p %p\n", pDrop, pDataObj, grfKeyState, lpPt, pdwEffect);
-
if (!lpPt)
lpPt = &pt;
IDropTarget_DragEnter(pDrop, pDataObj, grfKeyState, *lpPt, pdwEffect);
- if (*pdwEffect != DROPEFFECT_NONE)
+ if (*pdwEffect)
return IDropTarget_Drop(pDrop, pDataObj, grfKeyState, *lpPt, pdwEffect);
IDropTarget_DragLeave(pDrop);
IOleControlSite* lpCSite = NULL;
HRESULT hRet = E_FAIL;
- TRACE("(%p, %d)\n", lpUnknown, fGotFocus);
+ TRACE("(%p,%s)\n", lpUnknown, fGotFocus ? "TRUE" : "FALSE");
if (lpUnknown)
{
hRet = IUnknown_QueryInterface(lpUnknown, &IID_IOleControlSite,
{
TRACE("(%p,%p)\n", lppDest, lpUnknown);
- IUnknown_AtomicRelease(lppDest);
+ if (lppDest)
+ IUnknown_AtomicRelease(lppDest); /* Release existing interface */
if (lpUnknown)
{
+ /* Copy */
IUnknown_AddRef(lpUnknown);
*lppDest = lpUnknown;
}
return TRUE;
}
+
+typedef struct {
+ REFIID refid;
+ DWORD indx;
+} IFACE_INDEX_TBL;
+
/*************************************************************************
* @ [SHLWAPI.219]
*
* Failure: E_POINTER or E_NOINTERFACE.
*/
HRESULT WINAPI QISearch(
- void *base, /* [in] Table of interfaces */
- const QITAB *table, /* [in] Array of REFIIDs and indexes into the table */
+ LPVOID w, /* [in] Table of interfaces */
+ IFACE_INDEX_TBL *x, /* [in] Array of REFIIDs and indexes into the table */
REFIID riid, /* [in] REFIID to get interface for */
- void **ppv) /* [out] Destination for interface pointer */
+ LPVOID *ppv) /* [out] Destination for interface pointer */
{
HRESULT ret;
IUnknown *a_vtbl;
- const QITAB *xmove;
+ IFACE_INDEX_TBL *xmove;
- TRACE("(%p %p %s %p)\n", base, table, debugstr_guid(riid), ppv);
+ TRACE("(%p %p %s %p)\n", w,x,debugstr_guid(riid),ppv);
if (ppv) {
- xmove = table;
- while (xmove->piid) {
- TRACE("trying (offset %d) %s\n", xmove->dwOffset, debugstr_guid(xmove->piid));
- if (IsEqualIID(riid, xmove->piid)) {
- a_vtbl = (IUnknown*)(xmove->dwOffset + (LPBYTE)base);
+ xmove = x;
+ while (xmove->refid) {
+ TRACE("trying (indx %d) %s\n", xmove->indx, debugstr_guid(xmove->refid));
+ if (IsEqualIID(riid, xmove->refid)) {
+ a_vtbl = (IUnknown*)(xmove->indx + (LPBYTE)w);
TRACE("matched, returning (%p)\n", a_vtbl);
*ppv = a_vtbl;
IUnknown_AddRef(a_vtbl);
}
if (IsEqualIID(riid, &IID_IUnknown)) {
- a_vtbl = (IUnknown*)(table->dwOffset + (LPBYTE)base);
+ a_vtbl = (IUnknown*)(x->indx + (LPBYTE)w);
TRACE("returning first for IUnknown (%p)\n", a_vtbl);
*ppv = a_vtbl;
IUnknown_AddRef(a_vtbl);
* dwExStyle [I] Extra style flags
* dwStyle [I] Style flags
* hMenu [I] Window menu
- * wnd_extra [I] Window extra bytes value
+ * z [I] Unknown
*
* RETURNS
* Success: The window handle of the newly created window.
* Failure: 0.
*/
HWND WINAPI SHCreateWorkerWindowA(LONG wndProc, HWND hWndParent, DWORD dwExStyle,
- DWORD dwStyle, HMENU hMenu, LONG_PTR wnd_extra)
+ DWORD dwStyle, HMENU hMenu, LONG z)
{
static const char szClass[] = "WorkerA";
WNDCLASSA wc;
HWND hWnd;
- TRACE("(0x%08x, %p, 0x%08x, 0x%08x, %p, 0x%08lx)\n",
- wndProc, hWndParent, dwExStyle, dwStyle, hMenu, wnd_extra);
+ TRACE("(0x%08x,%p,0x%08x,0x%08x,%p,0x%08x)\n",
+ wndProc, hWndParent, dwExStyle, dwStyle, hMenu, z);
/* Create Window class */
wc.style = 0;
wc.lpfnWndProc = DefWindowProcA;
wc.cbClsExtra = 0;
- wc.cbWndExtra = sizeof(LONG_PTR);
+ wc.cbWndExtra = 4;
wc.hInstance = shlwapi_hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursorA(NULL, (LPSTR)IDC_ARROW);
wc.lpszMenuName = NULL;
wc.lpszClassName = szClass;
- SHRegisterClassA(&wc);
+ SHRegisterClassA(&wc); /* Register class */
+
+ /* FIXME: Set extra bits in dwExStyle */
hWnd = CreateWindowExA(dwExStyle, szClass, 0, dwStyle, 0, 0, 0, 0,
hWndParent, hMenu, shlwapi_hInstance, 0);
if (hWnd)
{
- SetWindowLongPtrW(hWnd, 0, wnd_extra);
+ SetWindowLongPtrW(hWnd, DWLP_MSGRESULT, z);
- if (wndProc) SetWindowLongPtrA(hWnd, GWLP_WNDPROC, wndProc);
+ if (wndProc)
+ SetWindowLongPtrA(hWnd, GWLP_WNDPROC, wndProc);
}
-
return hWnd;
}
*/
BOOL WINAPI GUIDFromStringW(LPCWSTR idstr, CLSID *id)
{
- return SUCCEEDED(CLSIDFromString((LPCOLESTR)idstr, id));
+ return SUCCEEDED(CLSIDFromString((LPOLESTR)idstr, id));
}
/*************************************************************************
* Unicode version of SHCreateWorkerWindowA.
*/
HWND WINAPI SHCreateWorkerWindowW(LONG wndProc, HWND hWndParent, DWORD dwExStyle,
- DWORD dwStyle, HMENU hMenu, LONG msg_result)
+ DWORD dwStyle, HMENU hMenu, LONG z)
{
- static const WCHAR szClass[] = { 'W', 'o', 'r', 'k', 'e', 'r', 'W', 0 };
+ static const WCHAR szClass[] = { 'W', 'o', 'r', 'k', 'e', 'r', 'W', '\0' };
WNDCLASSW wc;
HWND hWnd;
- TRACE("(0x%08x, %p, 0x%08x, 0x%08x, %p, 0x%08x)\n",
- wndProc, hWndParent, dwExStyle, dwStyle, hMenu, msg_result);
+ TRACE("(0x%08x,%p,0x%08x,0x%08x,%p,0x%08x)\n",
+ wndProc, hWndParent, dwExStyle, dwStyle, hMenu, z);
- /* If our OS is natively ANSI, use the ANSI version */
- if (GetVersion() & 0x80000000) /* not NT */
- {
- TRACE("fallback to ANSI, ver 0x%08x\n", GetVersion());
- return SHCreateWorkerWindowA(wndProc, hWndParent, dwExStyle, dwStyle, hMenu, msg_result);
- }
+ /* If our OS is natively ASCII, use the ASCII version */
+ if (!(GetVersion() & 0x80000000)) /* NT */
+ return SHCreateWorkerWindowA(wndProc, hWndParent, dwExStyle, dwStyle, hMenu, z);
/* Create Window class */
wc.style = 0;
wc.lpszMenuName = NULL;
wc.lpszClassName = szClass;
- SHRegisterClassW(&wc);
+ SHRegisterClassW(&wc); /* Register class */
+
+ /* FIXME: Set extra bits in dwExStyle */
hWnd = CreateWindowExW(dwExStyle, szClass, 0, dwStyle, 0, 0, 0, 0,
hWndParent, hMenu, shlwapi_hInstance, 0);
if (hWnd)
{
- SetWindowLongPtrW(hWnd, DWLP_MSGRESULT, msg_result);
+ SetWindowLongPtrW(hWnd, DWLP_MSGRESULT, z);
- if (wndProc) SetWindowLongPtrW(hWnd, GWLP_WNDPROC, wndProc);
+ if (wndProc)
+ SetWindowLongPtrW(hWnd, GWLP_WNDPROC, wndProc);
}
-
return hWnd;
}
*/
HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder* lpFolder, LPCITEMIDLIST lpApidl)
{
- TRACE("%p %p %p\n", hWnd, lpFolder, lpApidl);
- return SHInvokeCommand(hWnd, lpFolder, lpApidl, FALSE);
+ return SHInvokeCommand(hWnd, lpFolder, lpApidl, FALSE);
}
/*************************************************************************
HRESULT WINAPI SHInvokeCommand(HWND hWnd, IShellFolder* lpFolder, LPCITEMIDLIST lpApidl, BOOL bInvokeDefault)
{
IContextMenu *iContext;
- HRESULT hRet;
+ HRESULT hRet = E_FAIL;
- TRACE("(%p, %p, %p, %d)\n", hWnd, lpFolder, lpApidl, bInvokeDefault);
+ TRACE("(%p,%p,%p,%d)\n", hWnd, lpFolder, lpApidl, bInvokeDefault);
if (!lpFolder)
- return E_FAIL;
+ return hRet;
/* Get the context menu from the shell folder */
hRet = IShellFolder_GetUIObjectOf(lpFolder, hWnd, 1, &lpApidl,
if (SUCCEEDED(hQuery))
{
if (bInvokeDefault &&
- (dwDefaultId = GetMenuDefaultItem(hMenu, 0, 0)) != (UINT)-1)
+ (dwDefaultId = GetMenuDefaultItem(hMenu, 0, 0)) != 0xFFFFFFFF)
{
CMINVOKECOMMANDINFO cmIci;
/* Invoke the default item */
*/
HRESULT WINAPI CLSIDFromStringWrap(LPCWSTR idstr, CLSID *id)
{
- return CLSIDFromString((LPCOLESTR)idstr, id);
+ return CLSIDFromString((LPOLESTR)idstr, id);
}
/*************************************************************************
*/
INT WINAPI GetMenuPosFromID(HMENU hMenu, UINT wID)
{
- MENUITEMINFOW mi;
- INT nCount = GetMenuItemCount(hMenu), nIter = 0;
-
- TRACE("%p %u\n", hMenu, wID);
+ MENUITEMINFOW mi;
+ INT nCount = GetMenuItemCount(hMenu), nIter = 0;
- while (nIter < nCount)
- {
- mi.cbSize = sizeof(mi);
- mi.fMask = MIIM_ID;
- if (GetMenuItemInfoW(hMenu, nIter, TRUE, &mi) && mi.wID == wID)
- {
- TRACE("ret %d\n", nIter);
- return nIter;
- }
- nIter++;
- }
-
- return -1;
+ while (nIter < nCount)
+ {
+ mi.cbSize = sizeof(mi);
+ mi.fMask = MIIM_ID;
+ if (GetMenuItemInfoW(hMenu, nIter, TRUE, &mi) && mi.wID == wID)
+ return nIter;
+ nIter++;
+ }
+ return -1;
}
/*************************************************************************
*/
DWORD WINAPI SHMenuIndexFromID(HMENU hMenu, UINT uID)
{
- TRACE("%p %u\n", hMenu, uID);
return GetMenuPosFromID(hMenu, uID);
}
/***********************************************************************
* SHGetShellKey (SHLWAPI.@)
*/
-HKEY WINAPI SHGetShellKey(DWORD flags, LPCWSTR sub_key, BOOL create)
+DWORD WINAPI SHGetShellKey(DWORD a, DWORD b, DWORD c)
{
- FIXME("(0x%08x, %s, %d): stub\n", flags, debugstr_w(sub_key), create);
- return (HKEY)0x50;
+ FIXME("(%x, %x, %x): stub\n", a, b, c);
+ return 0x50;
}
/***********************************************************************
return ret;
}
+HRESULT WINAPI IUnknown_QueryServiceExec(IUnknown *unk, REFIID service, REFIID clsid,
+ DWORD x1, DWORD x2, DWORD x3, void **ppvOut)
+{
+ FIXME("%p %s %s %08x %08x %08x %p\n", unk,
+ debugstr_guid(service), debugstr_guid(clsid), x1, x2, x3, ppvOut);
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI IUnknown_ProfferService(IUnknown *unk, void *x0, void *x1, void *x2)
+{
+ FIXME("%p %p %p %p\n", unk, x0, x1, x2);
+ return E_NOTIMPL;
+}
+
/***********************************************************************
* ZoneComputePaneSize [SHLWAPI.382]
*/