Author: fireball Date: Thu Nov 23 19:57:58 2006 New Revision: 24807
URL: http://svn.reactos.org/svn/reactos?rev=24807&view=rev Log: Partial shell32 wine-sync
Modified: trunk/reactos/dll/win32/shell32/autocomplete.c trunk/reactos/dll/win32/shell32/brsfolder.c trunk/reactos/dll/win32/shell32/changenotify.c trunk/reactos/dll/win32/shell32/control.c trunk/reactos/dll/win32/shell32/pidl.h trunk/reactos/dll/win32/shell32/shlview.c
Modified: trunk/reactos/dll/win32/shell32/autocomplete.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/autocompl... ============================================================================== --- trunk/reactos/dll/win32/shell32/autocomplete.c (original) +++ trunk/reactos/dll/win32/shell32/autocomplete.c Thu Nov 23 19:57:58 2006 @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
/* @@ -174,7 +174,7 @@ IAutoCompleteImpl *This = (IAutoCompleteImpl *)iface; ULONG refCount = InterlockedIncrement(&This->ref);
- TRACE("(%p)->(%lu)\n", This, refCount - 1); + TRACE("(%p)->(%u)\n", This, refCount - 1);
return refCount; } @@ -188,7 +188,7 @@ IAutoCompleteImpl *This = (IAutoCompleteImpl *)iface; ULONG refCount = InterlockedDecrement(&This->ref);
- TRACE("(%p)->(%lu)\n", This, refCount + 1); + TRACE("(%p)->(%u)\n", This, refCount + 1);
if (!refCount) { TRACE(" destroying IAutoComplete(%p)\n",This); @@ -347,7 +347,7 @@ { IAutoCompleteImpl *This = impl_from_IAutoComplete2(iface);
- TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%u)\n", This, This->ref);
return IAutoComplete2_AddRef((IAutoComplete*)This); } @@ -360,7 +360,7 @@ { IAutoCompleteImpl *This = impl_from_IAutoComplete2(iface);
- TRACE ("(%p)->(count=%lu)\n", This, This->ref); + TRACE ("(%p)->(count=%u)\n", This, This->ref);
return IAutoComplete_Release((IAutoComplete*)This); } @@ -425,7 +425,7 @@
IAutoCompleteImpl *This = impl_from_IAutoComplete2(iface);
- TRACE("(%p) -> (0x%lx)\n", This, dwFlag); + TRACE("(%p) -> (0x%x)\n", This, dwFlag);
This->options = dwFlag;
Modified: trunk/reactos/dll/win32/shell32/brsfolder.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/brsfolder... ============================================================================== --- trunk/reactos/dll/win32/shell32/brsfolder.c (original) +++ trunk/reactos/dll/win32/shell32/brsfolder.c Thu Nov 23 19:57:58 2006 @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * FIXME: * - many memory leaks @@ -64,7 +64,7 @@ static HTREEITEM InsertTreeViewItem( browse_info*, IShellFolder *, LPCITEMIDLIST, LPCITEMIDLIST, IEnumIDList*, HTREEITEM);
-const WCHAR szBrowseFolderInfo[] = { +static const WCHAR szBrowseFolderInfo[] = { '_','_','W','I','N','E','_', 'B','R','S','F','O','L','D','E','R','D','L','G','_', 'I','N','F','O',0 @@ -108,7 +108,7 @@ Shell_GetImageList(NULL, &hImageList);
if (hImageList) - TreeView_SetImageList( info->hwndTreeView, hImageList, 0 ); + SendMessageW( info->hwndTreeView, TVM_SETIMAGELIST, 0, (LPARAM)hImageList );
/* We want to call InsertTreeViewItem down the code, in order to insert * the root item of the treeview. Due to InsertTreeViewItem's signature, @@ -132,7 +132,7 @@ IShellFolder *lpsfDesktop; hr = SHGetDesktopFolder(&lpsfDesktop); if (!SUCCEEDED(hr)) { - WARN("SHGetDesktopFolder failed! hr = %08lx\n", hr); + WARN("SHGetDesktopFolder failed! hr = %08x\n", hr); return; } hr = IShellFolder_BindToObject(lpsfDesktop, pidlParent, 0, &IID_IShellFolder, (LPVOID*)&lpsfParent); @@ -140,7 +140,7 @@ }
if (!SUCCEEDED(hr)) { - WARN("Could not bind to parent shell folder! hr = %08lx\n", hr); + WARN("Could not bind to parent shell folder! hr = %08x\n", hr); return; }
@@ -152,7 +152,7 @@ }
if (!SUCCEEDED(hr)) { - WARN("Could not bind to root shell folder! hr = %08lx\n", hr); + WARN("Could not bind to root shell folder! hr = %08x\n", hr); IShellFolder_Release(lpsfParent); return; } @@ -160,16 +160,16 @@ flags = BrowseFlagsToSHCONTF( info->lpBrowseInfo->ulFlags ); hr = IShellFolder_EnumObjects( lpsfRoot, info->hWnd, flags, &pEnumChildren ); if (!SUCCEEDED(hr)) { - WARN("Could not get child iterator! hr = %08lx\n", hr); + WARN("Could not get child iterator! hr = %08x\n", hr); IShellFolder_Release(lpsfParent); IShellFolder_Release(lpsfRoot); return; }
- TreeView_DeleteAllItems( info->hwndTreeView ); + SendMessageW( info->hwndTreeView, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT ); item = InsertTreeViewItem( info, lpsfParent, pidlChild, pidlParent, pEnumChildren, TVI_ROOT ); - TreeView_Expand( info->hwndTreeView, item, TVE_EXPAND ); + SendMessageW( info->hwndTreeView, TVM_EXPAND, TVE_EXPAND, (LPARAM)item );
IShellFolder_Release(lpsfRoot); IShellFolder_Release(lpsfParent); @@ -225,14 +225,9 @@ BOOL bSuccess=TRUE; STRRET str;
- TRACE("%p %p %lx %p\n", lpsf, lpi, dwFlags, lpFriendlyName); + TRACE("%p %p %x %p\n", lpsf, lpi, dwFlags, lpFriendlyName); if (SUCCEEDED(IShellFolder_GetDisplayNameOf(lpsf, lpi, dwFlags, &str))) - { - if (FAILED(StrRetToStrNW(lpFriendlyName, MAX_PATH, &str, lpi))) - { - bSuccess = FALSE; - } - } + bSuccess = StrRetToStrNW(lpFriendlyName, MAX_PATH, &str, lpi); else bSuccess = FALSE;
@@ -359,9 +354,7 @@ done: ReleaseCapture(); SetCursor(LoadCursorW(0, (LPWSTR)IDC_ARROW)); - - if (pidlTemp) - SHFree(pidlTemp); + SHFree(pidlTemp); }
static inline BOOL PIDLIsType(LPCITEMIDLIST pidl, PIDLTYPE type) @@ -445,7 +438,8 @@ /* My Computer is already sorted and trying to do a simple text * sort will only mess things up */ if (!_ILIsMyComputer(lptvid->lpi)) - TreeView_SortChildren(info->hwndTreeView, pnmtv->itemNew.hItem, FALSE); + SendMessageW( info->hwndTreeView, TVM_SORTCHILDREN, + FALSE, (LPARAM)pnmtv->itemNew.hItem );
return 0; } @@ -544,6 +538,112 @@ return FALSE; }
+static BOOL BrsFolder_OnSetExpanded(browse_info *info, LPVOID selection, + BOOL is_str, HTREEITEM *pItem) +{ + LPITEMIDLIST pidlSelection = (LPITEMIDLIST)selection; + LPCITEMIDLIST pidlCurrent, pidlRoot; + TVITEMEXW item; + BOOL bResult = FALSE; + + /* If 'selection' is a string, convert to a Shell ID List. */ + if (is_str) { + IShellFolder *psfDesktop; + HRESULT hr; + + hr = SHGetDesktopFolder(&psfDesktop); + if (FAILED(hr)) + goto done; + + hr = IShellFolder_ParseDisplayName(psfDesktop, NULL, NULL, + (LPOLESTR)selection, NULL, &pidlSelection, NULL); + IShellFolder_Release(psfDesktop); + if (FAILED(hr)) + goto done; + } + + /* Move pidlCurrent behind the SHITEMIDs in pidlSelection, which are the root of + * the sub-tree currently displayed. */ + pidlRoot = info->lpBrowseInfo->pidlRoot; + pidlCurrent = pidlSelection; + while (!_ILIsEmpty(pidlRoot) && _ILIsEqualSimple(pidlRoot, pidlCurrent)) { + pidlRoot = ILGetNext(pidlRoot); + pidlCurrent = ILGetNext(pidlCurrent); + } + + /* The given ID List is not part of the SHBrowseForFolder's current sub-tree. */ + if (!_ILIsEmpty(pidlRoot)) + goto done; + + /* Initialize item to point to the first child of the root folder. */ + memset(&item, 0, sizeof(item)); + item.mask = TVIF_PARAM; + item.hItem = TreeView_GetRoot(info->hwndTreeView); + if (item.hItem) + item.hItem = TreeView_GetChild(info->hwndTreeView, item.hItem); + + /* Walk the tree along the nodes corresponding to the remaining ITEMIDLIST */ + while (item.hItem && !_ILIsEmpty(pidlCurrent)) { + LPTV_ITEMDATA pItemData; + + SendMessageW(info->hwndTreeView, TVM_GETITEMW, 0, (LPARAM)&item); + pItemData = (LPTV_ITEMDATA)item.lParam; + + if (_ILIsEqualSimple(pItemData->lpi, pidlCurrent)) { + pidlCurrent = ILGetNext(pidlCurrent); + if (!_ILIsEmpty(pidlCurrent)) { + /* Only expand current node and move on to it's first child, + * if we didn't already reach the last SHITEMID */ + SendMessageW(info->hwndTreeView, TVM_EXPAND, TVE_EXPAND, (LPARAM)item.hItem); + item.hItem = TreeView_GetChild(info->hwndTreeView, item.hItem); + } + } else { + item.hItem = TreeView_GetNextSibling(info->hwndTreeView, item.hItem); + } + } + + if (_ILIsEmpty(pidlCurrent) && item.hItem) + bResult = TRUE; + +done: + if (pidlSelection && pidlSelection != (LPITEMIDLIST)selection) + ILFree(pidlSelection); + + if (pItem) + *pItem = item.hItem; + + return bResult; +} + +static BOOL BrsFolder_OnSetSelectionW(browse_info *info, LPVOID selection, BOOL is_str) { + HTREEITEM hItem; + BOOL bResult; + + bResult = BrsFolder_OnSetExpanded(info, selection, is_str, &hItem); + if (bResult) + SendMessageW(info->hwndTreeView, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem ); + return bResult; +} + +static BOOL BrsFolder_OnSetSelectionA(browse_info *info, LPVOID selection, BOOL is_str) { + LPWSTR selectionW = NULL; + BOOL result = FALSE; + int length; + + if (!is_str) + return BrsFolder_OnSetSelectionW(info, selection, is_str); + + if ((length = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)selection, -1, NULL, 0)) && + (selectionW = HeapAlloc(GetProcessHeap(), 0, length * sizeof(WCHAR))) && + MultiByteToWideChar(CP_ACP, 0, (LPCSTR)selection, -1, selectionW, length)) + { + result = BrsFolder_OnSetSelectionW(info, selectionW, is_str); + } + + HeapFree(GetProcessHeap(), 0, selectionW); + return result; +} + /************************************************************************* * BrsFolderDlgProc32 (not an exported API function) */ @@ -588,25 +688,13 @@ break;
case BFFM_SETSELECTIONA: - if (wParam) - FIXME("Set selection %s\n", debugstr_a((LPSTR)lParam)); - else - FIXME("Set selection %p\n", (void*)lParam); - break; + return BrsFolder_OnSetSelectionA(info, (LPVOID)lParam, (BOOL)wParam);
case BFFM_SETSELECTIONW: - if (wParam) - FIXME("Set selection %s\n", debugstr_w((LPWSTR)lParam)); - else - FIXME("Set selection %p\n", (void*)lParam); - break; + return BrsFolder_OnSetSelectionW(info, (LPVOID)lParam, (BOOL)wParam);
case BFFM_SETEXPANDED: /* unicode only */ - if (wParam) - FIXME("Set expanded %s\n", debugstr_w((LPWSTR)lParam)); - else - FIXME("Set expanded %p\n", (void*)lParam); - break; + return BrsFolder_OnSetExpanded(info, (LPVOID)lParam, (BOOL)wParam, NULL); } return FALSE; } @@ -623,7 +711,8 @@ BROWSEINFOW bi; LPITEMIDLIST lpid; INT len; - + LPWSTR title; + TRACE("%p\n", lpbi);
bi.hwndOwner = lpbi->hwndOwner; @@ -639,12 +728,13 @@ if (lpbi->lpszTitle) { len = MultiByteToWideChar( CP_ACP, 0, lpbi->lpszTitle, -1, NULL, 0 ); - bi.lpszTitle = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ); - MultiByteToWideChar( CP_ACP, 0, lpbi->lpszTitle, -1, (LPWSTR)bi.lpszTitle, len ); + title = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ); + MultiByteToWideChar( CP_ACP, 0, lpbi->lpszTitle, -1, title, len ); } else - bi.lpszTitle = NULL; - + title = NULL; + + bi.lpszTitle = title; bi.ulFlags = lpbi->ulFlags; bi.lpfn = lpbi->lpfn; bi.lParam = lpbi->lParam; @@ -656,7 +746,7 @@ lpbi->pszDisplayName, MAX_PATH, 0, NULL); HeapFree( GetProcessHeap(), 0, bi.pszDisplayName ); } - HeapFree(GetProcessHeap(), 0, (LPVOID)bi.lpszTitle); + HeapFree(GetProcessHeap(), 0, title); lpbi->iImage = bi.iImage; return lpid; }
Modified: trunk/reactos/dll/win32/shell32/changenotify.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/changenot... ============================================================================== --- trunk/reactos/dll/win32/shell32/changenotify.c (original) +++ trunk/reactos/dll/win32/shell32/changenotify.c Thu Nov 23 19:57:58 2006 @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
#include <stdarg.h> @@ -178,6 +178,8 @@ DeleteNode( head );
LeaveCriticalSection(&SHELL32_ChangenotifyCS); + + DeleteCriticalSection(&SHELL32_ChangenotifyCS); }
/************************************************************************* @@ -198,7 +200,7 @@
item = SHAlloc(sizeof(NOTIFICATIONLIST));
- TRACE("(%p,0x%08x,0x%08lx,0x%08x,%d,%p) item=%p\n", + TRACE("(%p,0x%08x,0x%08x,0x%08x,%d,%p) item=%p\n", hwnd, fSources, wEventMask, uMsg, cItems, lpItems, item);
item->next = NULL; @@ -234,7 +236,7 @@ { LPNOTIFICATIONLIST node;
- TRACE("(0x%08lx)\n", hNotify); + TRACE("(0x%08x)\n", hNotify);
EnterCriticalSection(&SHELL32_ChangenotifyCS);
@@ -253,7 +255,7 @@ BOOL WINAPI SHChangeNotifyUpdateEntryList(DWORD unknown1, DWORD unknown2, DWORD unknown3, DWORD unknown4) { - FIXME("(0x%08lx, 0x%08lx, 0x%08lx, 0x%08lx)\n", + FIXME("(0x%08x, 0x%08x, 0x%08x, 0x%08x)\n", unknown1, unknown2, unknown3, unknown4);
return -1; @@ -283,7 +285,7 @@ Pidls[0] = NULL; Pidls[1] = NULL;
- TRACE("(0x%08lx,0x%08x,%p,%p):stub.\n", wEventId, uFlags, dwItem1, dwItem2); + TRACE("(0x%08x,0x%08x,%p,%p):stub.\n", wEventId, uFlags, dwItem1, dwItem2);
if( ( wEventId & SHCNE_NOITEMEVENTS ) && ( dwItem1 || dwItem2 ) ) { @@ -339,10 +341,10 @@ WCHAR path[MAX_PATH];
if( Pidls[0] && SHGetPathFromIDListW(Pidls[0], path )) - TRACE("notify %08lx on item1 = %s\n", wEventId, debugstr_w(path)); + TRACE("notify %08x on item1 = %s\n", wEventId, debugstr_w(path));
if( Pidls[1] && SHGetPathFromIDListW(Pidls[1], path )) - TRACE("notify %08lx on item2 = %s\n", wEventId, debugstr_w(path)); + TRACE("notify %08x on item2 = %s\n", wEventId, debugstr_w(path)); }
EnterCriticalSection(&SHELL32_ChangenotifyCS); @@ -380,7 +382,7 @@
ptr->pidlSignaled = ILClone(Pidls[0]);
- TRACE("notifying %s, event %s(%lx) before\n", NodeName( ptr ), DumpEvent( + TRACE("notifying %s, event %s(%x) before\n", NodeName( ptr ), DumpEvent( wEventId ),wEventId );
ptr->wSignalledEvent |= wEventId; @@ -390,7 +392,7 @@ else SendMessageA(ptr->hwnd, ptr->uMsg, (WPARAM)Pidls, wEventId);
- TRACE("notifying %s, event %s(%lx) after\n", NodeName( ptr ), DumpEvent( + TRACE("notifying %s, event %s(%x) after\n", NodeName( ptr ), DumpEvent( wEventId ),wEventId );
} @@ -400,8 +402,8 @@ /* if we allocated it, free it. The ANSI flag is also set in its Unicode sibling. */ if ((typeFlag & SHCNF_PATHA) || (typeFlag & SHCNF_PRINTERA)) { - if (Pidls[0]) SHFree((LPITEMIDLIST)Pidls[0]); - if (Pidls[1]) SHFree((LPITEMIDLIST)Pidls[1]); + SHFree((LPITEMIDLIST)Pidls[0]); + SHFree((LPITEMIDLIST)Pidls[1]); } }
@@ -419,7 +421,7 @@ int count, SHChangeNotifyEntry *idlist) { - FIXME("(%p,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):semi stub.\n", + FIXME("(%p,0x%08x,0x%08x,0x%08x,0x%08x,%p):semi stub.\n", hwnd,events1,events2,msg,count,idlist);
return (DWORD) SHChangeNotifyRegister(hwnd, events1, events2, msg, count, idlist); @@ -438,7 +440,7 @@ LPNOTIFICATIONLIST node; LPCITEMIDLIST *idlist;
- TRACE("%p %08lx %p %p\n", hChange, dwProcessId, lppidls, lpwEventId); + TRACE("%p %08x %p %p\n", hChange, dwProcessId, lppidls, lpwEventId);
/* EnterCriticalSection(&SHELL32_ChangenotifyCS); */
@@ -474,7 +476,7 @@ */ DWORD WINAPI NTSHChangeNotifyDeregister(ULONG x1) { - FIXME("(0x%08lx):semi stub.\n",x1); + FIXME("(0x%08x):semi stub.\n",x1);
return SHChangeNotifyDeregister( x1 ); }
Modified: trunk/reactos/dll/win32/shell32/control.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/control.c... ============================================================================== --- trunk/reactos/dll/win32/shell32/control.c (original) +++ trunk/reactos/dll/win32/shell32/control.c Thu Nov 23 19:57:58 2006 @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
#include <assert.h> @@ -163,7 +163,7 @@ #define YICON 32 #define YSTEP 64
-static BOOL Control_Localize(const CPanel* panel, unsigned cx, unsigned cy, +static BOOL Control_Localize(const CPanel* panel, int cx, int cy, CPlApplet** papplet, unsigned* psp) { unsigned i, x = (XSTEP-XICON)/2, y = 0; @@ -228,7 +228,7 @@ unsigned i; CPlApplet* applet;
- if (Control_Localize(panel, LOWORD(lParam), HIWORD(lParam), &applet, &i)) { + if (Control_Localize(panel, (short)LOWORD(lParam), (short)HIWORD(lParam), &applet, &i)) { if (up) { if (panel->clkApplet == applet && panel->clkSP == i) { applet->proc(applet->hWnd, CPL_DBLCLK, i, applet->info[i].lData); @@ -352,7 +352,6 @@ unsigned sp = 0; LPWSTR extraPmts = NULL; int quoted = 0; - BOOL spSet = FALSE;
buffer = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(wszCmd) + 1) * sizeof(*wszCmd)); if (!buffer) return; @@ -367,10 +366,8 @@ if (beg) { if (*beg == '@') { sp = atoiW(beg + 1); - spSet = TRUE; } else if (*beg == '\0') { sp = 0; - spSet = TRUE; } else { extraPmts = beg; } @@ -384,9 +381,6 @@ while ((ptr = StrChrW(buffer, '"'))) memmove(ptr, ptr+1, lstrlenW(ptr)*sizeof(WCHAR));
- while ((ptr = StrChrW(extraPmts, '"'))) - memmove(ptr, ptr+1, lstrlenW(ptr)*sizeof(WCHAR)); - TRACE("cmd %s, extra %s, sp %d\n", debugstr_w(buffer), debugstr_w(extraPmts), sp);
Control_LoadApplet(hWnd, buffer, panel); @@ -399,13 +393,6 @@ WARN("Out of bounds (%u >= %u), setting to 0\n", sp, applet->count); sp = 0; } - - if ((extraPmts)&&(!spSet)) - { - while ((lstrcmpiW(extraPmts, applet->info[sp].szName)) && (sp < applet->count)) - sp++; - } - if (applet->info[sp].dwSize) { if (!applet->proc(applet->hWnd, CPL_STARTWPARMSA, sp, (LPARAM)extraPmts)) applet->proc(applet->hWnd, CPL_DBLCLK, sp, applet->info[sp].lData); @@ -423,7 +410,7 @@ { CPanel panel;
- TRACE("(%p, %p, %s, 0x%08lx)\n", + TRACE("(%p, %p, %s, 0x%08x)\n", hWnd, hInst, debugstr_w(cmd), nCmdShow);
memset(&panel, 0, sizeof(panel)); @@ -456,7 +443,7 @@ */ HRESULT WINAPI Control_FillCache_RunDLLW(HWND hWnd, HANDLE hModule, DWORD w, DWORD x) { - FIXME("%p %p 0x%08lx 0x%08lx stub\n", hWnd, hModule, w, x); + FIXME("%p %p 0x%08x 0x%08x stub\n", hWnd, hModule, w, x); return 0; }
@@ -481,7 +468,7 @@ WORD args[5]; SEGPTR cmdline_seg;
- TRACE( "proc %lx hwnd %p inst %p cmdline %s cmdshow %d\n", + TRACE( "proc %x hwnd %p inst %p cmdline %s cmdshow %d\n", proc, hwnd, inst, debugstr_a(cmdline), cmdshow );
cmdline_seg = MapLS( cmdline ); @@ -507,6 +494,6 @@ */ DWORD WINAPI CallCPLEntry16(HMODULE hMod, FARPROC pFunc, DWORD dw3, DWORD dw4, DWORD dw5, DWORD dw6) { - FIXME("(%p, %p, %08lx, %08lx, %08lx, %08lx): stub.\n", hMod, pFunc, dw3, dw4, dw5, dw6); + FIXME("(%p, %p, %08x, %08x, %08x, %08x): stub.\n", hMod, pFunc, dw3, dw4, dw5, dw6); return 0x0deadbee; }
Modified: trunk/reactos/dll/win32/shell32/pidl.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/pidl.h?re... ============================================================================== --- trunk/reactos/dll/win32/shell32/pidl.h (original) +++ trunk/reactos/dll/win32/shell32/pidl.h Thu Nov 23 19:57:58 2006 @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES: * @@ -209,6 +209,14 @@ BOOL _ILIsSpecialFolder (LPCITEMIDLIST pidl); BOOL _ILIsPidlSimple (LPCITEMIDLIST pidl); BOOL _ILIsCPanelStruct (LPCITEMIDLIST pidl); +static inline +BOOL _ILIsEqualSimple (LPCITEMIDLIST pidlA, LPCITEMIDLIST pidlB) +{ + return (pidlA->mkid.cb > 0 && !memcmp(pidlA, pidlB, pidlA->mkid.cb)) || + (!pidlA->mkid.cb && !pidlB->mkid.cb); +} +static inline +BOOL _ILIsEmpty (LPCITEMIDLIST pidl) { return _ILIsDesktop(pidl); }
/* * simple pidls @@ -240,6 +248,7 @@
/* Other helpers */ LPITEMIDLIST _ILCreateMyComputer (void); +LPITEMIDLIST _ILCreateMyDocuments (void); LPITEMIDLIST _ILCreateIExplore (void); LPITEMIDLIST _ILCreateControlPanel (void); LPITEMIDLIST _ILCreatePrinters (void);
Modified: trunk/reactos/dll/win32/shell32/shlview.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shlview.c... ============================================================================== --- trunk/reactos/dll/win32/shell32/shlview.c (original) +++ trunk/reactos/dll/win32/shell32/shlview.c Thu Nov 23 19:57:58 2006 @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * FIXME: The order by part of the background context menu should be * buily according to the columns shown. @@ -146,7 +146,7 @@ #define IDM_VIEW_IDW (FCIDM_SHVIEWFIRST + 0x501) #define IDM_MYFILEITEM (FCIDM_SHVIEWFIRST + 0x502)
-#define ID_LISTVIEW 2000 +#define ID_LISTVIEW 1
#define SHV_CHANGE_NOTIFY WM_USER + 0x1111
@@ -156,7 +156,7 @@ #define GET_WM_COMMAND_CMD(wp, lp) HIWORD(wp)
/* - Items merged into the toolbar and and the filemenu + Items merged into the toolbar and the filemenu */ typedef struct { int idCommand; @@ -167,7 +167,7 @@ BYTE bStyle; } MYTOOLINFO, *LPMYTOOLINFO;
-MYTOOLINFO Tools[] = +static const MYTOOLINFO Tools[] = { { FCIDM_SHVIEW_BIGICON, 0, 0, IDS_VIEW_LARGE, TBSTATE_ENABLED, BTNS_BUTTON }, { FCIDM_SHVIEW_SMALLICON, 0, 0, IDS_VIEW_SMALL, TBSTATE_ENABLED, BTNS_BUTTON }, @@ -222,7 +222,7 @@ { TRACE("ICommDlgBrowser::IncludeObject pidl=%p\n", pidl); ret = ICommDlgBrowser_IncludeObject(This->pCommDlgBrowser, (IShellView*)This, pidl); - TRACE("--0x%08lx\n", ret); + TRACE("--0x%08x\n", ret); } return ret; } @@ -235,7 +235,7 @@ { TRACE("ICommDlgBrowser::OnDefaultCommand\n"); ret = ICommDlgBrowser_OnDefaultCommand(This->pCommDlgBrowser, (IShellView*)This); - TRACE("-- returns %08lx\n", ret); + TRACE("-- returns %08x\n", ret); } return ret; } @@ -342,12 +342,17 @@ This->ListViewSortInfo.nLastHeaderID = -1;
if (This->FolderSettings.fFlags & FWF_DESKTOP) { - if (0) /* FIXME: look into registry vale HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ListviewShadow and activate drop shadows */ - ListView_SetTextBkColor(This->hWndList, CLR_NONE); + /* + * FIXME: look at the registry value + * HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ListviewShadow + * and activate drop shadows if necessary + */ + if (0) + SendMessageW(This->hWndList, LVM_SETTEXTBKCOLOR, 0, CLR_NONE); else - ListView_SetTextBkColor(This->hWndList, GetSysColor(COLOR_DESKTOP)); - - ListView_SetTextColor(This->hWndList, RGB(255,255,255)); + SendMessageW(This->hWndList, LVM_SETTEXTBKCOLOR, 0, GetSysColor(COLOR_DESKTOP)); + + SendMessageW(This->hWndList, LVM_SETTEXTCOLOR, 0, RGB(255,255,255)); }
/* UpdateShellSettings(); */ @@ -361,14 +366,14 @@ */ static BOOL ShellView_InitList(IShellViewImpl * This) { - LVCOLUMNA lvColumn; + LVCOLUMNW lvColumn; SHELLDETAILS sd; int i; - char szTemp[50]; + WCHAR szTemp[50];
TRACE("%p\n",This);
- ListView_DeleteAllItems(This->hWndList); + SendMessageW(This->hWndList, LVM_DELETEALLITEMS, 0, 0);
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT; lvColumn.pszText = szTemp; @@ -381,8 +386,8 @@ break; lvColumn.fmt = sd.fmt; lvColumn.cx = sd.cxChar*8; /* chars->pixel */ - StrRetToStrNA( szTemp, 50, &sd.str, NULL); - ListView_InsertColumnA(This->hWndList, i, &lvColumn); + StrRetToStrNW( szTemp, 50, &sd.str, NULL); + SendMessageW(This->hWndList, LVM_INSERTCOLUMNW, i, (LPARAM) &lvColumn); } } else @@ -390,8 +395,8 @@ FIXME("no SF2\n"); }
- ListView_SetImageList(This->hWndList, ShellSmallIconList, LVSIL_SMALL); - ListView_SetImageList(This->hWndList, ShellBigIconList, LVSIL_NORMAL); + SendMessageW(This->hWndList, LVM_SETIMAGELIST, LVSIL_SMALL, (LPARAM)ShellSmallIconList); + SendMessageW(This->hWndList, LVM_SETIMAGELIST, LVSIL_NORMAL, (LPARAM)ShellBigIconList);
return TRUE; } @@ -522,9 +527,11 @@ LPCITEMIDLIST pidl) { LVITEMA lvItem; - ZeroMemory(&lvItem, sizeof(LVITEMA)); + lvItem.iSubItem = 0; lvItem.mask = LVIF_PARAM; - for(lvItem.iItem = 0; ListView_GetItemA(This->hWndList, &lvItem); lvItem.iItem++) + for(lvItem.iItem = 0; + SendMessageA(This->hWndList, LVM_GETITEMA, 0, (LPARAM) &lvItem); + lvItem.iItem++) { LPITEMIDLIST currentpidl = (LPITEMIDLIST) lvItem.lParam; HRESULT hr = IShellFolder_CompareIDs(This->pSFParent, 0, pidl, currentpidl); @@ -545,9 +552,9 @@
TRACE("(%p)(pidl=%p)\n", This, pidl);
- ZeroMemory(&lvItem, sizeof(lvItem)); /* create the listview item*/ lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; /*set the mask*/ lvItem.iItem = ListView_GetItemCount(This->hWndList); /*add the item to the end of the list*/ + lvItem.iSubItem = 0; lvItem.lParam = (LPARAM) ILClone(ILFindLastID(pidl)); /*set the item's data*/ lvItem.pszText = LPSTR_TEXTCALLBACKA; /*get text on a callback basis*/ lvItem.iImage = I_IMAGECALLBACK; /*get the image on a callback basis*/ @@ -580,17 +587,16 @@ nItem = LV_FindItemByPidl(This, ILFindLastID(pidlOld)); if ( -1 != nItem ) { - ZeroMemory(&lvItem, sizeof(lvItem)); /* create the listview item*/ lvItem.mask = LVIF_PARAM; /* only the pidl */ lvItem.iItem = nItem; - ListView_GetItemA(This->hWndList, &lvItem); + SendMessageA(This->hWndList, LVM_GETITEMA, 0, (LPARAM) &lvItem);
SHFree((LPITEMIDLIST)lvItem.lParam); lvItem.mask = LVIF_PARAM; lvItem.iItem = nItem; lvItem.lParam = (LPARAM) ILClone(ILFindLastID(pidlNew)); /* set the item's data */ - ListView_SetItemA(This->hWndList, &lvItem); - ListView_Update(This->hWndList, nItem); + SendMessageA(This->hWndList, LVM_SETITEMA, 0, (LPARAM) &lvItem); + SendMessageA(This->hWndList, LVM_UPDATE, nItem, 0); return TRUE; /* FIXME: better handling */ } return FALSE; @@ -772,19 +778,21 @@ */
static void ShellView_MergeViewMenu(IShellViewImpl * This, HMENU hSubMenu) -{ MENUITEMINFOA mii; - +{ TRACE("(%p)->(submenu=%p)\n",This,hSubMenu);
if(hSubMenu) { /*add a separator at the correct position in the menu*/ + MENUITEMINFOA mii; + static char view[] = "View"; + _InsertMenuItem(hSubMenu, FCIDM_MENU_VIEW_SEP_OPTIONS, FALSE, 0, MFT_SEPARATOR, NULL, MFS_ENABLED);
ZeroMemory(&mii, sizeof(mii)); mii.cbSize = sizeof(mii); mii.fMask = MIIM_SUBMENU | MIIM_TYPE | MIIM_DATA; mii.fType = MFT_STRING; - mii.dwTypeData = "View"; + mii.dwTypeData = view; mii.hSubMenu = LoadMenuA(shell32_hInstance, "MENU_001"); InsertMenuItemA(hSubMenu, FCIDM_MENU_VIEW_SEP_OPTIONS, FALSE, &mii); } @@ -803,10 +811,7 @@ LVITEMA lvItem; UINT i = 0;
- if (This->apidl) - { - SHFree(This->apidl); - } + SHFree(This->apidl);
This->cidl = ListView_GetSelectedCount(This->hWndList); This->apidl = (LPITEMIDLIST*)SHAlloc(This->cidl * sizeof(LPITEMIDLIST)); @@ -817,9 +822,10 @@ { TRACE("-- Items selected =%u\n", This->cidl);
- ZeroMemory(&lvItem, sizeof(lvItem)); lvItem.mask = LVIF_STATE | LVIF_PARAM; lvItem.stateMask = LVIS_SELECTED; + lvItem.iItem = 0; + lvItem.iSubItem = 0;
while(ListView_GetItemA(This->hWndList, &lvItem) && (i < This->cidl)) { @@ -1191,7 +1197,7 @@ */ static LRESULT ShellView_OnCommand(IShellViewImpl * This,DWORD dwCmdID, DWORD dwCmd, HWND hwndCmd) { - TRACE("(%p)->(0x%08lx 0x%08lx %p) stub\n",This, dwCmdID, dwCmd, hwndCmd); + TRACE("(%p)->(0x%08x 0x%08x %p) stub\n",This, dwCmdID, dwCmd, hwndCmd);
switch(dwCmdID) { @@ -1227,11 +1233,11 @@ This->ListViewSortInfo.nHeaderID = (LPARAM) (dwCmdID - 0x30); This->ListViewSortInfo.bIsAscending = TRUE; This->ListViewSortInfo.nLastHeaderID = This->ListViewSortInfo.nHeaderID; - ListView_SortItems(This->hWndList, ShellView_ListViewCompareItems, (LPARAM) (&(This->ListViewSortInfo))); + SendMessageA(This->hWndList, LVM_SORTITEMS, (WPARAM) &This->ListViewSortInfo, (LPARAM)ShellView_ListViewCompareItems); break;
default: - TRACE("-- COMMAND 0x%04lx unhandled\n", dwCmdID); + TRACE("-- COMMAND 0x%04x unhandled\n", dwCmdID); } return 0; } @@ -1323,7 +1329,7 @@ } This->ListViewSortInfo.nLastHeaderID = This->ListViewSortInfo.nHeaderID;
- ListView_SortItems(lpnmlv->hdr.hwndFrom, ShellView_ListViewCompareItems, (LPARAM) (&(This->ListViewSortInfo))); + SendMessageA(lpnmlv->hdr.hwndFrom, LVM_SORTITEMS, (WPARAM) &This->ListViewSortInfo, (LPARAM)ShellView_ListViewCompareItems); break;
case LVN_GETDISPINFOA: @@ -1420,10 +1426,10 @@ WCHAR wszNewName[MAX_PATH]; LVITEMA lvItem;
- ZeroMemory(&lvItem, sizeof(LVITEMA)); lvItem.iItem = lpdi->item.iItem; + lvItem.iSubItem = 0; lvItem.mask = LVIF_PARAM; - ListView_GetItemA(This->hWndList, &lvItem); + SendMessageA(This->hWndList, LVM_GETITEMA, 0, (LPARAM) &lvItem);
pidl = (LPITEMIDLIST)lpdi->item.lParam; if (!MultiByteToWideChar( CP_ACP, 0, lpdi->item.pszText, -1, wszNewName, MAX_PATH )) @@ -1434,7 +1440,7 @@ { lvItem.mask = LVIF_PARAM; lvItem.lParam = (LPARAM)pidl; - ListView_SetItemA(This->hWndList, &lvItem); + SendMessageA(This->hWndList, LVM_SETITEMA, 0, (LPARAM) &lvItem); return TRUE; } } @@ -1466,8 +1472,8 @@ i = ListView_GetNextItem(This->hWndList, -1, LVNI_SELECTED);
- ListView_EnsureVisible(This->hWndList, i, 0); - ListView_EditLabelA(This->hWndList, i); + SendMessageW(This->hWndList, LVM_ENSUREVISIBLE, i, 0); + SendMessageW(This->hWndList, LVM_EDITLABELW, i, 0); } } #if 0 @@ -1503,8 +1509,8 @@ item_index = ListView_GetNextItem(This->hWndList, item_index, LVNI_SELECTED); item.iItem = item_index; - item.mask |= LVIF_PARAM; - ListView_GetItemA(This->hWndList, &item); + item.mask = LVIF_PARAM; + SendMessageA(This->hWndList, LVM_GETITEMA, 0, (LPARAM) &item);
/* get item pidl */ pItems[i] = (LPITEMIDLIST)item.lParam; @@ -1544,7 +1550,7 @@ static LRESULT ShellView_OnChange(IShellViewImpl * This, LPITEMIDLIST * Pidls, LONG wEventId) {
- TRACE("(%p)(%p,%p,0x%08lx)\n", This, Pidls[0], Pidls[1], wEventId); + TRACE("(%p)(%p,%p,0x%08x)\n", This, Pidls[0], Pidls[1], wEventId); switch(wEventId) { case SHCNE_MKDIR: @@ -1678,7 +1684,7 @@ IShellViewImpl *This = (IShellViewImpl *)iface; ULONG refCount = InterlockedIncrement(&This->ref);
- TRACE("(%p)->(count=%lu)\n", This, refCount - 1); + TRACE("(%p)->(count=%u)\n", This, refCount - 1);
return refCount; } @@ -1690,7 +1696,7 @@ IShellViewImpl *This = (IShellViewImpl *)iface; ULONG refCount = InterlockedDecrement(&This->ref);
- TRACE("(%p)->(count=%li)\n", This, refCount + 1); + TRACE("(%p)->(count=%i)\n", This, refCount + 1);
if (!refCount) { @@ -1704,8 +1710,7 @@ if(This->pSF2Parent) IShellFolder2_Release(This->pSF2Parent);
- if(This->apidl) - SHFree(This->apidl); + SHFree(This->apidl);
if(This->pAdvSink) IAdviseSink_Release(This->pAdvSink); @@ -1749,7 +1754,7 @@ #if 0 IShellViewImpl *This = (IShellViewImpl *)iface;
- FIXME("(%p)->(%p: hwnd=%x msg=%x lp=%lx wp=%x) stub\n",This,lpmsg, lpmsg->hwnd, lpmsg->message, lpmsg->lParam, lpmsg->wParam); + FIXME("(%p)->(%p: hwnd=%x msg=%x lp=%x wp=%x) stub\n",This,lpmsg, lpmsg->hwnd, lpmsg->message, lpmsg->lParam, lpmsg->wParam); #endif
if ((lpmsg->message>=WM_KEYFIRST) && (lpmsg->message>=WM_KEYLAST)) @@ -1817,7 +1822,7 @@
TRACE("(%p)\n",This);
- ListView_DeleteAllItems(This->hWndList); + SendMessageW(This->hWndList, LVM_DELETEALLITEMS, 0, 0); ShellView_FillList(This);
return S_OK; @@ -1838,7 +1843,7 @@
TRACE("(%p)->(shlview=%p set=%p shlbrs=%p rec=%p hwnd=%p) incomplete\n",This, lpPrevView,lpfs, psb, prcView, phWnd); - TRACE("-- vmode=%x flags=%x left=%li top=%li right=%li bottom=%li\n",lpfs->ViewMode, lpfs->fFlags ,prcView->left,prcView->top, prcView->right, prcView->bottom); + TRACE("-- vmode=%x flags=%x left=%i top=%i right=%i bottom=%i\n",lpfs->ViewMode, lpfs->fFlags ,prcView->left,prcView->top, prcView->right, prcView->bottom);
/*set up the member variables*/ This->pShellBrowser = psb; @@ -1878,7 +1883,7 @@ *phWnd = CreateWindowExA(0, SV_CLASS_NAME, NULL, - WS_CHILD | WS_VISIBLE | WS_TABSTOP, + WS_CHILD | WS_TABSTOP, prcView->left, prcView->top, prcView->right - prcView->left, @@ -1892,6 +1897,9 @@
if(!*phWnd) return E_FAIL;
+ SetWindowPos(*phWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); + UpdateWindow(*phWnd); + return S_OK; }
@@ -1965,13 +1973,14 @@ LVITEMA lvItem;
if(uFlags & SVSI_ENSUREVISIBLE) - ListView_EnsureVisible(This->hWndList, i, 0); - - ZeroMemory(&lvItem, sizeof(LVITEMA)); + SendMessageW(This->hWndList, LVM_ENSUREVISIBLE, i, 0); + lvItem.mask = LVIF_STATE; + lvItem.stateMask = LVIS_SELECTED | LVIS_FOCUSED; lvItem.iItem = 0; - - while(ListView_GetItemA(This->hWndList, &lvItem)) + lvItem.iSubItem = 0; + + while(SendMessageA(This->hWndList, LVM_GETITEMA, 0, (LPARAM) &lvItem)) { if (lvItem.iItem == i) { @@ -1988,13 +1997,13 @@ if (uFlags & SVSI_DESELECTOTHERS) lvItem.state &= ~LVIS_SELECTED; } - ListView_SetItemA(This->hWndList, &lvItem); + SendMessageA(This->hWndList, LVM_SETITEMA, 0, (LPARAM) &lvItem); lvItem.iItem++; }
if(uFlags & SVSI_EDIT) - ListView_EditLabelA(This->hWndList, i); + SendMessageW(This->hWndList, LVM_EDITLABELW, i, 0);
} return S_OK; @@ -2095,14 +2104,14 @@ UINT i; IShellViewImpl *This = impl_from_IOleCommandTarget(iface);
- FIXME("(%p)->(%p(%s) 0x%08lx %p %p\n", + FIXME("(%p)->(%p(%s) 0x%08x %p %p\n", This, pguidCmdGroup, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, pCmdText);
if (!prgCmds) return E_POINTER; for (i = 0; i < cCmds; i++) { - FIXME("\tprgCmds[%d].cmdID = %ld\n", i, prgCmds[i].cmdID); + FIXME("\tprgCmds[%d].cmdID = %d\n", i, prgCmds[i].cmdID); prgCmds[i].cmdf = 0; } return OLECMDERR_E_UNKNOWNGROUP; @@ -2123,7 +2132,7 @@ { IShellViewImpl *This = impl_from_IOleCommandTarget(iface);
- FIXME("(%p)->(\n\tTarget GUID:%s Command:0x%08lx Opt:0x%08lx %p %p)\n", + FIXME("(%p)->(\n\tTarget GUID:%s Command:0x%08x Opt:0x%08x %p %p)\n", This, debugstr_guid(pguidCmdGroup), nCmdID, nCmdexecopt, pvaIn, pvaOut);
if (IsEqualIID(pguidCmdGroup, &CGID_Explorer) && @@ -2167,7 +2176,7 @@ { IShellViewImpl *This = impl_from_IDropTarget(iface);
- TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%u)\n",This,This->ref);
return IShellFolder_AddRef((IShellFolder*)This); } @@ -2176,7 +2185,7 @@ { IShellViewImpl *This = impl_from_IDropTarget(iface);
- TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%u)\n",This,This->ref);
return IShellFolder_Release((IShellFolder*)This); } @@ -2249,10 +2258,10 @@ } else { /* Query the relative PIDL of the shellfolder object represented by the currently * dragged over listview-item ... */ - ZeroMemory(&lvItem, sizeof(lvItem)); lvItem.mask = LVIF_PARAM; lvItem.iItem = lResult; - ListView_GetItemA(This->hWndList, &lvItem); + lvItem.iSubItem = 0; + SendMessageA(This->hWndList, LVM_GETITEMA, 0, (LPARAM) &lvItem);
/* ... and bind pCurDropTarget to the IDropTarget interface of an UIObject of this object */ hr = IShellFolder_GetUIObjectOf(This->pSFParent, This->hWndList, 1, @@ -2347,7 +2356,7 @@ { IShellViewImpl *This = impl_from_IDropSource(iface);
- TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%u)\n",This,This->ref);
return IShellFolder_AddRef((IShellFolder*)This); } @@ -2356,7 +2365,7 @@ { IShellViewImpl *This = impl_from_IDropSource(iface);
- TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%u)\n",This,This->ref);
return IShellFolder_Release((IShellFolder*)This); } @@ -2414,7 +2423,7 @@ { IShellViewImpl *This = impl_from_IViewObject(iface);
- TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%u)\n",This,This->ref);
return IShellFolder_AddRef((IShellFolder*)This); } @@ -2423,7 +2432,7 @@ { IShellViewImpl *This = impl_from_IViewObject(iface);
- TRACE("(%p)->(count=%lu)\n",This,This->ref); + TRACE("(%p)->(count=%u)\n",This,This->ref);
return IShellFolder_Release((IShellFolder*)This); } @@ -2498,7 +2507,7 @@
IShellViewImpl *This = impl_from_IViewObject(iface);
- FIXME("partial stub: %p %08lx %08lx %p\n", + FIXME("partial stub: %p %08x %08x %p\n", This, aspects, advf, pAdvSink);
/* FIXME: we set the AdviseSink, but never use it to send any advice */