-// ----------------------------------------------------------------------------
-// private functions
-// ----------------------------------------------------------------------------
-
-// return the module handle for the given base name
-static
-HMODULE wxGetModuleHandle(const char *name, void *addr)
-{
- // we want to use GetModuleHandleEx() instead of usual GetModuleHandle()
- // because the former works correctly for comctl32.dll while the latter
- // returns NULL when comctl32.dll version 6 is used under XP (note that
- // GetModuleHandleEx() is only available under XP and later, coincidence?)
-
- // check if we can use GetModuleHandleEx
- typedef BOOL (WINAPI *GetModuleHandleEx_t)(DWORD, LPCTSTR, HMODULE *);
-
- static const GetModuleHandleEx_t INVALID_FUNC_PTR = (GetModuleHandleEx_t)-1;
-
- static GetModuleHandleEx_t s_pfnGetModuleHandleEx = INVALID_FUNC_PTR;
- if ( s_pfnGetModuleHandleEx == INVALID_FUNC_PTR )
- {
- wxDynamicLibrary dll(_T("kernel32.dll"), wxDL_VERBATIM);
- s_pfnGetModuleHandleEx =
- (GetModuleHandleEx_t)dll.RawGetSymbol(_T("GetModuleHandleExA"));
-
- // dll object can be destroyed, kernel32.dll won't be unloaded anyhow
- }
-
- // get module handle from its address
- if ( s_pfnGetModuleHandleEx )
- {
- // flags are GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT |
- // GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
- HMODULE hmod;
- if ( s_pfnGetModuleHandleEx(6, (char *)addr, &hmod) && hmod )
- return hmod;
- }
-
- // if failed, try by name
- return ::GetModuleHandleA(name);
-}
-