Сначала объясните полученный вами совет AfxGetApp. Есть некоторые дополнительные ручные помахивания с использованием «new» и указателя, но это в основном использует глобальную переменную для структуры, которая содержит ваши данные. Это не лучший способ сделать то, что вы пытаетесь сделать. Есть много подводных камней.
AfxGetApp () - это вызов MFC, который возвращает указатель на ваш основной класс приложения, полученный из CWinApp.
Если вы хотите использовать этот возвращенный указатель, вам нужно привести его как указатель CSRK_App * с:
CSRK_App* pApp = static_cast <CSRK_App*> ( AfxGetApp());
Затем вы можете использовать pApp-> dlgDataHandlerPtr -> ... для доступа к нужным вам переменным.
Теперь о подводных камнях. Кто-то другой может вмешаться с причиной, по которой «new» и указатель полезны, но я не вижу никакого преимущества в этом подходе по сравнению с наличием локальной переменной dlgDataHandler внутри вашего класса CSRK_App. Это упростит код.
Следующая проблема заключается в том, что все ваши данные являются открытыми в структуре. Любой класс диалога, который может вызывать AfxGetApp, может читать или записывать любые данные в этой структуре. У вас нет возможности контролировать доступ.
Кроме того, все ваши диалоговые классы теперь должны включать SRK_App.h, чтобы они знали структуру и имели доступ ко всем другим переменным в этом классе приложения.
Более чистый, объектно-ориентированный подход состоял бы в том, чтобы объявить структуру (класс) для данных в отдельном файле .h, который мог бы быть включен в классы диалога. Затем вы должны передать указатель / ссылку на эти данные в конструктор диалоговых классов. Диалоговому классу не нужно ничего знать о классе App.
Для еще более высокого уровня сегрегации классы диалогов могут быть написаны так, что они получают только копию класса dlgDataHandler, переданную перед вызовом .DoModal (), а затем после того, как вызов DoModal возвращается с IDOK, класс App может иметь возможность контролировать, какие данные из диалога обновляются в классе dlgDataHandler. Преимущество этого подхода состоит в том, что он гарантирует, что независимо от того, как запрограммирован класс диалога, пользователь всегда может «отменить» диалог без изменения каких-либо данных.