Шаг 74 - Тренировка - приложение Pr2

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

Ну что-же, запускайте VC++ и MFC AppWizard. Имя приложению дайте PR2. В первом шаге тип приложения надо дать на основе одного документа Single Document. Дальше до 4 шага идем без изменений. А вот Step4 нам нужен. Так как наше приложение будет записывать в файл, то нам необходимо решить с расширением. Вот как это делается.

74_1.gif (4476 b)

На Step4 жмем на Advanced и поле File extension указываем расширение. Дальше все можно не менять Finish это то, что нужно. Следует отметить, что слово Finish здесь понимается в положительном плане. А нет так как делаешь что - то, а потом - всё финиш. Если Вам это знакомо. Скомпилируйте и запустите. А потом выберите пункт меню Save As.. и в поле Save as type вы увидите Ваше расширение.

74_2.gif (5002 b)

Где хранится это расширение? В ресурсах. Откройте их. Дальше откройте String Table и идентификатор IDR_MAINFRANE. Там такая строка.

74_3.gif (4083 b)

Видите? О данном идентификаторе более полно в подробностях.

Создаем код

Итак, мы будем записывать, и считывать 3 переменные типа CString. Все данные программы должны храниться в классе документа. Он у нас называется CPr2Doc туда мы и должны их добавить. Помните как в PR1?. Правой кнопкой мыши на CPr2Doc и Add member variable. Их нужно три m_string1 m_string2 m_string_3. В файле pr2Doc в описании класса документа добавятся строки вот так.

class CPr2Doc : public CDocument
{
// Implementation
public:
	CString m_string3;
	CString m_string2;
	CString m_string1;
	virtual ~CPr2Doc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif
};

Инициализировать их нужно в OnNewDocument класса документа. Перейдите в него и внесите код.

BOOL CPr2Doc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;
	m_string1="String1";
	m_string2="String2";
	m_string3="String3 Finish String";
	return TRUE;
}

А вот теперь и будем организовывать процедуры записи. Они реализуются в функции Seliarize класса документа. Найдите её в ClassView и внесите изменения.

void CPr2Doc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		ar << m_string1;
		ar << m_string2;
		ar << m_string3;
	} else {
		ar >> m_string1;
		ar >> m_string2;
		ar >> m_string3;
	}
}

Описание

Запускайте проект и сохраните файл под именем 1. Что произойдет ? В каталоге проекта появится файл с именем 1.pr2. Расширение автоматически связано с файлом. В exploler два раза щелкните на имени файла и откроется Ваше приложение. Откройте файл 1.pr2 в тестовом редакторе там будет примерно вот что.

74_4.gif (2777 b)

Шпаргалка

Связать расширение с приложением просто. Воспользуйтесь AppWizard. Он сделает необходимые записи в реестре для реализации этой возможности.

74_5.gif (3372 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 02.01.2000 (обновлено 25.07.2001)