CDocument::OnOpenDocument
调用由结构作为文件打开命令的一部分。
virtual BOOL OnOpenDocument(
LPCTSTR lpszPathName
);
参数
- lpszPathName
指向要打开的文档的路径。
返回值
非零,如果文档已成功加载;否则为0。
备注
此功能的默认实现打开所指定的文件,调用 DeleteContents 成员函数确保文档为空,调用 CObject::Serialize 读取文件的目录,然后指示文档如干净。 除了存档结构或文件结构外,因此,如果要使用应重写此功能。 例如,您可以编写应用程序数据库中的文档表示记录而不是独立的文件的位置。
如果用户选择在SDI应用程序的文件打开命令,则框架使用此功能重新初始化现有 CDocument 对象,而不是创建新的。 如果用户选择文件已经在MDI应用程序,框架每次构造一个新的 CDocument 对象并调用此函数来初始化它。 在此函数必须将初始化代码而不是文件中打开命令的构造函数可以有效在SDI应用程序。
示例
下面的示例演示初始化文档对象替代方法。
// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor. The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
// Do initialization of MDI document here.
}
// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// Do initialization of new document here.
return TRUE;
}
// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example). Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
InitMyDocument(); // call your shared initialization function
// If your new document object requires additional initialization
// not necessary when the document is deserialized via File Open,
// then perform that additional initialization here.
return TRUE;
}
// Additional example of OnOpenDocument()
BOOL CExampleDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
InitMyDocument(); // call your shared initialization function
return TRUE;
}
要求
Header: afxwin.h