在MFC程序中,如何在不同的对话框之间传递数据?

时间:2009-09-17 01:14:36

标签: c++ session mfc

在Web开发中,当我们想要在不同页面之间传递内容时,我们可能会使用Session来保存数据。但是在MFC中,我们可以用什么来存储这些东西?

谢谢!

2 个答案:

答案 0 :(得分:3)

典型的MFC应用程序将具有Document-View-Frame架构。数据存储在Document对象中,并全局访问。您可以通过AfxGetMainWnd()在任何地方访问它。

AfxGetApp()还会为您提供指向主应用程序的指针,如果您不使用Document View架构,这是另一个存储数据的好地方。如果有大量数据,您可以构造一个类来保存数据,然后将一个实例作为成员变量添加到项目中的CWinApp。

另一个选项,我不推荐但是我已经看过,是将对话框本身作为CWinApp中的成员变量,然后每个对话框都可以引用另一个。基本上,用户单击“确定”,但随后对话框消失,但不会被删除。这意味着他们输入的所有数据仍然可以通过对话框变量访问。

答案 1 :(得分:1)

有很多方法可以在对话框之间共享数据。您可能需要更具体地了解您的需求。

  1. 将其存储在全局变量中。
  2. 将其存储在thread local storage(TLS)。
  3. 让一个Dialog通过SendMessage()PostMessage()发送一条窗口消息。
  4. 事情变得更加复杂。