Я должен найти другой интерес, потому что этот быстро забирает у меня жизнь. Похоже, что многие люди запутались в тонкостях кода MFC, включая меня. У меня есть приложение MFC Dialog Box, которое создает несколько диалогов, к которым вы переходите, используя обычную функцию «назад» или «далее». По пути вы собираете данные с помощью кнопок групп радиостанций, списков и других элементов управления. По большей части я понимаю, как получить управление данными, используя переменные m_, предоставленные картами AFX в коде для каждого отдельного диалога. В конце - а иногда и во время - процесса сбора / выбора данных, собранных с помощью диалогов, мне нужно что-то делать с тем, что было собрано. Мне может понадобиться взять данные из одного диалога и изменить следующий на основе предыдущего. Кажется, что при перемещении по диалоговым окнам данные из последнего теряются, если вы не сохраните их каким-либо образом. Я знаю, что есть десятки способов сделать это, и я поиграл с несколькими из них, от передачи объектов, до создания новых классов, новых структур, глобальных переменных, указателей, чего угодно ... Меня беспокоит, мне нужны данные какая-то структура, чтобы оставаться активной и активной в памяти достаточно долго, чтобы мой пользовательский код мог что-то с ней сделать. Это проблема, я думаю, я не знаю в MFC, как с этим бороться. В настоящее время я решил использовать структуру с именем dlg_DataHandler (для хранения собранных данных из каждого диалога) с несколькими членами теста в файле .h. Это было typedef'd в качестве указателя. Я создаю переменную этого типа и устанавливаю ее = 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.