[EXPLORER][SHELL32] Smaller Start Menu (#6646)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Tue, 19 Mar 2024 22:32:52 +0000 (07:32 +0900)
committerGitHub <noreply@github.com>
Tue, 19 Mar 2024 22:32:52 +0000 (07:32 +0900)
Improve customization of Start Menu.
JIRA issue: CORE-19494
- Add SmallStartMenu flag to TW_STRUCKRECTS2
  structure.
- Add IDS_ADVANCED_SMALL_START_MENU
  resource string.
- Update g_TaskbarSettings.sr.SmallStartMenu via
  a callback function.
- Check g_TaskbarSettings.sr.SmallStartMenu
  when Start Menu is updated.

44 files changed:
base/shell/explorer/precomp.h
base/shell/explorer/resource.h
base/shell/explorer/settings.cpp
base/shell/explorer/startmnu.cpp
base/shell/explorer/startmnucust.cpp
base/shell/explorer/traywnd.cpp
dll/win32/shell32/lang/bg-BG.rc
dll/win32/shell32/lang/ca-ES.rc
dll/win32/shell32/lang/cs-CZ.rc
dll/win32/shell32/lang/da-DK.rc
dll/win32/shell32/lang/de-DE.rc
dll/win32/shell32/lang/el-GR.rc
dll/win32/shell32/lang/en-GB.rc
dll/win32/shell32/lang/en-US.rc
dll/win32/shell32/lang/es-ES.rc
dll/win32/shell32/lang/et-EE.rc
dll/win32/shell32/lang/eu-ES.rc
dll/win32/shell32/lang/fi-FI.rc
dll/win32/shell32/lang/fr-FR.rc
dll/win32/shell32/lang/he-IL.rc
dll/win32/shell32/lang/hi-IN.rc
dll/win32/shell32/lang/hu-HU.rc
dll/win32/shell32/lang/id-ID.rc
dll/win32/shell32/lang/it-IT.rc
dll/win32/shell32/lang/ja-JP.rc
dll/win32/shell32/lang/ko-KR.rc
dll/win32/shell32/lang/nl-NL.rc
dll/win32/shell32/lang/no-NO.rc
dll/win32/shell32/lang/pl-PL.rc
dll/win32/shell32/lang/pt-BR.rc
dll/win32/shell32/lang/pt-PT.rc
dll/win32/shell32/lang/ro-RO.rc
dll/win32/shell32/lang/ru-RU.rc
dll/win32/shell32/lang/sk-SK.rc
dll/win32/shell32/lang/sl-SI.rc
dll/win32/shell32/lang/sq-AL.rc
dll/win32/shell32/lang/sv-SE.rc
dll/win32/shell32/lang/tr-TR.rc
dll/win32/shell32/lang/uk-UA.rc
dll/win32/shell32/lang/zh-CN.rc
dll/win32/shell32/lang/zh-HK.rc
dll/win32/shell32/lang/zh-TW.rc
dll/win32/shell32/shellmenu/CMenuDeskBar.cpp
dll/win32/shell32/shresdef.h

index ad94ada..16087fd 100644 (file)
@@ -205,6 +205,7 @@ typedef struct _TW_STUCKRECTS2
             DWORD AlwaysOnTop : 1;
             DWORD SmallIcons : 1;
             DWORD HideClock : 1;
+            DWORD SmallStartMenu : 1;
         };
     };
     DWORD Position;
index f78d753..acc3508 100644 (file)
 #define IDS_ADVANCED_EXPAND_NET_CONNECTIONS         30473
 #define IDS_ADVANCED_DISPLAY_RUN                    30474
 #define IDS_ADVANCED_DISPLAY_ADMINTOOLS             30476
