使用 MFC 串行化数据和 C++ 对象
2009-03-07 20:02:29 来源:WEB开发网删除 m_PhoneList 列表中的内容
因为 m_PhoneList 是在内存中维护的,所以要随时维护,只要下面三个事件中的任何一个事件发生,都需要从内存中删除 m_PhoneList 列表中的对象:
用户退出应用程序;
用户开始一个新的文档,如从“File”菜单中选择“New”选项;
用户打开一个已存在的文档,如从“File”菜单中选择“Open”选项;
在文档类的头文件中声明删除操作的函数:
virtual void DeleteContents();
其实现如下:
// 删除列表中的所有项目并释放列表对象占用的内存
while ( ! m_PhoneList.IsEmpty() )
{
delete m_PhoneList.RemoveHead();
}
视图类处理:
声明视图类的数据成员:
POSITION m_position; // 在文档类列表中的当前位置
CObList* m_pList; // 指向文档类的列表
在 OnInitialUpdate()函数中初始化视图类的数据成员
POSITION m_position;
CObList* m_pList;
// 获取文档类指针
CFooDoc* pDoc = (CFooDoc*) GetDocument();
// 获得文档类 m_PhoneList 的地址
m_pList = &(pDoc->m_PhoneList);
// 获得列表头位置
m_position = m_pList->GetHeadPosition();
// 用文档类数据更新视图类数据成员
CPhone* pPhone = (CPhone*)m_pList->GetAt(m_position);
m_Name = pPhone->m_Name;
m_Phone = pPhone->m_Phone;
// 用新的数据成员变量值更新屏幕显示
UpdateData(FALSE);
// 控制输入焦点
((CDialog*) this)->GotoDlgCtrl(GetDlgItem(IDC_NAME));
更多精彩
赞助商链接