ReactOS 0.4.15-dev-7127-g2dd0c6c
startmnu.cpp
Go to the documentation of this file.
1/*
2 * ReactOS Explorer
3 *
4 * Copyright 2006 - 2007 Thomas Weidenmueller <w3seek@reactos.org>
5 *
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.
10 *
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.
15 *
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 Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include "precomp.h"
22
25 IN HBITMAP hbmBanner OPTIONAL,
26 IN BOOL bSmallIcons)
27{
29 HRESULT hRet;
30
31 hRet = pMenuPopup->QueryInterface(IID_PPV_ARG(IBanneredBar, &pbb));
32 if (SUCCEEDED(hRet))
33 {
34 hRet = pbb->SetBitmap(hbmBanner);
35
36 /* Update the icon size */
37 hRet = pbb->SetIconSize(bSmallIcons ? BMICON_SMALL : BMICON_LARGE);
38 }
39
40 return hRet;
41}
42
44CreateStartMenu(IN ITrayWindow *Tray,
45 OUT IMenuBand **ppMenuBand,
46 IN HBITMAP hbmBanner OPTIONAL,
47 IN BOOL bSmallIcons)
48{
49 HRESULT hr;
56 DWORD dwBandId = 0;
57
60 return NULL;
61
64 return NULL;
65
66 /* Set the menu site so we can handle messages */
67 hr = IUnknown_SetSite(pMp, pSms);
69 return NULL;
70
71 /* Initialize the menu object */
72 hr = pMp->QueryInterface(IID_PPV_ARG(IInitializeObject, &pIo));
73 if (SUCCEEDED(hr))
74 hr = pIo->Initialize();
75 else
76 hr = S_OK;
77
78 /* Everything is initialized now. Let's get the IMenuBand interface. */
80 return NULL;
81
82 hr = pMp->GetClient(&pUnk);
84 return NULL;
85
88 return NULL;
89
90 /* Finally we have the IBandSite interface, there's only one
91 band in it that apparently provides the IMenuBand interface */
92 hr = pBs->EnumBands(0, &dwBandId);
94 return NULL;
95
96 hr = pBs->GetBandObject(dwBandId, IID_PPV_ARG(IMenuBand, &pMb));
98 return NULL;
99
100 UpdateStartMenu(pMp,
101 hbmBanner,
102 bSmallIcons);
103
104 *ppMenuBand = pMb.Detach();
105
106 return pMp.Detach();
107}
HRESULT CStartMenuSite_CreateInstance(IN OUT ITrayWindow *Tray, const IID &riid, PVOID *ppv)
HRESULT WINAPI _CStartMenu_CreateInstance(REFIID riid, void **ppv)
Definition: rshell.cpp:32
T * Detach()
Definition: atlcomcli.h:186
#define NULL
Definition: types.h:112
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:122
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
Definition: ordinal.c:1407
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsresult QueryInterface(nsIIDRef riid, void **result)
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static HBITMAP
Definition: button.c:44
HRESULT hr
Definition: shlfolder.c:183
@ BMICON_SMALL
Definition: shlobj_undoc.h:90
@ BMICON_LARGE
Definition: shlobj_undoc.h:89
HRESULT UpdateStartMenu(IN OUT IMenuPopup *pMenuPopup, IN HBITMAP hbmBanner OPTIONAL, IN BOOL bSmallIcons)
Definition: startmnu.cpp:24
IMenuPopup * CreateStartMenu(IN ITrayWindow *Tray, OUT IMenuBand **ppMenuBand, IN HBITMAP hbmBanner OPTIONAL, IN BOOL bSmallIcons)
Definition: startmnu.cpp:44
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
#define IN
Definition: typedefs.h:39
#define OUT
Definition: typedefs.h:40
#define IID_PPV_ARG(Itype, ppType)