From a4ff747ee4a6113216c0718eaa78aa701bc213d0 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Thu, 15 Sep 2016 15:09:22 +0000 Subject: [PATCH] [SHELL32] halfplement CreateViewWindow2 (SHELLVIEWID not handled yet) svn path=/trunk/; revision=72684 --- reactos/dll/win32/shell32/CDefView.cpp | 122 ++++++++++++++----------- 1 file changed, 70 insertions(+), 52 deletions(-) diff --git a/reactos/dll/win32/shell32/CDefView.cpp b/reactos/dll/win32/shell32/CDefView.cpp index 0d639a4f80f..6ae48954be8 100644 --- a/reactos/dll/win32/shell32/CDefView.cpp +++ b/reactos/dll/win32/shell32/CDefView.cpp @@ -2144,59 +2144,20 @@ HRESULT WINAPI CDefView::Refresh() HRESULT WINAPI CDefView::CreateViewWindow(IShellView *lpPrevView, LPCFOLDERSETTINGS lpfs, IShellBrowser *psb, RECT *prcView, HWND *phWnd) { - OLEMENUGROUPWIDTHS omw = { { 0, 0, 0, 0, 0, 0 } }; - - *phWnd = 0; - - TRACE("(%p)->(shlview=%p set=%p shlbrs=%p rec=%p hwnd=%p) incomplete\n", this, lpPrevView, lpfs, psb, prcView, phWnd); - - if (lpfs != NULL) - TRACE("-- vmode=%x flags=%x\n", lpfs->ViewMode, lpfs->fFlags); - if (prcView != NULL) - TRACE("-- left=%i top=%i right=%i bottom=%i\n", prcView->left, prcView->top, prcView->right, prcView->bottom); - - /* Validate the Shell Browser */ - if (psb == NULL || m_hWnd) - return E_UNEXPECTED; - - /* Set up the member variables */ - m_pShellBrowser = psb; - m_FolderSettings = *lpfs; - - /* Get our parent window */ - m_pShellBrowser->GetWindow(&m_hWndParent); - - /* Try to get the ICommDlgBrowserInterface, adds a reference !!! */ - m_pCommDlgBrowser = NULL; - if (SUCCEEDED(m_pShellBrowser->QueryInterface(IID_PPV_ARG(ICommDlgBrowser, &m_pCommDlgBrowser)))) - { - TRACE("-- CommDlgBrowser\n"); - } - - Create(m_hWndParent, prcView, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_TABSTOP, 0, 0U); - if (m_hWnd == NULL) - return E_FAIL; - - *phWnd = m_hWnd; + SV2CVW2_PARAMS view_params; + HRESULT hr; - CheckToolbar(); + view_params.cbSize = sizeof(view_params); + view_params.pfs = lpfs; + view_params.psvPrev = lpPrevView; + view_params.psbOwner = psb; + view_params.prcView = prcView; + view_params.pvid = NULL; - if (!*phWnd) - return E_FAIL; + hr = CreateViewWindow2(&view_params); + *phWnd = view_params.hwndView; - SetWindowPos(HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); - UpdateWindow(); - - if (!m_hMenu) - { - m_hMenu = CreateMenu(); - m_pShellBrowser->InsertMenusSB(m_hMenu, &omw); - TRACE("-- after fnInsertMenusSB\n"); - } - - _MergeToolbar(); - - return S_OK; + return hr; } HRESULT WINAPI CDefView::DestroyViewWindow() @@ -2552,8 +2513,65 @@ HRESULT STDMETHODCALLTYPE CDefView::GetView(SHELLVIEWID *view_guid, ULONG view_t HRESULT STDMETHODCALLTYPE CDefView::CreateViewWindow2(LPSV2CVW2_PARAMS view_params) { - FIXME("(%p)->(%p) stub\n", this, view_params); - return E_NOTIMPL; + OLEMENUGROUPWIDTHS omw = { { 0, 0, 0, 0, 0, 0 } }; + + if (view_params->cbSize != sizeof(SV2CVW2_PARAMS)) + return E_FAIL; + + if (view_params->pvid != 0) + FIXME("SHELLVIEWID not handled\n"); + + view_params->hwndView = 0; + + TRACE("(%p)->(shlview=%p set=%p shlbrs=%p rec=%p hwnd=%p) incomplete\n", this, view_params->psvPrev, view_params->pfs, view_params->psbOwner, view_params->prcView, view_params->hwndView); + + if (view_params->pfs != NULL) + TRACE("-- vmode=%x flags=%x\n", view_params->pfs->ViewMode, view_params->pfs->fFlags); + if (view_params->prcView != NULL) + TRACE("-- left=%i top=%i right=%i bottom=%i\n", view_params->prcView->left, view_params->prcView->top, view_params->prcView->right, view_params->prcView->bottom); + + /* Validate the Shell Browser */ + if (view_params->psbOwner == NULL || m_hWnd) + return E_UNEXPECTED; + + /* Set up the member variables */ + m_pShellBrowser = view_params->psbOwner; + m_FolderSettings = *view_params->pfs; + + /* Get our parent window */ + m_pShellBrowser->GetWindow(&m_hWndParent); + + /* Try to get the ICommDlgBrowserInterface, adds a reference !!! */ + m_pCommDlgBrowser = NULL; + if (SUCCEEDED(m_pShellBrowser->QueryInterface(IID_PPV_ARG(ICommDlgBrowser, &m_pCommDlgBrowser)))) + { + TRACE("-- CommDlgBrowser\n"); + } + + Create(m_hWndParent, view_params->prcView, NULL, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_TABSTOP, 0, 0U); + if (m_hWnd == NULL) + return E_FAIL; + + view_params->hwndView = m_hWnd; + + CheckToolbar(); + + if (!view_params->hwndView) + return E_FAIL; + + SetWindowPos(HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); + UpdateWindow(); + + if (!m_hMenu) + { + m_hMenu = CreateMenu(); + m_pShellBrowser->InsertMenusSB(m_hMenu, &omw); + TRACE("-- after fnInsertMenusSB\n"); + } + + _MergeToolbar(); + + return S_OK; } HRESULT STDMETHODCALLTYPE CDefView::HandleRename(LPCITEMIDLIST new_pidl) -- 2.17.1