![]() |
|
|
![]()
|
|
| Гость_wert |
|
|||
|
Unregistered |
Всем здрасьте.
У меня имеется : W2k, VC++6.0, MFC, SDI. Вопрос: Что нужно сделать, что бы при запуске программы открывался последний документ, который юзали перед закрытием проги. Спасибо. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Ты должен запрограммировать это сам: запомнить файл (в реестре или ini-файле), прочитать из реестра при запуске программы и открыть через OpenDocumentFile. Готового механизма в MFC нет, есть лишь некоторые вспомогательные классы, которыми ты можешь воспользоваться. Это CRecentFileList (этот объект живет в CWinApp), функция CWinApp::LoadStdProfileSettings, функции того же CWinApp по поддержке MRU-файлов. MRU-файлы не имеют прямого отношения к загрузке последнего использованного документа, но удобнее всего реализовывать это через них (почти все готово), только вызвать в нужных местах.
Кстати не забудь, что хорошо воспитанный разработчик не загружает последний файл, если приложение запущено с опциями командной строки, которые этому противоречат (скажем, с именем файла). -------------------- ... |
|||
|
||||
| AlexPro |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 9.11.2005 Где: Санкт-Петербург Репутация: 3 Всего: 4 |
Не совсем так. Если используется документ-вид, то каркас приложения делает всю работу по сохранению списка последних открытых файлов (результаты этой работы мы видим в меню "File"). Нам остается только прочитать из реестра имя последнего открывавшегося документа и попытаться его загрузить. Вот кусок кода, который я использую для этой цели:
Если не используется связка документ-вид - таки да, все придется делать ручками. Если использовать CRecentFileList (а точнее theApp.m_pRecentFileList) - будет еще проще, т.к. список файлов уже загружен. Пожалуй, использовать CRecentFileList в данном случае будет правильнее. Это сообщение отредактировал(а) AlexPro - 13.1.2006, 21:30 |
||||
|
|||||
| Гость_wert |
|
|||
|
Unregistered |
AlexPro, а как его можно использовать, подскажи, если не трудно. Earnest, спасибо, учту. |
|||
|
||||
| AlexPro |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 9.11.2005 Где: Санкт-Петербург Репутация: 3 Всего: 4 |
В InitInstance после всех функций инициализации нужно добавить следующий код:
Ну и, как сказала Earnest, нужно проверить командную строку на предмет наличия в ней названия документа. |
|||
|
||||
| Гость_wert |
|
|||
|
Unregistered |
AlexPro, спасибо огромное. То, что доктор приписал.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |