[SHELL32][EXPLORER] Improve Recent Documents of Start Menu (#2648)

Improve Recent Documents of Start Menu. Add items of "My Documents" and "My Pictures" into Recent menu item.
CORE-3588, CORE-11483
This commit is contained in:
Katayama Hirofumi MZ 2020-04-30 17:09:14 +09:00 committed by GitHub
parent c6680c99d9
commit 8f3079c67f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 448 additions and 19 deletions

View file

@ -89,6 +89,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Търсене на папка"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Browse for Folder"

View file

@ -94,6 +94,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Procházet..."

View file

@ -94,6 +94,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Søg efter Mappe"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Verzeichnis auswählen"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Αναζήτηση φακέλου"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Browse for Folder"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Browse for Folder"

View file

@ -97,6 +97,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Explorar carpeta"

View file

@ -95,6 +95,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Vali kaust"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Valitse Kansio"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Parcourir"

View file

@ -90,6 +90,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "בחירת תיקיה"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "फोल्डर खोंजे"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Mappák böngészése"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Jelajah Folder"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Sfoglia Cartella"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "フォルダの参照"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Browse for Folder"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Browse for Folder"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Bla etter mappe"

View file

@ -94,6 +94,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Wybierz folder"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Procurar pasta"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Procurar pastas"

View file

@ -90,6 +90,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Specificare dosar"

View file

@ -95,6 +95,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Обзор"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Browse for Folder"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Browse for Folder"

View file

@ -92,6 +92,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Shfleto për Dosje"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Bläddra efter mapp"

View file

@ -90,6 +90,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Dizin İçin Göz At"

View file

@ -88,6 +88,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Огляд папок"

View file

@ -98,6 +98,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "浏览文件夹"

View file

@ -97,6 +97,16 @@ BEGIN
END
END
IDM_RECENTMENUHEAD MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "My Documents", IDM_MYDOCUMENTS
MENUITEM "My Pictures", IDM_MYPICTURES
MENUITEM SEPARATOR
END
END
IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "瀏覽資料夾"

View file

@ -1497,7 +1497,7 @@ HRESULT CMenuSFToolbar::InternalPopupItem(INT iItem, INT index, DWORD_PTR dwData
if (FAILED_UNEXPECTEDLY(hr))
return hr;
hr = shellMenu->SetShellFolder(childFolder, NULL, NULL, 0);
hr = shellMenu->SetShellFolder(childFolder, NULL, NULL, SMSET_TOP);
if (FAILED_UNEXPECTEDLY(hr))
return hr;

View file

@ -61,7 +61,6 @@ class CShellMenuCallback :
public IShellMenuCallback
{
private:
HWND m_hwndTray;
CComPtr<IShellMenu> m_pShellMenu;
CComPtr<IBandSite> m_pBandSite;
@ -70,6 +69,7 @@ private:
CComPtr<IShellFolder> m_psfPrograms;
LPITEMIDLIST m_pidlPrograms;
HMENU m_hRecentMenu;
HRESULT OnInitMenu()
{
@ -95,6 +95,12 @@ private:
if (FAILED_UNEXPECTEDLY(hr))
return hr;
m_hRecentMenu = ::LoadMenuW(shell32_hInstance, MAKEINTRESOURCEW(IDM_RECENTMENUHEAD));
if (m_hRecentMenu == NULL)
{
ERR("m_hRecentMenu == NULL\n");
}
return hr;
}
@ -106,20 +112,22 @@ private:
{
// Smaller "24x24" icons used for the start menu
// The bitmaps are still 32x32, but the image is centered
case IDM_FAVORITES: iconIndex = -322; break;
case IDM_SEARCH: iconIndex = -323; break;
case IDM_HELPANDSUPPORT: iconIndex = -324; break;
case IDM_LOGOFF: iconIndex = -325; break;
case IDM_PROGRAMS: iconIndex = -326; break;
case IDM_DOCUMENTS: iconIndex = -327; break;
case IDM_RUN: iconIndex = -328; break;
case IDM_SHUTDOWN: iconIndex = -329; break;
case IDM_SETTINGS: iconIndex = -330; break;
case IDM_FAVORITES: iconIndex = -IDI_SHELL_FAVOTITES; break;
case IDM_SEARCH: iconIndex = -IDI_SHELL_SEARCH1; break;
case IDM_HELPANDSUPPORT: iconIndex = -IDI_SHELL_HELP2; break;
case IDM_LOGOFF: iconIndex = -IDI_SHELL_LOGOFF1; break;
case IDM_PROGRAMS: iconIndex = -IDI_SHELL_PROGRAMS_FOLDER1; break;
case IDM_DOCUMENTS: iconIndex = -IDI_SHELL_RECENT_DOCUMENTS1; break;
case IDM_RUN: iconIndex = -IDI_SHELL_RUN1; break;
case IDM_SHUTDOWN: iconIndex = -IDI_SHELL_SHUTDOWN1; break;
case IDM_SETTINGS: iconIndex = -IDI_SHELL_CONTROL_PANEL1; break;
case IDM_MYDOCUMENTS: iconIndex = -IDI_SHELL_MY_DOCUMENTS; break;
case IDM_MYPICTURES: iconIndex = -IDI_SHELL_MY_PICTURES; break;
case IDM_CONTROLPANEL: iconIndex = -22; break;
case IDM_NETWORKCONNECTIONS: iconIndex = -257; break;
case IDM_PRINTERSANDFAXES: iconIndex = -138; break;
case IDM_TASKBARANDSTARTMENU: iconIndex = -40; break;
case IDM_CONTROLPANEL: iconIndex = -IDI_SHELL_CONTROL_PANEL; break;
case IDM_NETWORKCONNECTIONS: iconIndex = -IDI_SHELL_NETWORK_CONNECTIONS2; break;
case IDM_PRINTERSANDFAXES: iconIndex = -IDI_SHELL_PRINTER2; break;
case IDM_TASKBARANDSTARTMENU: iconIndex = -IDI_SHELL_TSKBAR_STARTMENU; break;
//case IDM_SECURITY: iconIndex = -21; break;
//case IDM_SYNCHRONIZE: iconIndex = -21; break;
//case IDM_DISCONNECT: iconIndex = -21; break;
@ -149,6 +157,54 @@ private:
return S_OK;
}
HMENU CreateRecentMenu(BOOL bExpandMyDocuments, BOOL bExpandMyPictures) const
{
HMENU hMenu = ::CreateMenu();
if (hMenu == NULL)
{
ERR("HMenu == NULL\n");
return NULL;
}
HMENU hSubMenu = ::GetSubMenu(m_hRecentMenu, 0);
if (hSubMenu == NULL)
{
ERR("hSubMenu == NULL\n");
return NULL;
}
WCHAR szText[128];
UINT i, nCount = GetMenuItemCount(hSubMenu);
for (i = 0; i < nCount; ++i)
{
UINT nID = GetMenuItemID(hSubMenu, i);
if (GetMenuString(hSubMenu, i, szText, _countof(szText), MF_BYPOSITION))
{
if ((nID == IDM_MYDOCUMENTS && bExpandMyDocuments) ||
(nID == IDM_MYPICTURES && bExpandMyPictures))
{
MENUITEMINFOW mii = { sizeof(mii), MIIM_TYPE | MIIM_ID | MIIM_SUBMENU };
mii.fType = MFT_STRING;
mii.wID = nID;
mii.hSubMenu = ::CreatePopupMenu();
mii.dwTypeData = szText;
mii.cch = lstrlenW(szText);
InsertMenuItemW(hMenu, i, TRUE, &mii);
}
else
{
AppendMenuW(hMenu, MF_STRING | MF_ENABLED, nID, szText);
}
}
else
{
AppendMenuW(hMenu, MF_SEPARATOR, 0, NULL);
}
}
return hMenu;
}
HRESULT OnGetSubMenu(LPSMDATA psmd, REFIID iid, void ** pv)
{
HRESULT hr;
@ -168,11 +224,14 @@ private:
case IDM_PROGRAMS: csidl = CSIDL_PROGRAMS; break;
case IDM_FAVORITES: csidl = CSIDL_FAVORITES; break;
case IDM_DOCUMENTS: csidl = CSIDL_RECENT; break;
case IDM_MYDOCUMENTS: csidl = CSIDL_MYDOCUMENTS; break;
case IDM_MYPICTURES: csidl = CSIDL_MYPICTURES; break;
}
if (csidl)
{
IShellFolder *psfStartMenu;
DWORD dwFlags = SMSET_TOP;
if (csidl == CSIDL_PROGRAMS && m_psfPrograms)
{
@ -180,6 +239,19 @@ private:
}
else
{
if (csidl == CSIDL_RECENT)
{
BOOL bExpandMyDocuments = FALSE; /* FIXME: Get value from registry */
BOOL bExpandMyPictures = FALSE; /* FIXME: Get value from registry */
HMENU hMenu = CreateRecentMenu(bExpandMyDocuments, bExpandMyPictures);
hr = pShellMenu->SetMenu(hMenu, NULL, SMSET_BOTTOM);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
dwFlags = SMSET_BOTTOM;
}
LPITEMIDLIST pidlStartMenu;
IShellFolder *psfDestop;
hr = SHGetFolderLocation(NULL, csidl, 0, 0, &pidlStartMenu);
@ -195,10 +267,9 @@ private:
return hr;
}
hr = pShellMenu->SetShellFolder(psfStartMenu, NULL, NULL, 0);
hr = pShellMenu->SetShellFolder(psfStartMenu, NULL, NULL, dwFlags);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
}
else
{
@ -240,6 +311,8 @@ private:
HRESULT OnExec(LPSMDATA psmd)
{
WCHAR szPath[MAX_PATH];
// HACK: Because our ShellExecute can't handle CLSID components in paths, we can't launch the paths using the "open" verb.
// FIXME: Change this back to using the path as the filename and the "open" verb, once ShellExecute can handle CLSID path components.
@ -249,6 +322,20 @@ private:
ShellExecuteW(NULL, NULL, L"explorer.exe", L"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}", NULL, SW_SHOWNORMAL);
else if (psmd->uId == IDM_PRINTERSANDFAXES)
ShellExecuteW(NULL, NULL, L"explorer.exe", L"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{2227A280-3AEA-1069-A2DE-08002B30309D}", NULL, SW_SHOWNORMAL);
else if (psmd->uId == IDM_MYDOCUMENTS)
{
if (SHGetSpecialFolderPathW(NULL, szPath, CSIDL_PERSONAL, FALSE))
ShellExecuteW(NULL, NULL, szPath, NULL, NULL, SW_SHOWNORMAL);
else
ERR("SHGetSpecialFolderPathW failed\n");
}
else if (psmd->uId == IDM_MYPICTURES)
{
if (SHGetSpecialFolderPathW(NULL, szPath, CSIDL_MYPICTURES, FALSE))
ShellExecuteW(NULL, NULL, szPath, NULL, NULL, SW_SHOWNORMAL);
else
ERR("SHGetSpecialFolderPathW failed\n");
}
else
PostMessageW(m_hwndTray, WM_COMMAND, psmd->uId, 0);
@ -497,7 +584,7 @@ RSHELL_CStartMenu_CreateInstance(REFIID riid, void **ppv)
if (FAILED_UNEXPECTEDLY(hr))
return hr;
hr = pShellMenu->SetShellFolder(psf, NULL, NULL, 0);
hr = pShellMenu->SetShellFolder(psf, NULL, NULL, SMSET_TOP);
if (FAILED_UNEXPECTEDLY(hr))
return hr;

View file

@ -794,8 +794,10 @@
#define IDM_COPYHERE 0x7
#define IDM_MOVEHERE 0x8
#define IDM_LINKHERE 0xB
#define IDM_RECENTMENUHEAD 401
#define IDM_MYDOCUMENTS 516
#define IDM_MYPICTURES 518
/* Registrar scripts (RGS) */
#define IDR_ADMINFOLDERSHORTCUT 128