Applied patch [ 1385822 ] fixed stdpaths get folder path on WinCE
Vince Harron git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36918 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -106,35 +106,45 @@ static ShellFunctions gs_shellFuncs;
|
|||||||
|
|
||||||
static void ResolveShellFunctions()
|
static void ResolveShellFunctions()
|
||||||
{
|
{
|
||||||
|
// start with the newest functions, fall back to the oldest ones
|
||||||
|
#ifdef __WXWINCE__
|
||||||
|
wxString shellDllName(_T("coredll"));
|
||||||
|
#else
|
||||||
|
// first check for SHGetFolderPath (shell32.dll 5.0)
|
||||||
|
wxString shellDllName(_T("shell32"));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wxDynamicLibrary dllShellFunctions( shellDllName );
|
||||||
|
if ( !dllShellFunctions.IsLoaded() )
|
||||||
|
{
|
||||||
|
wxString traceMessage = wxString::Format( _T("Failed to load %s.dll"), shellDllName );
|
||||||
|
wxLogTrace(TRACE_MASK, traceMessage );
|
||||||
|
}
|
||||||
|
|
||||||
// don't give errors if the functions are unavailable, we're ready to deal
|
// don't give errors if the functions are unavailable, we're ready to deal
|
||||||
// with this
|
// with this
|
||||||
wxLogNull noLog;
|
wxLogNull noLog;
|
||||||
|
|
||||||
// start with the newest functions, fall back to the oldest ones
|
|
||||||
|
|
||||||
// first check for SHGetFolderPath (shell32.dll 5.0)
|
|
||||||
wxDynamicLibrary dllShell32(_T("shell32"));
|
|
||||||
if ( !dllShell32.IsLoaded() )
|
|
||||||
{
|
|
||||||
wxLogTrace(TRACE_MASK, _T("Failed to load shell32.dll"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
static const wchar_t UNICODE_SUFFIX = L'W';
|
#ifdef __WXWINCE__
|
||||||
|
static const wchar_t UNICODE_SUFFIX = L''; // WinCE SH functions don't seem to have 'W'
|
||||||
|
#else
|
||||||
|
static const wchar_t UNICODE_SUFFIX = L'W';
|
||||||
|
#endif
|
||||||
#else // !Unicode
|
#else // !Unicode
|
||||||
static const char UNICODE_SUFFIX = 'A';
|
static const char UNICODE_SUFFIX = 'A';
|
||||||
#endif // Unicode/!Unicode
|
#endif // Unicode/!Unicode
|
||||||
|
|
||||||
wxString funcname(_T("SHGetFolderPath"));
|
wxString funcname(_T("SHGetFolderPath"));
|
||||||
gs_shellFuncs.pSHGetFolderPath =
|
gs_shellFuncs.pSHGetFolderPath =
|
||||||
(SHGetFolderPath_t)dllShell32.GetSymbol(funcname + UNICODE_SUFFIX);
|
(SHGetFolderPath_t)dllShellFunctions.GetSymbol(funcname + UNICODE_SUFFIX);
|
||||||
|
|
||||||
// then for SHGetSpecialFolderPath (shell32.dll 4.71)
|
// then for SHGetSpecialFolderPath (shell32.dll 4.71)
|
||||||
if ( !gs_shellFuncs.pSHGetFolderPath )
|
if ( !gs_shellFuncs.pSHGetFolderPath )
|
||||||
{
|
{
|
||||||
funcname = _T("SHGetSpecialFolderPath");
|
funcname = _T("SHGetSpecialFolderPath");
|
||||||
gs_shellFuncs.pSHGetSpecialFolderPath = (SHGetSpecialFolderPath_t)
|
gs_shellFuncs.pSHGetSpecialFolderPath = (SHGetSpecialFolderPath_t)
|
||||||
dllShell32.GetSymbol(funcname + UNICODE_SUFFIX);
|
dllShellFunctions.GetSymbol(funcname + UNICODE_SUFFIX);
|
||||||
}
|
}
|
||||||
|
|
||||||
// finally we fall back on SHGetSpecialFolderLocation (shell32.dll 4.0),
|
// finally we fall back on SHGetSpecialFolderLocation (shell32.dll 4.0),
|
||||||
|
Reference in New Issue
Block a user