+#define IDS_ADVANCED_SMALL_START_MENU               30477
 
 /*******************************************************************************\
 |*                              Control Resources                              *|
index f5932ef..35ee8ba 100644 (file)
@@ -82,6 +82,7 @@ BOOL TaskbarSettings::Load()
         sr.AlwaysOnTop = TRUE;
         sr.SmallIcons = TRUE;
         sr.HideClock = FALSE;
+        sr.SmallStartMenu = FALSE;
         sr.Rect.left = sr.Rect.top = 0;
         sr.Rect.bottom = sr.Rect.right = 1;
         sr.Size.cx = sr.Size.cy = 0;
index d306010..450d6e6 100644 (file)
@@ -97,9 +97,7 @@ CreateStartMenu(IN ITrayWindow *Tray,
     if (FAILED_UNEXPECTEDLY(hr))
         return NULL;
 
-    UpdateStartMenu(pMp,
-                    hbmBanner,
-                    bSmallIcons);
+    UpdateStartMenu(pMp, hbmBanner, bSmallIcons);
 
     *ppMenuBand = pMb.Detach();
 
index 922d458..0d456fc 100644 (file)
@@ -1,26 +1,15 @@
 /*
- * ReactOS Explorer
- *
- * Copyright 2006 - 2007 Thomas Weidenmueller <w3seek@reactos.org>
- *                  2015 Robert Naumann <gonzomdx@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * PROJECT:     ReactOS Explorer
+ * LICENSE:     LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
+ * PURPOSE:     "Customize Start Menu" dialog
+ * COPYRIGHT:   Copyright 2006-2007 Thomas Weidenmueller <w3seek@reactos.org>
+ *              Copyright 2015 Robert Naumann <gonzomdx@gmail.com>
+ *              Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
  */
 
 #include "precomp.h"
 
+// TreeView checkbox state indexes (Use with INDEXTOSTATEIMAGEMASK macro)
 #define I_UNCHECKED 1
 #define I_CHECKED   2
 
@@ -75,58 +64,94 @@ static VOID OnClearRecentItems(HWND hwnd)
     EnableWindow(GetDlgItem(hwnd, IDC_CLASSICSTART_CLEAR), RecentHasShortcut(hwnd));
 }
 
-struct CUSTOMIZE_ENTRY;
-typedef DWORD (CALLBACK *FN_CUSTOMIZE_READ)(const CUSTOMIZE_ENTRY *entry);
-typedef BOOL (CALLBACK *FN_CUSTOMIZE_WRITE)(const CUSTOMIZE_ENTRY *entry, DWORD dwValue);
+struct CUSTOM_ENTRY;
 
-struct CUSTOMIZE_ENTRY
+typedef BOOL (CALLBACK *FN_CUSTOM_GET)(const CUSTOM_ENTRY *entry);
+typedef VOID (CALLBACK *FN_CUSTOM_SET)(const CUSTOM_ENTRY *entry, BOOL bValue);
+
+struct CUSTOM_ENTRY
 {
     LPARAM id;
     LPCWSTR name;
     BOOL bDefaultValue;
+    FN_CUSTOM_GET fnGetValue;
+    FN_CUSTOM_SET fnSetValue;
     RESTRICTIONS policy1, policy2;
 };
 
