* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include "precomp.h"
-#define TEST_TRACKPOPUPMENU_SUBMENUS
+//#define TEST_TRACKPOPUPMENU_SUBMENUS
-#include "precomp.h"
/* NOTE: The following constants *MUST NOT* be changed because
they're hardcoded and need to be the exact values
switch (psmd->uId)
{
- case IDM_PROGRAMS: iconIndex = -20; break;
- case IDM_FAVORITES: iconIndex = -173; break;
- case IDM_DOCUMENTS: iconIndex = -21; break;
- case IDM_SETTINGS: iconIndex = -22; break;
+ // Smaller "24x24" icons used for the start menu
+ // The bitmaps are still 32x32, but the image is centered
+ case IDM_FAVORITES: iconIndex = -209; break;
+ case IDM_SEARCH: iconIndex = -210; break;
+ case IDM_HELPANDSUPPORT: iconIndex = -211; break;
+ case IDM_LOGOFF: iconIndex = -212; break;
+ case IDM_PROGRAMS: iconIndex = -213; break;
+ case IDM_DOCUMENTS: iconIndex = -214; break;
+ case IDM_RUN: iconIndex = -215; break;
+ case IDM_SHUTDOWN: iconIndex = -216; break;
+ case IDM_SETTINGS: iconIndex = -217; break;
+
case IDM_CONTROLPANEL: iconIndex = -22; break;
- //case IDM_SECURITY: iconIndex = -21; break;
case IDM_NETWORKCONNECTIONS: iconIndex = -257; break;
case IDM_PRINTERSANDFAXES: iconIndex = -138; break;
case IDM_TASKBARANDSTARTMENU: iconIndex = -40; break;
- case IDM_SEARCH: iconIndex = -23; break;
- case IDM_HELPANDSUPPORT: iconIndex = -24; break;
- case IDM_RUN: iconIndex = -25; break;
+ //case IDM_SECURITY: iconIndex = -21; break;
//case IDM_SYNCHRONIZE: iconIndex = -21; break;
- case IDM_LOGOFF: iconIndex = -45; break;
//case IDM_DISCONNECT: iconIndex = -21; break;
//case IDM_UNDOCKCOMPUTER: iconIndex = -21; break;
- case IDM_SHUTDOWN: iconIndex = -28; break;
default:
return S_FALSE;
}
case IDM_DOCUMENTS: csidl = CSIDL_RECENT; break;
}
-#ifndef USE_BUILTIN_MENUBAND
+#if USE_SYSTEM_MENUBAND
hr = CoCreateInstance(CLSID_MenuBand,
NULL,
CLSCTX_INPROC_SERVER,
#else
hr = CMenuBand_Constructor(IID_PPV_ARG(IShellMenu, &pShellMenu));
#endif
+ if (FAILED(hr))
+ return hr;
+#if WRAP_MENUBAND
+ hr = CMenuBand_Wrapper(pShellMenu, IID_PPV_ARG(IShellMenu, &pShellMenu));
+ if (FAILED(hr))
+ return hr;
+#endif
hr = pShellMenu->Initialize(this, 0, ANCESTORDEFAULT, SMINIT_VERTICAL);
};
extern "C"
-HRESULT
+HRESULT WINAPI
CStartMenu_Constructor(REFIID riid, void **ppv)
{
IShellMenu* pShellMenu;
IShellFolder *shellFolder;
IShellFolder *psfStartMenu;
-#ifndef USE_BUILTIN_MENUBAND
+#if USE_SYSTEM_MENUBAND
hr = CoCreateInstance(CLSID_MenuBand,
NULL,
CLSCTX_INPROC_SERVER,
#endif
if (FAILED(hr))
return hr;
+#if WRAP_MENUBAND
+ hr = CMenuBand_Wrapper(pShellMenu, IID_PPV_ARG(IShellMenu, &pShellMenu));
+ if (FAILED(hr))
+ return hr;
+#endif
-#ifndef USE_BUILTIN_MENUSITE
+#if USE_SYSTEM_MENUSITE
hr = CoCreateInstance(CLSID_MenuBandSite,
NULL,
CLSCTX_INPROC_SERVER,
#endif
if (FAILED(hr))
return hr;
+#if WRAP_MENUSITE
+ hr = CMenuSite_Wrapper(pBandSite, IID_PPV_ARG(IBandSite, &pBandSite));
+ if (FAILED(hr))
+ return hr;
+#endif
-#ifndef USE_BUILTIN_MENUDESKBAR
+#if USE_SYSTEM_MENUDESKBAR
hr = CoCreateInstance(CLSID_MenuDeskBar,
NULL,
CLSCTX_INPROC_SERVER,
#endif
if (FAILED(hr))
return hr;
+#if WRAP_MENUDESKBAR
+ hr = CMenuDeskBar_Wrapper(pDeskBar, IID_PPV_ARG(IDeskBar, &pDeskBar));
+ if (FAILED(hr))
+ return hr;
+#endif
CComObject<CShellMenuCallback> *pCallback;
hr = CComObject<CShellMenuCallback>::CreateInstance(&pCallback);
pCallback->AddRef(); // CreateInstance returns object with 0 ref count */
pCallback->Initialize(pShellMenu, pBandSite, pDeskBar);
- pShellMenu->Initialize(pCallback, -1, 0, SMINIT_TOPLEVEL | SMINIT_VERTICAL);
+ pShellMenu->Initialize(pCallback, (UINT)-1, 0, SMINIT_TOPLEVEL | SMINIT_VERTICAL);
if (FAILED(hr))
return hr;