]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dlmsw.cpp
Add comments explaining the workaround for mingw 3.2.3
[wxWidgets.git] / src / msw / dlmsw.cpp
index f0f1076135f4d200c0038ac9cc9198bb69130c86..aebf3e5165e6d98f4aa18a6073ed3ba2177c3dd2 100644 (file)
@@ -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;
 }