[shell32]
authorGiannis Adamopoulos <gadamopoulos@reactos.org>
Tue, 23 Jul 2013 10:53:06 +0000 (10:53 +0000)
committerGiannis Adamopoulos <gadamopoulos@reactos.org>
Tue, 23 Jul 2013 10:53:06 +0000 (10:53 +0000)
- Stub CMenuBand class

svn path=/trunk/; revision=59561

reactos/dll/win32/shell32/CMakeLists.txt
reactos/dll/win32/shell32/CMenuBand.cpp [new file with mode: 0644]
reactos/dll/win32/shell32/CMenuBand.h [new file with mode: 0644]
reactos/dll/win32/shell32/precomp.h
reactos/dll/win32/shell32/res/rgs/menuband.rgs [new file with mode: 0644]
reactos/dll/win32/shell32/shell32_main.cpp
reactos/dll/win32/shell32/shresdef.h

index 4a9c4e2..cc6b9bd 100644 (file)
@@ -23,6 +23,7 @@ list(APPEND SOURCE
     classes.cpp
     clipboard.cpp
     control.cpp
+    CMenuBand.cpp
     dataobject.cpp
     dde.cpp
     debughlp.cpp
diff --git a/reactos/dll/win32/shell32/CMenuBand.cpp b/reactos/dll/win32/shell32/CMenuBand.cpp
new file mode 100644 (file)
index 0000000..163aa87
--- /dev/null
@@ -0,0 +1,312 @@
+/*
+ * PROJECT:     shell32
+ * LICENSE:     GPL - See COPYING in the top level directory
+ * FILE:        dll/win32/shell32/CMenuBand.c
+ * PURPOSE:     menu band implementation
+ * PROGRAMMERS: Giannis Adamopoulos (gadamopoulos@reactos.org)
+ */
+
+#include "precomp.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(CMenuBand);
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::ShowDW(BOOL fShow)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::CloseDW(DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetWindow(HWND *phwnd)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::ContextSensitiveHelp(BOOL fEnterMode)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetSite(IUnknown *pUnkSite)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetSite(REFIID riid, PVOID *ppvSite)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::HasFocusIO()
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::TranslateAcceleratorIO(LPMSG lpMsg)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::IsDirty()
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::Load(IStream *pStm)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::Save(IStream *pStm, BOOL fClearDirty)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetSizeMax(ULARGE_INTEGER *pcbSize)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetClassID(CLSID *pClassID)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::Popup(POINTL *ppt,  RECTL *prcExclude, MP_POPUPFLAGS dwFlags)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::OnSelect(DWORD dwSelectType)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetSubMenu(IMenuPopup *pmp, BOOL fSet)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetClient(IUnknown *punkClient)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetClient(IUnknown **ppunkClient)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::OnPosRectChangeDB(RECT *prc)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::IsMenuMessage(MSG *pmsg)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::TranslateMenuMessage(MSG *pmsg, LRESULT *plRet)
+{
+    UNIMPLEMENTED;
+    return S_FALSE;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::Initialize(IShellMenuCallback *psmc, UINT uId, UINT uIdAncestor,DWORD dwFlags)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetMenuInfo(IShellMenuCallback **ppsmc, UINT *puId, UINT *puIdAncestor, DWORD *pdwFlags)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetShellFolder(IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetShellFolder(DWORD *pdwFlags, LPITEMIDLIST *ppidl, REFIID riid, void **ppv)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetMenu(HMENU hmenu, HWND hwnd, DWORD dwFlags)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetMenu(HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::InvalidateItem(LPSMDATA psmd, DWORD dwFlags)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetState(LPSMDATA psmd)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetMenuToolbar(IUnknown *punk, DWORD dwFlags)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::IsWindowOwner(HWND hWnd)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetSubMenu(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetToolbar(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetMinWidth(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetNoBorder(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::SetTheme(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetTop(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetBottom(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetTracked(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetParentSite(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::GetState(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::DoDefaultAction(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE CMenuBand::IsEmpty(THIS)
+{
+    UNIMPLEMENTED;
+    return S_OK;
+}
+
diff --git a/reactos/dll/win32/shell32/CMenuBand.h b/reactos/dll/win32/shell32/CMenuBand.h
new file mode 100644 (file)
index 0000000..11e19cb
--- /dev/null
@@ -0,0 +1,125 @@
+
+class CMenuBand :
+    public CComCoClass<CMenuBand, &CLSID_MenuBand>,
+    public CComObjectRootEx<CComMultiThreadModelNoCS>,
+    public IDeskBand,
+    public IObjectWithSite,
+    public IInputObject,
+    public IPersistStream, 
+    public IOleCommandTarget,
+    public IServiceProvider,
+    public IMenuPopup,
+    public IMenuBand,
+    public IShellMenu2,
+    public IWinEventHandler,
+    public IShellMenuAcc
+{
+public :
+
+    // *** IDeskBand methods ***
+    virtual HRESULT STDMETHODCALLTYPE GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi);
+
+    // *** IDockingWindow methods ***
+    virtual HRESULT STDMETHODCALLTYPE ShowDW(BOOL fShow);
+    virtual HRESULT STDMETHODCALLTYPE CloseDW(DWORD dwReserved);
+    virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved);
+
+    // *** IOleWindow methods ***
+    virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *phwnd);
+    virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
+
+    // *** IObjectWithSite methods ***
+    virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite);
+    virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, PVOID *ppvSite);
+
+    // *** IInputObject methods ***
+    virtual HRESULT STDMETHODCALLTYPE UIActivateIO(BOOL fActivate, LPMSG lpMsg);
+    virtual HRESULT STDMETHODCALLTYPE HasFocusIO();
+    virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(LPMSG lpMsg);
+
+    // *** IPersistStream methods ***
+    virtual HRESULT STDMETHODCALLTYPE IsDirty();
+    virtual HRESULT STDMETHODCALLTYPE Load(IStream *pStm);
+    virtual HRESULT STDMETHODCALLTYPE Save(IStream *pStm, BOOL fClearDirty);
+    virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER *pcbSize);
+
+    // *** IPersist methods ***
+    virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
+
+    // *** IOleCommandTarget methods ***
+    virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT *pCmdText);
+    virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
+
+    // *** IServiceProvider methods ***
+    virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, void **ppvObject);
+
+    // *** IMenuPopup methods ***
+    virtual HRESULT STDMETHODCALLTYPE Popup(POINTL *ppt,  RECTL *prcExclude, MP_POPUPFLAGS dwFlags);
+    virtual HRESULT STDMETHODCALLTYPE OnSelect(DWORD dwSelectType);
+    virtual HRESULT STDMETHODCALLTYPE SetSubMenu(IMenuPopup *pmp, BOOL fSet);
+
+    // *** IDeskBar methods ***
+    virtual HRESULT STDMETHODCALLTYPE SetClient(IUnknown *punkClient);
+    virtual HRESULT STDMETHODCALLTYPE GetClient(IUnknown **ppunkClient);
+    virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB(RECT *prc);
+
+    // *** IMenuBand methods ***
+    virtual HRESULT STDMETHODCALLTYPE IsMenuMessage(MSG *pmsg);
+    virtual HRESULT STDMETHODCALLTYPE TranslateMenuMessage(MSG *pmsg, LRESULT *plRet);
+
+    // *** IShellMenu methods ***
+    virtual HRESULT STDMETHODCALLTYPE Initialize(IShellMenuCallback *psmc, UINT uId, UINT uIdAncestor,DWORD dwFlags);
+    virtual HRESULT STDMETHODCALLTYPE GetMenuInfo(IShellMenuCallback **ppsmc, UINT *puId, UINT *puIdAncestor, DWORD *pdwFlags);
+    virtual HRESULT STDMETHODCALLTYPE SetShellFolder(IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags);
+    virtual HRESULT STDMETHODCALLTYPE GetShellFolder(DWORD *pdwFlags, LPITEMIDLIST *ppidl, REFIID riid, void **ppv);
+    virtual HRESULT STDMETHODCALLTYPE SetMenu(HMENU hmenu, HWND hwnd, DWORD dwFlags);
+    virtual HRESULT STDMETHODCALLTYPE GetMenu(HMENU *phmenu, HWND *phwnd, DWORD *pdwFlags);
+    virtual HRESULT STDMETHODCALLTYPE InvalidateItem(LPSMDATA psmd, DWORD dwFlags);
+    virtual HRESULT STDMETHODCALLTYPE GetState(LPSMDATA psmd);
+    virtual HRESULT STDMETHODCALLTYPE SetMenuToolbar(IUnknown *punk, DWORD dwFlags);
+
+    // *** IWinEventHandler methods ***
+    virtual HRESULT STDMETHODCALLTYPE OnWinEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult);
+    virtual HRESULT STDMETHODCALLTYPE IsWindowOwner(HWND hWnd);
+
+    // *** IShellMenu2 methods ***
+    virtual HRESULT STDMETHODCALLTYPE GetSubMenu(THIS);
+    virtual HRESULT STDMETHODCALLTYPE SetToolbar(THIS);
+    virtual HRESULT STDMETHODCALLTYPE SetMinWidth(THIS);
+    virtual HRESULT STDMETHODCALLTYPE SetNoBorder(THIS);
+    virtual HRESULT STDMETHODCALLTYPE SetTheme(THIS);
+
+    // *** IShellMenuAcc methods ***
+    virtual HRESULT STDMETHODCALLTYPE GetTop(THIS);
+    virtual HRESULT STDMETHODCALLTYPE GetBottom(THIS);
+    virtual HRESULT STDMETHODCALLTYPE GetTracked(THIS);
+    virtual HRESULT STDMETHODCALLTYPE GetParentSite(THIS);
+    virtual HRESULT STDMETHODCALLTYPE GetState(THIS);
+    virtual HRESULT STDMETHODCALLTYPE DoDefaultAction(THIS);
+    virtual HRESULT STDMETHODCALLTYPE IsEmpty(THIS);
+
+DECLARE_REGISTRY_RESOURCEID(IDR_MENUBAND)
+DECLARE_NOT_AGGREGATABLE(CMenuBand)
+DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+BEGIN_COM_MAP(CMenuBand)
+    COM_INTERFACE_ENTRY_IID(IID_IMenuPopup, IMenuPopup)
+    COM_INTERFACE_ENTRY_IID(IID_IMenuBand, IMenuBand)
+    COM_INTERFACE_ENTRY_IID(IID_IShellMenu, IShellMenu)
+    COM_INTERFACE_ENTRY_IID(IID_IOleCommandTarget, IOleCommandTarget)
+    COM_INTERFACE_ENTRY_IID(IID_IOleWindow, IDeskBand)
+    COM_INTERFACE_ENTRY_IID(IID_IDockingWindow, IDockingWindow)
+    COM_INTERFACE_ENTRY_IID(IID_IDeskBar, IDeskBar)
+    COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
+    COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite, IObjectWithSite)
+    COM_INTERFACE_ENTRY_IID(IID_IInputObject, IInputObject)
+    COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStream)
+    COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
+    COM_INTERFACE_ENTRY_IID(IID_IServiceProvider, IServiceProvider)
+    COM_INTERFACE_ENTRY_IID(IID_IMenuBand, IMenuBand)
+    COM_INTERFACE_ENTRY_IID(IID_IShellMenu2, IShellMenu2)
+    COM_INTERFACE_ENTRY_IID(IID_IWinEventHandler, IWinEventHandler)
+    COM_INTERFACE_ENTRY_IID(IID_IShellMenuAcc, IShellMenuAcc)
+END_COM_MAP()
+
+};
\ No newline at end of file
index 59224ca..6361fb7 100644 (file)
@@ -70,6 +70,7 @@
 #include "startmenu.h"
 #include "filedefext.h"
 #include "drvdefext.h"
+#include "CMenuBand.h"
 
 #include <wine/debug.h>
 
diff --git a/reactos/dll/win32/shell32/res/rgs/menuband.rgs b/reactos/dll/win32/shell32/res/rgs/menuband.rgs
new file mode 100644 (file)
index 0000000..6deecd0
--- /dev/null
@@ -0,0 +1,13 @@
+HKCR
+{
+       NoRemove CLSID
+       {
+               ForceRemove {5B4DAE26-B807-11D0-9815-00C04FD91972} = s 'Menu Band'
+               {
+                       InprocServer32 = s '%MODULE%'
+                       {
+                               val ThreadingModel = s 'Apartment'
+                       }
+               }
+       }
+}
index e38cdc1..32ab14e 100644 (file)
@@ -1368,6 +1368,7 @@ BEGIN_OBJECT_MAP(ObjectMap)
     OBJECT_ENTRY(CLSID_NewMenu, CNewMenu)
     OBJECT_ENTRY(CLSID_StartMenu, CStartMenu)
     OBJECT_ENTRY(CLSID_MenuBandSite, CMenuBandSite)
+    OBJECT_ENTRY(CLSID_MenuBand, CMenuBand)
 END_OBJECT_MAP()
 
 CShell32Module                                gModule;
index b822a47..3b02e19 100644 (file)
 #define IDR_OPENWITHMENU        146
 #define IDR_FILEDEFEXT          147
 #define IDR_DRVDEFEXT           148
+#define IDR_MENUBAND            149
 
 #endif