diff --git a/reactos/subsys/system/explorer/res/action.ico b/reactos/subsys/system/explorer/res/action.ico index 0db01507eb0..7b15f3706df 100644 Binary files a/reactos/subsys/system/explorer/res/action.ico and b/reactos/subsys/system/explorer/res/action.ico differ diff --git a/reactos/subsys/system/explorer/res/apps.ico b/reactos/subsys/system/explorer/res/apps.ico index dfc281f965c..0bff0adcb5a 100644 Binary files a/reactos/subsys/system/explorer/res/apps.ico and b/reactos/subsys/system/explorer/res/apps.ico differ diff --git a/reactos/subsys/system/explorer/res/computer.ico b/reactos/subsys/system/explorer/res/computer.ico index d4f62e2536c..beb28a65a33 100644 Binary files a/reactos/subsys/system/explorer/res/computer.ico and b/reactos/subsys/system/explorer/res/computer.ico differ diff --git a/reactos/subsys/system/explorer/res/config.ico b/reactos/subsys/system/explorer/res/config.ico index a502272e325..3bdc4741e0b 100644 Binary files a/reactos/subsys/system/explorer/res/config.ico and b/reactos/subsys/system/explorer/res/config.ico differ diff --git a/reactos/subsys/system/explorer/res/documents.ico b/reactos/subsys/system/explorer/res/documents.ico index 1385703d60a..727e1e254b1 100644 Binary files a/reactos/subsys/system/explorer/res/documents.ico and b/reactos/subsys/system/explorer/res/documents.ico differ diff --git a/reactos/subsys/system/explorer/res/explorer.ico b/reactos/subsys/system/explorer/res/explorer.ico index 041ae98cead..8aa5104e7cc 100644 Binary files a/reactos/subsys/system/explorer/res/explorer.ico and b/reactos/subsys/system/explorer/res/explorer.ico differ diff --git a/reactos/subsys/system/explorer/res/favorites.ico b/reactos/subsys/system/explorer/res/favorites.ico index 879853ffe6b..e58a9cd9f14 100644 Binary files a/reactos/subsys/system/explorer/res/favorites.ico and b/reactos/subsys/system/explorer/res/favorites.ico differ diff --git a/reactos/subsys/system/explorer/res/folder.ico b/reactos/subsys/system/explorer/res/folder.ico index 1aec1781537..c8cb74f3fac 100644 Binary files a/reactos/subsys/system/explorer/res/folder.ico and b/reactos/subsys/system/explorer/res/folder.ico differ diff --git a/reactos/subsys/system/explorer/res/info.ico b/reactos/subsys/system/explorer/res/info.ico index b0ac9e81d83..3b8e613a8d7 100644 Binary files a/reactos/subsys/system/explorer/res/info.ico and b/reactos/subsys/system/explorer/res/info.ico differ diff --git a/reactos/subsys/system/explorer/res/network.ico b/reactos/subsys/system/explorer/res/network.ico index 8e5af63a9a3..5bcf5ec7cbf 100644 Binary files a/reactos/subsys/system/explorer/res/network.ico and b/reactos/subsys/system/explorer/res/network.ico differ diff --git a/reactos/subsys/system/explorer/res/printer.ico b/reactos/subsys/system/explorer/res/printer.ico index 7e0f99773f3..7edda2773cc 100644 Binary files a/reactos/subsys/system/explorer/res/printer.ico and b/reactos/subsys/system/explorer/res/printer.ico differ diff --git a/reactos/subsys/system/explorer/res/reactos.ico b/reactos/subsys/system/explorer/res/reactos.ico index fffc2801755..492e388a939 100644 Binary files a/reactos/subsys/system/explorer/res/reactos.ico and b/reactos/subsys/system/explorer/res/reactos.ico differ diff --git a/reactos/subsys/system/explorer/res/search-doc.ico b/reactos/subsys/system/explorer/res/search-doc.ico index 98eb6f2dc82..7ae57910362 100644 Binary files a/reactos/subsys/system/explorer/res/search-doc.ico and b/reactos/subsys/system/explorer/res/search-doc.ico differ diff --git a/reactos/subsys/system/explorer/res/search.ico b/reactos/subsys/system/explorer/res/search.ico index de4d0b4abb4..cdf5146cf01 100644 Binary files a/reactos/subsys/system/explorer/res/search.ico and b/reactos/subsys/system/explorer/res/search.ico differ diff --git a/reactos/subsys/system/explorer/utility/shellclasses.cpp b/reactos/subsys/system/explorer/utility/shellclasses.cpp index 5b92959e0b2..f9781ca6fcd 100644 --- a/reactos/subsys/system/explorer/utility/shellclasses.cpp +++ b/reactos/subsys/system/explorer/utility/shellclasses.cpp @@ -428,6 +428,45 @@ UINT ILGetSize(LPCITEMIDLIST pidl) #endif +#ifndef _SHFOLDER_H_ +#define CSIDL_FLAG_CREATE 0x8000 +#endif + + /// file system path of special folder +SpecialFolderFSPath::SpecialFolderFSPath(int folder, HWND hwnd) +{ + _fullpath[0] = '\0'; + +#ifdef UNICODE + static DynamicFct s_pSHGetSpecialFolderPath(TEXT("shell32"), "SHGetSpecialFolderPathW"); +#else + static DynamicFct s_pSHGetSpecialFolderPath(TEXT("shell32"), "SHGetSpecialFolderPathA"); +#endif + if (*s_pSHGetSpecialFolderPath) + (*s_pSHGetSpecialFolderPath)(hwnd, _fullpath, folder, TRUE); + else { + // SHGetSpecialFolderPath() is not compatible to WIN95/NT4 +#ifdef UNICODE + static DynamicFct s_pSHGetFolderPath_shell32(TEXT("shell32"), "SHGetFolderPathW"); +#else + static DynamicFct s_pSHGetFolderPath_shell32(TEXT("shell32"), "SHGetFolderPathA"); +#endif + if (*s_pSHGetFolderPath_shell32) + (*s_pSHGetFolderPath_shell32)(hwnd, folder|CSIDL_FLAG_CREATE, 0, 0, _fullpath); + else { + // SHGetFolderPath() is only present in shfolder.dll on some platforms. +#ifdef UNICODE + static DynamicLoadLibFct s_pSHGetFolderPath_shfolder(TEXT("shfolder"), "SHGetFolderPathW"); +#else + static DynamicLoadLibFct s_pSHGetFolderPath_shfolder(TEXT("shfolder"), "SHGetFolderPathA"); +#endif + if (*s_pSHGetFolderPath_shfolder) + (*s_pSHGetFolderPath_shfolder)(hwnd, folder|CSIDL_FLAG_CREATE, 0, 0, _fullpath); + } + } +} + + HRESULT ShellFolderContextMenu(IShellFolder* shell_folder, HWND hwndParent, int cidl, LPCITEMIDLIST* apidl, int x, int y) { IContextMenu* pcm; diff --git a/reactos/subsys/system/explorer/utility/shellclasses.h b/reactos/subsys/system/explorer/utility/shellclasses.h index 91d85063ae8..00fb302822a 100644 --- a/reactos/subsys/system/explorer/utility/shellclasses.h +++ b/reactos/subsys/system/explorer/utility/shellclasses.h @@ -884,17 +884,10 @@ struct DesktopFolder : public ShellFolder }; -#if _WIN32_IE>=0x400 // is SHGetSpecialFolderPath() available? - /// file system path of special folder struct SpecialFolderFSPath { - SpecialFolderFSPath(int folder/*e.g. CSIDL_DESKTOP*/, HWND hwnd) - { - _fullpath[0] = '\0'; - - SHGetSpecialFolderPath(hwnd, _fullpath, folder, TRUE); - } + SpecialFolderFSPath(int folder/*e.g. CSIDL_DESKTOP*/, HWND hwnd); operator LPCTSTR() { @@ -905,8 +898,7 @@ protected: TCHAR _fullpath[MAX_PATH]; }; -#else // _WIN32_IE<0x400 -> use SHGetSpecialFolderLocation() - +/* /// file system path of special folder struct SpecialFolderFSPath : public FileSysShellPath { @@ -918,8 +910,7 @@ struct SpecialFolderFSPath : public FileSysShellPath CHECKERROR(hr); } }; - -#endif +*/ /// wrapper class for enumerating shell namespace objects