X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e7f28a5864ef3e6bacbfa8e96345e02d65e2b333..69659fd770f615210efac4b4fa741b3ad6223616:/src/msw/dlmsw.cpp diff --git a/src/msw/dlmsw.cpp b/src/msw/dlmsw.cpp index 2e6d519edd..18a819d796 100644 --- a/src/msw/dlmsw.cpp +++ b/src/msw/dlmsw.cpp @@ -28,7 +28,7 @@ #include "wx/msw/private.h" #include "wx/msw/debughlp.h" -const wxChar *wxDynamicLibrary::ms_dllext = _T(".dll"); +const wxString wxDynamicLibrary::ms_dllext(_T(".dll")); // ---------------------------------------------------------------------------- // private classes @@ -79,6 +79,16 @@ public: wxVersionDLL *verDLL; }; + // the declared type of the first EnumModulesProc() parameter changed in + // recent SDK versions and is no PCSTR instead of old PSTR, we know that + // it's const in version 11 and non-const in version 8 included with VC8 + // (and earlier), suppose that it's only changed in version 11 + #if defined(API_VERSION_NUMBER) && API_VERSION_NUMBER >= 11 + typedef PCSTR NameStr_t; + #else + typedef PSTR NameStr_t; + #endif + // TODO: fix EnumerateLoadedModules() to use EnumerateLoadedModules64() #ifdef __WIN64__ typedef DWORD64 DWORD_32_64; @@ -87,7 +97,7 @@ public: #endif static BOOL CALLBACK - EnumModulesProc(PSTR name, DWORD_32_64 base, ULONG size, void *data); + EnumModulesProc(NameStr_t name, DWORD_32_64 base, ULONG size, void *data); }; // ---------------------------------------------------------------------------- @@ -131,7 +141,11 @@ HMODULE wxGetModuleHandle(const char *name, void *addr) // Windows CE only has Unicode API, so even we have an ANSI string here, we // still need to use GetModuleHandleW() there and so do it everywhere to // avoid #ifdefs -- this code is not performance-critical anyhow... - return ::GetModuleHandle(wxString::FromAscii((char *)name)); +#ifdef __WINCE__ + return ::GetModuleHandleW(wxConvLibc.cMB2WC(name).data()); +#else + return ::GetModuleHandleA((char *)name); +#endif } // ============================================================================ @@ -181,7 +195,7 @@ wxString wxVersionDLL::GetFileVersion(const wxString& filename) const wxString ver; if ( m_dll.IsLoaded() ) { - wxChar *pc = wx_const_cast(wxChar *, filename.c_str()); + wxChar *pc = wx_const_cast(wxChar *, filename.wx_str()); DWORD dummy; DWORD sizeVerInfo = m_pfnGetFileVersionInfoSize(pc, &dummy); @@ -215,7 +229,7 @@ wxString wxVersionDLL::GetFileVersion(const wxString& filename) const /* static */ BOOL CALLBACK -wxDynamicLibraryDetailsCreator::EnumModulesProc(PSTR name, +wxDynamicLibraryDetailsCreator::EnumModulesProc(NameStr_t name, DWORD_32_64 base, ULONG size, void *data) @@ -268,7 +282,7 @@ wxDllType wxDynamicLibrary::GetProgramHandle() wxDllType wxDynamicLibrary::RawLoad(const wxString& libname, int WXUNUSED(flags)) { - return ::LoadLibrary(libname); + return ::LoadLibrary(libname.wx_str()); } /* static */