X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e2d4ce7d3681c876f69126c0a63e5caebbab62dd..7e08bc5acd8ee4e2f0756f50bf98937a118f9951:/include/wx/dynlib.h diff --git a/include/wx/dynlib.h b/include/wx/dynlib.h index 3d31beeb80..3ac5dfa24c 100644 --- a/include/wx/dynlib.h +++ b/include/wx/dynlib.h @@ -80,7 +80,9 @@ enum wxDLFlags wxDL_QUIET = 0x00000020, // don't log an error if failed to load - // this flag is dangerous, for internal use of wxMSW only, don't use + // this flag is dangerous, for internal use of wxMSW only, don't use at all + // and especially don't use directly, use wxLoadedDLL instead if you really + // do need it wxDL_GET_LOADED = 0x00000040, // Win32 only: return handle of already // loaded DLL or NULL otherwise; Unload() // should not be called so don't forget to @@ -373,9 +375,31 @@ protected: // no copy ctor/assignment operators (or we'd try to unload the library // twice) - DECLARE_NO_COPY_CLASS(wxDynamicLibrary) + wxDECLARE_NO_COPY_CLASS(wxDynamicLibrary); }; +#ifdef __WXMSW__ + +// ---------------------------------------------------------------------------- +// wxLoadedDLL is a MSW-only internal helper class allowing to dynamically bind +// to a DLL already loaded into the project address space +// ---------------------------------------------------------------------------- + +class wxLoadedDLL : public wxDynamicLibrary +{ +public: + wxLoadedDLL(const wxString& dllname) + : wxDynamicLibrary(dllname, wxDL_GET_LOADED | wxDL_VERBATIM | wxDL_QUIET) + { + } + + ~wxLoadedDLL() + { + Detach(); + } +}; + +#endif // __WXMSW__ // ---------------------------------------------------------------------------- // Interesting defines