X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6bfc18d01649c47eb2157f1333d8c189be83ee4d..574be073c070a9bbe81ad68e98187b0b9e82c2df:/interface/wx/module.h diff --git a/interface/wx/module.h b/interface/wx/module.h index 4257e35be6..a6a091e613 100644 --- a/interface/wx/module.h +++ b/interface/wx/module.h @@ -14,19 +14,19 @@ 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 @@ -73,7 +73,7 @@ @endcode @library{wxbase} - @category{FIXME} + @category{appmanagement} */ 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); };