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
);
32 HRESULT
CMenuBand_Constructor(REFIID riid
, LPVOID
*ppv
)
36 CMenuBand
* site
= new CComObject
<CMenuBand
>();
41 HRESULT hr
= site
->QueryInterface(riid
, ppv
);
49 CMenuBand::CMenuBand() :
50 m_staticToolbar(NULL
),
60 m_focusManager
= CMenuFocusManager::AcquireManager();
62 m_marlett
= CreateFont(
63 0, 0, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET
,
64 OUT_DEFAULT_PRECIS
, CLIP_DEFAULT_PRECIS
,
65 DEFAULT_QUALITY
, FF_DONTCARE
, L
"Marlett");
68 CMenuBand::~CMenuBand()
70 CMenuFocusManager::ReleaseManager(m_focusManager
);
73 delete m_staticToolbar
;
78 DeleteObject(m_marlett
);
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 if (m_staticToolbar
== NULL
)
131 m_staticToolbar
= new CMenuStaticToolbar(this);
136 HRESULT hr
= m_staticToolbar
->SetMenu(hmenu
, hwnd
, dwFlags
);
144 hr
= m_site
->GetWindow(&hwndParent
);
148 hr
= m_staticToolbar
->CreateToolbar(hwndParent
, m_dwFlags
);
152 hr
= m_staticToolbar
->FillToolbar();
158 HRESULT STDMETHODCALLTYPE
CMenuBand::GetMenu(
163 if (m_staticToolbar
== NULL
)
166 return m_staticToolbar
->GetMenu(phmenu
, phwnd
, pdwFlags
);
169 HRESULT STDMETHODCALLTYPE
CMenuBand::SetSite(IUnknown
*pUnkSite
)
176 if (pUnkSite
== NULL
)
180 hr
= pUnkSite
->QueryInterface(IID_PPV_ARG(IOleWindow
, &m_site
));
184 hr
= m_site
->GetWindow(&hwndParent
);
188 if (!::IsWindow(hwndParent
))
191 if (m_staticToolbar
!= NULL
)
193 hr
= m_staticToolbar
->CreateToolbar(hwndParent
, m_dwFlags
);
197 hr
= m_staticToolbar
->FillToolbar();
202 if (m_SFToolbar
!= NULL
)
204 hr
= m_SFToolbar
->CreateToolbar(hwndParent
, m_dwFlags
);
208 hr
= m_SFToolbar
->FillToolbar();
213 hr
= IUnknown_QueryService(m_site
, SID_SMenuPopup
, IID_PPV_ARG(IMenuPopup
, &m_subMenuParent
));
217 CComPtr
<IOleWindow
> pTopLevelWindow
;
218 hr
= IUnknown_QueryService(m_site
, SID_STopLevelBrowser
, IID_PPV_ARG(IOleWindow
, &pTopLevelWindow
));
222 return pTopLevelWindow
->GetWindow(&m_topLevelWindow
);
225 HRESULT STDMETHODCALLTYPE
CMenuBand::GetSite(REFIID riid
, PVOID
*ppvSite
)
230 return m_site
->QueryInterface(riid
, ppvSite
);
233 HRESULT STDMETHODCALLTYPE
CMenuBand::GetWindow(
236 if (m_SFToolbar
!= NULL
)
237 return m_SFToolbar
->GetWindow(phwnd
);
239 if (m_staticToolbar
!= NULL
)
240 return m_staticToolbar
->GetWindow(phwnd
);
245 HRESULT STDMETHODCALLTYPE
CMenuBand::OnPosRectChangeDB(RECT
*prc
)
247 SIZE sizeStatic
= { 0 };
248 SIZE sizeShlFld
= { 0 };
251 if (m_staticToolbar
!= NULL
)
252 hr
= m_staticToolbar
->GetIdealSize(sizeStatic
);
256 if (m_SFToolbar
!= NULL
)
257 hr
= m_SFToolbar
->GetIdealSize(sizeShlFld
);
261 if (m_staticToolbar
== NULL
&& m_SFToolbar
== NULL
)
264 int sy
= min(prc
->bottom
- prc
->top
, sizeStatic
.cy
+ sizeShlFld
.cy
);
266 int syStatic
= sizeStatic
.cy
;
267 int syShlFld
= sy
- syStatic
;
271 m_SFToolbar
->SetPosSize(
274 prc
->right
- prc
->left
,
279 m_staticToolbar
->SetPosSize(
282 prc
->right
- prc
->left
,
288 HRESULT STDMETHODCALLTYPE
CMenuBand::GetBandInfo(
293 SIZE sizeStatic
= { 0 };
294 SIZE sizeShlFld
= { 0 };
298 if (m_staticToolbar
!= NULL
)
299 hr
= m_staticToolbar
->GetIdealSize(sizeStatic
);
303 if (m_SFToolbar
!= NULL
)
304 hr
= m_SFToolbar
->GetIdealSize(sizeShlFld
);
308 if (m_staticToolbar
== NULL
&& m_SFToolbar
== NULL
)
311 pdbi
->ptMaxSize
.x
= max(sizeStatic
.cx
, sizeShlFld
.cx
) + 20;
312 pdbi
->ptMaxSize
.y
= sizeStatic
.cy
+ sizeShlFld
.cy
;
317 HRESULT STDMETHODCALLTYPE
CMenuBand::ShowDW(BOOL fShow
)
321 if (m_staticToolbar
!= NULL
)
322 hr
= m_staticToolbar
->ShowWindow(fShow
);
325 if (m_SFToolbar
!= NULL
)
326 hr
= m_SFToolbar
->ShowWindow(fShow
);
332 hr
= _CallCB(SMC_INITMENU
, 0, 0);
338 hr
= m_focusManager
->PushMenu(this);
340 hr
= m_focusManager
->PopMenu(this);
345 HRESULT STDMETHODCALLTYPE
CMenuBand::CloseDW(DWORD dwReserved
)
349 if (m_staticToolbar
!= NULL
)
350 return m_staticToolbar
->Close();
352 if (m_SFToolbar
!= NULL
)
353 return m_SFToolbar
->Close();
357 HRESULT STDMETHODCALLTYPE
CMenuBand::ResizeBorderDW(LPCRECT prcBorder
, IUnknown
*punkToolbarSite
, BOOL fReserved
)
363 HRESULT STDMETHODCALLTYPE
CMenuBand::ContextSensitiveHelp(BOOL fEnterMode
)
369 HRESULT STDMETHODCALLTYPE
CMenuBand::UIActivateIO(BOOL fActivate
, LPMSG lpMsg
)
373 hr
= m_subMenuParent
->SetSubMenu(this, fActivate
);
379 CComPtr
<IOleWindow
> pTopLevelWindow
;
380 hr
= IUnknown_QueryService(m_site
, SID_SMenuPopup
, IID_PPV_ARG(IOleWindow
, &pTopLevelWindow
));
384 hr
= pTopLevelWindow
->GetWindow(&m_topLevelWindow
);
390 m_topLevelWindow
= NULL
;
396 HRESULT STDMETHODCALLTYPE
CMenuBand::Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
)
401 if (IsEqualGUID(*pguidCmdGroup
, CLSID_MenuBand
))
403 if (nCmdID
== 16) // set (big) icon size
405 this->m_useBigIcons
= nCmdexecopt
== 2;
408 else if (nCmdID
== 19) // popup-related
418 HRESULT STDMETHODCALLTYPE
CMenuBand::QueryService(REFGUID guidService
, REFIID riid
, void **ppvObject
)
420 if (IsEqualIID(guidService
, SID_SMenuBandChild
) ||
421 IsEqualIID(guidService
, SID_SMenuBandBottom
) ||
422 IsEqualIID(guidService
, SID_SMenuBandBottomSelected
))
423 return this->QueryInterface(riid
, ppvObject
);
424 WARN("Unknown service requested %s\n", wine_dbgstr_guid(&guidService
));
425 return E_NOINTERFACE
;
428 HRESULT STDMETHODCALLTYPE
CMenuBand::Popup(POINTL
*ppt
, RECTL
*prcExclude
, MP_POPUPFLAGS dwFlags
)
434 HRESULT STDMETHODCALLTYPE
CMenuBand::OnSelect(DWORD dwSelectType
)
436 switch (dwSelectType
)
438 case MPOS_CHILDTRACKING
:
439 // TODO: Cancel timers?
440 return m_subMenuParent
->OnSelect(dwSelectType
);
441 case MPOS_SELECTLEFT
:
443 m_subMenuChild
->OnSelect(MPOS_CANCELLEVEL
);
444 return m_subMenuParent
->OnSelect(dwSelectType
);
445 case MPOS_SELECTRIGHT
:
446 return m_subMenuParent
->OnSelect(dwSelectType
);
448 case MPOS_FULLCANCEL
:
450 m_subMenuChild
->OnSelect(dwSelectType
);
451 return m_subMenuParent
->OnSelect(dwSelectType
);
452 case MPOS_CANCELLEVEL
:
454 m_subMenuChild
->OnSelect(dwSelectType
);
460 HRESULT STDMETHODCALLTYPE
CMenuBand::SetSubMenu(IMenuPopup
*pmp
, BOOL fSet
)
466 HRESULT STDMETHODCALLTYPE
CMenuBand::SetClient(IUnknown
*punkClient
)
472 HRESULT STDMETHODCALLTYPE
CMenuBand::GetClient(IUnknown
**ppunkClient
)
474 // HACK, so I can test for a submenu in the DeskBar
479 *ppunkClient
= m_subMenuChild
;
486 HRESULT STDMETHODCALLTYPE
CMenuBand::IsMenuMessage(MSG
*pmsg
)
494 HRESULT STDMETHODCALLTYPE
CMenuBand::TranslateMenuMessage(MSG
*pmsg
, LRESULT
*plRet
)
500 HRESULT STDMETHODCALLTYPE
CMenuBand::SetShellFolder(IShellFolder
*psf
, LPCITEMIDLIST pidlFolder
, HKEY hKey
, DWORD dwFlags
)
502 if (m_SFToolbar
== NULL
)
504 m_SFToolbar
= new CMenuSFToolbar(this);
507 HRESULT hr
= m_SFToolbar
->SetShellFolder(psf
, pidlFolder
, hKey
, dwFlags
);
515 hr
= m_site
->GetWindow(&hwndParent
);
519 hr
= m_SFToolbar
->CreateToolbar(hwndParent
, m_dwFlags
);
523 hr
= m_SFToolbar
->FillToolbar();
529 HRESULT STDMETHODCALLTYPE
CMenuBand::GetShellFolder(DWORD
*pdwFlags
, LPITEMIDLIST
*ppidl
, REFIID riid
, void **ppv
)
532 return m_SFToolbar
->GetShellFolder(pdwFlags
, ppidl
, riid
, ppv
);
536 HRESULT STDMETHODCALLTYPE
CMenuBand::InvalidateItem(LPSMDATA psmd
, DWORD dwFlags
)
542 HRESULT STDMETHODCALLTYPE
CMenuBand::GetState(LPSMDATA psmd
)
548 HRESULT STDMETHODCALLTYPE
CMenuBand::SetMenuToolbar(IUnknown
*punk
, DWORD dwFlags
)
554 HRESULT STDMETHODCALLTYPE
CMenuBand::OnWinEvent(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*theResult
)
561 NMTBCUSTOMDRAW
* cdraw
;
566 BOOL useFlatMenus
= FALSE
;
568 COLORREF clrTextHighlight
;
576 if (m_staticToolbar
&& m_staticToolbar
->IsWindowOwner(hWnd
) == S_OK
)
578 return m_staticToolbar
->OnCommand(wParam
, lParam
, theResult
);
581 if (m_SFToolbar
&& m_SFToolbar
->IsWindowOwner(hWnd
) == S_OK
)
583 return m_SFToolbar
->OnCommand(wParam
, lParam
, theResult
);
589 hdr
= reinterpret_cast<LPNMHDR
>(lParam
);
593 csize
= reinterpret_cast<LPNMPGCALCSIZE
>(hdr
);
595 if (m_staticToolbar
&& m_staticToolbar
->IsWindowOwner(hWnd
) == S_OK
)
598 m_staticToolbar
->GetIdealSize(tbs
);
599 if (csize
->dwFlag
== PGF_CALCHEIGHT
)
601 csize
->iHeight
= tbs
.cy
;
603 else if (csize
->dwFlag
== PGF_CALCWIDTH
)
605 csize
->iHeight
= tbs
.cx
;
609 if (m_SFToolbar
&& m_SFToolbar
->IsWindowOwner(hWnd
) == S_OK
)
612 m_SFToolbar
->GetIdealSize(tbs
);
613 if (csize
->dwFlag
== PGF_CALCHEIGHT
)
615 csize
->iHeight
= tbs
.cy
;
617 else if (csize
->dwFlag
== PGF_CALCWIDTH
)
619 csize
->iHeight
= tbs
.cx
;
626 if (m_staticToolbar
&& m_staticToolbar
->IsWindowOwner(hWnd
) == S_OK
)
628 WPARAM wp
= reinterpret_cast<LPNMTOOLBAR
>(hdr
)->iItem
;
629 return m_staticToolbar
->OnCommand(wp
, 0, theResult
);
632 if (m_SFToolbar
&& m_SFToolbar
->IsWindowOwner(hWnd
) == S_OK
)
634 WPARAM wp
= reinterpret_cast<LPNMTOOLBAR
>(hdr
)->iItem
;
635 return m_SFToolbar
->OnCommand(wp
, 0, theResult
);
640 case TBN_HOTITEMCHANGE
:
641 hot
= reinterpret_cast<LPNMTBHOTITEM
>(hdr
);
643 if (m_staticToolbar
&& m_staticToolbar
->IsWindowOwner(hWnd
) == S_OK
)
645 return m_staticToolbar
->OnHotItemChange(hot
);
648 if (m_SFToolbar
&& m_SFToolbar
->IsWindowOwner(hWnd
) == S_OK
)
650 return m_SFToolbar
->OnHotItemChange(hot
);
656 rclick
= reinterpret_cast<LPNMMOUSE
>(hdr
);
658 if (m_staticToolbar
&& m_staticToolbar
->IsWindowOwner(hWnd
) == S_OK
)
660 return m_staticToolbar
->OnContextMenu(rclick
);
663 if (m_SFToolbar
&& m_SFToolbar
->IsWindowOwner(hWnd
) == S_OK
)
665 return m_SFToolbar
->OnContextMenu(rclick
);
671 cdraw
= reinterpret_cast<LPNMTBCUSTOMDRAW
>(hdr
);
672 switch (cdraw
->nmcd
.dwDrawStage
)
675 *theResult
= CDRF_NOTIFYITEMDRAW
;
678 case CDDS_ITEMPREPAINT
:
680 SystemParametersInfo(SPI_GETFLATMENU
, 0, &useFlatMenus
, 0);
682 clrText
= GetSysColor(COLOR_MENUTEXT
);
683 clrTextHighlight
= GetSysColor(COLOR_HIGHLIGHTTEXT
);
685 bgBrush
= GetSysColorBrush(COLOR_MENU
);
686 hotBrush
= GetSysColorBrush(useFlatMenus
? COLOR_MENUHILIGHT
: COLOR_HIGHLIGHT
);
689 hdc
= cdraw
->nmcd
.hdc
;
691 if (((INT
)cdraw
->nmcd
.dwItemSpec
== m_hotItem
||
692 (m_hotItem
< 0 && (INT
)cdraw
->nmcd
.dwItemSpec
== m_popupItem
)))
694 cdraw
->nmcd
.uItemState
= CDIS_HOT
;
697 switch (cdraw
->nmcd
.uItemState
)
701 FillRect(hdc
, &rc
, hotBrush
);
702 SetTextColor(hdc
, clrTextHighlight
);
703 cdraw
->clrText
= clrTextHighlight
;
706 FillRect(hdc
, &rc
, bgBrush
);
707 SetTextColor(hdc
, clrText
);
708 cdraw
->clrText
= clrText
;
712 *theResult
= CDRF_NOTIFYPOSTPAINT
| TBCDRF_NOBACKGROUND
| TBCDRF_NOEDGES
| TBCDRF_NOOFFSET
| TBCDRF_NOMARK
| 0x00800000; // FIXME: the last bit is Vista+, for debugging only
715 case CDDS_ITEMPOSTPAINT
:
716 btni
.cbSize
= sizeof(btni
);
717 btni
.dwMask
= TBIF_STYLE
;
718 SendMessage(hWnd
, TB_GETBUTTONINFO
, cdraw
->nmcd
.dwItemSpec
, reinterpret_cast<LPARAM
>(&btni
));
719 if (btni
.fsStyle
& BTNS_DROPDOWN
)
721 SelectObject(cdraw
->nmcd
.hdc
, m_marlett
);
722 WCHAR text
[] = L
"8";
723 SetBkMode(cdraw
->nmcd
.hdc
, TRANSPARENT
);
724 DrawTextEx(cdraw
->nmcd
.hdc
, text
, 1, &cdraw
->nmcd
.rc
, DT_NOCLIP
| DT_VCENTER
| DT_RIGHT
| DT_SINGLELINE
, NULL
);
737 HRESULT STDMETHODCALLTYPE
CMenuBand::IsWindowOwner(HWND hWnd
)
739 if (m_staticToolbar
&& m_staticToolbar
->IsWindowOwner(hWnd
) == S_OK
)
742 if (m_SFToolbar
&& m_SFToolbar
->IsWindowOwner(hWnd
) == S_OK
)
748 HRESULT
CMenuBand::_CallCBWithItemId(UINT id
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
750 return _CallCB(uMsg
, wParam
, lParam
, id
);
753 HRESULT
CMenuBand::_CallCBWithItemPidl(LPITEMIDLIST pidl
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
755 return _CallCB(uMsg
, wParam
, lParam
, 0, pidl
);
758 HRESULT
CMenuBand::_CallCB(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, UINT id
, LPITEMIDLIST pidl
)
766 SMDATA smData
= { 0 };
767 smData
.punk
= static_cast<IShellMenu2
*>(this);
769 smData
.uIdParent
= m_uId
;
770 smData
.uIdAncestor
= m_uIdAncestor
;
772 smData
.pidlItem
= pidl
;
775 smData
.hmenu
= m_hmenu
;
777 smData
.pvUserData
= NULL
;
779 m_SFToolbar
->GetShellFolder(NULL
, &smData
.pidlFolder
, IID_PPV_ARG(IShellFolder
, &smData
.psf
));
780 HRESULT hr
= m_psmc
->CallbackSM(&smData
, uMsg
, wParam
, lParam
);
781 ILFree(smData
.pidlFolder
);
783 smData
.psf
->Release();
787 HRESULT
CMenuBand::_TrackSubMenuUsingTrackPopupMenu(HMENU popup
, INT x
, INT y
)
789 ::TrackPopupMenu(popup
, 0, x
, y
, 0, m_menuOwner
, NULL
);
793 HRESULT
CMenuBand::_GetTopLevelWindow(HWND
*topLevel
)
795 *topLevel
= m_topLevelWindow
;
799 HRESULT
CMenuBand::_OnHotItemChanged(CMenuToolbarBase
* tb
, INT id
)
801 if (m_hotBar
&& m_hotBar
!= tb
)
802 m_hotBar
->ChangeHotItem(-1);
805 if (m_staticToolbar
) m_staticToolbar
->InvalidateDraw();
806 if (m_SFToolbar
) m_SFToolbar
->InvalidateDraw();
810 HRESULT
CMenuBand::_MenuItemHotTrack(DWORD changeType
)
814 if (changeType
== VK_DOWN
)
816 if (m_SFToolbar
&& (m_hotBar
== m_SFToolbar
|| m_hotBar
== NULL
))
818 hr
= m_SFToolbar
->ChangeHotItem(VK_DOWN
);
822 return m_staticToolbar
->ChangeHotItem(VK_HOME
);
824 return m_SFToolbar
->ChangeHotItem(VK_HOME
);
828 else if (m_staticToolbar
&& m_hotBar
== m_staticToolbar
)
830 hr
= m_staticToolbar
->ChangeHotItem(VK_DOWN
);
834 return m_SFToolbar
->ChangeHotItem(VK_HOME
);
836 return m_staticToolbar
->ChangeHotItem(VK_HOME
);
841 else if (changeType
== VK_UP
)
843 if (m_staticToolbar
&& (m_hotBar
== m_staticToolbar
|| m_hotBar
== NULL
))
845 hr
= m_staticToolbar
->ChangeHotItem(VK_UP
);
849 return m_SFToolbar
->ChangeHotItem(VK_END
);
851 return m_staticToolbar
->ChangeHotItem(VK_END
);
855 else if (m_SFToolbar
&& m_hotBar
== m_SFToolbar
)
857 hr
= m_SFToolbar
->ChangeHotItem(VK_UP
);
861 return m_staticToolbar
->ChangeHotItem(VK_END
);
863 return m_SFToolbar
->ChangeHotItem(VK_END
);
868 else if (changeType
== MPOS_SELECTLEFT
)
871 m_subMenuChild
->OnSelect(MPOS_CANCELLEVEL
);
872 return m_subMenuParent
->OnSelect(MPOS_CANCELLEVEL
);
874 else if (changeType
== MPOS_SELECTRIGHT
)
876 if (m_hotBar
&& m_hotItem
>= 0)
878 // TODO: popup the current child if it has subitems, otherwise spread up.
879 if (m_hotBar
->HasSubMenu(m_hotItem
)==S_OK
)
882 m_hotBar
->PopupItem(m_hotItem
);
886 return m_subMenuParent
->OnSelect(changeType
);
890 return m_subMenuParent
->OnSelect(changeType
);
895 HRESULT
CMenuBand::_OnPopupSubMenu(INT popupItem
, IMenuPopup
* popup
, POINTL
* pAt
, RECTL
* pExclude
)
899 HRESULT hr
= m_subMenuChild
->OnSelect(MPOS_CANCELLEVEL
);
903 m_popupItem
= popupItem
;
904 m_subMenuChild
= popup
;
907 IUnknown_SetSite(popup
, m_subMenuParent
);
908 popup
->Popup(pAt
, pExclude
, MPPF_RIGHT
);
910 if (m_staticToolbar
) m_staticToolbar
->InvalidateDraw();
911 if (m_SFToolbar
) m_SFToolbar
->InvalidateDraw();
915 HRESULT STDMETHODCALLTYPE
CMenuBand::GetSubMenu(THIS
)
921 HRESULT STDMETHODCALLTYPE
CMenuBand::SetToolbar(THIS
)
927 HRESULT STDMETHODCALLTYPE
CMenuBand::SetMinWidth(THIS
)
933 HRESULT STDMETHODCALLTYPE
CMenuBand::SetNoBorder(THIS
)
939 HRESULT STDMETHODCALLTYPE
CMenuBand::SetTheme(THIS
)
945 HRESULT STDMETHODCALLTYPE
CMenuBand::GetTop(THIS
)
951 HRESULT STDMETHODCALLTYPE
CMenuBand::GetBottom(THIS
)
957 HRESULT STDMETHODCALLTYPE
CMenuBand::GetTracked(THIS
)
963 HRESULT STDMETHODCALLTYPE
CMenuBand::GetParentSite(THIS
)
969 HRESULT STDMETHODCALLTYPE
CMenuBand::GetState(THIS
)
975 HRESULT STDMETHODCALLTYPE
CMenuBand::DoDefaultAction(THIS
)
981 HRESULT STDMETHODCALLTYPE
CMenuBand::IsEmpty(THIS
)
987 HRESULT STDMETHODCALLTYPE
CMenuBand::HasFocusIO()
993 HRESULT STDMETHODCALLTYPE
CMenuBand::TranslateAcceleratorIO(LPMSG lpMsg
)
999 HRESULT STDMETHODCALLTYPE
CMenuBand::IsDirty()
1005 HRESULT STDMETHODCALLTYPE
CMenuBand::Load(IStream
*pStm
)
1011 HRESULT STDMETHODCALLTYPE
CMenuBand::Save(IStream
*pStm
, BOOL fClearDirty
)
1017 HRESULT STDMETHODCALLTYPE
CMenuBand::GetSizeMax(ULARGE_INTEGER
*pcbSize
)
1023 HRESULT STDMETHODCALLTYPE
CMenuBand::GetClassID(CLSID
*pClassID
)
1029 HRESULT STDMETHODCALLTYPE
CMenuBand::QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[], OLECMDTEXT
*pCmdText
)