4 * Copyright 2014 David Quintana
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #include <CommonControls.h>
23 #include <shlwapi_undoc.h>
25 #include "CMenuBand.h"
26 #include "CMenuToolbars.h"
27 #include "CMenuFocusManager.h"
29 WINE_DEFAULT_DEBUG_CHANNEL(CMenuBand
);
33 #define UNIMPLEMENTED DbgPrint("%s is UNIMPLEMENTED!\n", __FUNCTION__)
36 HRESULT WINAPI
CMenuBand_Constructor(REFIID riid
, LPVOID
*ppv
)
40 CMenuBand
* site
= new CComObject
<CMenuBand
>();
45 HRESULT hr
= site
->QueryInterface(riid
, ppv
);
47 if (FAILED_UNEXPECTEDLY(hr
))
53 CMenuBand::CMenuBand() :
54 m_staticToolbar(NULL
),
62 m_topLevelWindow(NULL
),
65 m_trackingPopup(FALSE
)
67 m_focusManager
= CMenuFocusManager::AcquireManager();
70 CMenuBand::~CMenuBand()
72 CMenuFocusManager::ReleaseManager(m_focusManager
);
75 delete m_staticToolbar
;
81 HRESULT STDMETHODCALLTYPE
CMenuBand::Initialize(
82 IShellMenuCallback
*psmc
,
90 m_uIdAncestor
= uIdAncestor
;
95 _CallCB(SMC_CREATE
, 0, reinterpret_cast<LPARAM
>(&m_UserData
));
101 HRESULT STDMETHODCALLTYPE
CMenuBand::GetMenuInfo(
102 IShellMenuCallback
**ppsmc
,
107 if (!pdwFlags
) // maybe?
117 *puIdAncestor
= m_uIdAncestor
;
119 *pdwFlags
= m_dwFlags
;
124 HRESULT STDMETHODCALLTYPE
CMenuBand::SetMenu(
129 DbgPrint("CMenuBand::SetMenu called, hmenu=%p; hwnd=%p, flags=%x\n", hmenu
, hwnd
, dwFlags
);
131 BOOL created
= FALSE
;
133 if (m_staticToolbar
== NULL
)
135 m_staticToolbar
= new CMenuStaticToolbar(this);
141 HRESULT hr
= m_staticToolbar
->SetMenu(hmenu
, hwnd
, dwFlags
);
142 if (FAILED_UNEXPECTEDLY(hr
))
149 hr
= m_site
->GetWindow(&hwndParent
);
150 if (FAILED_UNEXPECTEDLY(hr
))
155 hr
= m_staticToolbar
->CreateToolbar(hwndParent
, m_dwFlags
);
156 if (FAILED_UNEXPECTEDLY(hr
))
159 hr
= m_staticToolbar
->FillToolbar();
163 hr
= m_staticToolbar
->FillToolbar(TRUE
);
170 HRESULT STDMETHODCALLTYPE
CMenuBand::GetMenu(
175 if (m_staticToolbar
== NULL
)
178 return m_staticToolbar
->GetMenu(phmenu
, phwnd
, pdwFlags
);
181 HRESULT STDMETHODCALLTYPE
CMenuBand::SetSite(IUnknown
*pUnkSite
)
188 if (pUnkSite
== NULL
)
192 hr
= pUnkSite
->QueryInterface(IID_PPV_ARG(IOleWindow
, &m_site
));
193 if (FAILED_UNEXPECTEDLY(hr
))
196 hr
= m_site
->GetWindow(&hwndParent
);
197 if (FAILED_UNEXPECTEDLY(hr
))
200 if (!::IsWindow(hwndParent
))
203 if (m_staticToolbar
!= NULL
)
205 hr
= m_staticToolbar
->CreateToolbar(hwndParent
, m_dwFlags
);
206 if (FAILED_UNEXPECTEDLY(hr
))
209 hr
= m_staticToolbar
->FillToolbar();
210 if (FAILED_UNEXPECTEDLY(hr
))
214 if (m_SFToolbar
!= NULL
)
216 hr
= m_SFToolbar
->CreateToolbar(hwndParent
, m_dwFlags
);
217 if (FAILED_UNEXPECTEDLY(hr
))
220 hr
= m_SFToolbar
->FillToolbar();
221 if (FAILED_UNEXPECTEDLY(hr
))
225 hr
= IUnknown_QueryService(m_site
, SID_SMenuPopup
, IID_PPV_ARG(IMenuPopup
, &m_subMenuParent
));
226 if (hr
!= E_NOINTERFACE
&& FAILED_UNEXPECTEDLY(hr
))
229 CComPtr
<IOleWindow
> pTopLevelWindow
;
230 hr
= IUnknown_QueryService(m_site
, SID_STopLevelBrowser
, IID_PPV_ARG(IOleWindow
, &pTopLevelWindow
));
231 if (FAILED_UNEXPECTEDLY(hr
))
234 return pTopLevelWindow
->GetWindow(&m_topLevelWindow
);
237 HRESULT STDMETHODCALLTYPE
CMenuBand::GetSite(REFIID riid
, PVOID
*ppvSite
)
242 return m_site
->QueryInterface(riid
, ppvSite
);
245 HRESULT STDMETHODCALLTYPE
CMenuBand::GetWindow(
248 if (m_SFToolbar
!= NULL
)
249 return m_SFToolbar
->GetWindow(phwnd
);
251 if (m_staticToolbar
!= NULL
)
252 return m_staticToolbar
->GetWindow(phwnd
);
257 HRESULT STDMETHODCALLTYPE
CMenuBand::OnPosRectChangeDB(RECT
*prc
)
259 SIZE sizeStatic
= { 0 };
260 SIZE sizeShlFld
= { 0 };
263 if (m_staticToolbar
!= NULL
)
264 hr
= m_staticToolbar
->GetIdealSize(sizeStatic
);
265 if (FAILED_UNEXPECTEDLY(hr
))
268 if (m_SFToolbar
!= NULL
)
269 hr
= m_SFToolbar
->GetIdealSize(sizeShlFld
);
270 if (FAILED_UNEXPECTEDLY(hr
))
273 if (m_staticToolbar
== NULL
&& m_SFToolbar
== NULL
)
276 int sy
= min(prc
->bottom
- prc
->top
, sizeStatic
.cy
+ sizeShlFld
.cy
);
278 int syStatic
= sizeStatic
.cy
;
279 int syShlFld
= sy
- syStatic
;
283 m_SFToolbar
->SetPosSize(
286 prc
->right
- prc
->left
,
291 m_staticToolbar
->SetPosSize(
294 prc
->right
- prc
->left
,
300 HRESULT STDMETHODCALLTYPE
CMenuBand::GetBandInfo(
305 SIZE sizeStatic
= { 0 };
306 SIZE sizeShlFld
= { 0 };
310 if (m_staticToolbar
!= NULL
)
311 hr
= m_staticToolbar
->GetIdealSize(sizeStatic
);
312 if (FAILED_UNEXPECTEDLY(hr
))
315 if (m_SFToolbar
!= NULL
)
316 hr
= m_SFToolbar
->GetIdealSize(sizeShlFld
);
317 if (FAILED_UNEXPECTEDLY(hr
))
320 if (m_staticToolbar
== NULL
&& m_SFToolbar
== NULL
)
323 pdbi
->ptMinSize
.x
= max(sizeStatic
.cx
, sizeShlFld
.cx
) + 20;
324 pdbi
->ptMinSize
.y
= sizeStatic
.cy
+ sizeShlFld
.cy
;
325 pdbi
->ptMaxSize
.x
= max(sizeStatic
.cx
, sizeShlFld
.cx
) + 20;
326 pdbi
->ptMaxSize
.y
= sizeStatic
.cy
+ sizeShlFld
.cy
;
331 HRESULT STDMETHODCALLTYPE
CMenuBand::ShowDW(BOOL fShow
)
335 if (m_staticToolbar
!= NULL
)
336 hr
= m_staticToolbar
->ShowWindow(fShow
);
337 if (FAILED_UNEXPECTEDLY(hr
))
339 if (m_SFToolbar
!= NULL
)
340 hr
= m_SFToolbar
->ShowWindow(fShow
);
341 if (FAILED_UNEXPECTEDLY(hr
))
346 hr
= _CallCB(SMC_INITMENU
, 0, 0);
347 if (FAILED_UNEXPECTEDLY(hr
))
351 CComPtr
<IServiceProvider
> sp
;
352 CComPtr
<IUnknown
> unk0
;
353 CComPtr
<IDeskBar
> db0
, db
, db1
;
354 if (SUCCEEDED(IUnknown_GetSite(m_subMenuParent
, IID_PPV_ARG(IServiceProvider
, &sp
))) &&
355 SUCCEEDED(sp
->QueryInterface(IID_PPV_ARG(IDeskBar
, &db0
))) &&
356 SUCCEEDED(db0
->GetClient(&unk0
)) &&
357 SUCCEEDED(IUnknown_QueryService(unk0
, SID_SMenuBandChild
, IID_PPV_ARG(IDeskBar
, &db
))) &&
358 SUCCEEDED(IUnknown_QueryService(m_site
, SID_SMenuBandParent
, IID_PPV_ARG(IDeskBar
, &db1
))))
366 if (m_dwFlags
& SMINIT_VERTICAL
)
369 hr
= m_focusManager
->PushMenu(this);
371 hr
= m_focusManager
->PopMenu(this);
377 HRESULT STDMETHODCALLTYPE
CMenuBand::CloseDW(DWORD dwReserved
)
381 if (m_staticToolbar
!= NULL
)
382 return m_staticToolbar
->Close();
384 if (m_SFToolbar
!= NULL
)
385 return m_SFToolbar
->Close();
389 HRESULT STDMETHODCALLTYPE
CMenuBand::ResizeBorderDW(LPCRECT prcBorder
, IUnknown
*punkToolbarSite
, BOOL fReserved
)
395 HRESULT STDMETHODCALLTYPE
CMenuBand::ContextSensitiveHelp(BOOL fEnterMode
)
401 HRESULT STDMETHODCALLTYPE
CMenuBand::UIActivateIO(BOOL fActivate
, LPMSG lpMsg
)
407 hr
= m_subMenuParent
->SetSubMenu(this, fActivate
);
408 if (FAILED_UNEXPECTEDLY(hr
))
414 CComPtr
<IOleWindow
> pTopLevelWindow
;
415 hr
= IUnknown_QueryService(m_site
, SID_SMenuPopup
, IID_PPV_ARG(IOleWindow
, &pTopLevelWindow
));
416 if (FAILED_UNEXPECTEDLY(hr
))
419 hr
= pTopLevelWindow
->GetWindow(&m_topLevelWindow
);
420 if (FAILED_UNEXPECTEDLY(hr
))
425 m_topLevelWindow
= NULL
;
431 HRESULT STDMETHODCALLTYPE
CMenuBand::Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
)
436 if (IsEqualGUID(*pguidCmdGroup
, CLSID_MenuBand
))
438 if (nCmdID
== 16) // set (big) icon size
440 this->m_useBigIcons
= nCmdexecopt
== 2;
443 else if (nCmdID
== 19) // popup-related
455 HRESULT STDMETHODCALLTYPE
CMenuBand::QueryService(REFGUID guidService
, REFIID riid
, void **ppvObject
)
457 if (IsEqualIID(guidService
, SID_SMenuBandChild
) ||
458 IsEqualIID(guidService
, SID_SMenuBandBottom
) ||
459 IsEqualIID(guidService
, SID_SMenuBandBottomSelected
))
460 return this->QueryInterface(riid
, ppvObject
);
461 WARN("Unknown service requested %s\n", wine_dbgstr_guid(&guidService
));
462 return E_NOINTERFACE
;
465 HRESULT STDMETHODCALLTYPE
CMenuBand::Popup(POINTL
*ppt
, RECTL
*prcExclude
, MP_POPUPFLAGS dwFlags
)
471 HRESULT STDMETHODCALLTYPE
CMenuBand::OnSelect(DWORD dwSelectType
)
473 switch (dwSelectType
)
475 case MPOS_CHILDTRACKING
:
476 if (!m_subMenuParent
)
478 // TODO: Cancel timers?
479 return m_subMenuParent
->OnSelect(dwSelectType
);
480 case MPOS_SELECTLEFT
:
482 m_subMenuChild
->OnSelect(MPOS_CANCELLEVEL
);
483 if (!m_subMenuParent
)
485 return m_subMenuParent
->OnSelect(dwSelectType
);
486 case MPOS_SELECTRIGHT
:
487 if (!m_subMenuParent
)
489 return m_subMenuParent
->OnSelect(dwSelectType
);
491 case MPOS_FULLCANCEL
:
493 m_subMenuChild
->OnSelect(dwSelectType
);
494 if (!m_subMenuParent
)
496 return m_subMenuParent
->OnSelect(dwSelectType
);
497 case MPOS_CANCELLEVEL
:
499 m_subMenuChild
->OnSelect(dwSelectType
);
505 HRESULT STDMETHODCALLTYPE
CMenuBand::SetSubMenu(IMenuPopup
*pmp
, BOOL fSet
)
511 HRESULT STDMETHODCALLTYPE
CMenuBand::SetClient(IUnknown
*punkClient
)
514 m_subMenuChild
= NULL
;
517 HRESULT hr
= punkClient
->QueryInterface(IID_PPV_ARG(IMenuPopup
, &m_subMenuChild
));
518 m_trackingPopup
= m_subMenuChild
!= NULL
;
519 if (!m_trackingPopup
)
521 if (m_staticToolbar
) m_staticToolbar
->OnPopupItemChanged(NULL
, -1);
522 if (m_SFToolbar
) m_SFToolbar
->OnPopupItemChanged(NULL
, -1);
527 HRESULT STDMETHODCALLTYPE
CMenuBand::GetClient(IUnknown
**ppunkClient
)
529 // HACK, so I can test for a submenu in the DeskBar
534 *ppunkClient
= m_subMenuChild
;
541 HRESULT STDMETHODCALLTYPE
CMenuBand::IsMenuMessage(MSG
*pmsg
)
549 HRESULT STDMETHODCALLTYPE
CMenuBand::TranslateMenuMessage(MSG
*pmsg
, LRESULT
*plRet
)
555 HRESULT STDMETHODCALLTYPE
CMenuBand::SetShellFolder(IShellFolder
*psf
, LPCITEMIDLIST pidlFolder
, HKEY hKey
, DWORD dwFlags
)
557 if (m_SFToolbar
== NULL
)
559 m_SFToolbar
= new CMenuSFToolbar(this);
562 HRESULT hr
= m_SFToolbar
->SetShellFolder(psf
, pidlFolder
, hKey
, dwFlags
);
563 if (FAILED_UNEXPECTEDLY(hr
))
570 hr
= m_site
->GetWindow(&hwndParent
);
571 if (FAILED_UNEXPECTEDLY(hr
))
574 hr
= m_SFToolbar
->CreateToolbar(hwndParent
, m_dwFlags
);
575 if (FAILED_UNEXPECTEDLY(hr
))
578 hr
= m_SFToolbar
->FillToolbar();
584 HRESULT STDMETHODCALLTYPE
CMenuBand::GetShellFolder(DWORD
*pdwFlags
, LPITEMIDLIST
*ppidl
, REFIID riid
, void **ppv
)
587 return m_SFToolbar
->GetShellFolder(pdwFlags
, ppidl
, riid
, ppv
);
591 HRESULT STDMETHODCALLTYPE
CMenuBand::InvalidateItem(LPSMDATA psmd
, DWORD dwFlags
)
597 HRESULT STDMETHODCALLTYPE
CMenuBand::GetState(LPSMDATA psmd
)
603 HRESULT STDMETHODCALLTYPE
CMenuBand::SetMenuToolbar(IUnknown
*punk
, DWORD dwFlags
)
609 HRESULT STDMETHODCALLTYPE
CMenuBand::OnWinEvent(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*theResult
)
613 if (m_staticToolbar
&& m_staticToolbar
->IsWindowOwner(hWnd
) == S_OK
)
615 return m_staticToolbar
->OnWinEvent(hWnd
, uMsg
, wParam
, lParam
, theResult
);
618 if (m_SFToolbar
&& m_SFToolbar
->IsWindowOwner(hWnd
) == S_OK
)
620 return m_SFToolbar
->OnWinEvent(hWnd
, uMsg
, wParam
, lParam
, theResult
);
626 HRESULT STDMETHODCALLTYPE
CMenuBand::IsWindowOwner(HWND hWnd
)
628 if (m_staticToolbar
&& m_staticToolbar
->IsWindowOwner(hWnd
) == S_OK
)
631 if (m_SFToolbar
&& m_SFToolbar
->IsWindowOwner(hWnd
) == S_OK
)
637 HRESULT
CMenuBand::_CallCBWithItemId(UINT id
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
639 return _CallCB(uMsg
, wParam
, lParam
, id
);
642 HRESULT
CMenuBand::_CallCBWithItemPidl(LPITEMIDLIST pidl
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
644 return _CallCB(uMsg
, wParam
, lParam
, 0, pidl
);
647 HRESULT
CMenuBand::_CallCB(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, UINT id
, LPITEMIDLIST pidl
)
655 SMDATA smData
= { 0 };
656 smData
.punk
= static_cast<IShellMenu2
*>(this);
658 smData
.uIdParent
= m_uId
;
659 smData
.uIdAncestor
= m_uIdAncestor
;
661 smData
.pidlItem
= pidl
;
664 smData
.hmenu
= m_hmenu
;
666 smData
.pvUserData
= NULL
;
668 m_SFToolbar
->GetShellFolder(NULL
, &smData
.pidlFolder
, IID_PPV_ARG(IShellFolder
, &smData
.psf
));
669 HRESULT hr
= m_psmc
->CallbackSM(&smData
, uMsg
, wParam
, lParam
);
670 ILFree(smData
.pidlFolder
);
672 smData
.psf
->Release();
676 HRESULT
CMenuBand::_TrackSubMenuUsingTrackPopupMenu(HMENU popup
, INT x
, INT y
, RECT
& rcExclude
)
678 TPMPARAMS params
= { sizeof(TPMPARAMS
), rcExclude
};
680 UINT flags
= TPM_VERPOSANIMATION
| TPM_VERTICAL
| TPM_LEFTALIGN
;
682 m_trackingPopup
= TRUE
;
683 m_focusManager
->PushTrackedPopup(this, popup
);
686 ::TrackPopupMenuEx(popup
, flags
, x
, y
, m_menuOwner
, ¶ms
);
690 ::TrackPopupMenuEx(popup
, flags
, x
, y
, m_topLevelWindow
, ¶ms
);
692 m_trackingPopup
= FALSE
;
693 m_focusManager
->PopTrackedPopup(this, popup
);
698 HRESULT
CMenuBand::_GetTopLevelWindow(HWND
*topLevel
)
700 *topLevel
= m_topLevelWindow
;
704 HRESULT
CMenuBand::_OnHotItemChanged(CMenuToolbarBase
* tb
, INT id
)
706 if (m_trackingPopup
&& id
== -1)
712 if (m_staticToolbar
) m_staticToolbar
->OnHotItemChanged(tb
, id
);
713 if (m_SFToolbar
) m_SFToolbar
->OnHotItemChanged(tb
, id
);
717 HRESULT
CMenuBand::_MenuItemHotTrack(DWORD changeType
)
721 if (!(m_dwFlags
& SMINIT_VERTICAL
))
723 if (changeType
== MPOS_SELECTRIGHT
)
725 SendMessageW(m_menuOwner
, WM_CANCELMODE
, 0, 0);
726 if (m_SFToolbar
&& (m_hotBar
== m_SFToolbar
|| m_hotBar
== NULL
))
728 DbgPrint("SF Toolbars in Horizontal menus is not implemented.\n");
731 else if (m_staticToolbar
&& m_hotBar
== m_staticToolbar
)
733 hr
= m_staticToolbar
->ChangeHotItem(VK_DOWN
);
737 return m_SFToolbar
->ChangeHotItem(VK_HOME
);
739 return m_staticToolbar
->ChangeHotItem(VK_HOME
);
744 else if (changeType
== MPOS_SELECTLEFT
)
746 SendMessageW(m_menuOwner
, WM_CANCELMODE
, 0, 0);
747 if (m_staticToolbar
&& (m_hotBar
== m_staticToolbar
|| m_hotBar
== NULL
))
749 hr
= m_staticToolbar
->ChangeHotItem(VK_UP
);
753 return m_SFToolbar
->ChangeHotItem(VK_END
);
755 return m_staticToolbar
->ChangeHotItem(VK_END
);
759 else if (m_SFToolbar
&& m_hotBar
== m_SFToolbar
)
761 DbgPrint("SF Toolbars in Horizontal menus is not implemented.\n");
766 else if (changeType
== VK_DOWN
)
768 if (m_SFToolbar
&& (m_hotBar
== m_SFToolbar
|| m_hotBar
== NULL
))
770 hr
= m_SFToolbar
->ChangeHotItem(VK_DOWN
);
774 return m_staticToolbar
->ChangeHotItem(VK_HOME
);
776 return m_SFToolbar
->ChangeHotItem(VK_HOME
);
780 else if (m_staticToolbar
&& m_hotBar
== m_staticToolbar
)
782 hr
= m_staticToolbar
->ChangeHotItem(VK_DOWN
);
786 return m_SFToolbar
->ChangeHotItem(VK_HOME
);
788 return m_staticToolbar
->ChangeHotItem(VK_HOME
);
793 else if (changeType
== VK_UP
)
795 if (m_staticToolbar
&& (m_hotBar
== m_staticToolbar
|| m_hotBar
== NULL
))
797 hr
= m_staticToolbar
->ChangeHotItem(VK_UP
);
801 return m_SFToolbar
->ChangeHotItem(VK_END
);
803 return m_staticToolbar
->ChangeHotItem(VK_END
);
807 else if (m_SFToolbar
&& m_hotBar
== m_SFToolbar
)
809 hr
= m_SFToolbar
->ChangeHotItem(VK_UP
);
813 return m_staticToolbar
->ChangeHotItem(VK_END
);
815 return m_SFToolbar
->ChangeHotItem(VK_END
);
820 else if (changeType
== MPOS_SELECTLEFT
)
823 m_subMenuChild
->OnSelect(MPOS_CANCELLEVEL
);
824 if (!m_subMenuParent
)
826 return m_subMenuParent
->OnSelect(MPOS_CANCELLEVEL
);
828 else if (changeType
== MPOS_SELECTRIGHT
)
830 if (m_hotBar
&& m_hotItem
>= 0)
832 if (m_hotBar
->HasSubMenu(m_hotItem
)==S_OK
)
834 m_hotBar
->PopupItem(m_hotItem
);
838 if (!m_subMenuParent
)
840 return m_subMenuParent
->OnSelect(changeType
);
844 if (!m_subMenuParent
)
846 return m_subMenuParent
->OnSelect(changeType
);
851 HRESULT
CMenuBand::_OnPopupSubMenu(IMenuPopup
* popup
, POINTL
* pAt
, RECTL
* pExclude
, CMenuToolbarBase
* toolbar
, INT item
)
855 HRESULT hr
= m_subMenuChild
->OnSelect(MPOS_CANCELLEVEL
);
856 if (FAILED_UNEXPECTEDLY(hr
))
859 if (m_staticToolbar
) m_staticToolbar
->OnPopupItemChanged(toolbar
, item
);
860 if (m_SFToolbar
) m_SFToolbar
->OnPopupItemChanged(toolbar
, item
);
861 m_trackingPopup
= popup
!= NULL
;
865 IUnknown_SetSite(popup
, m_subMenuParent
);
867 IUnknown_SetSite(popup
, m_site
);
869 popup
->Popup(pAt
, pExclude
, MPPF_RIGHT
);
874 HRESULT
CMenuBand::_DisableMouseTrack(BOOL bDisable
)
877 m_staticToolbar
->DisableMouseTrack(bDisable
);
879 m_SFToolbar
->DisableMouseTrack(bDisable
);
883 HRESULT STDMETHODCALLTYPE
CMenuBand::GetSubMenu(THIS
)
889 HRESULT STDMETHODCALLTYPE
CMenuBand::SetToolbar(THIS
)
895 HRESULT STDMETHODCALLTYPE
CMenuBand::SetMinWidth(THIS
)
901 HRESULT STDMETHODCALLTYPE
CMenuBand::SetNoBorder(THIS
)
907 HRESULT STDMETHODCALLTYPE
CMenuBand::SetTheme(THIS
)
913 HRESULT STDMETHODCALLTYPE
CMenuBand::GetTop(THIS
)
919 HRESULT STDMETHODCALLTYPE
CMenuBand::GetBottom(THIS
)
925 HRESULT STDMETHODCALLTYPE
CMenuBand::GetTracked(THIS
)
931 HRESULT STDMETHODCALLTYPE
CMenuBand::GetParentSite(THIS
)
937 HRESULT STDMETHODCALLTYPE
CMenuBand::GetState(THIS
)
943 HRESULT STDMETHODCALLTYPE
CMenuBand::DoDefaultAction(THIS
)
949 HRESULT STDMETHODCALLTYPE
CMenuBand::IsEmpty(THIS
)
955 HRESULT STDMETHODCALLTYPE
CMenuBand::HasFocusIO()
961 HRESULT STDMETHODCALLTYPE
CMenuBand::TranslateAcceleratorIO(LPMSG lpMsg
)
967 HRESULT STDMETHODCALLTYPE
CMenuBand::IsDirty()
973 HRESULT STDMETHODCALLTYPE
CMenuBand::Load(IStream
*pStm
)
979 HRESULT STDMETHODCALLTYPE
CMenuBand::Save(IStream
*pStm
, BOOL fClearDirty
)
985 HRESULT STDMETHODCALLTYPE
CMenuBand::GetSizeMax(ULARGE_INTEGER
*pcbSize
)
991 HRESULT STDMETHODCALLTYPE
CMenuBand::GetClassID(CLSID
*pClassID
)
997 HRESULT STDMETHODCALLTYPE
CMenuBand::QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[], OLECMDTEXT
*pCmdText
)