如何收集数据并传递数据

How to collect data and pass it around

本文关键字:数据 何收集      更新时间:2023-10-16

我应该找到另一个兴趣,因为这个兴趣很快就会夺走我的生命。似乎很多人对MFC代码的复杂性感到困惑,包括我。我有一个MFC对话框应用程序,它创建了几个对话框,您可以使用典型的返回或下一个函数导航到这些对话框。在此过程中,您可以通过单选组按钮、列表框和各种其他控件收集数据。在大多数情况下,我了解如何通过在每个不同对话框的整个代码中使用AFX映射提供的m_变量来处理数据。在对话框收集的数据收集/选择过程的最后,有时在过程中,我需要对收集到的数据进行处理。我可能需要从一个对话框中获取数据,并在前一个对话框的基础上修改下一个对话框。当你在对话框中移动时,最后一个对话框中的数据似乎会丢失,除非你以某种方式保存它。我知道有几十种方法可以做到这一点,我也尝试过其中的几种方法,从对象传递到创建新的类、新的结构、全局变量、指针等等。。。。我担心的是,我需要一个某种类型的数据结构,以便在内存中保持和活动足够长的时间,让我的用户代码用它做一些事情。这就是我认为的问题,我不知道在MFC中如何处理这个问题。我目前决定使用一个名为dlg_DataHandler的结构(用于容纳从每个对话框收集的数据),在.h文件中包含一些测试成员。它已被定义为指针。我正在创建一个这种类型的变量,并将其设置为new dlg_DataHandler,但数据不会像我希望的那样在对话框之间传递。我想知道的一件事是,我不知道创建变量的"new"语句应该放在哪里。就好像数据没有按应有的方式流入和流出结构。无论如何,这里有一些代码:

// 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.  

将变量放入主应用程序类(从CWinApp派生的类)中,并在InitInstance()中调用new。然后,您可以使用AfxGetApp()从代码中的任何其他位置访问应用程序实例,从而访问您的变量。