На этом шаге мы рассмотрим реализацию функции Serialize().
Теперь напишем код сериализации документа.
void CSTUploadDoc::Serialize(CArchive& ar) { m_DocList.Serialize( ar ); if (ar.IsStoring()) { ar << m_strCurrentFund; } else { ar >> m_strCurrentFund; // Обновляем окно выбора ценной бумаги Select Fund CMainFrame* pWnd = dynamic_cast< CMainFrame * > (AfxGetMainWnd()); if( pWnd ) // He будет работать при запуске щелчком по значку // документа или из командной строки с именем файла // в качестве аргумента { // Обновляем и выводим окно ценных бумаг pWnd->UpdateFundList( m_DocList, m_strCurrentFund ); pWnd->SetFundsVisible( TRUE ); } } }
Рис.1. Функция Serialize()
Текст измененного приложения можно взять здесь (67,3 Кб).
Все записи сериализуются одним вызовом CStockDataList::Serialize(). Одновременно сериализуется переменная CSTUploadDoc::m_strCurrentFund.
На следующем шаге мы рассмотрим отображение окна Select Find.