[QCKLNCH]

-Added en-US.rc
-Localized Menu resource.
-Added a string table and localized some strings.
-Major fixes like removing IDeskBar.
-Minor suggestions fixed.

CR-122 (https://code.reactos.org/cru/CR-122#details)

PS: Thank you everyone for spending your time and giving a thorough review. :)

svn path=/branches/GSoC_2017/shellext/; revision=75276
This commit is contained in:
Shriraj Sawant 2017-07-04 18:37:00 +00:00
parent 180321d87a
commit c8c4bcfa52
8 changed files with 121 additions and 154 deletions

View file

@ -15,6 +15,13 @@
WINE_DEFAULT_DEBUG_CHANNEL(qcklnch); WINE_DEFAULT_DEBUG_CHANNEL(qcklnch);
// ***Extras***
BOOL WINAPI _ILIsDesktop(LPCITEMIDLIST pidl)
{
return (pidl == NULL || pidl->mkid.cb == 0);
}
//***************************************************************************************** //*****************************************************************************************
// *** CISFBand *** // *** CISFBand ***
@ -64,16 +71,18 @@ LRESULT CISFBand::OnRButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHa
int index = SendMessage(m_hWnd, TB_HITTEST, 0, (LPARAM)&pt); int index = SendMessage(m_hWnd, TB_HITTEST, 0, (LPARAM)&pt);
bool chk = SendMessage(m_hWnd, TB_GETBUTTON, abs(index), (LPARAM)&tb); bool chk = SendMessage(m_hWnd, TB_GETBUTTON, abs(index), (LPARAM)&tb);
CComHeapPtr<ITEMIDLIST> pidl((LPITEMIDLIST)tb.dwData); LPITEMIDLIST pidl = (LPITEMIDLIST)tb.dwData;
if (chk) if (chk)
{ {
ClientToScreen(&pt); ClientToScreen(&pt);
hr = m_pISF->GetUIObjectOf(m_hWnd, 1, &pidl, IID_NULL_PPV_ARG(IContextMenu, &picm)); hr = m_pISF->GetUIObjectOf(m_hWnd, 1, &pidl, IID_NULL_PPV_ARG(IContextMenu, &picm));
if (FAILED_UNEXPECTEDLY(hr)) return hr; if (FAILED_UNEXPECTEDLY(hr))
return hr;
hr = picm->QueryContextMenu(fmenu, 0, 1, 0x7FFF, CMF_DEFAULTONLY); hr = picm->QueryContextMenu(fmenu, 0, 1, 0x7FFF, CMF_DEFAULTONLY);
if (FAILED_UNEXPECTEDLY(hr)) return hr; if (FAILED_UNEXPECTEDLY(hr))
return hr;
int id = TrackPopupMenuEx(fmenu, TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_RETURNCMD, pt.x, pt.y, m_hWnd, 0); int id = TrackPopupMenuEx(fmenu, TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_RETURNCMD, pt.x, pt.y, m_hWnd, 0);
if (id > 0) if (id > 0)
@ -111,9 +120,9 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
// Create the toolbar. // Create the toolbar.
m_hWnd = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, m_hWnd = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
WS_CHILD | TBSTYLE_FLAT | TBSTYLE_LIST | CCS_NORESIZE | CCS_NODIVIDER, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, WS_CHILD | TBSTYLE_FLAT | TBSTYLE_LIST | CCS_NORESIZE | CCS_NODIVIDER, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0,
hWndParent, NULL, 0, NULL); hWndParent, NULL, 0, NULL);
if (m_hWnd == NULL) if (m_hWnd == NULL)
return E_FAIL; return E_FAIL;
// Set the image list. // Set the image list.
HIMAGELIST* piml; HIMAGELIST* piml;
@ -127,7 +136,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
// Enumerate objects // Enumerate objects
CComPtr<IEnumIDList> pEndl; CComPtr<IEnumIDList> pEndl;
CComHeapPtr<ITEMIDLIST> pidl; LPITEMIDLIST pidl;
STRRET stret; STRRET stret;
ULONG count = 0; ULONG count = 0;
hr = m_pISF->EnumObjects(0, SHCONTF_FOLDERS, &pEndl); hr = m_pISF->EnumObjects(0, SHCONTF_FOLDERS, &pEndl);
@ -149,8 +158,9 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
else else
StrRetToBuf(&stret, pidl, sz, _countof(sz)); StrRetToBuf(&stret, pidl, sz, _countof(sz));
TBBUTTON tb = { MAKELONG(index, 0), i, TBSTATE_ENABLED, buttonStyles,{ 0 }, (DWORD_PTR)*&pidl, (INT_PTR)sz }; TBBUTTON tb = { MAKELONG(index, 0), i, TBSTATE_ENABLED, buttonStyles,{ 0 }, (DWORD_PTR)pidl, (INT_PTR)sz };
SendMessage(m_hWnd, TB_INSERTBUTTONW, 0, (LPARAM)&tb); SendMessage(m_hWnd, TB_INSERTBUTTONW, 0, (LPARAM)&tb);
//CoTaskMemFree(pidl);
} }
// Resize the toolbar, and then show it. // Resize the toolbar, and then show it.
@ -315,29 +325,6 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
return E_FAIL; return E_FAIL;
} }
/*****************************************************************************/
// *** IDeskBar ***
STDMETHODIMP CISFBand::SetClient(IN IUnknown *punkClient)
{
TRACE("IDeskBar::SetClient(0x%p)\n", punkClient);
return E_NOTIMPL;
}
STDMETHODIMP CISFBand::GetClient(OUT IUnknown **ppunkClient)
{
TRACE("IDeskBar::GetClient(0x%p)\n", ppunkClient);
return E_NOTIMPL;
}
STDMETHODIMP CISFBand::OnPosRectChangeDB(IN RECT *prc)
{
TRACE("IDeskBar::OnPosRectChangeDB(0x%p=(%d,%d,%d,%d))\n", prc, prc->left, prc->top, prc->right, prc->bottom);
return S_OK;
}
/*****************************************************************************/ /*****************************************************************************/
// *** IPersistStream *** // *** IPersistStream ***
STDMETHODIMP CISFBand::GetClassID(OUT CLSID *pClassID) STDMETHODIMP CISFBand::GetClassID(OUT CLSID *pClassID)
@ -400,9 +387,19 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
STDMETHODIMP CISFBand::OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) STDMETHODIMP CISFBand::OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
{ {
UNIMPLEMENTED; /* switch (uMsg)
{
return E_NOTIMPL; case WM_COMMAND:
{
MessageBox(L"Button Clicked", L"Test", MB_OKCANCEL | MB_ICONINFORMATION);
break;
}
}
return DefSubclassProc(hWnd, uMsg, wParam, lParam);*/
UNIMPLEMENTED;
return E_NOTIMPL;
} }
STDMETHODIMP CISFBand::IsWindowOwner(HWND hWnd) STDMETHODIMP CISFBand::IsWindowOwner(HWND hWnd)
@ -445,10 +442,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
STDMETHODIMP CISFBand::InitializeSFB(IShellFolder *psf, PCIDLIST_ABSOLUTE pidl) STDMETHODIMP CISFBand::InitializeSFB(IShellFolder *psf, PCIDLIST_ABSOLUTE pidl)
{ {
CComHeapPtr<ITEMIDLIST> pidlRoot; if (_ILIsDesktop(pidl))
SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, &pidlRoot);
if (pidl == NULL || !psf->CompareIDs(0x80000000L, pidl, pidlRoot))
{ {
m_pISF = psf; m_pISF = psf;
m_pidl = ILClone(pidl); m_pidl = ILClone(pidl);

View file

@ -13,8 +13,7 @@ class CISFBand :
public CComCoClass<CISFBand>, public CComCoClass<CISFBand>,
public CComObjectRootEx<CComMultiThreadModelNoCS>, public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IObjectWithSite, public IObjectWithSite,
public IDeskBand, public IDeskBand,
public IDeskBar,
public IPersistStream, public IPersistStream,
public IWinEventHandler, public IWinEventHandler,
public IOleCommandTarget, public IOleCommandTarget,
@ -82,20 +81,6 @@ public:
IN DWORD dwBandID, IN DWORD dwBandID,
IN DWORD dwViewMode, IN DWORD dwViewMode,
IN OUT DESKBANDINFO *pdbi IN OUT DESKBANDINFO *pdbi
);
// IDeskBar
virtual STDMETHODIMP GetClient(
OUT IUnknown **ppunkClient
);
virtual STDMETHODIMP OnPosRectChangeDB(
IN LPRECT prc
);
virtual STDMETHODIMP SetClient(
IN OPTIONAL IUnknown *punkClient
); );
// IPersistStream // IPersistStream
@ -208,6 +193,7 @@ public:
BEGIN_COM_MAP(CISFBand) BEGIN_COM_MAP(CISFBand)
COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand) COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand)
COM_INTERFACE_ENTRY2_IID(IID_IDockingWindow, IDockingWindow, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand) COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite) COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist) COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)

