Шаг 105 - Сохраняем документ с объектом OLE

Будем дальше мучать наш проект. Сохранение как известно производится в функции Serialize класса документа. На данный момент она у нас такая.

void CTestOleContCntrItem::Serialize(CArchive& ar)
{
	ASSERT_VALID(this);

	// Call base class first to read in COleClientItem data.
	// Since this sets up the m_pDocument pointer returned from
	//  CTestOleContCntrItem::GetDocument, it is a good idea to call
	//  the base class Serialize first.
	COleClientItem::Serialize(ar);

	// now store/retrieve data specific to CTestOleContCntrItem
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}
Как видите не сохраняется рамка, в которой он находится. Это совсем не хорошо. Давайте изменим наш метод. Я хочу, чтобы сохранялось как содержимое объекта так и его местоположение.
void CTestOleContCntrItem::Serialize(CArchive& ar)
{
	ASSERT_VALID(this);
	COleClientItem::Serialize(ar);

	if (ar.IsStoring())
	{
		ar << m_Rect;
	}
	else
	{
		ar >> m_Rect;
	}
}

Ну что ? Попробуем ? Запускайте проект. Вставляем лист Excel. Схватите за рамку и поставьте его в центре. Введите две цифры и сложите их по формуле. Сохраните файл. Остановите работу программы, запустите снова и прочитайте файл. Вы увидите таблицу на том же месте. Только активизировать мы её не сможем, так как не умеем обработывать двойные щелчки мышью и так далее.


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