-static const CUSTOMIZE_ENTRY s_CustomizeEntries[] =
+static BOOL CALLBACK CustomGetAdvanced(const CUSTOM_ENTRY *entry)
+{
+    return GetAdvancedBool(entry->name, entry->bDefaultValue);
+}
+
+static VOID CALLBACK CustomSetAdvanced(const CUSTOM_ENTRY *entry, BOOL bValue)
+{
+    SetAdvancedDword(entry->name, bValue);
+}
+
+static BOOL CALLBACK CustomGetSmallStartMenu(const CUSTOM_ENTRY *entry)
+{
+    return g_TaskbarSettings.sr.SmallStartMenu;
+}
+
+static VOID CALLBACK CustomSetSmallStartMenu(const CUSTOM_ENTRY *entry, BOOL bValue)
+{
+    g_TaskbarSettings.sr.SmallStartMenu = bValue;
+}
+
+static const CUSTOM_ENTRY s_CustomEntries[] =
 {
     {
         IDS_ADVANCED_DISPLAY_ADMINTOOLS, L"StartMenuAdminTools", TRUE,
+        CustomGetAdvanced, CustomSetAdvanced,
     },
     {
         IDS_ADVANCED_DISPLAY_FAVORITES, L"StartMenuFavorites", FALSE,
-        REST_NOFAVORITESMENU
+        CustomGetAdvanced, CustomSetAdvanced,
+        REST_NOFAVORITESMENU,
     },
     {
         IDS_ADVANCED_DISPLAY_LOG_OFF, L"StartMenuLogoff", FALSE,
-        REST_STARTMENULOGOFF
+        CustomGetAdvanced, CustomSetAdvanced,
+        REST_STARTMENULOGOFF,
     },
     {
         IDS_ADVANCED_DISPLAY_RUN, L"StartMenuRun", TRUE,
-        REST_NORUN
+        CustomGetAdvanced, CustomSetAdvanced,
+        REST_NORUN,
     },
     {
         IDS_ADVANCED_EXPAND_MY_DOCUMENTS, L"CascadeMyDocuments", FALSE,
-        REST_NOSMMYDOCS
+        CustomGetAdvanced, CustomSetAdvanced,
+        REST_NOSMMYDOCS,
     },
     {
         IDS_ADVANCED_EXPAND_MY_PICTURES, L"CascadeMyPictures", FALSE,
-        REST_NOSMMYPICS
+        CustomGetAdvanced, CustomSetAdvanced,
+        REST_NOSMMYPICS,
     },
     {
         IDS_ADVANCED_EXPAND_CONTROL_PANEL, L"CascadeControlPanel", FALSE,
+        CustomGetAdvanced, CustomSetAdvanced,
         REST_NOSETFOLDERS, REST_NOCONTROLPANEL,
     },
     {
         IDS_ADVANCED_EXPAND_PRINTERS, L"CascadePrinters", FALSE,
-        REST_NOSETFOLDERS
+        CustomGetAdvanced, CustomSetAdvanced,
+        REST_NOSETFOLDERS,
     },
     {
         IDS_ADVANCED_EXPAND_NET_CONNECTIONS, L"CascadeNetworkConnections", FALSE,
-        REST_NOSETFOLDERS, REST_NONETWORKCONNECTIONS
+        CustomGetAdvanced, CustomSetAdvanced,
+        REST_NOSETFOLDERS, REST_NONETWORKCONNECTIONS,
+    },
+    {
+        IDS_ADVANCED_SMALL_START_MENU, NULL, FALSE,
+        CustomGetSmallStartMenu, CustomSetSmallStartMenu,
     },
 };
 
-static VOID AddCustomizeItem(HWND hTreeView, const CUSTOMIZE_ENTRY *entry)
+static VOID AddCustomItem(HWND hTreeView, const CUSTOM_ENTRY *entry)
 {
     if (SHRestricted(entry->policy1) || SHRestricted(entry->policy2))
     {
@@ -134,17 +159,17 @@ static VOID AddCustomizeItem(HWND hTreeView, const CUSTOMIZE_ENTRY *entry)
         return; // Restricted. Don't show
     }
 
-    TV_INSERTSTRUCT Insert = { TVI_ROOT, TVI_LAST };
-    Insert.item.mask = TVIF_TEXT | TVIF_STATE | TVIF_PARAM;
-
     WCHAR szText[MAX_PATH];
     LoadStringW(GetModuleHandleW(L"shell32.dll"), entry->id, szText, _countof(szText));
+
+    BOOL bChecked = entry->fnGetValue(entry);
+    TRACE("%p: %d\n", entry->id, bChecked);
+
+    TV_INSERTSTRUCT Insert = { TVI_ROOT, TVI_LAST, { TVIF_TEXT | TVIF_STATE | TVIF_PARAM } };
     Insert.item.pszText = szText;
     Insert.item.lParam = entry->id;
     Insert.item.stateMask = TVIS_STATEIMAGEMASK;
-    BOOL bChecked = GetAdvancedBool(entry->name, entry->bDefaultValue);
     Insert.item.state = INDEXTOSTATEIMAGEMASK(bChecked ? I_CHECKED : I_UNCHECKED);
-    TRACE("%p: %d\n", entry->id, bChecked);
     TreeView_InsertItem(hTreeView, &Insert);
 }
 
