X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/94534bf8db5c1f5fefc9682bcda0f6e84d3e6667..b9efe021b554fa3967d1442cf758435c5cd5ae8f:/src/msw/dlmsw.cpp diff --git a/src/msw/dlmsw.cpp b/src/msw/dlmsw.cpp index 7064a81477..2e6d519edd 100644 --- a/src/msw/dlmsw.cpp +++ b/src/msw/dlmsw.cpp @@ -79,8 +79,15 @@ public: wxVersionDLL *verDLL; }; + // TODO: fix EnumerateLoadedModules() to use EnumerateLoadedModules64() + #ifdef __WIN64__ + typedef DWORD64 DWORD_32_64; + #else + typedef DWORD DWORD_32_64; + #endif + static BOOL CALLBACK - EnumModulesProc(PSTR name, DWORD base, ULONG size, void *data); + EnumModulesProc(PSTR name, DWORD_32_64 base, ULONG size, void *data); }; // ---------------------------------------------------------------------------- @@ -97,7 +104,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; @@ -117,12 +124,14 @@ HMODULE wxGetModuleHandle(const char *name, void *addr) // flags are GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | // GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS HMODULE hmod; - if ( s_pfnGetModuleHandleEx(6, (LPCTSTR)addr, &hmod) && hmod ) + if ( s_pfnGetModuleHandleEx(6, (char *)addr, &hmod) && hmod ) 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)); } // ============================================================================ @@ -207,7 +216,7 @@ wxString wxVersionDLL::GetFileVersion(const wxString& filename) const /* static */ BOOL CALLBACK wxDynamicLibraryDetailsCreator::EnumModulesProc(PSTR name, - DWORD base, + DWORD_32_64 base, ULONG size, void *data) { @@ -242,6 +251,15 @@ wxDynamicLibraryDetailsCreator::EnumModulesProc(PSTR name, // wxDynamicLibrary implementation // ============================================================================ +// ---------------------------------------------------------------------------- +// misc functions +// ---------------------------------------------------------------------------- + +wxDllType wxDynamicLibrary::GetProgramHandle() +{ + return (wxDllType)::GetModuleHandle(NULL); +} + // ---------------------------------------------------------------------------- // loading/unloading DLLs // ---------------------------------------------------------------------------- @@ -262,7 +280,13 @@ void wxDynamicLibrary::Unload(wxDllType handle) /* static */ void *wxDynamicLibrary::RawGetSymbol(wxDllType handle, const wxString& name) { - return ::GetProcAddress(handle, name.ToAscii()); + return (void *)::GetProcAddress(handle, +#ifdef __WXWINCE__ + name.c_str() +#else + name.ToAscii() +#endif // __WXWINCE__ + ); } // ----------------------------------------------------------------------------