我是mfc的新手,所以我不知道我是否会正确解释我的问题,但我会尝试。
所以我在mfc中构建了一个益智游戏,我想实现高分系统。当游戏结束时,会弹出对话框,您可以在其中输入您的姓名,并将名称写入外部txt文件中。所以,我有Dialog类,我实现了关于输入你的名字的东西,并将它发送到txt文件,但问题是我无法访问有关得分的信息,这些信息存储在ProjectDoc类中,所以我无法链接播放器的名称和分数。
所以问题是如何从对话框类中访问ProjectDoc类中的文件。
答案 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;
};
然后从中派生您的文档并实现这些方法。并将该接口指针传递给对话框。