@@ -157,9 +182,9 @@ static void CustomizeClassic_OnInitDialog(HWND hwnd)
     DWORD_PTR style = GetWindowLongPtrW(hTreeView, GWL_STYLE);
     SetWindowLongPtrW(hTreeView, GWL_STYLE, style | TVS_CHECKBOXES);
 
-    for (auto& entry : s_CustomizeEntries)
+    for (auto& entry : s_CustomEntries)
     {
-        AddCustomizeItem(hTreeView, &entry);
+        AddCustomItem(hTreeView, &entry);
     }
 }
 
@@ -171,13 +196,12 @@ static BOOL CustomizeClassic_OnOK(HWND hwnd)
          hItem != NULL;
          hItem = TreeView_GetNextVisible(hTreeView, hItem))
     {
-        TV_ITEM item = { TVIF_PARAM | TVIF_STATE };
-        item.hItem = hItem;
+        TV_ITEM item = { TVIF_PARAM | TVIF_STATE, hItem };
         item.stateMask = TVIS_STATEIMAGEMASK;
         TreeView_GetItem(hTreeView, &item);
 
         BOOL bChecked = !!(item.state & INDEXTOSTATEIMAGEMASK(I_CHECKED));
-        for (auto& entry : s_CustomizeEntries)
+        for (auto& entry : s_CustomEntries)
         {
             if (SHRestricted(entry.policy1) || SHRestricted(entry.policy2))
                 continue;
@@ -185,7 +209,7 @@ static BOOL CustomizeClassic_OnOK(HWND hwnd)
             if (item.lParam == entry.id)
             {
                 TRACE("%p: %d\n", item.lParam, bChecked);
-                SetAdvancedDword(entry.name, bChecked);
+                entry.fnSetValue(&entry, bChecked);
                 break;
             }
         }
@@ -220,9 +244,7 @@ INT_PTR CALLBACK CustomizeClassicProc(HWND hwnd, UINT Message, WPARAM wParam, LP
                     break;
                 case IDOK:
                     if (CustomizeClassic_OnOK(hwnd))
-                    {
                         EndDialog(hwnd, IDOK);
-                    }
                     break;
                 case IDCANCEL:
                     EndDialog(hwnd, IDCANCEL);
@@ -230,9 +252,10 @@ INT_PTR CALLBACK CustomizeClassicProc(HWND hwnd, UINT Message, WPARAM wParam, LP
             }
             break;
         default:
-            return FALSE;
+            break;
     }
-    return TRUE;
+
+    return FALSE;
 }
 
 VOID ShowCustomizeClassic(HINSTANCE hInst, HWND hExplorer)
index bfb9abb..1bc0a9a 100644 (file)
@@ -2554,8 +2554,9 @@ ChangePos:
         RegLoadSettings();
 
         /* Create and initialize the start menu */
+        BOOL bSmallStartMenu = g_TaskbarSettings.sr.SmallStartMenu;
         HBITMAP hbmBanner = LoadBitmapW(hExplorerInstance, MAKEINTRESOURCEW(IDB_STARTMENU));
-        m_StartMenuPopup = CreateStartMenu(this, &m_StartMenuBand, hbmBanner, 0);
+        m_StartMenuPopup = CreateStartMenu(this, &m_StartMenuBand, hbmBanner, bSmallStartMenu);
 
         /* Create the task band */
         hRet = CTaskBand_CreateInstance(this, m_StartButton.m_hWnd, IID_PPV_ARG(IDeskBand, &m_TaskBand));
