我应该找到另一种兴趣,因为这个很快就会把我的生命带走。好像很多人对包括我在内的MFC代码的复杂性感到困惑。我有一个MFC对话框应用程序,它创建几个对话框,您导航到使用典型的后退或下一个功能。一路上,您通过无线电组按钮,列表框和各种其他控件收集数据。在大多数情况下,我了解如何通过在每个不同对话框的代码中使用AFX映射提供的m_变量来处理数据。在最后 - 有时是 - 通过对话收集的数据收集/选择过程中,我需要对已收集的内容进行处理。我可能需要从一个对话框中获取数据,然后根据前一个对话框修改下一个。看起来当你在对话框中移动时,除非你以某种方式保存,否则最后的数据会丢失。我知道有很多方法可以做到这一点,我已经玩弄了几个,从对象传递到创建新类,新结构,全局变量,指针,等等....我关心的是,我需要一个数据某种类型的结构,以便在我的用户代码中使用它来保持足够长的时间。这是我认为的问题,我不知道在MFC中如何处理这个问题。我目前决定使用一个名为dlg_DataHandler的结构(用于容纳每个对话框中收集的数据)和一些.h文件中的测试成员。它已被typedef作为指针。我正在创建一个这种类型的变量并设置它= new dlg_DataHandler,但数据不会像我想要的那样从对话框到对话框传递。我想知道的一件事是,我不知道在哪里放置用于创建变量的“新”语句。它似乎数据不会流入和流出结构。无论如何这里是一些代码:
// file1.h
typedef struct dlg_DataHandler {
int var;
char* String;
int RepetitionRadio; // radio button data
constructor here
} *dlgDataHandler;
extern dlgDataHandler DlgData;
//*****************
// file2.cpp
dlg_DataHandler DlgData = new dlg_DataHandler; // not located anywhere in peticular just in the code since I DON'T KNOW where to put it. DlgData->member gets loaded in the dialog .cpp files to try collect data, but it doesnt seem to be passing data across the different windows.
答案 0 :(得分:1)
将变量放在主应用程序类中(来自CWinApp
)并在new
中调用InitInstance()
。然后,您可以使用AfxGetApp()从代码中的任何其他位置访问应用程序实例,以及您的变量。