View file

@ -50,7 +50,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
SHGetSpecialFolderLocation(hwnd, nCSIDL, &pidlRoot); SHGetSpecialFolderLocation(hwnd, nCSIDL, &pidlRoot);
} }
BROWSEINFO bi = { hwnd, pidlRoot, path, L"Choose a folder", 0, NULL, 0, 0 }; CString biTitle((LPCSTR)IDS_BROWSEINFO_TITLE);
BROWSEINFO bi = { hwnd, pidlRoot, path, biTitle, 0, NULL, 0, 0 };
LPITEMIDLIST pidlSelected = SHBrowseForFolder(&bi); LPITEMIDLIST pidlSelected = SHBrowseForFolder(&bi);
return pidlSelected; return pidlSelected;
@ -68,18 +69,22 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
HRESULT CQuickLaunchBand::FinalConstruct() HRESULT CQuickLaunchBand::FinalConstruct()
{ {
HRESULT hr = CISFBand_CreateInstance(IID_PPV_ARG(IUnknown, &m_punkISFB)); HRESULT hr = CISFBand_CreateInstance(IID_PPV_ARG(IUnknown, &m_punkISFB));
if (FAILED_UNEXPECTEDLY(hr)) return hr; if (FAILED_UNEXPECTEDLY(hr))
return hr;
CComPtr<IShellFolderBand> pISFB; CComPtr<IShellFolderBand> pISFB;
hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IShellFolderBand, &pISFB)); hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IShellFolderBand, &pISFB));
if (FAILED_UNEXPECTEDLY(hr)) return hr; if (FAILED_UNEXPECTEDLY(hr))
return hr;
CComPtr<IShellFolder> pISF; CComPtr<IShellFolder> pISF;
hr = SHGetDesktopFolder(&pISF); hr = SHGetDesktopFolder(&pISF);
if (FAILED_UNEXPECTEDLY(hr)) return hr; if (FAILED_UNEXPECTEDLY(hr))
return hr;
CComHeapPtr<ITEMIDLIST> pidl(PidlBrowse(m_hWndBro, CSIDL_DESKTOP)); CComHeapPtr<ITEMIDLIST> pidl(PidlBrowse(m_hWndBro, CSIDL_DESKTOP));
if (pidl == NULL) return E_FAIL; if (pidl == NULL)
return E_FAIL;
pISFB->InitializeSFB(pISF, pidl); pISFB->InitializeSFB(pISF, pidl);
return hr; return hr;
@ -93,7 +98,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IObjectWithSite> pIOWS; CComPtr<IObjectWithSite> pIOWS;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IObjectWithSite, &pIOWS)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IObjectWithSite, &pIOWS));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIOWS->SetSite(pUnkSite); return pIOWS->SetSite(pUnkSite);
} }
@ -105,7 +111,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IObjectWithSite> pIOWS; CComPtr<IObjectWithSite> pIOWS;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IObjectWithSite, &pIOWS)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IObjectWithSite, &pIOWS));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIOWS->GetSite(riid, ppvSite); return pIOWS->GetSite(riid, ppvSite);
} }
@ -117,7 +124,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IDeskBand> pIDB; CComPtr<IDeskBand> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIDB->GetWindow(phwnd); return pIDB->GetWindow(phwnd);
} }
@ -127,7 +135,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IDeskBand> pIDB; CComPtr<IDeskBand> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIDB->ContextSensitiveHelp(fEnterMode); return pIDB->ContextSensitiveHelp(fEnterMode);
} }
@ -137,7 +146,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IDeskBand> pIDB; CComPtr<IDeskBand> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIDB->ShowDW(bShow); return pIDB->ShowDW(bShow);
} }
@ -147,7 +157,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IDeskBand> pIDB; CComPtr<IDeskBand> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIDB->CloseDW(dwReserved); return pIDB->CloseDW(dwReserved);
} }
@ -157,7 +168,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IDeskBand> pIDB; CComPtr<IDeskBand> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIDB->ResizeBorderDW(prcBorder, punkToolbarSite, fReserved); return pIDB->ResizeBorderDW(prcBorder, punkToolbarSite, fReserved);
} }
@ -169,49 +181,12 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IDeskBand> pIDB; CComPtr<IDeskBand> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBand, &pIDB));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIDB->GetBandInfo(dwBandID, dwViewMode, pdbi); return pIDB->GetBandInfo(dwBandID, dwViewMode, pdbi);
} }
/*****************************************************************************/
// IDeskBar
STDMETHODIMP CQuickLaunchBand::SetClient(IN IUnknown *punkClient)
{
TRACE("IDeskBar::SetClient(0x%p)\n", punkClient);
// Internal CISFBand Calls
CComPtr<IDeskBar> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBar, &pIDB));
if (FAILED(hr)) return hr;
return pIDB->SetClient(punkClient);
}
STDMETHODIMP CQuickLaunchBand::GetClient(OUT IUnknown **ppunkClient)
{
TRACE("IDeskBar::GetClient(0x%p)\n", ppunkClient);
// Internal CISFBand Calls
CComPtr<IDeskBar> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBar, &pIDB));
if (FAILED(hr)) return hr;
return pIDB->GetClient(ppunkClient);
}
STDMETHODIMP CQuickLaunchBand::OnPosRectChangeDB(IN RECT *prc)
{
TRACE("IDeskBar::OnPosRectChangeDB(0x%p=(%d,%d,%d,%d))\n", prc, prc->left, prc->top, prc->right, prc->bottom);
// Internal CISFBand Calls
CComPtr<IDeskBar> pIDB;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IDeskBar, &pIDB));
if (FAILED(hr)) return hr;
return pIDB->OnPosRectChangeDB(prc);
}
/*****************************************************************************/ /*****************************************************************************/
// IPersistStream // IPersistStream
STDMETHODIMP CQuickLaunchBand::GetClassID(OUT CLSID *pClassID) STDMETHODIMP CQuickLaunchBand::GetClassID(OUT CLSID *pClassID)
@ -221,7 +196,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IPersistStream> pIPS; CComPtr<IPersistStream> pIPS;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIPS->GetClassID(pClassID); return pIPS->GetClassID(pClassID);
} }
@ -231,7 +207,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IPersistStream> pIPS; CComPtr<IPersistStream> pIPS;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIPS->IsDirty(); return pIPS->IsDirty();
} }
@ -243,7 +220,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IPersistStream> pIPS; CComPtr<IPersistStream> pIPS;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIPS->Load(pStm); return pIPS->Load(pStm);
} }
@ -253,7 +231,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IPersistStream> pIPS; CComPtr<IPersistStream> pIPS;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIPS->Save(pStm, fClearDirty); return pIPS->Save(pStm, fClearDirty);
} }
@ -265,7 +244,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IPersistStream> pIPS; CComPtr<IPersistStream> pIPS;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IPersistStream, &pIPS));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pIPS->GetSizeMax(pcbSize); return pIPS->GetSizeMax(pcbSize);
} }
@ -290,7 +270,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IWinEventHandler> pWEH; CComPtr<IWinEventHandler> pWEH;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IWinEventHandler, &pWEH)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IWinEventHandler, &pWEH));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pWEH->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult); return pWEH->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
} }
@ -300,7 +281,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IWinEventHandler> pWEH; CComPtr<IWinEventHandler> pWEH;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IWinEventHandler, &pWEH)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IWinEventHandler, &pWEH));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pWEH->IsWindowOwner(hWnd); return pWEH->IsWindowOwner(hWnd);
} }
@ -312,7 +294,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IOleCommandTarget> pOCT; CComPtr<IOleCommandTarget> pOCT;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IOleCommandTarget, &pOCT)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IOleCommandTarget, &pOCT));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pOCT->QueryStatus(pguidCmdGroup, cCmds, prgCmds, pCmdText); return pOCT->QueryStatus(pguidCmdGroup, cCmds, prgCmds, pCmdText);
} }
@ -322,7 +305,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IOleCommandTarget> pOCT; CComPtr<IOleCommandTarget> pOCT;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IOleCommandTarget, &pOCT)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IOleCommandTarget, &pOCT));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pOCT->Exec(pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut); return pOCT->Exec(pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut);
} }
@ -334,7 +318,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IContextMenu> pICM; CComPtr<IContextMenu> pICM;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IContextMenu, &pICM)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IContextMenu, &pICM));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pICM->GetCommandString(idCmd, uFlags, pwReserved, pszName, cchMax); return pICM->GetCommandString(idCmd, uFlags, pwReserved, pszName, cchMax);
} }
@ -344,7 +329,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IContextMenu> pICM; CComPtr<IContextMenu> pICM;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IContextMenu, &pICM)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IContextMenu, &pICM));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pICM->InvokeCommand(pici); return pICM->InvokeCommand(pici);
} }
@ -354,7 +340,8 @@ static const GUID CLSID_QuickLaunchBand = { 0x260cb95d, 0x4544, 0x44f6, { 0xa0,
// Internal CISFBand Calls // Internal CISFBand Calls
CComPtr<IContextMenu> pICM; CComPtr<IContextMenu> pICM;
HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IContextMenu, &pICM)); HRESULT hr = m_punkISFB->QueryInterface(IID_PPV_ARG(IContextMenu, &pICM));
if (FAILED(hr)) return hr; if (FAILED(hr))
return hr;
return pICM->QueryContextMenu(hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags); return pICM->QueryContextMenu(hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
} }