@@ -2663,8 +2664,10 @@ ChangePos:
             /* Re-create the start menu */
             HideStartMenu();
             m_StartMenuBand.Release();
+
+            BOOL bSmallStartMenu = g_TaskbarSettings.sr.SmallStartMenu;
             HBITMAP hbmBanner = LoadBitmapW(hExplorerInstance, MAKEINTRESOURCEW(IDB_STARTMENU));
-            m_StartMenuPopup = CreateStartMenu(this, &m_StartMenuBand, hbmBanner, FALSE);
+            m_StartMenuPopup = CreateStartMenu(this, &m_StartMenuBand, hbmBanner, bSmallStartMenu);
         }
 
         return 0;
index c64e11f..dcce57c 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 948b4cb..b36c381 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 84a0ea8..e2e4f4c 100644 (file)
@@ -1029,6 +1029,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 50fb44e..5fbf26d 100644 (file)
@@ -1028,6 +1028,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 48a7798..e45ce1a 100644 (file)
@@ -1022,6 +1022,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Kleine Symbole im Startmenü anzeigen"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Er&weitert"
     IDS_NEWEXT_ADVANCED_RIGHT "&Erweitert >>"
index fa9951a..5c84544 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index d4a577c..89351a4 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 5f15dbf..e7f7d50 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 15ab62a..3644ee1 100644 (file)
@@ -1030,6 +1030,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< A&vanzado"
     IDS_NEWEXT_ADVANCED_RIGHT "A&vanzado >>"
index bc0f0a8..0761124 100644 (file)
@@ -1028,6 +1028,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< T&äpsemalt"
     IDS_NEWEXT_ADVANCED_RIGHT "Tä&psemalt >>"
index 8d2330a..5cc69f4 100644 (file)
@@ -1026,6 +1026,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< &Aurreratua"
     IDS_NEWEXT_ADVANCED_RIGHT "&Aurreratua >>"
index af229c1..08b4d1c 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index cc0fe50..0c2befb 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Avancé"
     IDS_NEWEXT_ADVANCED_RIGHT "Avancé >>"
index 124e2a7..47817c2 100644 (file)
@@ -1028,6 +1028,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< &מתקדם"
     IDS_NEWEXT_ADVANCED_RIGHT "&מתקדם >>"
index 397e975..f2d3dec 100644 (file)
@@ -1023,6 +1023,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< &उन्नत"
     IDS_NEWEXT_ADVANCED_RIGHT "&उन्नत >>"
index 436dfb7..5ec159a 100644 (file)
@@ -1020,6 +1020,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< &Haladó"
     IDS_NEWEXT_ADVANCED_RIGHT "&Haladó >>"
index 261ce8d..8a20ab6 100644 (file)
@@ -1018,6 +1018,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Tin&gkat lanjut"
     IDS_NEWEXT_ADVANCED_RIGHT "Tin&gkat lanjut >>"
index 6af11de..8d0819c 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 75537d3..8cde76d 100644 (file)
@@ -1018,6 +1018,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "「マイ ネットワーク」を展開"
     IDS_ADVANCED_DISPLAY_RUN "「ファイル名を指定して実行」を表示"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "「管理者ツール」を表示"
+    IDS_ADVANCED_SMALL_START_MENU "小さいアイコンでスタートメニューを表示"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< 高度な設定(&V)"
     IDS_NEWEXT_ADVANCED_RIGHT "高度な設定(&V) >>"
index 81f89b1..d93ae3c 100644 (file)
@@ -1028,6 +1028,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 079fd57..7530044 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index ea625e6..8bd5a46 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index a308132..7d7d5dc 100644 (file)
@@ -1030,6 +1030,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Rozwiń polecenie Połączenia sieciowe"
     IDS_ADVANCED_DISPLAY_RUN "Wyświetl polecenie Uruchom"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Wyświetl polecenie Narzędzia administracyjne"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< &Zaawansowane"
     IDS_NEWEXT_ADVANCED_RIGHT "&Zaawansowane >>"
