【问题标题】:Accessing document files from dialog class in mfc, sdi从 mfc、sdi 中的对话框类访问文档文件
【发布时间】:2015-09-11 17:07:12
【问题描述】:

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

所以我在mfc中构建了一个益智游戏,我想实现高分系统。游戏结束后会弹出对话框,在里面放你的名字,名字写在外部的txt文件里。所以,我有 Dialog 类,我在其中实现了关于输入你的名字并将其发送到 txt 文件的内容,但问题是我无法访问存储在 ProjectDoc 类中的分数信息,所以我无法将玩家的姓名和分数联系起来。

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

【问题讨论】:

  • 使用视图类中所需的信息填充自定义对话框实现。

标签: c++ mfc


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    另一个极端是传递一个指向 Document 的指针并让 Dialog 从中提取它需要的任何内容,但这会违反“需要知道”的政策。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      相关资源
      最近更新 更多