从MFC对话框保存文件

时间:2018-08-12 04:17:40

标签: serialization mfc

预算。我正在尝试保存“块布局”。这包括保存每个块的数据,每个块都是指向CBlock类的指针。因此,我需要将它们的属性存储在文件中,以便播放器可以加载其布局并进行播放。问题是我不知道将数据保存到文本文件的最佳方法是什么。我将至少需要BLOCKTYPE(这是我可以用来构造对象的enum)和块的X和Y位置。

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

这是我目前尝试保存文件的方式,但是不起作用。

void CCreateWindow::OnBnClickedButtonSave(){
// TODO: Add your control notification handler code here
if (m_blockLayout.size() > 0)
{
    CString m_filter = TEXT("Super Breakout Maker Files (*.sbm)|*.sbm|All Files (*.*)|*.*||");
    CFile m_saveFile;
    CFileDialog m_fileDlg(FALSE, TEXT(".sbm"), TEXT("mylayout"), OFN_OVERWRITEPROMPT, m_filter, NULL, 0, TRUE);
    //CFileDialog m_fileDlg(FALSE, TEXT(".sbm"), TEXT("mylayout"), 0, m_filter);
    if (m_fileDlg.DoModal() == IDOK)
    {
        m_saveFile.Open(m_fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite);
        CArchive m_saveArchive(&m_saveFile, CArchive::store);

        for (int i = 0; i > m_blockLayout.size(); i++)
        {
            m_saveArchive << m_blockLayout[i]->GetBlockType() << m_blockLayout[i]->GetXPosition() << m_blockLayout[i]->GetYPosition();
        }
        m_saveArchive.Close();
        MessageBox(TEXT("Your layout was successfully saved!"), TEXT("Notification"), MB_ICONINFORMATION);
    }
    else
    {
        return;
    }
    m_saveFile.Close();
}
else
{
    MessageBox(TEXT("You can't save an empty layout."), TEXT("Warning"), MB_ICONWARNING);
}}

0 个答案:

没有答案