mirror of
https://github.com/reactos/reactos.git
synced 2026-06-01 00:40:26 +08:00
[BROWSEUI][FORMATTING] Quick Launch: Just formatting (#7998)
JIRA issue: N/A Just fix indentation and formatting.
This commit is contained in:
committed by
GitHub
parent
490f7af4ae
commit
6efbed51ac
@@ -205,513 +205,513 @@ LRESULT CISFBand::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand
|
||||
/*****************************************************************************/
|
||||
|
||||
// *** IObjectWithSite ***
|
||||
STDMETHODIMP CISFBand::SetSite(IUnknown *pUnkSite)
|
||||
STDMETHODIMP CISFBand::SetSite(IUnknown *pUnkSite)
|
||||
{
|
||||
HRESULT hr;
|
||||
HWND hwndParent;
|
||||
|
||||
TRACE("CISFBand::SetSite(0x%p)\n", pUnkSite);
|
||||
|
||||
hr = IUnknown_GetWindow(pUnkSite, &hwndParent);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
HRESULT hr;
|
||||
HWND hwndParent;
|
||||
TRACE("Querying site window failed: 0x%x\n", hr);
|
||||
return hr;
|
||||
}
|
||||
m_Site = pUnkSite;
|
||||
|
||||
TRACE("CISFBand::SetSite(0x%p)\n", pUnkSite);
|
||||
hr = CreateSimpleToolbar(hwndParent);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
hr = IUnknown_GetWindow(pUnkSite, &hwndParent);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
TRACE("Querying site window failed: 0x%x\n", hr);
|
||||
return hr;
|
||||
}
|
||||
m_Site = pUnkSite;
|
||||
RegisterChangeNotify(TRUE);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
hr = CreateSimpleToolbar(hwndParent);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
STDMETHODIMP CISFBand::GetSite(IN REFIID riid, OUT VOID **ppvSite)
|
||||
{
|
||||
TRACE("CISFBand::GetSite(0x%p,0x%p)\n", riid, ppvSite);
|
||||
|
||||
RegisterChangeNotify(TRUE);
|
||||
return S_OK;
|
||||
HRESULT hr;
|
||||
if (m_Site != NULL)
|
||||
{
|
||||
hr = m_Site->QueryInterface(riid, ppvSite);
|
||||
if (FAILED(hr)) return hr;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::GetSite(IN REFIID riid, OUT VOID **ppvSite)
|
||||
{
|
||||
TRACE("CISFBand::GetSite(0x%p,0x%p)\n", riid, ppvSite);
|
||||
|
||||
HRESULT hr;
|
||||
if (m_Site != NULL)
|
||||
{
|
||||
hr = m_Site->QueryInterface(riid, ppvSite);
|
||||
if (FAILED(hr)) return hr;
|
||||
}
|
||||
|
||||
*ppvSite = NULL;
|
||||
return E_FAIL;
|
||||
}
|
||||
*ppvSite = NULL;
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
// *** IDeskBand ***
|
||||
STDMETHODIMP CISFBand::GetWindow(OUT HWND *phwnd)
|
||||
STDMETHODIMP CISFBand::GetWindow(OUT HWND *phwnd)
|
||||
{
|
||||
if (!m_hWnd)
|
||||
return E_FAIL;
|
||||
if (!phwnd)
|
||||
return E_POINTER;
|
||||
*phwnd = m_hWnd;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::ContextSensitiveHelp(IN BOOL fEnterMode)
|
||||
{
|
||||
/* FIXME: Implement */
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::ShowDW(IN BOOL bShow)
|
||||
{
|
||||
if (m_hWnd)
|
||||
{
|
||||
if (!m_hWnd)
|
||||
return E_FAIL;
|
||||
if (!phwnd)
|
||||
return E_POINTER;
|
||||
*phwnd = m_hWnd;
|
||||
ShowWindow(bShow ? SW_SHOW : SW_HIDE);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::CloseDW(IN DWORD dwReserved)
|
||||
{
|
||||
if (m_hWnd)
|
||||
{
|
||||
DestroyWindow();
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
|
||||
{
|
||||
/* No need to implement this method */
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if (m_hWnd && pdbi)
|
||||
{
|
||||
m_BandID = dwBandID;
|
||||
|
||||
RECT actualRect;
|
||||
POINTL actualSize;
|
||||
POINTL idealSize;
|
||||
POINTL maxSize;
|
||||
POINTL itemSize;
|
||||
|
||||
GetWindowRect(&actualRect);
|
||||
actualSize.x = actualRect.right - actualRect.left;
|
||||
actualSize.y = actualRect.bottom - actualRect.top;
|
||||
|
||||
// Obtain the ideal size, to be used as min and max
|
||||
SendMessageW(m_hWnd, TB_AUTOSIZE, 0, 0);
|
||||
SendMessageW(m_hWnd, TB_GETMAXSIZE, 0, reinterpret_cast<LPARAM>(&maxSize));
|
||||
|
||||
idealSize = maxSize;
|
||||
SendMessageW(m_hWnd, TB_GETIDEALSIZE, FALSE, reinterpret_cast<LPARAM>(&idealSize));
|
||||
|
||||
// Obtain the button size, to be used as the integral size
|
||||
DWORD size = SendMessageW(m_hWnd, TB_GETBUTTONSIZE, 0, 0);
|
||||
itemSize.x = GET_X_LPARAM(size);
|
||||
itemSize.y = GET_Y_LPARAM(size);
|
||||
|
||||
if (pdbi->dwMask & DBIM_MINSIZE)
|
||||
{
|
||||
if (m_QLaunch)
|
||||
pdbi->ptMinSize.x = idealSize.x;
|
||||
else
|
||||
pdbi->ptMinSize.x = -1;
|
||||
pdbi->ptMinSize.y = idealSize.y;
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_MAXSIZE)
|
||||
{
|
||||
pdbi->ptMaxSize = maxSize;
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_INTEGRAL)
|
||||
{
|
||||
pdbi->ptIntegral = itemSize;
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_ACTUAL)
|
||||
{
|
||||
pdbi->ptActual = actualSize;
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_TITLE)
|
||||
{
|
||||
if (m_QLaunch || !ILGetDisplayNameEx(NULL, m_pidl, pdbi->wszTitle, ILGDN_INFOLDER))
|
||||
{
|
||||
pdbi->dwMask &= ~DBIM_TITLE;
|
||||
}
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_MODEFLAGS)
|
||||
{
|
||||
pdbi->dwModeFlags = DBIMF_NORMAL | DBIMF_VARIABLEHEIGHT | DBIMF_USECHEVRON | DBIMF_NOMARGINS | DBIMF_BKCOLOR;
|
||||
if (m_QLaunch)
|
||||
{
|
||||
pdbi->dwModeFlags |= DBIMF_ADDTOFRONT;
|
||||
}
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_BKCOLOR)
|
||||
pdbi->dwMask &= ~DBIM_BKCOLOR;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::ContextSensitiveHelp(IN BOOL fEnterMode)
|
||||
{
|
||||
/* FIXME: Implement */
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::ShowDW(IN BOOL bShow)
|
||||
{
|
||||
if (m_hWnd)
|
||||
{
|
||||
ShowWindow(bShow ? SW_SHOW : SW_HIDE);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::CloseDW(IN DWORD dwReserved)
|
||||
{
|
||||
if (m_hWnd)
|
||||
{
|
||||
DestroyWindow();
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
|
||||
{
|
||||
/* No need to implement this method */
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if (m_hWnd && pdbi)
|
||||
{
|
||||
m_BandID = dwBandID;
|
||||
|
||||
RECT actualRect;
|
||||
POINTL actualSize;
|
||||
POINTL idealSize;
|
||||
POINTL maxSize;
|
||||
POINTL itemSize;
|
||||
|
||||
GetWindowRect(&actualRect);
|
||||
actualSize.x = actualRect.right - actualRect.left;
|
||||
actualSize.y = actualRect.bottom - actualRect.top;
|
||||
|
||||
// Obtain the ideal size, to be used as min and max
|
||||
SendMessageW(m_hWnd, TB_AUTOSIZE, 0, 0);
|
||||
SendMessageW(m_hWnd, TB_GETMAXSIZE, 0, reinterpret_cast<LPARAM>(&maxSize));
|
||||
|
||||
idealSize = maxSize;
|
||||
SendMessageW(m_hWnd, TB_GETIDEALSIZE, FALSE, reinterpret_cast<LPARAM>(&idealSize));
|
||||
|
||||
// Obtain the button size, to be used as the integral size
|
||||
DWORD size = SendMessageW(m_hWnd, TB_GETBUTTONSIZE, 0, 0);
|
||||
itemSize.x = GET_X_LPARAM(size);
|
||||
itemSize.y = GET_Y_LPARAM(size);
|
||||
|
||||
if (pdbi->dwMask & DBIM_MINSIZE)
|
||||
{
|
||||
if (m_QLaunch)
|
||||
pdbi->ptMinSize.x = idealSize.x;
|
||||
else
|
||||
pdbi->ptMinSize.x = -1;
|
||||
pdbi->ptMinSize.y = idealSize.y;
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_MAXSIZE)
|
||||
{
|
||||
pdbi->ptMaxSize = maxSize;
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_INTEGRAL)
|
||||
{
|
||||
pdbi->ptIntegral = itemSize;
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_ACTUAL)
|
||||
{
|
||||
pdbi->ptActual = actualSize;
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_TITLE)
|
||||
{
|
||||
if (m_QLaunch || !ILGetDisplayNameEx(NULL, m_pidl, pdbi->wszTitle, ILGDN_INFOLDER))
|
||||
{
|
||||
pdbi->dwMask &= ~DBIM_TITLE;
|
||||
}
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_MODEFLAGS)
|
||||
{
|
||||
pdbi->dwModeFlags = DBIMF_NORMAL | DBIMF_VARIABLEHEIGHT | DBIMF_USECHEVRON | DBIMF_NOMARGINS | DBIMF_BKCOLOR;
|
||||
if (m_QLaunch)
|
||||
{
|
||||
pdbi->dwModeFlags |= DBIMF_ADDTOFRONT;
|
||||
}
|
||||
}
|
||||
if (pdbi->dwMask & DBIM_BKCOLOR)
|
||||
pdbi->dwMask &= ~DBIM_BKCOLOR;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
}
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
// *** IPersistStream ***
|
||||
STDMETHODIMP CISFBand::GetClassID(OUT CLSID *pClassID)
|
||||
{
|
||||
*pClassID = CLSID_ISFBand;
|
||||
return S_OK;
|
||||
}
|
||||
STDMETHODIMP CISFBand::GetClassID(OUT CLSID *pClassID)
|
||||
{
|
||||
*pClassID = CLSID_ISFBand;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::IsDirty()
|
||||
{
|
||||
/* The object hasn't changed since the last save! */
|
||||
return S_FALSE;
|
||||
}
|
||||
STDMETHODIMP CISFBand::IsDirty()
|
||||
{
|
||||
/* The object hasn't changed since the last save! */
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::Load(IN IStream *pStm)
|
||||
{
|
||||
TRACE("CISFBand::Load called\n");
|
||||
/* Nothing to do */
|
||||
return S_OK;
|
||||
}
|
||||
STDMETHODIMP CISFBand::Load(IN IStream *pStm)
|
||||
{
|
||||
TRACE("CISFBand::Load called\n");
|
||||
/* Nothing to do */
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::Save(IN IStream *pStm, IN BOOL fClearDirty)
|
||||
{
|
||||
/* Nothing to do */
|
||||
return S_OK;
|
||||
}
|
||||
STDMETHODIMP CISFBand::Save(IN IStream *pStm, IN BOOL fClearDirty)
|
||||
{
|
||||
/* Nothing to do */
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::GetSizeMax(OUT ULARGE_INTEGER *pcbSize)
|
||||
{
|
||||
TRACE("CISFBand::GetSizeMax called\n");
|
||||
return S_OK;
|
||||
}
|
||||
STDMETHODIMP CISFBand::GetSizeMax(OUT ULARGE_INTEGER *pcbSize)
|
||||
{
|
||||
TRACE("CISFBand::GetSizeMax called\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
// *** 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);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_COMMAND:
|
||||
{
|
||||
TBBUTTON tb;
|
||||
BOOL chk = SendMessage(TB_GETBUTTON, LOWORD(wParam), (LPARAM)&tb);
|
||||
if (chk)
|
||||
SHInvokeDefaultCommand(m_hWnd, m_pISF, (LPITEMIDLIST)tb.dwData);
|
||||
|
||||
if (theResult)
|
||||
*theResult = TRUE;
|
||||
break;
|
||||
}
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
switch (((LPNMHDR)lParam)->code)
|
||||
{
|
||||
case NM_RCLICK:
|
||||
{
|
||||
HRESULT hr;
|
||||
POINT pt = ((LPNMMOUSE)lParam)->pt; // Already in screen coordinates
|
||||
CComPtr<IContextMenu> picm;
|
||||
HMENU fmenu = CreatePopupMenu();
|
||||
TBBUTTON tb;
|
||||
|
||||
bool chk = SendMessage(m_hWnd, TB_GETBUTTON, ((LPNMMOUSE)lParam)->dwItemSpec, (LPARAM)&tb);
|
||||
LPITEMIDLIST pidl = (LPITEMIDLIST)tb.dwData;
|
||||
|
||||
if (chk)
|
||||
{
|
||||
hr = m_pISF->GetUIObjectOf(m_hWnd, 1, &pidl, IID_NULL_PPV_ARG(IContextMenu, &picm));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
hr = picm->QueryContextMenu(fmenu, 0, 1, 0x7FFF, CMF_DEFAULTONLY);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
int id = TrackPopupMenuEx(fmenu, TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_RETURNCMD, pt.x, pt.y, m_hWnd, 0);
|
||||
if (id > 0)
|
||||
{
|
||||
CMINVOKECOMMANDINFOEX info = { 0 };
|
||||
info.cbSize = sizeof(info);
|
||||
info.fMask = CMIC_MASK_PTINVOKE;
|
||||
if (GetKeyState(VK_CONTROL) < 0)
|
||||
{
|
||||
info.fMask |= CMIC_MASK_CONTROL_DOWN;
|
||||
}
|
||||
if (GetKeyState(VK_SHIFT) < 0)
|
||||
{
|
||||
info.fMask |= CMIC_MASK_SHIFT_DOWN;
|
||||
}
|
||||
info.hwnd = m_hWnd;
|
||||
info.lpVerb = MAKEINTRESOURCEA(id - 1);
|
||||
info.nShow = SW_SHOWNORMAL;
|
||||
info.ptInvoke = pt;
|
||||
picm->InvokeCommand((LPCMINVOKECOMMANDINFO)&info);
|
||||
}
|
||||
}
|
||||
DestroyMenu(fmenu);
|
||||
|
||||
if (theResult)
|
||||
*theResult = TRUE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (theResult)
|
||||
*theResult = FALSE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (theResult)
|
||||
*theResult = FALSE;
|
||||
}
|
||||
|
||||
TRACE("CISFBand::ContainsWindow(0x%p) returns S_OK\n", hWnd);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::IsWindowOwner(HWND hWnd)
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
return (hWnd == m_hWnd) ? S_OK : S_FALSE;
|
||||
case WM_COMMAND:
|
||||
{
|
||||
TBBUTTON tb;
|
||||
BOOL chk = SendMessage(TB_GETBUTTON, LOWORD(wParam), (LPARAM)&tb);
|
||||
if (chk)
|
||||
SHInvokeDefaultCommand(m_hWnd, m_pISF, (LPITEMIDLIST)tb.dwData);
|
||||
|
||||
if (theResult)
|
||||
*theResult = TRUE;
|
||||
break;
|
||||
}
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
switch (((LPNMHDR)lParam)->code)
|
||||
{
|
||||
case NM_RCLICK:
|
||||
{
|
||||
HRESULT hr;
|
||||
POINT pt = ((LPNMMOUSE)lParam)->pt; // Already in screen coordinates
|
||||
CComPtr<IContextMenu> picm;
|
||||
HMENU fmenu = CreatePopupMenu();
|
||||
TBBUTTON tb;
|
||||
|
||||
bool chk = SendMessage(m_hWnd, TB_GETBUTTON, ((LPNMMOUSE)lParam)->dwItemSpec, (LPARAM)&tb);
|
||||
LPITEMIDLIST pidl = (LPITEMIDLIST)tb.dwData;
|
||||
|
||||
if (chk)
|
||||
{
|
||||
hr = m_pISF->GetUIObjectOf(m_hWnd, 1, &pidl, IID_NULL_PPV_ARG(IContextMenu, &picm));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
hr = picm->QueryContextMenu(fmenu, 0, 1, 0x7FFF, CMF_DEFAULTONLY);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
int id = TrackPopupMenuEx(fmenu, TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_RETURNCMD, pt.x, pt.y, m_hWnd, 0);
|
||||
if (id > 0)
|
||||
{
|
||||
CMINVOKECOMMANDINFOEX info = { 0 };
|
||||
info.cbSize = sizeof(info);
|
||||
info.fMask = CMIC_MASK_PTINVOKE;
|
||||
if (GetKeyState(VK_CONTROL) < 0)
|
||||
{
|
||||
info.fMask |= CMIC_MASK_CONTROL_DOWN;
|
||||
}
|
||||
if (GetKeyState(VK_SHIFT) < 0)
|
||||
{
|
||||
info.fMask |= CMIC_MASK_SHIFT_DOWN;
|
||||
}
|
||||
info.hwnd = m_hWnd;
|
||||
info.lpVerb = MAKEINTRESOURCEA(id - 1);
|
||||
info.nShow = SW_SHOWNORMAL;
|
||||
info.ptInvoke = pt;
|
||||
picm->InvokeCommand((LPCMINVOKECOMMANDINFO)&info);
|
||||
}
|
||||
}
|
||||
DestroyMenu(fmenu);
|
||||
|
||||
if (theResult)
|
||||
*theResult = TRUE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (theResult)
|
||||
*theResult = FALSE;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (theResult)
|
||||
*theResult = FALSE;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::IsWindowOwner(HWND hWnd)
|
||||
{
|
||||
return (hWnd == m_hWnd) ? S_OK : S_FALSE;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
// *** 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;
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
{
|
||||
if (IsEqualIID(*pguidCmdGroup, IID_IBandSite))
|
||||
return S_OK;
|
||||
|
||||
if (IsEqualIID(*pguidCmdGroup, IID_IDeskBand))
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
{
|
||||
if (IsEqualIID(*pguidCmdGroup, IID_IBandSite))
|
||||
return S_OK;
|
||||
|
||||
if (IsEqualIID(*pguidCmdGroup, IID_IDeskBand))
|
||||
if (nCmdID == DBID_SETWINDOWTHEME)
|
||||
{
|
||||
if (nCmdID == DBID_SETWINDOWTHEME)
|
||||
if (pvaIn && V_VT(pvaIn) == VT_BSTR && V_BSTR(pvaIn))
|
||||
{
|
||||
if (pvaIn && V_VT(pvaIn) == VT_BSTR && V_BSTR(pvaIn))
|
||||
{
|
||||
SetWindowTheme(m_hWnd, V_BSTR(pvaIn), NULL);
|
||||
}
|
||||
SetWindowTheme(m_hWnd, V_BSTR(pvaIn), NULL);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
UNIMPLEMENTED;
|
||||
|
||||
return E_NOTIMPL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
UNIMPLEMENTED;
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
// *** IShellFolderBand ***
|
||||
STDMETHODIMP CISFBand::GetBandInfoSFB(PBANDINFOSFB pbi)
|
||||
STDMETHODIMP CISFBand::GetBandInfoSFB(PBANDINFOSFB pbi)
|
||||
{
|
||||
if (pbi->dwMask == ISFB_MASK_IDLIST)
|
||||
{
|
||||
if (pbi->dwMask == ISFB_MASK_IDLIST)
|
||||
{
|
||||
pbi->pidl = ILClone(m_pidl);
|
||||
if (!pbi->pidl)
|
||||
return E_OUTOFMEMORY;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::InitializeSFB(IShellFolder *psf, PCIDLIST_ABSOLUTE pidl)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if (!psf && !pidl)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (psf && pidl)
|
||||
return E_INVALIDARG;
|
||||
|
||||
m_pidl.Free();
|
||||
|
||||
if (pidl != NULL)
|
||||
{
|
||||
CComPtr<IShellFolder> psfDesktop;
|
||||
hr = SHGetDesktopFolder(&psfDesktop);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
if (_ILIsDesktop(pidl))
|
||||
{
|
||||
m_pISF = psfDesktop;
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = psfDesktop->BindToObject(pidl, NULL, IID_PPV_ARG(IShellFolder, &m_pISF));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
}
|
||||
|
||||
m_pidl.Attach(ILClone(pidl));
|
||||
if (!m_pidl)
|
||||
ERR("Out of memory\n");
|
||||
}
|
||||
|
||||
if (psf != NULL)
|
||||
{
|
||||
CComPtr<IPersistFolder2> ppf2;
|
||||
hr = psf->QueryInterface(IID_PPV_ARG(IPersistFolder2, &ppf2));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
hr = ppf2->GetCurFolder(&m_pidl);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
ATLASSERT(m_pidl);
|
||||
m_pISF = psf;
|
||||
}
|
||||
|
||||
pbi->pidl = ILClone(m_pidl);
|
||||
if (!pbi->pidl)
|
||||
return E_OUTOFMEMORY;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::SetBandInfoSFB( PBANDINFOSFB pbi)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::InitializeSFB(IShellFolder *psf, PCIDLIST_ABSOLUTE pidl)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if (!psf && !pidl)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if (psf && pidl)
|
||||
return E_INVALIDARG;
|
||||
|
||||
m_pidl.Free();
|
||||
|
||||
if (pidl != NULL)
|
||||
{
|
||||
if ((pbi->dwMask & ISFB_MASK_STATE) &&
|
||||
(pbi->dwState & ISFB_STATE_QLINKSMODE) &&
|
||||
(pbi->dwStateMask & ISFB_STATE_QLINKSMODE))
|
||||
CComPtr<IShellFolder> psfDesktop;
|
||||
hr = SHGetDesktopFolder(&psfDesktop);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
if (_ILIsDesktop(pidl))
|
||||
{
|
||||
m_QLaunch = TRUE;
|
||||
ShowHideText(FALSE);
|
||||
return BandInfoChanged();
|
||||
}
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
// *** IContextMenu ***
|
||||
STDMETHODIMP CISFBand::GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax)
|
||||
{
|
||||
/*HRESULT hr = E_INVALIDARG;
|
||||
|
||||
if (idCmd == IDM_DISPLAY)
|
||||
{
|
||||
switch (uFlags)
|
||||
{
|
||||
case GCS_HELPTEXTW:
|
||||
// Only useful for pre-Vista versions of Windows that
|
||||
// have a Status bar.
|
||||
hr = StringCchCopyW(reinterpret_cast<PWSTR>(pszName),
|
||||
cchMax,
|
||||
L"Display File Name");
|
||||
break;
|
||||
|
||||
case GCS_VERBW:
|
||||
// GCS_VERBW is an optional feature that enables a caller
|
||||
// to discover the canonical name for the verb that is passed in
|
||||
// through idCommand.
|
||||
hr = StringCchCopyW(reinterpret_cast<PWSTR>(pszName),
|
||||
cchMax,
|
||||
L"DisplayFileName");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return hr; */
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
|
||||
{
|
||||
if (!HIWORD(pici->lpVerb))
|
||||
{
|
||||
switch (LOWORD(pici->lpVerb))
|
||||
{
|
||||
case IDM_LARGE_ICONS:
|
||||
{
|
||||
HRESULT hr = SetImageListIconSize(FALSE);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
return BandInfoChanged();
|
||||
}
|
||||
case IDM_SMALL_ICONS:
|
||||
{
|
||||
HRESULT hr = SetImageListIconSize(TRUE);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
return BandInfoChanged();
|
||||
}
|
||||
case IDM_OPEN_FOLDER:
|
||||
{
|
||||
SHELLEXECUTEINFOW shexinfo = { sizeof(shexinfo) };
|
||||
shexinfo.fMask = SEE_MASK_IDLIST;
|
||||
shexinfo.lpVerb = L"open";
|
||||
shexinfo.lpIDList = m_pidl;
|
||||
shexinfo.nShow = SW_SHOW;
|
||||
if (!ShellExecuteExW(&shexinfo))
|
||||
return E_FAIL;
|
||||
break;
|
||||
}
|
||||
case IDM_SHOW_TEXT:
|
||||
{
|
||||
ShowHideText(!m_bShowText);
|
||||
return BandInfoChanged();
|
||||
}
|
||||
default:
|
||||
return E_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
|
||||
{
|
||||
HMENU qMenu = LoadMenu(GetModuleHandleW(L"browseui.dll"), MAKEINTRESOURCE(IDM_POPUPMENU));
|
||||
|
||||
CheckMenuItem(qMenu, IDM_SHOW_TEXT, (m_bShowText ? MF_CHECKED : MF_UNCHECKED));
|
||||
|
||||
if (m_bSmallIcon)
|
||||
{
|
||||
CheckMenuItem(qMenu, IDM_SMALL_ICONS, MF_CHECKED);
|
||||
CheckMenuItem(qMenu, IDM_LARGE_ICONS, MF_UNCHECKED);
|
||||
m_pISF = psfDesktop;
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckMenuItem(qMenu, IDM_LARGE_ICONS, MF_CHECKED);
|
||||
CheckMenuItem(qMenu, IDM_SMALL_ICONS, MF_UNCHECKED);
|
||||
hr = psfDesktop->BindToObject(pidl, NULL, IID_PPV_ARG(IShellFolder, &m_pISF));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
}
|
||||
|
||||
if (_ILIsDesktop(m_pidl))
|
||||
DeleteMenu(qMenu, IDM_OPEN_FOLDER, MF_BYCOMMAND);
|
||||
|
||||
UINT idMax = Shell_MergeMenus(hmenu, GetSubMenu(qMenu, 0), indexMenu, idCmdFirst, idCmdLast, MM_SUBMENUSHAVEIDS);
|
||||
DestroyMenu(qMenu);
|
||||
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, USHORT(idMax - idCmdFirst +1));
|
||||
m_pidl.Attach(ILClone(pidl));
|
||||
if (!m_pidl)
|
||||
ERR("Out of memory\n");
|
||||
}
|
||||
|
||||
if (psf != NULL)
|
||||
{
|
||||
CComPtr<IPersistFolder2> ppf2;
|
||||
hr = psf->QueryInterface(IID_PPV_ARG(IPersistFolder2, &ppf2));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
hr = ppf2->GetCurFolder(&m_pidl);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
ATLASSERT(m_pidl);
|
||||
m_pISF = psf;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::SetBandInfoSFB( PBANDINFOSFB pbi)
|
||||
{
|
||||
if ((pbi->dwMask & ISFB_MASK_STATE) &&
|
||||
(pbi->dwState & ISFB_STATE_QLINKSMODE) &&
|
||||
(pbi->dwStateMask & ISFB_STATE_QLINKSMODE))
|
||||
{
|
||||
m_QLaunch = TRUE;
|
||||
ShowHideText(FALSE);
|
||||
return BandInfoChanged();
|
||||
}
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
// *** IContextMenu ***
|
||||
STDMETHODIMP CISFBand::GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax)
|
||||
{
|
||||
/*HRESULT hr = E_INVALIDARG;
|
||||
|
||||
if (idCmd == IDM_DISPLAY)
|
||||
{
|
||||
switch (uFlags)
|
||||
{
|
||||
case GCS_HELPTEXTW:
|
||||
// Only useful for pre-Vista versions of Windows that
|
||||
// have a Status bar.
|
||||
hr = StringCchCopyW(reinterpret_cast<PWSTR>(pszName),
|
||||
cchMax,
|
||||
L"Display File Name");
|
||||
break;
|
||||
|
||||
case GCS_VERBW:
|
||||
// GCS_VERBW is an optional feature that enables a caller
|
||||
// to discover the canonical name for the verb that is passed in
|
||||
// through idCommand.
|
||||
hr = StringCchCopyW(reinterpret_cast<PWSTR>(pszName),
|
||||
cchMax,
|
||||
L"DisplayFileName");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return hr; */
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
|
||||
{
|
||||
if (!HIWORD(pici->lpVerb))
|
||||
{
|
||||
switch (LOWORD(pici->lpVerb))
|
||||
{
|
||||
case IDM_LARGE_ICONS:
|
||||
{
|
||||
HRESULT hr = SetImageListIconSize(FALSE);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
return BandInfoChanged();
|
||||
}
|
||||
case IDM_SMALL_ICONS:
|
||||
{
|
||||
HRESULT hr = SetImageListIconSize(TRUE);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
return BandInfoChanged();
|
||||
}
|
||||
case IDM_OPEN_FOLDER:
|
||||
{
|
||||
SHELLEXECUTEINFOW shexinfo = { sizeof(shexinfo) };
|
||||
shexinfo.fMask = SEE_MASK_IDLIST;
|
||||
shexinfo.lpVerb = L"open";
|
||||
shexinfo.lpIDList = m_pidl;
|
||||
shexinfo.nShow = SW_SHOW;
|
||||
if (!ShellExecuteExW(&shexinfo))
|
||||
return E_FAIL;
|
||||
break;
|
||||
}
|
||||
case IDM_SHOW_TEXT:
|
||||
{
|
||||
ShowHideText(!m_bShowText);
|
||||
return BandInfoChanged();
|
||||
}
|
||||
default:
|
||||
return E_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CISFBand::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
|
||||
{
|
||||
HMENU qMenu = LoadMenu(GetModuleHandleW(L"browseui.dll"), MAKEINTRESOURCE(IDM_POPUPMENU));
|
||||
|
||||
CheckMenuItem(qMenu, IDM_SHOW_TEXT, (m_bShowText ? MF_CHECKED : MF_UNCHECKED));
|
||||
|
||||
if (m_bSmallIcon)
|
||||
{
|
||||
CheckMenuItem(qMenu, IDM_SMALL_ICONS, MF_CHECKED);
|
||||
CheckMenuItem(qMenu, IDM_LARGE_ICONS, MF_UNCHECKED);
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckMenuItem(qMenu, IDM_LARGE_ICONS, MF_CHECKED);
|
||||
CheckMenuItem(qMenu, IDM_SMALL_ICONS, MF_UNCHECKED);
|
||||
}
|
||||
|
||||
if (_ILIsDesktop(m_pidl))
|
||||
DeleteMenu(qMenu, IDM_OPEN_FOLDER, MF_BYCOMMAND);
|
||||
|
||||
UINT idMax = Shell_MergeMenus(hmenu, GetSubMenu(qMenu, 0), indexMenu, idCmdFirst, idCmdLast, MM_SUBMENUSHAVEIDS);
|
||||
DestroyMenu(qMenu);
|
||||
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, USHORT(idMax - idCmdFirst +1));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
// C Constructor
|
||||
|
||||
|
||||
@@ -52,85 +52,44 @@ public:
|
||||
// Personal Methods
|
||||
HRESULT CreateSimpleToolbar(HWND hWndParent);
|
||||
|
||||
STDMETHOD(ContainsWindow)(
|
||||
IN HWND hWnd
|
||||
);
|
||||
STDMETHOD(ContainsWindow)(IN HWND hWnd);
|
||||
|
||||
// IObjectWithSite
|
||||
|
||||
STDMETHOD(GetSite)(
|
||||
IN REFIID riid,
|
||||
OUT void **ppvSite
|
||||
) override;
|
||||
|
||||
STDMETHOD(SetSite)(
|
||||
IN IUnknown *pUnkSite
|
||||
) override;
|
||||
STDMETHOD(GetSite)(IN REFIID riid, OUT void **ppvSite) override;
|
||||
STDMETHOD(SetSite)(IN IUnknown *pUnkSite) override;
|
||||
|
||||
// IDeskBand
|
||||
|
||||
STDMETHOD(GetWindow)(
|
||||
OUT HWND *phwnd
|
||||
) override;
|
||||
|
||||
STDMETHOD(ContextSensitiveHelp)(
|
||||
IN BOOL fEnterMode
|
||||
) override;
|
||||
|
||||
STDMETHOD(ShowDW)(
|
||||
IN BOOL bShow
|
||||
) override;
|
||||
|
||||
STDMETHOD(CloseDW)(
|
||||
IN DWORD dwReserved
|
||||
) override;
|
||||
STDMETHOD(GetWindow)(OUT HWND *phwnd) override;
|
||||
STDMETHOD(ContextSensitiveHelp)(IN BOOL fEnterMode) override;
|
||||
STDMETHOD(ShowDW)(IN BOOL bShow) override;
|
||||
STDMETHOD(CloseDW)(IN DWORD dwReserved) override;
|
||||
|
||||
STDMETHOD(ResizeBorderDW)(
|
||||
LPCRECT prcBorder,
|
||||
IUnknown *punkToolbarSite,
|
||||
BOOL fReserved
|
||||
) override;
|
||||
BOOL fReserved) override;
|
||||
|
||||
STDMETHOD(GetBandInfo)(
|
||||
IN DWORD dwBandID,
|
||||
IN DWORD dwViewMode,
|
||||
IN OUT DESKBANDINFO *pdbi
|
||||
) override;
|
||||
IN OUT DESKBANDINFO *pdbi) override;
|
||||
|
||||
// IPersistStream
|
||||
|
||||
STDMETHOD(GetClassID)(
|
||||
OUT CLSID *pClassID
|
||||
) override;
|
||||
|
||||
STDMETHOD(GetSizeMax)(
|
||||
OUT ULARGE_INTEGER *pcbSize
|
||||
) override;
|
||||
|
||||
STDMETHOD(GetClassID)(OUT CLSID *pClassID) override;
|
||||
STDMETHOD(GetSizeMax)(OUT ULARGE_INTEGER *pcbSize) override;
|
||||
STDMETHOD(IsDirty)() override;
|
||||
|
||||
STDMETHOD(Load)(
|
||||
IN IStream *pStm
|
||||
) override;
|
||||
|
||||
STDMETHOD(Save)(
|
||||
IN IStream *pStm,
|
||||
IN BOOL fClearDirty
|
||||
) override;
|
||||
STDMETHOD(Load)(IN IStream *pStm) override;
|
||||
STDMETHOD(Save)(IN IStream *pStm, IN BOOL fClearDirty) override;
|
||||
|
||||
// IWinEventHandler
|
||||
|
||||
STDMETHOD(OnWinEvent)(
|
||||
HWND hWnd,
|
||||
UINT uMsg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam,
|
||||
LRESULT *theResult
|
||||
) override;
|
||||
LRESULT *theResult) override;
|
||||
|
||||
STDMETHOD(IsWindowOwner)(
|
||||
HWND hWnd
|
||||
) override;
|
||||
STDMETHOD(IsWindowOwner)(HWND hWnd) override;
|
||||
|
||||
// IOleCommandTarget
|
||||
|
||||
@@ -139,29 +98,18 @@ public:
|
||||
IN DWORD nCmdID,
|
||||
IN DWORD nCmdexecopt,
|
||||
IN VARIANT *pvaIn,
|
||||
IN OUT VARIANT *pvaOut
|
||||
) override;
|
||||
IN OUT VARIANT *pvaOut) override;
|
||||
|
||||
STDMETHOD(QueryStatus)(
|
||||
IN const GUID *pguidCmdGroup,
|
||||
IN ULONG cCmds,
|
||||
IN OUT OLECMD prgCmds[],
|
||||
IN OUT OLECMDTEXT *pCmdText
|
||||
) override;
|
||||
IN OUT OLECMDTEXT *pCmdText) override;
|
||||
|
||||
// IShellFolderBand
|
||||
STDMETHOD(GetBandInfoSFB)(
|
||||
PBANDINFOSFB pbi
|
||||
) override;
|
||||
|
||||
STDMETHOD(InitializeSFB)(
|
||||
IShellFolder *psf,
|
||||
PCIDLIST_ABSOLUTE pidl
|
||||
) override;
|
||||
|
||||
STDMETHOD(SetBandInfoSFB)(
|
||||
PBANDINFOSFB pbi
|
||||
) override;
|
||||
STDMETHOD(GetBandInfoSFB)(PBANDINFOSFB pbi) override;
|
||||
STDMETHOD(InitializeSFB)(IShellFolder *psf, PCIDLIST_ABSOLUTE pidl) override;
|
||||
STDMETHOD(SetBandInfoSFB)(PBANDINFOSFB pbi) override;
|
||||
|
||||
// IContextMenu
|
||||
STDMETHOD(GetCommandString)(
|
||||
@@ -169,20 +117,16 @@ public:
|
||||
UINT uFlags,
|
||||
UINT *pwReserved,
|
||||
LPSTR pszName,
|
||||
UINT cchMax
|
||||
) override;
|
||||
UINT cchMax) override;
|
||||
|
||||
STDMETHOD(InvokeCommand)(
|
||||
LPCMINVOKECOMMANDINFO pici
|
||||
) override;
|
||||
STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO pici) override;
|
||||
|
||||
STDMETHOD(QueryContextMenu)(
|
||||
HMENU hmenu,
|
||||
UINT indexMenu,
|
||||
UINT idCmdFirst,
|
||||
UINT idCmdLast,
|
||||
UINT uFlags
|
||||
) override;
|
||||
UINT uFlags) override;
|
||||
|
||||
LRESULT OnChangeNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
|
||||
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
|
||||
|
||||
Reference in New Issue
Block a user