www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 27 - Пункт меню сохранить документ как в AppWizard

Создание проекта

Мы будем учить наш проект сохранять данные. Поэтому оставим старый. Но в ресурсах надо добавть идентификаторы и Пункт меню Save

Итак идем в меню и создаем пункт меню Save, а идентифкатор ставим ID_FILE_SAVE.

Создаем строку в строковых ресурсах IDS_TITLE с обязательным номером 61441. Содержание - Save Project.

Создаем строку AFX_IDC_ALLFILTER и содержанием *.my

Создаем строку AFX_IDS_UNTITLED и содержанием MySave.my

Создаем код

В классе документа
class CMyDoc : public CDocument	
{
	.......
	virtual void Serialize(CArchive& ar);
	...........
};
И реализация
void CMyDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		ar << csDate;
	}
	else
	{
		// для чтения
	}
}

Описание

Итак первое функция Serialize. Для понятия происходящего Вам надо пройти шаги - Наследование от CObject по шагам. А если кратко, то это реализация сохранения на диск и похожа она на работу с потоками.

Присваивание пункту меню идентификатора ID_FILE_SAVE приведет к тому , что данные будут сохранять на диск. Создайте пункт меню и он сразу будет доступен даже без описания в таблице откликов. В MFC есть механизм обработки этого идентификатора без нашего вмешательства. При вызове пункта меню с таким идентификатором MFC автоматически вызывает функцию Serialize из класса документа зарегистрированного в шаблоне.

 CSingleDocTemplate* pDocTemplate;		
 pDocTemplate = new CSingleDocTemplate(	
 	IDR_MAINFRAME,						
	RUNTIME_CLASS(CMyDoc), 
             //Вот у этого класса вызовется Serialize		
	RUNTIME_CLASS(CMainFrame),			
	RUNTIME_CLASS(CMyView));			
 AddDocTemplate(pDocTemplate);
Но если на этом остановиться то при работе вызовется ошибка. Для корректной работы необходим строковый идентификатор IDS_TITLE именно с номером 61441. Надпись будет использована в диалоге сохранения файла. И еще два идентификатора. Фильтр просмотра и имя сохраняемого файла.

Компилируйте. Запускате. Сохраните. Потом откройте в любом тестовом редакторе и вы увидите текст который был на экране.

Вот почти так работает волшебник.


Шпаргалка

Сохранение происходит с использованием функции Serialize класса документа

Пункт сохранения доолжен иметь идентификатор ID_FILE_SAVE

Необходимо обьявить еще 3 строковых ресурса IDS_TITLE, AFX_IDC_ALLFILTER, AFX_IDS_UNTITLED


Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz