On 7/17/2010 19:08, David Hedberg wrote:
static HRESULT WINAPI IFView_SetCurrentViewMode(IFolderView *iface, UINT mode) { - IShellViewImpl *This = impl_from_IFolderView(iface); - FIXME("(%p)->(%u), stub\n", This, mode); - return E_NOTIMPL; + IShellViewImpl *This = impl_from_IFolderView(iface); + RECT rc; + TRACE("(%p)->(%u), stub\n", This, mode); + + if((mode< FVM_FIRST || mode> FVM_LAST)&& + (mode != FVM_AUTO)) + return E_INVALIDARG; + + /* Destroy the previous listview */ + ShellView_DestroyView(This); + + /* Change the viewmode */ + This->FolderSettings.ViewMode = mode; + + /* Create a new listview */ + ShellView_CreateView(This); + + /* Size the new listview properly. */ + GetClientRect(This->hWnd,&rc); + MoveWindow(This->hWndList, 0, 0, rc.right, rc.bottom, TRUE); + + return S_OK; } Why do you think you should destroy Listview here? It's not obvious at all. I think it's only about changing style.