X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/12f5e1e78fe906050ff2fee9529476db332633f0..97929f6bd992c185834656b5e3fff5a50ba7360a:/interface/wx/module.h diff --git a/interface/wx/module.h b/interface/wx/module.h index c8f1ff78c4..289530f872 100644 --- a/interface/wx/module.h +++ b/interface/wx/module.h @@ -14,26 +14,26 @@ automatically called on wxWidgets startup and exit. To define a new kind of module, derive a class from wxModule, override the - wxModule::OnInit and wxModule::OnExit - functions, and add the DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS to - header and implementation files (which can be the same file). On - initialization, wxWidgets will find all classes derived from wxModule, create - an instance of each, and call each OnInit function. On exit, wxWidgets will - call the OnExit function for each module instance. + wxModule::OnInit and wxModule::OnExit functions, and add the + DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS to header and implementation + files (which can be the same file). + On initialization, wxWidgets will find all classes derived from wxModule, create + an instance of each, and call each wxModule::OnInit function. On exit, wxWidgets + will call the wxModule::OnExit function for each module instance. Note that your module class does not have to be in a header file. For example: @code - // A module to allow DDE initialization/cleanup + // A module to allow DDE initialization/cleanup // without calling these functions from app.cpp or from // the user's application. class wxDDEModule: public wxModule { public: wxDDEModule() { } - virtual bool OnInit() { wxDDEInitialize(); return @true; }; + virtual bool OnInit() { wxDDEInitialize(); return true; }; virtual void OnExit() { wxDDECleanUp(); }; private: @@ -73,7 +73,7 @@ @endcode @library{wxbase} - @category{FIXME} + @category{misc} */ class wxModule : public wxObject { @@ -86,40 +86,46 @@ public: /** Destructor. */ - ~wxModule(); + virtual ~wxModule(); - //@{ /** - Call this function from the constructor of the derived class. @a dep must be - the CLASSINFO() of a wxModule-derived class and the - corresponding module will be loaded before and unloaded after - this module. - The second version of this function allows a dependency to be added by - name without access to the class info. This is useful when a module is - declared entirely in a source file and there is no header for the declaration - of the module needed by CLASSINFO(), however errors are - not detected until run-time, instead of compile-time, then. - Note that circular dependencies are detected and result in a fatal error. + Provide this function with appropriate cleanup for your module. + */ + virtual void OnExit() = 0; + + /** + Provide this function with appropriate initialization for your module. + If the function returns @false, wxWidgets will exit immediately. + */ + virtual bool OnInit() = 0; + +protected: + + /** + Call this function from the constructor of the derived class. + + @a dep must be the CLASSINFO() of a wxModule-derived class and the + corresponding module will be loaded before and unloaded after this module. @param dep The class information object for the dependent module. - @param classname - The class name of the dependent module. */ void AddDependency(wxClassInfo* dep); - void AddDependency(const char* classname); - //@} /** - Provide this function with appropriate cleanup for your module. - */ - virtual void OnExit(); + Call this function from the constructor of the derived class. - /** - Provide this function with appropriate initialization for your module. If the - function - returns @false, wxWidgets will exit immediately. + This overload allows a dependency to be added by name without access to + the class info. + + This is useful when a module is declared entirely in a source file and + there is no header for the declaration of the module needed by CLASSINFO(), + however errors are not detected until run-time, instead of compile-time, then. + Note that circular dependencies are detected and result in a fatal error. + + @param classname + The class name of the dependent module. */ - virtual bool OnInit(); + void AddDependency(const char* classname); };