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:
Julian Smart 2006-01-17 09:46:27 +00:00
parent f1a777fee4
commit 780d7317ed

View File

@ -106,35 +106,45 @@ static ShellFunctions gs_shellFuncs;
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
// with this
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
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
static const char UNICODE_SUFFIX = 'A';
#endif // Unicode/!Unicode
wxString funcname(_T("SHGetFolderPath"));
gs_shellFuncs.pSHGetFolderPath =
(SHGetFolderPath_t)dllShell32.GetSymbol(funcname + UNICODE_SUFFIX);
(SHGetFolderPath_t)dllShellFunctions.GetSymbol(funcname + UNICODE_SUFFIX);
// then for SHGetSpecialFolderPath (shell32.dll 4.71)
if ( !gs_shellFuncs.pSHGetFolderPath )
{
funcname = _T("SHGetSpecialFolderPath");
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),