View file

@ -18,8 +18,7 @@ class CQuickLaunchBand :
public CComCoClass<CQuickLaunchBand, &CLSID_QuickLaunchBand>, public CComCoClass<CQuickLaunchBand, &CLSID_QuickLaunchBand>,
public CComObjectRootEx<CComMultiThreadModelNoCS>, public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IObjectWithSite, public IObjectWithSite,
public IDeskBand, public IDeskBand,
public IDeskBar,
public IPersistStream, public IPersistStream,
public IWinEventHandler, public IWinEventHandler,
public IOleCommandTarget, public IOleCommandTarget,
@ -76,21 +75,7 @@ class CQuickLaunchBand :
IN DWORD dwBandID, IN DWORD dwBandID,
IN DWORD dwViewMode, IN DWORD dwViewMode,
IN OUT DESKBANDINFO *pdbi IN OUT DESKBANDINFO *pdbi
); );
// IDeskBar
virtual STDMETHODIMP GetClient(
OUT IUnknown **ppunkClient
);
virtual STDMETHODIMP OnPosRectChangeDB(
IN LPRECT prc
);
virtual STDMETHODIMP SetClient(
IN OPTIONAL IUnknown *punkClient
);
// IPersistStream // IPersistStream
@ -185,6 +170,7 @@ class CQuickLaunchBand :
BEGIN_COM_MAP(CQuickLaunchBand) BEGIN_COM_MAP(CQuickLaunchBand)
COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand) COM_INTERFACE_ENTRY2_IID(IID_IOleWindow, IOleWindow, IDeskBand)
COM_INTERFACE_ENTRY2_IID(IID_IDockingWindow, IDockingWindow, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand) COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite) COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist) COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)

