mirror of
https://github.com/reactos/reactos.git
synced 2024-06-23 14:31:47 +00:00
[0.4.11][BROWSEUI] Fix pos of taskbar toolbar right-click menu (#5421)
Don't call ClientToScreen in handling NM_RCLICK message because NMMOUSE.pt is already in screen coordinates.
CORE-18966
A backport of:
0.4.15-dev-6298-g b4e946f5b0
and strip EOL whitespace
This commit is contained in:
parent
cc2f6571df
commit
dd6d0edb98
|
@ -23,10 +23,10 @@ TODO:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//*****************************************************************************************
|
//*****************************************************************************************
|
||||||
// *** CISFBand ***
|
// *** CISFBand ***
|
||||||
|
|
||||||
CISFBand::CISFBand() :
|
CISFBand::CISFBand() :
|
||||||
m_BandID(0),
|
m_BandID(0),
|
||||||
m_pidl(NULL),
|
m_pidl(NULL),
|
||||||
m_textFlag(true),
|
m_textFlag(true),
|
||||||
m_iconFlag(true),
|
m_iconFlag(true),
|
||||||
|
@ -34,7 +34,7 @@ CISFBand::CISFBand() :
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
CISFBand::~CISFBand()
|
CISFBand::~CISFBand()
|
||||||
{
|
{
|
||||||
CloseDW(0);
|
CloseDW(0);
|
||||||
}
|
}
|
||||||
|
@ -53,35 +53,35 @@ CISFBand::~CISFBand()
|
||||||
*--*/
|
*--*/
|
||||||
HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
{
|
{
|
||||||
// Declare and initialize local constants.
|
// Declare and initialize local constants.
|
||||||
const DWORD buttonStyles = BTNS_AUTOSIZE;
|
const DWORD buttonStyles = BTNS_AUTOSIZE;
|
||||||
|
|
||||||
// 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;
|
||||||
|
|
||||||
if (!m_textFlag)
|
if (!m_textFlag)
|
||||||
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
|
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
|
||||||
|
|
||||||
// Set the image list.
|
// Set the image list.
|
||||||
HIMAGELIST* piml;
|
HIMAGELIST* piml;
|
||||||
HRESULT hr = SHGetImageList(SHIL_SMALL, IID_IImageList, (void**)&piml);
|
HRESULT hr = SHGetImageList(SHIL_SMALL, IID_IImageList, (void**)&piml);
|
||||||
if (FAILED_UNEXPECTEDLY(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
{
|
{
|
||||||
DestroyWindow();
|
DestroyWindow();
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
SendMessage(m_hWnd, TB_SETIMAGELIST, 0, (LPARAM)piml);
|
SendMessage(m_hWnd, TB_SETIMAGELIST, 0, (LPARAM)piml);
|
||||||
|
|
||||||
// Enumerate objects
|
// Enumerate objects
|
||||||
CComPtr<IEnumIDList> pEndl;
|
CComPtr<IEnumIDList> pEndl;
|
||||||
LPITEMIDLIST pidl;
|
LPITEMIDLIST pidl;
|
||||||
STRRET stret;
|
STRRET stret;
|
||||||
hr = m_pISF->EnumObjects(0, SHCONTF_FOLDERS|SHCONTF_NONFOLDERS, &pEndl);
|
hr = m_pISF->EnumObjects(0, SHCONTF_FOLDERS|SHCONTF_NONFOLDERS, &pEndl);
|
||||||
if (FAILED_UNEXPECTEDLY(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
{
|
{
|
||||||
DestroyWindow();
|
DestroyWindow();
|
||||||
return hr;
|
return hr;
|
||||||
|
@ -90,18 +90,18 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
for (int i=0; pEndl->Next(1, &pidl, NULL) != S_FALSE; i++)
|
for (int i=0; pEndl->Next(1, &pidl, NULL) != S_FALSE; i++)
|
||||||
{
|
{
|
||||||
WCHAR sz[MAX_PATH];
|
WCHAR sz[MAX_PATH];
|
||||||
int index = SHMapPIDLToSystemImageListIndex(m_pISF, pidl, NULL);
|
int index = SHMapPIDLToSystemImageListIndex(m_pISF, pidl, NULL);
|
||||||
hr = m_pISF->GetDisplayNameOf(pidl, SHGDN_NORMAL, &stret);
|
hr = m_pISF->GetDisplayNameOf(pidl, SHGDN_NORMAL, &stret);
|
||||||
if (FAILED_UNEXPECTEDLY(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
{
|
{
|
||||||
StringCchCopyW(sz, MAX_PATH, L"<Unknown-Name>");
|
StringCchCopyW(sz, MAX_PATH, L"<Unknown-Name>");
|
||||||
}
|
}
|
||||||
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, i, (LPARAM)&tb);
|
SendMessage(m_hWnd, TB_INSERTBUTTONW, i, (LPARAM)&tb);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resize the toolbar, and then show it.
|
// Resize the toolbar, and then show it.
|
||||||
SendMessage(m_hWnd, TB_AUTOSIZE, 0, 0);
|
SendMessage(m_hWnd, TB_AUTOSIZE, 0, 0);
|
||||||
|
@ -111,7 +111,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
// *** IObjectWithSite ***
|
// *** IObjectWithSite ***
|
||||||
STDMETHODIMP CISFBand::SetSite(IUnknown *pUnkSite)
|
STDMETHODIMP CISFBand::SetSite(IUnknown *pUnkSite)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
@ -125,17 +125,17 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
TRACE("Querying site window failed: 0x%x\n", hr);
|
TRACE("Querying site window failed: 0x%x\n", hr);
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
m_Site = pUnkSite;
|
m_Site = pUnkSite;
|
||||||
|
|
||||||
hr = CreateSimpleToolbar(hwndParent);
|
hr = CreateSimpleToolbar(hwndParent);
|
||||||
if (FAILED_UNEXPECTEDLY(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::GetSite(IN REFIID riid, OUT VOID **ppvSite)
|
STDMETHODIMP CISFBand::GetSite(IN REFIID riid, OUT VOID **ppvSite)
|
||||||
{
|
{
|
||||||
TRACE("CISFBand::GetSite(0x%p,0x%p)\n", riid, ppvSite);
|
TRACE("CISFBand::GetSite(0x%p,0x%p)\n", riid, ppvSite);
|
||||||
|
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
@ -143,44 +143,44 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
{
|
{
|
||||||
hr = m_Site->QueryInterface(riid, ppvSite);
|
hr = m_Site->QueryInterface(riid, ppvSite);
|
||||||
if (FAILED(hr)) return hr;
|
if (FAILED(hr)) return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
*ppvSite = NULL;
|
*ppvSite = NULL;
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// *** IDeskBand ***
|
// *** IDeskBand ***
|
||||||
STDMETHODIMP CISFBand::GetWindow(OUT HWND *phwnd)
|
STDMETHODIMP CISFBand::GetWindow(OUT HWND *phwnd)
|
||||||
{
|
{
|
||||||
if (!m_hWnd)
|
if (!m_hWnd)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
if (!phwnd)
|
if (!phwnd)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
*phwnd = m_hWnd;
|
*phwnd = m_hWnd;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::ContextSensitiveHelp(IN BOOL fEnterMode)
|
STDMETHODIMP CISFBand::ContextSensitiveHelp(IN BOOL fEnterMode)
|
||||||
{
|
{
|
||||||
/* FIXME: Implement */
|
/* FIXME: Implement */
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::ShowDW(IN BOOL bShow)
|
STDMETHODIMP CISFBand::ShowDW(IN BOOL bShow)
|
||||||
{
|
{
|
||||||
if (m_hWnd)
|
if (m_hWnd)
|
||||||
{
|
{
|
||||||
ShowWindow(bShow ? SW_SHOW : SW_HIDE);
|
ShowWindow(bShow ? SW_SHOW : SW_HIDE);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::CloseDW(IN DWORD dwReserved)
|
STDMETHODIMP CISFBand::CloseDW(IN DWORD dwReserved)
|
||||||
{
|
{
|
||||||
if (m_hWnd)
|
if (m_hWnd)
|
||||||
{
|
{
|
||||||
ShowWindow(SW_HIDE);
|
ShowWindow(SW_HIDE);
|
||||||
|
@ -189,7 +189,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
for (int i = 0; SendMessage(m_hWnd, TB_GETBUTTON, i, (LPARAM)&tb); i++)
|
for (int i = 0; SendMessage(m_hWnd, TB_GETBUTTON, i, (LPARAM)&tb); i++)
|
||||||
{
|
{
|
||||||
CoTaskMemFree((LPITEMIDLIST)tb.dwData);
|
CoTaskMemFree((LPITEMIDLIST)tb.dwData);
|
||||||
}
|
}
|
||||||
|
|
||||||
DestroyWindow();
|
DestroyWindow();
|
||||||
m_hWnd = NULL;
|
m_hWnd = NULL;
|
||||||
|
@ -199,7 +199,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
|
STDMETHODIMP CISFBand::ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
|
||||||
{
|
{
|
||||||
/* No need to implement this method */
|
/* No need to implement this method */
|
||||||
|
|
||||||
|
@ -207,31 +207,31 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::GetBandInfo(IN DWORD dwBandID, IN DWORD dwViewMode, IN OUT DESKBANDINFO *pdbi)
|
STDMETHODIMP CISFBand::GetBandInfo(IN DWORD dwBandID, IN DWORD dwViewMode, IN OUT DESKBANDINFO *pdbi)
|
||||||
{
|
{
|
||||||
TRACE("CTaskBand::GetBandInfo(0x%x,0x%x,0x%p) hWnd=0x%p\n", dwBandID, dwViewMode, pdbi, m_hWnd);
|
TRACE("CTaskBand::GetBandInfo(0x%x,0x%x,0x%p) hWnd=0x%p\n", dwBandID, dwViewMode, pdbi, m_hWnd);
|
||||||
|
|
||||||
if (m_hWnd && pdbi)
|
if (m_hWnd && pdbi)
|
||||||
{
|
{
|
||||||
m_BandID = dwBandID;
|
m_BandID = dwBandID;
|
||||||
|
|
||||||
RECT actualRect;
|
RECT actualRect;
|
||||||
POINTL actualSize;
|
POINTL actualSize;
|
||||||
POINTL idealSize;
|
POINTL idealSize;
|
||||||
POINTL maxSize;
|
POINTL maxSize;
|
||||||
POINTL itemSize;
|
POINTL itemSize;
|
||||||
|
|
||||||
GetWindowRect(&actualRect);
|
GetWindowRect(&actualRect);
|
||||||
actualSize.x = actualRect.right - actualRect.left;
|
actualSize.x = actualRect.right - actualRect.left;
|
||||||
actualSize.y = actualRect.bottom - actualRect.top;
|
actualSize.y = actualRect.bottom - actualRect.top;
|
||||||
|
|
||||||
// Obtain the ideal size, to be used as min and max
|
// Obtain the ideal size, to be used as min and max
|
||||||
SendMessageW(m_hWnd, TB_AUTOSIZE, 0, 0);
|
SendMessageW(m_hWnd, TB_AUTOSIZE, 0, 0);
|
||||||
SendMessageW(m_hWnd, TB_GETMAXSIZE, 0, reinterpret_cast<LPARAM>(&maxSize));
|
SendMessageW(m_hWnd, TB_GETMAXSIZE, 0, reinterpret_cast<LPARAM>(&maxSize));
|
||||||
|
|
||||||
idealSize = maxSize;
|
idealSize = maxSize;
|
||||||
SendMessageW(m_hWnd, TB_GETIDEALSIZE, FALSE, reinterpret_cast<LPARAM>(&idealSize));
|
SendMessageW(m_hWnd, TB_GETIDEALSIZE, FALSE, reinterpret_cast<LPARAM>(&idealSize));
|
||||||
|
|
||||||
// Obtain the button size, to be used as the integral size
|
// Obtain the button size, to be used as the integral size
|
||||||
DWORD size = SendMessageW(m_hWnd, TB_GETBUTTONSIZE, 0, 0);
|
DWORD size = SendMessageW(m_hWnd, TB_GETBUTTONSIZE, 0, 0);
|
||||||
itemSize.x = GET_X_LPARAM(size);
|
itemSize.x = GET_X_LPARAM(size);
|
||||||
itemSize.y = GET_Y_LPARAM(size);
|
itemSize.y = GET_Y_LPARAM(size);
|
||||||
|
@ -274,16 +274,16 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
if (pdbi->dwMask & DBIM_BKCOLOR)
|
if (pdbi->dwMask & DBIM_BKCOLOR)
|
||||||
pdbi->dwMask &= ~DBIM_BKCOLOR;
|
pdbi->dwMask &= ~DBIM_BKCOLOR;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// *** IPersistStream ***
|
// *** IPersistStream ***
|
||||||
STDMETHODIMP CISFBand::GetClassID(OUT CLSID *pClassID)
|
STDMETHODIMP CISFBand::GetClassID(OUT CLSID *pClassID)
|
||||||
{
|
{
|
||||||
*pClassID = CLSID_ISFBand;
|
*pClassID = CLSID_ISFBand;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -313,15 +313,15 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::GetSizeMax(OUT ULARGE_INTEGER *pcbSize)
|
STDMETHODIMP CISFBand::GetSizeMax(OUT ULARGE_INTEGER *pcbSize)
|
||||||
{
|
{
|
||||||
TRACE("CISFBand::GetSizeMax called\n");
|
TRACE("CISFBand::GetSizeMax called\n");
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// *** IWinEventHandler ***
|
// *** IWinEventHandler ***
|
||||||
STDMETHODIMP CISFBand::ContainsWindow(IN HWND hWnd)
|
STDMETHODIMP CISFBand::ContainsWindow(IN HWND hWnd)
|
||||||
{
|
{
|
||||||
if (hWnd == m_hWnd || IsChild(hWnd))
|
if (hWnd == m_hWnd || IsChild(hWnd))
|
||||||
{
|
{
|
||||||
TRACE("CISFBand::ContainsWindow(0x%p) returns S_OK\n", hWnd);
|
TRACE("CISFBand::ContainsWindow(0x%p) returns S_OK\n", hWnd);
|
||||||
|
@ -332,12 +332,12 @@ 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)
|
||||||
{
|
{
|
||||||
switch (uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
TBBUTTON tb;
|
TBBUTTON tb;
|
||||||
bool chk = SendMessage(m_hWnd, TB_GETBUTTON, LOWORD(wParam), (LPARAM)&tb);
|
bool chk = SendMessage(m_hWnd, TB_GETBUTTON, LOWORD(wParam), (LPARAM)&tb);
|
||||||
if (chk)
|
if (chk)
|
||||||
SHInvokeDefaultCommand(m_hWnd, m_pISF, (LPITEMIDLIST)tb.dwData);
|
SHInvokeDefaultCommand(m_hWnd, m_pISF, (LPITEMIDLIST)tb.dwData);
|
||||||
|
@ -345,13 +345,13 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
if (theResult)
|
if (theResult)
|
||||||
*theResult = TRUE;
|
*theResult = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
{
|
{
|
||||||
switch (((LPNMHDR)lParam)->code)
|
switch (((LPNMHDR)lParam)->code)
|
||||||
{
|
{
|
||||||
case NM_RCLICK:
|
case NM_RCLICK:
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
POINT pt = ((LPNMMOUSE)lParam)->pt;
|
POINT pt = ((LPNMMOUSE)lParam)->pt;
|
||||||
CComPtr<IContextMenu> picm;
|
CComPtr<IContextMenu> picm;
|
||||||
|
@ -363,7 +363,6 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
|
|
||||||
if (chk)
|
if (chk)
|
||||||
{
|
{
|
||||||
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))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
@ -387,7 +386,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
info.fMask |= CMIC_MASK_SHIFT_DOWN;
|
info.fMask |= CMIC_MASK_SHIFT_DOWN;
|
||||||
}
|
}
|
||||||
info.hwnd = m_hWnd;
|
info.hwnd = m_hWnd;
|
||||||
info.lpVerb = MAKEINTRESOURCEA(id - 1);
|
info.lpVerb = MAKEINTRESOURCEA(id - 1);
|
||||||
info.nShow = SW_SHOWNORMAL;
|
info.nShow = SW_SHOWNORMAL;
|
||||||
info.ptInvoke = pt;
|
info.ptInvoke = pt;
|
||||||
picm->InvokeCommand((LPCMINVOKECOMMANDINFO)&info);
|
picm->InvokeCommand((LPCMINVOKECOMMANDINFO)&info);
|
||||||
|
@ -411,25 +410,25 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
*theResult = FALSE;
|
*theResult = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::IsWindowOwner(HWND hWnd)
|
STDMETHODIMP CISFBand::IsWindowOwner(HWND hWnd)
|
||||||
{
|
{
|
||||||
return (hWnd == m_hWnd) ? S_OK : S_FALSE;
|
return (hWnd == m_hWnd) ? S_OK : S_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// *** IOleCommandTarget methods ***
|
// *** IOleCommandTarget methods ***
|
||||||
STDMETHODIMP CISFBand::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds [], OLECMDTEXT *pCmdText)
|
STDMETHODIMP CISFBand::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds [], OLECMDTEXT *pCmdText)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
STDMETHODIMP CISFBand::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||||
{
|
{
|
||||||
if (IsEqualIID(*pguidCmdGroup, IID_IBandSite))
|
if (IsEqualIID(*pguidCmdGroup, IID_IBandSite))
|
||||||
{
|
{
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -446,7 +445,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
}
|
}
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
|
@ -511,20 +510,20 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
|
|
||||||
m_pISF = psf;
|
m_pISF = psf;
|
||||||
}
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::SetBandInfoSFB( PBANDINFOSFB pbi)
|
STDMETHODIMP CISFBand::SetBandInfoSFB( PBANDINFOSFB pbi)
|
||||||
{
|
{
|
||||||
if ((pbi->dwMask & ISFB_MASK_STATE) &&
|
if ((pbi->dwMask & ISFB_MASK_STATE) &&
|
||||||
(pbi->dwState & ISFB_STATE_QLINKSMODE) &&
|
(pbi->dwState & ISFB_STATE_QLINKSMODE) &&
|
||||||
(pbi->dwStateMask & ISFB_STATE_QLINKSMODE))
|
(pbi->dwStateMask & ISFB_STATE_QLINKSMODE))
|
||||||
{
|
{
|
||||||
m_QLaunch = true;
|
m_QLaunch = true;
|
||||||
m_textFlag = false;
|
m_textFlag = false;
|
||||||
if (m_hWnd)
|
if (m_hWnd)
|
||||||
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
|
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
|
||||||
}
|
}
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
|
@ -533,7 +532,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// *** IContextMenu ***
|
// *** IContextMenu ***
|
||||||
STDMETHODIMP CISFBand::GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax)
|
STDMETHODIMP CISFBand::GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax)
|
||||||
{
|
{
|
||||||
/*HRESULT hr = E_INVALIDARG;
|
/*HRESULT hr = E_INVALIDARG;
|
||||||
|
|
||||||
if (idCmd == IDM_DISPLAY)
|
if (idCmd == IDM_DISPLAY)
|
||||||
|
@ -541,7 +540,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
switch (uFlags)
|
switch (uFlags)
|
||||||
{
|
{
|
||||||
case GCS_HELPTEXTW:
|
case GCS_HELPTEXTW:
|
||||||
// Only useful for pre-Vista versions of Windows that
|
// Only useful for pre-Vista versions of Windows that
|
||||||
// have a Status bar.
|
// have a Status bar.
|
||||||
hr = StringCchCopyW(reinterpret_cast<PWSTR>(pszName),
|
hr = StringCchCopyW(reinterpret_cast<PWSTR>(pszName),
|
||||||
cchMax,
|
cchMax,
|
||||||
|
@ -564,13 +563,13 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
|
STDMETHODIMP CISFBand::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
|
||||||
{
|
{
|
||||||
if (!HIWORD(pici->lpVerb))
|
if (!HIWORD(pici->lpVerb))
|
||||||
{
|
{
|
||||||
switch (LOWORD(pici->lpVerb))
|
switch (LOWORD(pici->lpVerb))
|
||||||
{
|
{
|
||||||
case IDM_LARGE_ICONS:
|
case IDM_LARGE_ICONS:
|
||||||
{
|
{
|
||||||
m_iconFlag = false;
|
m_iconFlag = false;
|
||||||
|
|
||||||
HIMAGELIST* piml = (HIMAGELIST*) SendMessage(m_hWnd, TB_GETIMAGELIST, 0, 0);
|
HIMAGELIST* piml = (HIMAGELIST*) SendMessage(m_hWnd, TB_GETIMAGELIST, 0, 0);
|
||||||
|
@ -582,7 +581,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IDM_SMALL_ICONS:
|
case IDM_SMALL_ICONS:
|
||||||
{
|
{
|
||||||
m_iconFlag = true;
|
m_iconFlag = true;
|
||||||
|
|
||||||
HIMAGELIST* piml = (HIMAGELIST*)SendMessage(m_hWnd, TB_GETIMAGELIST, 0, 0);
|
HIMAGELIST* piml = (HIMAGELIST*)SendMessage(m_hWnd, TB_GETIMAGELIST, 0, 0);
|
||||||
|
@ -611,17 +610,17 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IDM_SHOW_TEXT:
|
case IDM_SHOW_TEXT:
|
||||||
{
|
{
|
||||||
if (m_textFlag)
|
if (m_textFlag)
|
||||||
{
|
{
|
||||||
m_textFlag = false;
|
m_textFlag = false;
|
||||||
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
|
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS);
|
||||||
HRESULT hr = IUnknown_Exec(m_Site, IID_IDeskBand, DBID_BANDINFOCHANGED, 0, NULL, NULL);
|
HRESULT hr = IUnknown_Exec(m_Site, IID_IDeskBand, DBID_BANDINFOCHANGED, 0, NULL, NULL);
|
||||||
if (FAILED_UNEXPECTEDLY(hr)) return hr;
|
if (FAILED_UNEXPECTEDLY(hr)) return hr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_textFlag = true;
|
m_textFlag = true;
|
||||||
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, 0);
|
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, 0);
|
||||||
HRESULT hr = IUnknown_Exec(m_Site, IID_IDeskBand, DBID_BANDINFOCHANGED, 0, NULL, NULL);
|
HRESULT hr = IUnknown_Exec(m_Site, IID_IDeskBand, DBID_BANDINFOCHANGED, 0, NULL, NULL);
|
||||||
if (FAILED_UNEXPECTEDLY(hr)) return hr;
|
if (FAILED_UNEXPECTEDLY(hr)) return hr;
|
||||||
|
@ -637,12 +636,12 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP CISFBand::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
|
STDMETHODIMP CISFBand::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
|
||||||
{
|
{
|
||||||
HMENU qMenu = LoadMenu(GetModuleHandleW(L"browseui.dll"), MAKEINTRESOURCE(IDM_POPUPMENU));
|
HMENU qMenu = LoadMenu(GetModuleHandleW(L"browseui.dll"), MAKEINTRESOURCE(IDM_POPUPMENU));
|
||||||
|
|
||||||
if(m_textFlag)
|
if(m_textFlag)
|
||||||
CheckMenuItem(qMenu, IDM_SHOW_TEXT, MF_CHECKED);
|
CheckMenuItem(qMenu, IDM_SHOW_TEXT, MF_CHECKED);
|
||||||
else
|
else
|
||||||
CheckMenuItem(qMenu, IDM_SHOW_TEXT, MF_UNCHECKED);
|
CheckMenuItem(qMenu, IDM_SHOW_TEXT, MF_UNCHECKED);
|
||||||
|
|
||||||
if (m_iconFlag)
|
if (m_iconFlag)
|
||||||
|
@ -661,7 +660,7 @@ HRESULT CISFBand::CreateSimpleToolbar(HWND hWndParent)
|
||||||
|
|
||||||
UINT idMax = Shell_MergeMenus(hmenu, GetSubMenu(qMenu, 0), indexMenu, idCmdFirst, idCmdLast, MM_SUBMENUSHAVEIDS);
|
UINT idMax = Shell_MergeMenus(hmenu, GetSubMenu(qMenu, 0), indexMenu, idCmdFirst, idCmdLast, MM_SUBMENUSHAVEIDS);
|
||||||
DestroyMenu(qMenu);
|
DestroyMenu(qMenu);
|
||||||
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, USHORT(idMax - idCmdFirst +1));
|
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, USHORT(idMax - idCmdFirst +1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
Loading…
Reference in a new issue