65.9K
CodeProject 正在变化。 阅读更多。
Home

用一行代码关闭未使用的 MDI 文档

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (2投票s)

1999 年 12 月 2 日

CPOL
viewsIcon

84436

downloadIcon

763

这段代码在 MFC MDI 应用程序中打开现有文件时,会关闭默认的“空白”文档。

这段代码在 MFC MDI 应用程序中打开现有文件时,会关闭默认的“空白”文档(这种行为也可以在 Microsoft 的 Word 和 Excel 中看到)。

它适用于从“文件”->“打开...”菜单选项以及从 MRU(最近使用文件)列表中打开的文件。

最重要的是,它只需要在您的应用程序中添加一行代码。

#include "CloseUnusedDocs.h"  // STEP #1: INCLUDE HEADER FILE
//
//
//
BOOL CYourDoc::OnOpenDocument(LPCTSTR lpszPathName) 
{
  if (!CDocument::OnOpenDocument(lpszPathName))
    return FALSE;        
  
  CCloseUnusedDocs::close_unused_documents(this); // STEP #2: INSERT THIS LINE
    
  return TRUE;
} 

代码的算法是:通过所有文档模板循环遍历所有文档,并关闭符合以下标准的文档:

  1. 未曾保存(CDocument::GetPathName()为空),并且
  2. 未修改(CDocument::IsModified()为零),并且
  3. 不是我们正在打开的文档(代码中的“this”指针)。

有关更多信息,您可以查看代码(它非常短,并且有相当详细的注释)。

© . All rights reserved.