[ros-diffs] [fireball] 24807: Partial shell32 wine-sync

fireball at svn.reactos.org fireball at svn.reactos.org
Thu Nov 23 17:57:58 CET 2006


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/autocomplete.c?rev=24807&r1=24806&r2=24807&view=diff
==============================================================================
--- 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.c?rev=24807&r1=24806&r2=24807&view=diff
==============================================================================
--- 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/changenotify.c?rev=24807&r1=24806&r2=24807&view=diff
==============================================================================
--- 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?rev=24807&r1=24806&r2=24807&view=diff
==============================================================================
--- 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?rev=24807&r1=24806&r2=24807&view=diff
==============================================================================
--- 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?rev=24807&r1=24806&r2=24807&view=diff
==============================================================================
--- 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 */




More information about the Ros-diffs mailing list