Справочная информация: Итак, я создал приложение, которое в основном представляет собой большой диалог настроек, в котором пользователь может настроить несколько страниц, каждая из которых имеет множество различных настроек. Эти настройки представлены в виде раскрывающихся списков и текстовых полей. Я хочу сохранить все переменные в одном массивном файле «Parameters.h», чтобы я мог получить к ним доступ из любого места в моем приложении. Каждая подстраница имеет собственный исходный файл и файл заголовка.
У меня проблемы с указателями. Я не уверен, как ссылаться на класс параметров. По сути, мое приложение имеет два основных компонента: главный диалог и несколько дочерних страниц. В главном диалоговом окне подстраницы отображаются и скрываются в зависимости от того, какую страницу пользователь выбирает в списке слева от основного диалогового окна.
Я просто сейчас работаю с одной подстраницей, и у меня есть следующее, но когда я отлаживаюсь, я получаю повсюду. Я значительно упростил код, но этого должно быть достаточно, чтобы понять, что я делаю неправильно.
Вопрос: Итак, как мне указать этот класс параметров в каждом поддиалоге, чтобы я мог сохранить и использовать все эти переменные?
SAPrefsDialog.cpp: главное диалоговое окно с вложенными страницами
BOOL CSAPrefsDialog::OnInitDialog()
{
CDialog::OnInitDialog();
FSC_Main fscMain;
fscMain.SetParametersPointer(&m_pParams);
// [ ... ]
}
SAPrefsDialog.h: заголовочный файл основного диалога
#include "Parameters.h"
public:
CSAPrefsDialog(CWnd* pParent = NULL); // standard constructor
~CSAPrefsDialog();
Parameters m_pParams;
FSC_Main.h: заголовочный файл подстраницы
#include "Parameters.h"
class FSC_Main : public CSAPrefsSubDlg
{
// Construction
public:
FSC_Main(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(FSC_Main)
enum { IDD = IDD_FS_CONFIG_MAIN };
//}}AFX_DATA
public:
void SetParametersPointer(Parameters* pParameters)
{ m_Params = pParameters; }
private:
Parameters *m_Params;
};
Parameters.h
#include "stdafx.h"
#include "prefs.h"
#pragma once
class Parameters
{
public:
Parameters(); // standard constructor
public:
~Parameters(void);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
public:
//*****************************************************************************
//
// FSC_Main.cpp Variables
//
//*****************************************************************************
CString m_strVehiclesMainNumVehicles;
CString m_strVehiclesMainMaxSensorCount;
CString m_strVehiclesMainTaskProcessingInterval;
CString m_strVehiclesMain
// [ ... ]
Parameters.cpp
#include "stdafx.h"
#include "prefs.h"
#include "pages.h"
#include "Parameters.h"
//*****************************************************************************
//
// Parameters::Parameters
//
//*****************************************************************************
Parameters::Parameters():
m_strVehiclesMainNumVehicles("")
, m_strVehiclesMainMaxSensorCount("")
, m_strVehiclesMainTaskProcessingInterval("")
// [ ... ]
{
}