Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pavlov <ipavlov@users.sourceforge.net>2005-12-09 03:00:00 +0300
committerKornel LesiƄski <kornel@geekhood.net>2016-05-28 02:15:45 +0300
commite8d0636d7a96d61f9522203c7da16aecc116df81 (patch)
treefb1679f1b24a6e161c43886cf080a770daf55698
parentacac9875755c32ac27123f601e87c6a6ea9913e9 (diff)
4.324.32
-rwxr-xr-x7zip/Archive/7z_C/7zIn.c2
-rwxr-xr-x7zip/Compress/LZMA_Alone/LzmaAlone.cpp6
-rwxr-xr-x7zip/Compress/RangeCoder/RangeCoder.h63
-rwxr-xr-x7zip/FileManager/PanelItemOpen.cpp10
-rwxr-xr-x7zip/FileManager/PanelOperations.cpp15
-rwxr-xr-x7zip/FileManager/Resource/OverwriteDialog/resource.rc4
-rwxr-xr-x7zip/FileManager/Resource/ProgressDialog2/resource.rc2
-rwxr-xr-x7zip/FileManager/SysIconUtils.cpp31
-rwxr-xr-x7zip/MyVersion.h8
-rwxr-xr-xDOC/7zip.nsi2
-rwxr-xr-xDOC/lzma.txt55
-rwxr-xr-xDOC/readme.txt2
-rwxr-xr-xWindows/Shell.cpp32
13 files changed, 138 insertions, 94 deletions
diff --git a/7zip/Archive/7z_C/7zIn.c b/7zip/Archive/7z_C/7zIn.c
index e2e9f641..2eea5717 100755
--- a/7zip/Archive/7z_C/7zIn.c
+++ b/7zip/Archive/7z_C/7zIn.c
@@ -192,7 +192,7 @@ SZ_RESULT SafeReadDirect(ISzInStream *inStream, Byte *data, size_t size)
{
Byte *inBuffer;
size_t processedSize;
- RINOK(inStream->Read(inStream, &inBuffer, size, &processedSize));
+ RINOK(inStream->Read(inStream, (void **)&inBuffer, size, &processedSize));
if (processedSize == 0 || processedSize > size)
return SZE_FAIL;
size -= processedSize;
diff --git a/7zip/Compress/LZMA_Alone/LzmaAlone.cpp b/7zip/Compress/LZMA_Alone/LzmaAlone.cpp
index 96aeac0d..e5a19148 100755
--- a/7zip/Compress/LZMA_Alone/LzmaAlone.cpp
+++ b/7zip/Compress/LZMA_Alone/LzmaAlone.cpp
@@ -105,8 +105,8 @@ static void PrintHelp()
" -mf{MF_ID}: set Match Finder: [bt2, bt3, bt4, bt4b, pat2r, pat2,\n"
" pat2h, pat3h, pat4h, hc3, hc4], default: bt4\n"
" -eos: write End Of Stream marker\n"
- " -si: Read data from stdin\n"
- " -so: Write data to stdout\n"
+ " -si: read data from stdin\n"
+ " -so: write data to stdout\n"
);
}
@@ -150,7 +150,7 @@ int main2(int n, const char *args[])
g_IsNT = IsItWindowsNT();
#endif
- fprintf(stderr, "\nLZMA 4.30 Copyright (c) 1999-2005 Igor Pavlov 2005-11-20\n");
+ fprintf(stderr, "\nLZMA 4.32 Copyright (c) 1999-2005 Igor Pavlov 2005-12-09\n");
if (n == 1)
{
diff --git a/7zip/Compress/RangeCoder/RangeCoder.h b/7zip/Compress/RangeCoder/RangeCoder.h
index 186ae8b0..bbb2ba82 100755
--- a/7zip/Compress/RangeCoder/RangeCoder.h
+++ b/7zip/Compress/RangeCoder/RangeCoder.h
@@ -14,7 +14,7 @@ const UInt32 kTopValue = (1 << kNumTopBits);
class CEncoder
{
- UInt32 _ffNum;
+ UInt32 _cacheSize;
Byte _cache;
public:
UInt64 Low;
@@ -28,7 +28,7 @@ public:
Stream.Init();
Low = 0;
Range = 0xFFFFFFFF;
- _ffNum = 0;
+ _cacheSize = 1;
_cache = 0;
}
@@ -54,36 +54,21 @@ public:
}
}
- /*
- void EncodeDirectBitsDiv(UInt32 value, UInt32 numTotalBits)
- {
- Low += value * (Range >>= numTotalBits);
- Normalize();
- }
-
- void EncodeDirectBitsDiv2(UInt32 value, UInt32 numTotalBits)
- {
- if (numTotalBits <= kNumBottomBits)
- EncodeDirectBitsDiv(value, numTotalBits);
- else
- {
- EncodeDirectBitsDiv(value >> kNumBottomBits, (numTotalBits - kNumBottomBits));
- EncodeDirectBitsDiv(value & ((1 << kBottomValueBits) - 1), kNumBottomBits);
- }
- }
- */
void ShiftLow()
{
- if (Low < (UInt32)0xFF000000 || UInt32(Low >> 32) == 1)
+ if ((UInt32)Low < (UInt32)0xFF000000 || (int)(Low >> 32) != 0)
{
- Stream.WriteByte(Byte(_cache + Byte(Low >> 32)));
- for (;_ffNum != 0; _ffNum--)
- Stream.WriteByte(Byte(0xFF + Byte(Low >> 32)));
- _cache = Byte(UInt32(Low) >> 24);
+ Byte temp = _cache;
+ do
+ {
+ Stream.WriteByte((Byte)(temp + (Byte)(Low >> 32)));
+ temp = 0xFF;
+ }
+ while(--_cacheSize != 0);
+ _cache = (Byte)((UInt32)Low >> 24);
}
- else
- _ffNum++;
- Low = UInt32(Low) << 8;
+ _cacheSize++;
+ Low = (UInt32)Low << 8;
}
void EncodeDirectBits(UInt32 value, int numTotalBits)
@@ -118,7 +103,7 @@ public:
}
}
- UInt64 GetProcessedSize() { return Stream.GetProcessedSize() + _ffNum; }
+ UInt64 GetProcessedSize() { return Stream.GetProcessedSize() + _cacheSize + 4; }
};
class CDecoder
@@ -162,26 +147,6 @@ public:
Normalize();
}
- /*
- UInt32 DecodeDirectBitsDiv(UInt32 numTotalBits)
- {
- Range >>= numTotalBits;
- UInt32 threshold = Code / Range;
- Code -= threshold * Range;
-
- Normalize();
- return threshold;
- }
-
- UInt32 DecodeDirectBitsDiv2(UInt32 numTotalBits)
- {
- if (numTotalBits <= kNumBottomBits)
- return DecodeDirectBitsDiv(numTotalBits);
- UInt32 result = DecodeDirectBitsDiv(numTotalBits - kNumBottomBits) << kNumBottomBits;
- return (result | DecodeDirectBitsDiv(kNumBottomBits));
- }
- */
-
UInt32 DecodeDirectBits(int numTotalBits)
{
UInt32 range = Range;
diff --git a/7zip/FileManager/PanelItemOpen.cpp b/7zip/FileManager/PanelItemOpen.cpp
index f16a14f1..19cb28ad 100755
--- a/7zip/FileManager/PanelItemOpen.cpp
+++ b/7zip/FileManager/PanelItemOpen.cpp
@@ -211,6 +211,10 @@ static HANDLE StartEditApplication(const UString &path, HWND window)
return 0;
}
+#ifndef _UNICODE
+typedef BOOL (WINAPI * ShellExecuteExWP)(LPSHELLEXECUTEINFOW lpExecInfo);
+#endif
+
static HANDLE StartApplication(const UString &path, HWND window)
{
UINT32 result;
@@ -228,7 +232,11 @@ static HANDLE StartApplication(const UString &path, HWND window)
execInfo.lpDirectory = NULL;
execInfo.nShow = SW_SHOWNORMAL;
execInfo.hProcess = 0;
- ::ShellExecuteExW(&execInfo);
+ ShellExecuteExWP shellExecuteExW = (ShellExecuteExWP)
+ ::GetProcAddress(::GetModuleHandleW(L"shell32.dll"), "ShellExecuteExW");
+ if (shellExecuteExW == 0)
+ return 0;
+ shellExecuteExW(&execInfo);
result = (UINT32)execInfo.hInstApp;
hProcess = execInfo.hProcess;
}
diff --git a/7zip/FileManager/PanelOperations.cpp b/7zip/FileManager/PanelOperations.cpp
index 3e5c85f6..0aa207d9 100755
--- a/7zip/FileManager/PanelOperations.cpp
+++ b/7zip/FileManager/PanelOperations.cpp
@@ -51,6 +51,10 @@ struct CThreadDelete
}
};
+#ifndef _UNICODE
+typedef int (WINAPI * SHFileOperationWP)(LPSHFILEOPSTRUCTW lpFileOp);
+#endif
+
void CPanel::DeleteItems(bool toRecycleBin)
{
CPanel::CDisableTimerProcessing disableTimerProcessing2(*this);
@@ -118,7 +122,16 @@ void CPanel::DeleteItems(bool toRecycleBin)
fo.fAnyOperationsAborted = FALSE;
fo.hNameMappings = 0;
fo.lpszProgressTitle = 0;
- int res = ::SHFileOperationW(&fo);
+ int res;
+ #ifdef _UNICODE
+ res = ::SHFileOperationW(&fo);
+ #else
+ SHFileOperationWP shFileOperationW = (SHFileOperationWP)
+ ::GetProcAddress(::GetModuleHandleW(L"shell32.dll"), "SHFileOperationW");
+ if (shFileOperationW == 0)
+ return;
+ res = shFileOperationW(&fo);
+ #endif
}
/*
if (fo.fAnyOperationsAborted)
diff --git a/7zip/FileManager/Resource/OverwriteDialog/resource.rc b/7zip/FileManager/Resource/OverwriteDialog/resource.rc
index 4503a37e..1a907955 100755
--- a/7zip/FileManager/Resource/OverwriteDialog/resource.rc
+++ b/7zip/FileManager/Resource/OverwriteDialog/resource.rc
@@ -27,10 +27,10 @@ BEGIN
LTEXT "Destination folder already contains processed file.", IDC_STATIC_OVERWRITE_HEADER, marg, 7, xSize2, 8
LTEXT "Would you like to replace the existing file", IDC_STATIC_OVERWRITE_QUESTION_BEGIN, marg, 28, xSize2, 8
ICON "", IDC_STATIC_OVERWRITE_OLD_FILE_ICON, marg, 44, iconSize, iconSize
- LTEXT "", IDC_STATIC_OVERWRITE_OLD_FILE_SIZE_TIME, fiXPos, 44, fiXSize, fiYSize
+ LTEXT "", IDC_STATIC_OVERWRITE_OLD_FILE_SIZE_TIME, fiXPos, 44, fiXSize, fiYSize, SS_NOPREFIX
LTEXT "with this one?",IDC_STATIC_OVERWRITE_QUESTION_END, marg, 98, xSize2, 8
ICON "",IDC_STATIC_OVERWRITE_NEW_FILE_ICON, marg, 114, iconSize, iconSize
- LTEXT "",IDC_STATIC_OVERWRITE_NEW_FILE_SIZE_TIME, fiXPos, 114, fiXSize, fiYSize
+ LTEXT "",IDC_STATIC_OVERWRITE_NEW_FILE_SIZE_TIME, fiXPos, 114, fiXSize, fiYSize, SS_NOPREFIX
PUSHBUTTON "&Yes", IDYES, 78, b2YPos, bXSize, bYSize
PUSHBUTTON "Yes to &All", IDC_BUTTON_OVERWRITE_YES_TO_ALL, 152, b2YPos, bXSize, bYSize
PUSHBUTTON "&No", IDNO, 226, b2YPos, bXSize, bYSize
diff --git a/7zip/FileManager/Resource/ProgressDialog2/resource.rc b/7zip/FileManager/Resource/ProgressDialog2/resource.rc
index 53f4aa59..98515ce3 100755
--- a/7zip/FileManager/Resource/ProgressDialog2/resource.rc
+++ b/7zip/FileManager/Resource/ProgressDialog2/resource.rc
@@ -42,7 +42,7 @@ BEGIN
RTEXT "", IDC_PROGRESS_REMAINING_VALUE, valPos1, yPos, valSize, 8
RTEXT "", IDC_PROGRESS_SPEED_TOTAL_VALUE, valPos2, marg, valSize, 8
RTEXT "", IDC_PROGRESS_SPEED_VALUE, valPos2, yPos, valSize, 8
- LTEXT "", IDC_PROGRESS_FILE_NAME, marg, yPos + 16, xSize2, 8
+ LTEXT "", IDC_PROGRESS_FILE_NAME, marg, yPos + 16, xSize2, 8, SS_NOPREFIX
CONTROL "Progress1", IDC_PROGRESS1, "msctls_progress32", PBS_SMOOTH | WS_BORDER,
marg, bYPos - 20, xSize2, 13
END
diff --git a/7zip/FileManager/SysIconUtils.cpp b/7zip/FileManager/SysIconUtils.cpp
index 36230610..0d337550 100755
--- a/7zip/FileManager/SysIconUtils.cpp
+++ b/7zip/FileManager/SysIconUtils.cpp
@@ -42,6 +42,33 @@ DWORD_PTR GetRealIconIndex(LPCTSTR path, UINT32 attributes, int &iconIndex)
return res;
}
+
+#ifndef _UNICODE
+typedef int (WINAPI * SHGetFileInfoWP)(LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags);
+
+struct CSHGetFileInfoInit
+{
+ SHGetFileInfoWP shGetFileInfoW;
+ CSHGetFileInfoInit()
+ {
+ shGetFileInfoW = (SHGetFileInfoWP)
+ ::GetProcAddress(::GetModuleHandleW(L"shell32.dll"), "SHGetFileInfoW");
+ }
+} g_SHGetFileInfoInit;
+#endif
+
+DWORD_PTR MySHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags)
+{
+ #ifdef _UNICODE
+ return SHGetFileInfoW(
+ #else
+ if (g_SHGetFileInfoInit.shGetFileInfoW == 0)
+ return 0;
+ return g_SHGetFileInfoInit.shGetFileInfoW(
+ #endif
+ pszPath, dwFileAttributes, psfi, cbFileInfo, uFlags);
+}
+
#ifndef _UNICODE
// static inline UINT GetCurrentCodePage() { return ::AreFileApisANSI() ? CP_ACP : CP_OEMCP; }
DWORD_PTR GetRealIconIndex(LPCWSTR path, UINT32 attributes, int &iconIndex)
@@ -49,7 +76,7 @@ DWORD_PTR GetRealIconIndex(LPCWSTR path, UINT32 attributes, int &iconIndex)
if(g_IsNT)
{
SHFILEINFOW shellInfo;
- DWORD_PTR res = ::SHGetFileInfoW(path, FILE_ATTRIBUTE_NORMAL | attributes, &shellInfo,
+ DWORD_PTR res = ::MySHGetFileInfoW(path, FILE_ATTRIBUTE_NORMAL | attributes, &shellInfo,
sizeof(shellInfo), SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX);
iconIndex = shellInfo.iIcon;
return res;
@@ -79,7 +106,7 @@ DWORD_PTR GetRealIconIndex(const UString &fileName, UINT32 attributes,
{
SHFILEINFOW shellInfo;
shellInfo.szTypeName[0] = 0;
- DWORD_PTR res = ::SHGetFileInfoW(fileName, FILE_ATTRIBUTE_NORMAL | attributes, &shellInfo,
+ DWORD_PTR res = ::MySHGetFileInfoW(fileName, FILE_ATTRIBUTE_NORMAL | attributes, &shellInfo,
sizeof(shellInfo), SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX
| SHGFI_TYPENAME);
typeName = shellInfo.szTypeName;
diff --git a/7zip/MyVersion.h b/7zip/MyVersion.h
index 287341a7..d88e3b7f 100755
--- a/7zip/MyVersion.h
+++ b/7zip/MyVersion.h
@@ -1,7 +1,7 @@
#define MY_VER_MAJOR 4
-#define MY_VER_MINOR 31
-#define MY_VERSION "4.31"
-#define MY_7ZIP_VERSION "7-Zip 4.31"
-#define MY_DATE "2005-12-04"
+#define MY_VER_MINOR 32
+#define MY_VERSION "4.32"
+#define MY_7ZIP_VERSION "7-Zip 4.32"
+#define MY_DATE "2005-12-09"
#define MY_COPYRIGHT "Copyright (c) 1999-2005 Igor Pavlov"
#define MY_VERSION_COPYRIGHT_DATE MY_VERSION " " MY_COPYRIGHT " " MY_DATE
diff --git a/DOC/7zip.nsi b/DOC/7zip.nsi
index 5aeb43fd..76786d21 100755
--- a/DOC/7zip.nsi
+++ b/DOC/7zip.nsi
@@ -2,7 +2,7 @@
;Defines
!define VERSION_MAJOR 4
-!define VERSION_MINOR 31
+!define VERSION_MINOR 32
!define VERSION_POSTFIX_FULL ""
!ifdef WIN64
!ifdef IA64
diff --git a/DOC/lzma.txt b/DOC/lzma.txt
index 38c82f89..47021022 100755
--- a/DOC/lzma.txt
+++ b/DOC/lzma.txt
@@ -1,10 +1,10 @@
-LZMA SDK 4.30
+LZMA SDK 4.32
-------------
-LZMA SDK 4.30 Copyright (C) 1999-2005 Igor Pavlov
+LZMA SDK 4.32 Copyright (C) 1999-2005 Igor Pavlov
-LZMA SDK provides developers with documentation, source code,
-and sample code necessary to write software that uses LZMA compression.
+LZMA SDK provides the documentation, samples, header files, libraries,
+and tools you need to develop applications that use LZMA compression.
LZMA is default and general compression method of 7z format
in 7-Zip compression program (www.7-zip.org). LZMA provides high
@@ -20,15 +20,24 @@ decompressing.
LICENSE
-------
-LZMA SDK is licensed under two licenses:
+LZMA SDK is available under any of the following licenses:
1) GNU Lesser General Public License (GNU LGPL)
2) Common Public License (CPL)
+3) Simplified license for unmodified code (read SPECIAL EXCEPTION)
+4) Proprietary license
-It means that you can select one of these two licenses and
-follow rules of that license.
+It means that you can select one of these four options and follow rules of that license.
+
+
+1,2) GNU LGPL and CPL licenses are pretty similar and both these
+licenses are classified as
+ - "Free software licenses" at http://www.gnu.org/
+ - "OSI-approved" at http://www.opensource.org/
+
+
+3) SPECIAL EXCEPTION
-SPECIAL EXCEPTION
Igor Pavlov, as the author of this code, expressly permits you
to statically or dynamically link your code (or bind by name)
to the files from LZMA SDK without subjecting your linked
@@ -36,7 +45,6 @@ code to the terms of the CPL or GNU LGPL.
Any modifications or additions to files from LZMA SDK, however,
are subject to the GNU LGPL or CPL terms.
-
SPECIAL EXCEPTION allows you to use LZMA SDK in applications with closed code,
while you keep LZMA SDK code unmodified.
@@ -50,17 +58,11 @@ of LZMA SDK as update for previous versions.
SPECIAL EXCEPTION #3: Igor Pavlov, as the author of this code, expressly permits
-you to use code of examples (LzmaTest.c, LzmaStateTest.c, LzmaAlone.cpp) as
-public domain code.
-
-
-GNU LGPL and CPL licenses are pretty similar and both these
-licenses are classified as
-
-1) "Free software licenses" at http://www.gnu.org/
-2) "OSI-approved" at http://www.opensource.org/
+you to use code of examples (LzmaTest.c, LzmaStateTest.c, LzmaAlone.cpp,
+LzmaAlone.cs, LzmaAlone.java) as public domain code.
+4) Proprietary license
LZMA SDK also can be available under a proprietary license which
can include:
@@ -87,11 +89,11 @@ LZMA SDK Contents
LZMA SDK includes:
- - C++ source code of LZMA Encoder and Decoder
- - C++ source code for file->file LZMA compressing and decompressing
+ - C++ source code of LZMA compressing and decompressing
- ANSI-C compatible source code for LZMA decompressing
+ - C# source code for LZMA compressing and decompressing
+ - Java source code for LZMA compressing and decompressing
- Compiled file->file LZMA compressing/decompressing program for Windows system
- - C# source code for file->file LZMA compressing and decompressing
ANSI-C LZMA decompression code was ported from original C++ sources to C.
Also it was simplified and optimized for code size.
@@ -115,6 +117,7 @@ Files
---------------------
C - C / CPP source code
CS - C# source code
+Java - Java source code
lzma.txt - LZMA SDK description (this file)
7zFormat.txt - 7z Format description
7zC.txt - 7z ANSI-C Decoder description (this file)
@@ -162,8 +165,14 @@ CS - C# files
LzmaAlone - file->file LZMA compression/decompression
RangeCoder - Range Coder (special code of compression/decompression)
-Source code of LZMA SDK is only part of big 7-Zip project. That is
-why LZMA SDK uses such complex source code structure.
+Java - Java files
+ SevenZip
+ Compression - files related to compression/decompression
+ LZ - files related to LZ (Lempel-Ziv) compression algorithm
+ LZMA - LZMA compression/decompression
+ RangeCoder - Range Coder (special code of compression/decompression)
+
+C/C++ source code of LZMA SDK is part of 7-Zip project.
You can find ANSI-C LZMA decompressing code at folder
C/7zip/Compress/LZMA_C
diff --git a/DOC/readme.txt b/DOC/readme.txt
index 5ae60cdf..c76738d9 100755
--- a/DOC/readme.txt
+++ b/DOC/readme.txt
@@ -1,4 +1,4 @@
-7-Zip 4.31 Sources
+7-Zip 4.32 Sources
------------------
7-Zip is a file archiver for Windows 95/98/ME/NT/2000/2003/XP.
diff --git a/Windows/Shell.cpp b/Windows/Shell.cpp
index 490eb199..76868845 100755
--- a/Windows/Shell.cpp
+++ b/Windows/Shell.cpp
@@ -152,6 +152,7 @@ int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM data)
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, data);
break;
}
+ /*
case BFFM_SELCHANGED:
{
TCHAR dir[MAX_PATH];
@@ -161,6 +162,7 @@ int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM data)
SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, (LPARAM)TEXT(""));
break;
}
+ */
default:
break;
}
@@ -193,17 +195,30 @@ bool BrowseForFolder(HWND owner, LPCTSTR title,
#ifndef _UNICODE
+typedef BOOL (WINAPI * SHGetPathFromIDListWP)(LPCITEMIDLIST pidl, LPWSTR pszPath);
+
bool GetPathFromIDList(LPCITEMIDLIST itemIDList, UString &path)
{
- bool result = BOOLToBool(::SHGetPathFromIDListW(itemIDList, path.GetBuffer(MAX_PATH * 2)));
+ path.Empty();
+ SHGetPathFromIDListWP shGetPathFromIDListW = (SHGetPathFromIDListWP)
+ ::GetProcAddress(::GetModuleHandleW(L"shell32.dll"), "SHGetPathFromIDListW");
+ if (shGetPathFromIDListW == 0)
+ return false;
+ bool result = BOOLToBool(shGetPathFromIDListW(itemIDList, path.GetBuffer(MAX_PATH * 2)));
path.ReleaseBuffer();
return result;
}
+typedef LPITEMIDLIST (WINAPI * SHBrowseForFolderWP)(LPBROWSEINFOW lpbi);
+
bool BrowseForFolder(LPBROWSEINFOW browseInfo, UString &resultPath)
{
NWindows::NCOM::CComInitializer comInitializer;
- LPITEMIDLIST itemIDList = ::SHBrowseForFolderW(browseInfo);
+ SHBrowseForFolderWP shBrowseForFolderW = (SHBrowseForFolderWP)
+ ::GetProcAddress(::GetModuleHandleW(L"shell32.dll"), "SHBrowseForFolderW");
+ if (shBrowseForFolderW == 0)
+ return false;
+ LPITEMIDLIST itemIDList = shBrowseForFolderW(browseInfo);
if (itemIDList == NULL)
return false;
CItemIDList itemIDListHolder;
@@ -221,15 +236,18 @@ int CALLBACK BrowseCallbackProc2(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM data)
SendMessageW(hwnd, BFFM_SETSELECTIONW, TRUE, data);
break;
}
+ /*
case BFFM_SELCHANGED:
{
wchar_t dir[MAX_PATH * 2];
- if (::SHGetPathFromIDListW((LPITEMIDLIST) lp , dir))
+
+ if (shGetPathFromIDListW((LPITEMIDLIST)lp , dir))
SendMessageW(hwnd, BFFM_SETSTATUSTEXTW, 0, (LPARAM)dir);
else
SendMessageW(hwnd, BFFM_SETSTATUSTEXTW, 0, (LPARAM)L"");
break;
}
+ */
default:
break;
}
@@ -256,11 +274,15 @@ bool BrowseForFolder(HWND owner, LPCWSTR title, LPCWSTR initialFolder, UString &
{
if (g_IsNT)
return BrowseForFolder(owner, title,
- BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT, initialFolder, resultPath);
+ BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS
+ // | BIF_STATUSTEXT // This flag is not supported when BIF_NEWDIALOGSTYLE is specified.
+ , initialFolder, resultPath);
// BIF_STATUSTEXT; BIF_USENEWUI (Version 5.0)
CSysString s;
bool res = BrowseForFolder(owner, GetSystemString(title),
- BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT, GetSystemString(initialFolder), s);
+ BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS
+ // | BIF_STATUSTEXT // This flag is not supported when BIF_NEWDIALOGSTYLE is specified.
+ , GetSystemString(initialFolder), s);
resultPath = GetUnicodeString(s);
return res;
}