设为首页 加入收藏

TOP

17.3.1 记录文档修改(2)
2013-10-07 16:13:13 来源: 作者: 【 】 浏览:84
Tags:17.3.1 记录 文档 修改

17.3.1  记录文档修改(2)

调用视图类的继承成员GetDocument()可以访问指向文档对象的指针,然后使用这个指针调用SetModifiedFlag()函数。

在文档中可以进行修改的所有地方现在就介绍完毕。文档对象还存储了元素类型、元素颜色和线宽,所以也需要跟踪它们的修改。下面更新OnColorBlack():

  1. void CSketcherDoc::OnColorBlack()  
  2. {  
  3. m_Color = ElementColor::BLACK;                                                          // Set the drawing color to black  
  4. SetModifiedFlag();                                                                                                  // Set the modified flag  
  5. }  

给其他颜色和元素类型的处理程序添加相同的语句。设置线宽的处理程序需要修改:

  1. void CSketcherDoc::OnPenWidth()  
  2. {  
  3. CPenDialog aDlg;                                                                        // Create a local dialog object  
  4. aDlg.m_PenWidth = m_PenWidth;                           // Set pen width as that in the document  
  5. if(aDlg.DoModal() == IDOK)                          // Display the dialog as modal  
  6. {  
  7. m_PenWidth = aDlg.m_PenWidth;               // When closed with OK, get the pen width  
  8. SetModifiedFlag();                                                          // Set the modified flag  
  9. }  
  10. }  

如果在构建和运行Sketcher程序时修改文档或者添加元素,那么在退出这个程序时,将出现保存文档的提示。当然,除了可以清除修改标志以及把空文件保存到磁盘中以外,File | Save菜单选项现在还不能进行其他操作。为了可以正确地把文档连续写入磁盘,必须实现序列化,下面对此进行介绍。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.3.1 记录文档修改(1) 下一篇17.3.2 序列化文档

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)