CDocument::OnOpenDocument
来源:互联网 发布:淘宝上的宠物用品货源 编辑:程序博客网 时间:2024/04/30 18:23
当用户在界面上选择文件菜单/打开文件(ID_FILE_OPEN)时,CWinApp派生类的OnFileOpen函数被自动调用,它通过文档模板创建(MDI)/重用(SDI)框架、文档和视图对象,并最终调用CDocument::OnOpenDocument来读文件,CDocument::OnOpenDocument 的处理流程如下:
BOOL CDocument::OnOpenDocument(LPCTSTR lpszPathName)
{
if (IsModified())
TRACE0("Warning: OnOpenDocument replaces an unsaved document./n");
CFileException fe;
CFile* pFile = GetFile(lpszPathName,
CFile::modeRead|CFile::shareDenyWrite, &fe);
if (pFile == NULL)
{
ReportSaveLoadException(lpszPathName, &fe,
FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
return FALSE;
}
DeleteContents();
SetModifiedFlag(); // dirty during de-serialize
CArchive loadArchive(pFile, CArchive::load | CArchive::bNoFlushOnDelete);
loadArchive.m_pDocument = this;
loadArchive.m_bForceFlat = FALSE;
TRY
{
CWaitCursor wait;
if (pFile->GetLength() != 0)
Serialize(loadArchive); // load me
loadArchive.Close();
ReleaseFile(pFile, FALSE);
}
CATCH_ALL(e)
{
ReleaseFile(pFile, TRUE);
DeleteContents(); // remove failed contents
TRY
{
ReportSaveLoadException(lpszPathName, e,
FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
}
END_TRY
DELETE_EXCEPTION(e);
return FALSE;
}
END_CATCH_ALL
SetModifiedFlag(FALSE); // start off with unmodified
return TRUE;
}
- CDocument::OnOpenDocument
- CDocument ::OnNewDocument和CDocument :: OnOpenDocument
- CDocument
- CDocument
- CDocument
- CDocument相关
- CDocument::GetNextView
- CDocument::SetModifiedFlag
- CDocument Class
- CDocument::SetModifiedFlag
- OnFileOpen与OnOpenDocument
- OnFileOpen与OnOpenDocument
- OnFileOpen与OnOpenDocument
- OnFileOpen与OnOpenDocument
- OnFileOpen与OnOpenDocument
- OnFileOpen与OnOpenDocument
- OnFileOpen与OnOpenDocument
- OnFileOpen与OnOpenDocument
- 将HTML转换成XML
- 面向OO ALV 一例
- vs2008中添加splash screen
- input高级限制级用法
- C++基础——细化结构体(2)
- CDocument::OnOpenDocument
- C programming-读取DAT数据,转成wav格式文件
- 9A0-054 Exam认证
- 【原创】MCTS 70-571 考试总结
- 用户态多线程实现的基本原理
- 新的blog地址
- 跪求西门子S7-200的破解软件
- 动态存储过程
- visual studio中字符数组内存分配粒度大小与字符数组实际内存占用大小的确定过程