X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/defbed48e78f4e84b35f62c2c1b7fd58d740501c..2b9a7d4cc2f5f55df3d83f7cf2160cf9a509a4f2:/src/msw/dlmsw.cpp diff --git a/src/msw/dlmsw.cpp b/src/msw/dlmsw.cpp index f0f1076135..aebf3e5165 100644 --- a/src/msw/dlmsw.cpp +++ b/src/msw/dlmsw.cpp @@ -97,7 +97,7 @@ HMODULE wxGetModuleHandle(const char *name, void *addr) // GetModuleHandleEx() is only available under XP and later, coincidence?) // check if we can use GetModuleHandleEx - typedef BOOL (WINAPI *GetModuleHandleEx_t)(DWORD, LPCTSTR, HMODULE *); + typedef BOOL (WINAPI *GetModuleHandleEx_t)(DWORD, LPCSTR, HMODULE *); static const GetModuleHandleEx_t INVALID_FUNC_PTR = (GetModuleHandleEx_t)-1; @@ -121,8 +121,10 @@ HMODULE wxGetModuleHandle(const char *name, void *addr) return hmod; } - // if failed, try by name - return ::GetModuleHandleA(name); + // 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)); } // ============================================================================ @@ -242,12 +244,22 @@ wxDynamicLibraryDetailsCreator::EnumModulesProc(PSTR name, // wxDynamicLibrary implementation // ============================================================================ +// ---------------------------------------------------------------------------- +// misc functions +// ---------------------------------------------------------------------------- + +wxDllType wxDynamicLibrary::GetProgramHandle() +{ + return (wxDllType)::GetModuleHandle(NULL); +} + // ---------------------------------------------------------------------------- // loading/unloading DLLs // ---------------------------------------------------------------------------- /* static */ -wxDllType wxDynamicLibrary::RawLoad(const wxString& libname) +wxDllType +wxDynamicLibrary::RawLoad(const wxString& libname, int WXUNUSED(flags)) { return ::LoadLibrary(libname); } @@ -261,7 +273,13 @@ void wxDynamicLibrary::Unload(wxDllType handle) /* static */ void *wxDynamicLibrary::RawGetSymbol(wxDllType handle, const wxString& name) { - return ::GetProcAddress(handle, name); + return (void *)::GetProcAddress(handle, +#ifdef __WXWINCE__ + name.c_str() +#else + name.ToAscii() +#endif // __WXWINCE__ + ); } // ---------------------------------------------------------------------------- @@ -273,6 +291,7 @@ wxDynamicLibraryDetailsArray wxDynamicLibrary::ListLoaded() { wxDynamicLibraryDetailsArray dlls; +#if wxUSE_DBGHELP if ( wxDbgHelpDLL::Init() ) { // prepare to use functions for version info extraction @@ -292,6 +311,7 @@ wxDynamicLibraryDetailsArray wxDynamicLibrary::ListLoaded() wxLogLastError(_T("EnumerateLoadedModules")); } } +#endif // wxUSE_DBGHELP return dlls; }