віртуальний BOOL OnOpenDocument ( LPCTSTR lpszPathName );
Значення, яке повертається
Ненульовий, якщо документ був успішно завантажено; в іншому випадку 0.
Параметри
lpszPathName
Вказує шлях документа, щоб відкрити.
Зауваження
Називається рамках як частина "відкрити файл". За замовчуванням реалізація цієї функції відкриває зазначений файл, DeleteContents член функцію, щоб переконатися, що документ порожній, дзвінки CObject::Serialize читати вміст файлу а потім документа як чисті. Пересилити цю функцію, якщо ви хочете використовувати щось Крім Архів механізм або файл механізм. Наприклад, ви можете написати заяву, де документи представляють записи в базі даних, а не окремі файли.
Якщо користувач вибирає "відкрити файл" у додатку SDI, рамках використовує цю функцію для Реініціалізація CDocument об'єкт, а не створює нові. Якщо користувач вибирає відкрити файл у додатку MDI, рамках будує новий об'єкт CDocument кожного разу а потім викликає цієї функції ініціалізації його. Помістіть ваш код ініціалізації у цієї функції, а не в конструкторі для відкриття файлу команди ефективними у SDI додатків.
Приклад
/ / Нижче проілюстровано альтернативні методи
/ / Ініціалізація документ.
/ / Спосіб 1: В застосунку MDI, найпростіше місце, щоб зробити / / Ініціалізація в документі constructor.nbsp; Рамках / / завжди створює новий об'єкт документ для нового файлу або відкритого файлу.
CMyDoc::CMyDoc()
{
/ / Зробити ініціалізації MDI документ тут.
// ...
}
/ / Спосіб 2: У додатку SDI або MDI робити всі ініціалізації / / у заміщенням On&NewDocument, якщо ви впевнені, що
/ / на ініціалізації ефективно зберігаються після збереження файлу
/ / і повністю Відновлений після відкриття файлу за допомогою серіалізацією.
BOOL CMyDoc::OnNewDocument()
{
Якщо (!.CDocument::OnNewDocument())
Повертає FALSE;
/ / Зробити ініціалізації новий документ тут.
повертає TRUE;
}
/ / Спосіб 3: Якщо ініціалізації документа не
/ / ефективно збережені і відновлені серіалізацією (під час збереження файлу
/ / та відкриття файлу), потім реалізувати на ініціалізації в одному
/ / Функція (названий InitMyDocument в цьому прикладі). Телефонуйте на
/ / загальні функції ініціалізації від зміни обох
/ / OnNewDocument і OnOpenDocument.
BOOL CMyDoc::OnNewDocument()
{
Якщо (!.CDocument::OnNewDocument())
Повертає FALSE;
InitMyDocument(); / / ваш функцію спільних ініціалізації
/ / Якщо ваш новий об'єкт документ вимагає додаткових ініціалізації
/ / не потрібно, коли документ deserialized через відкриття файлу
/ / виконати цю додаткову строку ініціалізації тут.
повертає TRUE;
}
Огляд CDocument |nbsp; Члени класу | Ієрархічна діаграма
Дивіться такожnbsp;CDocument::DeleteContents, CDocument::OnCloseDocument, CDocument::On&NewDocument, CDocument::OnSaveDocument, CDocument::ReportSaveLoadException, CObject::Serialize