Сериализация

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Сериализация

Re: Сериализация

Romeo » 23 ноя 2007, 11:14

Едит бокс сериализовать не получиться. Сериализовать следует его параметры, такие как координаты верхнего левого угла и размеры. Т.е. при сохраниеи сериализуешь в архив его параметры. А при загрузке создаёшь новый EditBox и выставляешь ему эти параметры.

Сериализация

Aram » 28 окт 2007, 14:26

При нажатии на кнопку вызывается функция член CTestView::CreatEditForLine

Код: Выделить всё

void CTestView::CreatEditForLine(int i, CPoint point, CClientDC &dc)
//point координата конца линии
{Count=new CEdit;
CPoint Temp;
Temp.x=point.x;
Temp.y=point.y;
dc.LPtoDP(&Temp);
Count->Create(WS_CHILD  |WS_VISIBLE |WS_BORDER,						(CRect((Temp.x)+10,Temp.y,Temp.x+55,Temp.y+25)),
		this,ID_EDIT);
pDoc->m_Line_Test[pDoc->m_Line_Test.GetSize()-1]->m_Edit_Test.Add(Count);
//где pDoc указатель на класс документа, 
}

// m_Line_Test- массив обектов класса CLine

Код: Выделить всё

class CTestDoc : public CDocument
{
CTypedPtrArray<CObArray, CLine *> m_Line_Test;
};
// m_Edit_Test-массив обектов класса CEdit.

Код: Выделить всё

class CLine : public CShape  
{
CTypedPtrArray<CObArray, CEdit *> m_Edit_Test;
};

CShape порожден от CObject
При рисовании линии рисуется EditBox. И указатель на обект CEdit записывается в массив m_Edit_Test.
Делаю сериализацию

Код: Выделить всё

void CTestDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{	
	m_Line_Test.Serialize(ar);	
	}
	else
	{	
	m_Line_Test.Serialize(ar);
	}
}
void CLine::Serialize(CArchive & ar)
{
CObject::Serialize(ar);
	if(ar.IsStoring())
	{	
         m_Edit_Test.Serialize(ar);
	}
	else
	{	
	m_Edit_Test.Serialize(ar);

	}
}

Но при сохранении документа выдается сообщение «Failed to save document»
Скажите пожалуйста как мне сериализировать EditBox,
Заранее благодарю,

Вернуться к началу