View file

@ -0,0 +1,19 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
IDM_POPUPMENU MENUEX DISCARDABLE
BEGIN
POPUP ""
BEGIN
POPUP "&View", IDM_VIEW_MENU
BEGIN
MENUITEM "&Large Icons", IDM_LARGE_ICONS
MENUITEM "&Small Icons", IDM_SMALL_ICONS
END
MENUITEM "&Show Text", IDM_SHOW_TEXT
END
END
STRINGTABLE
BEGIN
IDS_BROWSEINFO_TITLE "Choose a folder"
END

View file

@ -27,6 +27,7 @@
#include <atlbase.h> #include <atlbase.h>
#include <atlcom.h> #include <atlcom.h>
#include <atlwin.h> #include <atlwin.h>
#include <atlstr.h>
#include <undocshell.h> #include <undocshell.h>
#include <shellutils.h> #include <shellutils.h>

View file

@ -7,18 +7,9 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDR_QCKLNCH REGISTRY "rgs/qcklnch.rgs" IDR_QCKLNCH REGISTRY "rgs/qcklnch.rgs"
IDM_POPUPMENU MENUEX DISCARDABLE
BEGIN
POPUP ""
BEGIN
POPUP "&View", IDM_VIEW_MENU
BEGIN
MENUITEM "&Large Icons", IDM_LARGE_ICONS
MENUITEM "&Small Icons", IDM_SMALL_ICONS
END
MENUITEM "&Show Text", IDM_SHOW_TEXT
END
END
#include <reactos/manifest_dll.rc> #include <reactos/manifest_dll.rc>
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif

View file

@ -1,8 +1,11 @@
#pragma once #pragma once
#define IDR_QCKLNCH 1001 #define IDR_QCKLNCH 1001
#define IDM_POPUPMENU 2000
#define IDM_LARGE_ICONS 1 #define IDM_POPUPMENU 2000
#define IDM_SMALL_ICONS 2 #define IDM_LARGE_ICONS 1
#define IDM_SHOW_TEXT 3 #define IDM_SMALL_ICONS 2
#define IDM_VIEW_MENU 4 #define IDM_SHOW_TEXT 3
#define IDM_VIEW_MENU 4
#define IDS_BROWSEINFO_TITLE 100