从mfc,sdi中的对话框类访问文档文件

时间:2015-09-11 17:07:13

标签: c++ mfc

我是mfc的新手,所以我不知道我是否会正确解释我的问题,但我会尝试。

所以我在mfc中构建了一个益智游戏,我想实现高分系统。当游戏结束时,会弹出对话框,您可以在其中输入您的姓名,并将名称写入外部txt文件中。所以,我有Dialog类,我实现了关于输入你的名字的东西,并将它发送到txt文件,但问题是我无法访问有关得分的信息,这些信息存储在ProjectDoc类中,所以我无法链接播放器的名称和分数。

所以问题是如何从对话框类中访问ProjectDoc类中的文件。

2 个答案:

答案 0 :(得分:1)

在对话框类的构造函数中将分数作为参数提交:

CHighscoreDlg::CHighscoreDlg(int score)
{
    m_score = score;   // store in private class member variable
}

...
...
void CPuzzleView::EndGame() 
{
    CHighscoreDlg hs(GetDocument()->m_gamescore);
    hs.DoModal();
}

答案 1 :(得分:1)

如果您有一个(或几个)参数,IInspectable和thomiel提供的解决方案效果很好。

另一个极端是传递一个指向Document的指针,让Dialog从中拉出任何需要的东西,但这会违反"需要知道"政策。

我建议使用必需的访问器定义一个接口(抽象类)IHighScoreProvider,例如:

class IHighScoreProvider
{
public:
    int GetGameScore() = 0;
    std::string GetPlayerName() = 0;
};

然后从中派生您的文档并实现这些方法。并将该接口指针传递给对话框。