Serialization 从MFC对话框保存文件

Serialization 从MFC对话框保存文件,serialization,mfc,Serialization,Mfc,蓓蕾。我正试图保存一个“块布局”。这包括保存每个块的数据,每个块都是指向CBlock类的指针。所以我需要将它们的属性存储在一个文件中,这样玩家就可以加载它的布局并使用它。问题是,我不知道将数据保存到文本文件中的最佳方式是什么。我将至少需要块类型(这是一个枚举,我可以用来构造对象)以及块的X和Y位置 我试着用为保存块向量,但根本不起作用。到目前为止,我还不知道如何保存和加载 这就是我当前试图保存文件的方式,但它不起作用 void CCreateWindow::OnBnClickedButtonSa

蓓蕾。我正试图保存一个“块布局”。这包括保存每个块的数据,每个块都是指向CBlock类的指针。所以我需要将它们的属性存储在一个文件中,这样玩家就可以加载它的布局并使用它。问题是,我不知道将数据保存到文本文件中的最佳方式是什么。我将至少需要
块类型
(这是一个
枚举
,我可以用来构造对象)以及块的X和Y位置

我试着用
保存块向量,但根本不起作用。到目前为止,我还不知道如何保存和加载

这就是我当前试图保存文件的方式,但它不起作用

void CCreateWindow::OnBnClickedButtonSave(){
//TODO:在此处添加控件通知处理程序代码
if(m_blockLayout.size()>0)
{
CString m|u filter=TEXT(“超级突破生成器文件(*.sbm)|*.sbm |所有文件(*.*)|*.| |”);
cfilem_保存文件;
CFileDialog m_fileDlg(FALSE,TEXT(.sbm),TEXT(“mylayout”),of n_OVERWRITEPROMPT,m_filter,NULL,0,TRUE);
//CFileDialog m_fileDlg(FALSE,文本(“.sbm”)、文本(“mylayout”)、0,m_过滤器);
if(m_fileDlg.DoModal()==IDOK)
{
m_saveFile.Open(m_fileDlg.GetFileName(),CFile::modeCreate | CFile::modeWrite);
CArchive m_saveArchive(&m_saveFile,CArchive::store);
对于(int i=0;i>m_blockLayout.size();i++)
{
m_saveArchive GetBlockType()GetXPosition()GetYPosition();
}
m_saveArchive.Close();
MessageBox(文本(“您的布局已成功保存!”)、文本(“通知”)、MB_图标信息);
}
其他的
{
返回;
}
m_saveFile.Close();
}
其他的
{
MessageBox(文本(“您不能保存空布局”)、文本(“警告”)、MB_图标警告);
}}

问题似乎与任何对话框无关。有关信息,请参阅。问题主题与问题无关。问题在于如何将枚举和值作为文本存储在文件中。因为CArchive不是一个好的选择。如果您在调试器下运行此代码,您将立即观察到,
For
循环从未被输入。除此之外,
CArchive
还用于以紧凑的二进制格式写入数据(记录在下)。除非您提供自己的
CArchive
实现,否则流将使用此格式。如果需要编写文本,请使用<代码> cfile < /C>或标准C++文件流对象。