index 32df4c6..860f5f3 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index b4370d6..f96b75b 100644 (file)
@@ -1020,6 +1020,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< A&vançado"
     IDS_NEWEXT_ADVANCED_RIGHT "Avança&do >>"
index c839f9d..751389a 100644 (file)
@@ -1029,6 +1029,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< A&vansate"
     IDS_NEWEXT_ADVANCED_RIGHT "A&vansate >>"
index 48b24cb..c016635 100644 (file)
@@ -1030,6 +1030,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Раскрывать ""Сетевые подключения"""
     IDS_ADVANCED_DISPLAY_RUN "Отображать команду ""Выполнить"""
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Отображать меню ""Администрирование"""
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< До&полнительно"
     IDS_NEWEXT_ADVANCED_RIGHT "До&полнительно >>"
index c18a529..f7396de 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 8f891e7..dccaa7d 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index fe9f522..54ecf4e 100644 (file)
@@ -1028,6 +1028,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index 514ffc6..0340ef2 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< Ad&vanced"
     IDS_NEWEXT_ADVANCED_RIGHT "Ad&vanced >>"
index be6886b..f4fae48 100644 (file)
@@ -1030,6 +1030,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< G&elişmiş"
     IDS_NEWEXT_ADVANCED_RIGHT "Ge&lişmiş >>"
index 83ca187..aba1260 100644 (file)
@@ -1021,6 +1021,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< &Додатково"
     IDS_NEWEXT_ADVANCED_RIGHT "&Додатково >>"
index 253eb1d..5c4669f 100644 (file)
@@ -1031,6 +1031,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< 高级(&V)"
     IDS_NEWEXT_ADVANCED_RIGHT "高级(&V) >>"
index 7a3709a..5b96921 100644 (file)
@@ -1029,6 +1029,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< 進階(&V)"
     IDS_NEWEXT_ADVANCED_RIGHT "進階(&V) >>"
index cc14c76..4979047 100644 (file)
@@ -1030,6 +1030,7 @@ BEGIN
     IDS_ADVANCED_EXPAND_NET_CONNECTIONS "Expand Network Connections"
     IDS_ADVANCED_DISPLAY_RUN "Display Run"
     IDS_ADVANCED_DISPLAY_ADMINTOOLS "Display Administrative Tools"
+    IDS_ADVANCED_SMALL_START_MENU "Show Small Icons in Start menu"
 
     IDS_NEWEXT_ADVANCED_LEFT "<< 進階(&V)"
     IDS_NEWEXT_ADVANCED_RIGHT "進階(&V) >>"
index cf8934c..493e490 100644 (file)
@@ -551,6 +551,9 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::GetIconSize(THIS_ DWORD* piIcon)
 
 HRESULT STDMETHODCALLTYPE CMenuDeskBar::SetBitmap(THIS_ HBITMAP hBitmap)
 {
+    if (m_Banner && m_Banner != hBitmap)
+        ::DeleteObject(m_Banner);
+
     m_Banner = hBitmap;
 
     BOOL bHandled;
@@ -682,7 +685,7 @@ LRESULT CMenuDeskBar::_OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHa
 
         GetClientRect(&rc);
 
-        if (m_Banner != NULL)
+        if (m_Banner && m_IconSize != BMICON_SMALL)
         {
             BITMAP bm;
             ::GetObject(m_Banner, sizeof(bm), &bm);
index fea82a7..bcae426 100644 (file)
 #define IDS_ADVANCED_EXPAND_NET_CONNECTIONS         30473
 #define IDS_ADVANCED_DISPLAY_RUN                    30474
 #define IDS_ADVANCED_DISPLAY_ADMINTOOLS             30476
+#define IDS_ADVANCED_SMALL_START_MENU               30477
 
 #define IDS_NEWEXT_ADVANCED_LEFT                    30515
 #define IDS_NEWEXT_ADVANCED_RIGHT                   30516