19.2 文档/视图框架的其它能力
上一节中我们通过一个简单的例子演示了使用文档视图框架所必须的一些步骤,这一节我们来讨论这个框架中一些更深入的话题。
标准标识符
文档/视图系统支持很多默认的标识符,比如 wxID_OPEN, wxID_CLOSE, wxID_CLOSE_ALL, wxID_REVERT, wxID_NEW, wxID_SAVE, wxID_SAVEAS, wxID_UNDO, wxID_REDO, wxID_PRINT 和 wxID_PREVIEW,为了更大的发挥框架的威力,你应该尽可能在你的菜单或者工具栏中使用这些标准的标识符.这些标识符的处理函数大多已经在 wxDocManager 类中实现,比如 OnFileOpen,OnFileClose 和 OnUndo 等.对应的处理函数将自动调用当前文档相应的处理函数.如果你愿意,你当然可以在你的 frame 窗口类或者 wxDocManager 的派生类中重载这些处理函数,不过通常都没有这个必要。
打印和打印预览
默认情况下,wxID_PRINT 和 wxID_PREVIEW 使用标准的 wxDocPrintout 类来实现打印和打印预览,以便直接重用 wxView:: OnDraw 函数.然而,这种用法的一个最大的缺陷是仅适用于只有一页的文档的情形.因此你可以创建你自己的 wxPrintout 类来重载标准的 wxID_PRINT 和 wxID_PREVIEW 处理,最快速的方法的方法当然是使用 wxHtmlEasyPrinting 类,我们在第 12 章,"高级窗口类"的"HTML 打印"小结有比较详细的介绍。
文件访问历史
当你的应用程序初始化的时候,可以直接通过 wxConfig 对象使用 wxDocManager::FileHistoryLoad 函数在文件菜单的最下方加载一个文件访问历史列表,也可以在应用程序退出之前使用 wxDocManager::FileHistorySave 函数保存这个列表.比如,要加载文件访问历史,你可以这样做:
// 加载文件访问历史
wxConfig config(wxT("MyApp"), wxT("MyCompany"));
config.SetPath(wxT("FileHistory"));
m_docManager->FileHistoryLoad(config);
config.SetPath(wxT("/"));
如果你是在创建主窗口或者其主菜单之前加载的文件访问历史,你可以显式的通过 wxDocManager::FileHistoryAddFilesToMenu 函数将其增加在菜单中。
你也可以通过 wxFileHistory 类或者你自己的方法来实现文件访问历史功能,比如有时候你可能需要为每个文档窗口实现不同的文件访问历史。
显式创建文档类
有时候你需要显式的创建一个文档对象,比如说,有时候你想打开上次显式的文档,你可以通过下面的方式直接打开一个已经存在的文档:
wxDocument* doc = m_docManager->CreateDocument(filename,
wxDOC_SILENT);
或者象下面这样创建一个新的文档:
wxDocument* doc = m_docManager->CreateDocument(wxEmptyString,
wxDOC_NEW);
无论是上面哪种情况,都将自动创建一个相应的视图对象。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论