5 class CMenuStaticToolbar
8 CMenuStaticToolbar(CMenuBand
*menuBand
);
10 HRESULT
CreateToolbar(HWND hwndParent
, DWORD dwFlags
);
11 HRESULT
FillToolbar();
12 HRESULT
GetWindow(HWND
*phwnd
);
13 HRESULT
SetMenu(HMENU hmenu
, HWND hwnd
, DWORD dwFlags
);
14 HRESULT
GetMenu(HMENU
*phmenu
, HWND
*phwnd
, DWORD
*pdwFlags
);
15 HRESULT
ShowWindow(BOOL fShow
);
20 static const UINT WM_USER_SHOWPOPUPMENU
= WM_USER
+ 1;
22 CMenuBand
*m_menuBand
;
30 public CComCoClass
<CMenuBand
, &CLSID_MenuBand
>,
31 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
33 public IObjectWithSite
,
35 public IPersistStream
,
36 public IOleCommandTarget
,
37 public IServiceProvider
,
41 public IWinEventHandler
,
51 CMenuStaticToolbar
*m_staticToolbar
;
53 IShellMenuCallback
*m_psmc
;
59 // *** IDeskBand methods ***
60 virtual HRESULT STDMETHODCALLTYPE
GetBandInfo(DWORD dwBandID
, DWORD dwViewMode
, DESKBANDINFO
*pdbi
);
62 // *** IDockingWindow methods ***
63 virtual HRESULT STDMETHODCALLTYPE
ShowDW(BOOL fShow
);
64 virtual HRESULT STDMETHODCALLTYPE
CloseDW(DWORD dwReserved
);
65 virtual HRESULT STDMETHODCALLTYPE
ResizeBorderDW(LPCRECT prcBorder
, IUnknown
*punkToolbarSite
, BOOL fReserved
);
67 // *** IOleWindow methods ***
68 virtual HRESULT STDMETHODCALLTYPE
GetWindow(HWND
*phwnd
);
69 virtual HRESULT STDMETHODCALLTYPE
ContextSensitiveHelp(BOOL fEnterMode
);
71 // *** IObjectWithSite methods ***
72 virtual HRESULT STDMETHODCALLTYPE
SetSite(IUnknown
*pUnkSite
);
73 virtual HRESULT STDMETHODCALLTYPE
GetSite(REFIID riid
, PVOID
*ppvSite
);
75 // *** IInputObject methods ***
76 virtual HRESULT STDMETHODCALLTYPE
UIActivateIO(BOOL fActivate
, LPMSG lpMsg
);
77 virtual HRESULT STDMETHODCALLTYPE
HasFocusIO();
78 virtual HRESULT STDMETHODCALLTYPE
TranslateAcceleratorIO(LPMSG lpMsg
);
80 // *** IPersistStream methods ***
81 virtual HRESULT STDMETHODCALLTYPE
IsDirty();
82 virtual HRESULT STDMETHODCALLTYPE
Load(IStream
*pStm
);
83 virtual HRESULT STDMETHODCALLTYPE
Save(IStream
*pStm
, BOOL fClearDirty
);
84 virtual HRESULT STDMETHODCALLTYPE
GetSizeMax(ULARGE_INTEGER
*pcbSize
);
86 // *** IPersist methods ***
87 virtual HRESULT STDMETHODCALLTYPE
GetClassID(CLSID
*pClassID
);
89 // *** IOleCommandTarget methods ***
90 virtual HRESULT STDMETHODCALLTYPE
QueryStatus(const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[ ], OLECMDTEXT
*pCmdText
);
91 virtual HRESULT STDMETHODCALLTYPE
Exec(const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
, VARIANT
*pvaIn
, VARIANT
*pvaOut
);
93 // *** IServiceProvider methods ***
94 virtual HRESULT STDMETHODCALLTYPE
QueryService(REFGUID guidService
, REFIID riid
, void **ppvObject
);
96 // *** IMenuPopup methods ***
97 virtual HRESULT STDMETHODCALLTYPE
Popup(POINTL
*ppt
, RECTL
*prcExclude
, MP_POPUPFLAGS dwFlags
);
98 virtual HRESULT STDMETHODCALLTYPE
OnSelect(DWORD dwSelectType
);
99 virtual HRESULT STDMETHODCALLTYPE
SetSubMenu(IMenuPopup
*pmp
, BOOL fSet
);
101 // *** IDeskBar methods ***
102 virtual HRESULT STDMETHODCALLTYPE
SetClient(IUnknown
*punkClient
);
103 virtual HRESULT STDMETHODCALLTYPE
GetClient(IUnknown
**ppunkClient
);
104 virtual HRESULT STDMETHODCALLTYPE
OnPosRectChangeDB(RECT
*prc
);
106 // *** IMenuBand methods ***
107 virtual HRESULT STDMETHODCALLTYPE
IsMenuMessage(MSG
*pmsg
);
108 virtual HRESULT STDMETHODCALLTYPE
TranslateMenuMessage(MSG
*pmsg
, LRESULT
*plRet
);
110 // *** IShellMenu methods ***
111 virtual HRESULT STDMETHODCALLTYPE
Initialize(IShellMenuCallback
*psmc
, UINT uId
, UINT uIdAncestor
,DWORD dwFlags
);
112 virtual HRESULT STDMETHODCALLTYPE
GetMenuInfo(IShellMenuCallback
**ppsmc
, UINT
*puId
, UINT
*puIdAncestor
, DWORD
*pdwFlags
);
113 virtual HRESULT STDMETHODCALLTYPE
SetShellFolder(IShellFolder
*psf
, LPCITEMIDLIST pidlFolder
, HKEY hKey
, DWORD dwFlags
);
114 virtual HRESULT STDMETHODCALLTYPE
GetShellFolder(DWORD
*pdwFlags
, LPITEMIDLIST
*ppidl
, REFIID riid
, void **ppv
);
115 virtual HRESULT STDMETHODCALLTYPE
SetMenu(HMENU hmenu
, HWND hwnd
, DWORD dwFlags
);
116 virtual HRESULT STDMETHODCALLTYPE
GetMenu(HMENU
*phmenu
, HWND
*phwnd
, DWORD
*pdwFlags
);
117 virtual HRESULT STDMETHODCALLTYPE
InvalidateItem(LPSMDATA psmd
, DWORD dwFlags
);
118 virtual HRESULT STDMETHODCALLTYPE
GetState(LPSMDATA psmd
);
119 virtual HRESULT STDMETHODCALLTYPE
SetMenuToolbar(IUnknown
*punk
, DWORD dwFlags
);
121 // *** IWinEventHandler methods ***
122 virtual HRESULT STDMETHODCALLTYPE
OnWinEvent(HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*theResult
);
123 virtual HRESULT STDMETHODCALLTYPE
IsWindowOwner(HWND hWnd
);
125 // *** IShellMenu2 methods ***
126 virtual HRESULT STDMETHODCALLTYPE
GetSubMenu(THIS
);
127 virtual HRESULT STDMETHODCALLTYPE
SetToolbar(THIS
);
128 virtual HRESULT STDMETHODCALLTYPE
SetMinWidth(THIS
);
129 virtual HRESULT STDMETHODCALLTYPE
SetNoBorder(THIS
);
130 virtual HRESULT STDMETHODCALLTYPE
SetTheme(THIS
);
132 // *** IShellMenuAcc methods ***
133 virtual HRESULT STDMETHODCALLTYPE
GetTop(THIS
);
134 virtual HRESULT STDMETHODCALLTYPE
GetBottom(THIS
);
135 virtual HRESULT STDMETHODCALLTYPE
GetTracked(THIS
);
136 virtual HRESULT STDMETHODCALLTYPE
GetParentSite(THIS
);
137 virtual HRESULT STDMETHODCALLTYPE
GetState(THIS
);
138 virtual HRESULT STDMETHODCALLTYPE
DoDefaultAction(THIS
);
139 virtual HRESULT STDMETHODCALLTYPE
IsEmpty(THIS
);
141 DECLARE_REGISTRY_RESOURCEID(IDR_MENUBAND
)
142 DECLARE_NOT_AGGREGATABLE(CMenuBand
)
143 DECLARE_PROTECT_FINAL_CONSTRUCT()
145 BEGIN_COM_MAP(CMenuBand
)
146 COM_INTERFACE_ENTRY_IID(IID_IDeskBar
, IMenuPopup
)
147 COM_INTERFACE_ENTRY_IID(IID_IShellMenu
, IShellMenu
)
148 COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget
, IOleCommandTarget
)
149 COM_INTERFACE_ENTRY_IID(IID_IOleWindow
, IDeskBand
)
150 COM_INTERFACE_ENTRY_IID(IID_IDockingWindow
, IDockingWindow
)
151 COM_INTERFACE_ENTRY_IID(IID_IDeskBand
, IDeskBand
)
152 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite
, IObjectWithSite
)
153 COM_INTERFACE_ENTRY_IID(IID_IInputObject
, IInputObject
)
154 COM_INTERFACE_ENTRY_IID(IID_IPersistStream
, IPersistStream
)
155 COM_INTERFACE_ENTRY_IID(IID_IPersist
, IPersistStream
)
156 COM_INTERFACE_ENTRY_IID(IID_IServiceProvider
, IServiceProvider
)
157 COM_INTERFACE_ENTRY_IID(IID_IMenuPopup
, IMenuPopup
)
158 COM_INTERFACE_ENTRY_IID(IID_IMenuBand
, IMenuBand
)
159 COM_INTERFACE_ENTRY_IID(IID_IShellMenu2
, IShellMenu2
)
160 COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler
, IWinEventHandler
)
161 COM_INTERFACE_ENTRY_IID(IID_IShellMenuAcc
, IShellMenuAcc
)