From 780d7317eda90f5f2ac353f6b7a72142d4cd3180 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Tue, 17 Jan 2006 09:46:27 +0000 Subject: [PATCH] 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 --- src/msw/stdpaths.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/msw/stdpaths.cpp b/src/msw/stdpaths.cpp index d0f397e00a..6bf5c71422 100644 --- a/src/msw/stdpaths.cpp +++ b/src/msw/stdpaths.cpp @@ -106,35 +106,45 @@ static ShellFunctions gs_shellFuncs; static void ResolveShellFunctions() { - // 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 - +#ifdef __WXWINCE__ + wxString shellDllName(_T("coredll")); +#else // first check for SHGetFolderPath (shell32.dll 5.0) - wxDynamicLibrary dllShell32(_T("shell32")); - if ( !dllShell32.IsLoaded() ) + wxString shellDllName(_T("shell32")); +#endif + + wxDynamicLibrary dllShellFunctions( shellDllName ); + if ( !dllShellFunctions.IsLoaded() ) { - wxLogTrace(TRACE_MASK, _T("Failed to load shell32.dll")); + 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; + #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), -- 2.45.2