wxDocManager
The wxDocManager class is part of the document/view framework supported by wxWidgets, and cooperates with the wxView, wxDocument and wxDocTemplate classes.
A wxDocManager instance coordinates documents, views and document templates. It keeps a list of document and template instances, and much functionality
is routed through this object, such as providing selection and file dialogs. The application can use this class 'as is' or derive a class and override some
members to extend or change the functionality. Create an instance of this class near the beginning of your application initialization, before any documents,
views or templates are manipulated.
There may be multiple wxDocManager instances in an application.
wxCommand
wxCommand is a base class for modelling an application command, which is an action usually performed by selecting a menu item, pressing a toolbar button
or any other means provided by the application to change the data or view.
Instead of the application functionality being scattered around switch statements and functions in a way that may be hard to read and maintain, the functionality
for a command is explicitly represented as an object which can be manipulated by a framework or application. When a user interface event occurs, the application
submits a command to a wxCommandProcessor object to execute and store.
The wxWidgets document/view framework handles Undo and Redo by use of wxCommand and wxCommandProcessor objects. You might find further uses for wxCommand,
such as implementing a macro facility that stores, loads and replays commands.
An application can derive a new class for every command, or, more likely, use one class parameterized with an integer or string command identifier.
wxFileHistory
wxFileHistory encapsulates functionality to record the last few files visited, and to allow the user to quickly load these files using the list appended to
the File menu.
Although wxFileHistory is used by wxDocManager, it can be used independently. You may wish to derive from it to allow different behaviour, such as popping up
a scrolling list of files.
By calling wxFileHistory::UseMenu() you can associate a file menu with the file history. The menu will then be used for appending filenames that are added to
the history. Please notice that currently if the history already contained filenames when UseMenu() is called (e.g. when initializing a second MDI child frame),
the menu is not automatically initialized with the existing filenames in the history and so you need to call AddFilesToMenu() after UseMenu() explicitly in order
to initialize the menu with the existing list of MRU files. (otherwise an assertion failure is raised in debug builds). The filenames are appended using menu
identifiers in the range wxID_FILE1 to wxID_FILE9.
In order to respond to a file load command from one of these identifiers, you need to handle them using an event handler, for example:
BEGIN_EVENT_TABLE(wxDocParentFrame, wxFrame)
EVT_MENU(wxID_EXIT, wxDocParentFrame::OnExit)
EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, wxDocParentFrame::OnMRUFile)
END_EVENT_TABLE()
void wxDocParentFrame::OnExit(wxCommandEvent& WXUNUSED(event))
{
Close();
}
void wxDocParentFrame::OnMRUFile(wxCommandEvent& event)
{
wxString f(m_docManager->GetHistoryFile(event.GetId() - wxID_FILE1));
if (!f.empty())
(void)m_docManager->CreateDocument(f, wxDOC_SILENT);
}
07-10
452
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
09-01
09-01